mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-13 08:53:20 +00:00
ICU-8452 consolidate definition of _XOPEN_SOURCE for access to POSIX functions; do not use __STDC_VERSION__ in C++ code where it is not defined
X-SVN-Rev: 30418
This commit is contained in:
parent
bb8a3bb609
commit
3bf88cd711
11 changed files with 96 additions and 83 deletions
|
@ -768,6 +768,7 @@
|
|||
</Command>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="uposixdefs.h" />
|
||||
<CustomBuild Include="unicode\urename.h">
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" ..\..\include\unicode
|
||||
</Command>
|
||||
|
|
|
@ -633,6 +633,9 @@
|
|||
<ClInclude Include="umutex.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uposixdefs.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="utracimp.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
@ -37,24 +37,9 @@
|
|||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define _XOPEN_SOURCE for Solaris and friends. */
|
||||
/* NetBSD needs it to be >= 4 */
|
||||
#if !defined(_XOPEN_SOURCE)
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
/* It is invalid to compile an XPG3, XPG4, XPG4v2 or XPG5 application using c99 on Solaris */
|
||||
#define _XOPEN_SOURCE 600
|
||||
#else
|
||||
#define _XOPEN_SOURCE 4
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Make sure things like readlink and such functions work.
|
||||
Poorly upgraded Solaris machines can't have this defined.
|
||||
Cleanly installed Solaris can use this #define.
|
||||
*/
|
||||
#if !defined(_XOPEN_SOURCE_EXTENDED) && ((!defined(__STDC_VERSION__) || __STDC_VERSION__ >= 199901L) || defined(__xlc__))
|
||||
#define _XOPEN_SOURCE_EXTENDED 1
|
||||
#endif
|
||||
// Defines _XOPEN_SOURCE for access to POSIX functions.
|
||||
// Must be before any other #includes.
|
||||
#include "uposixdefs.h"
|
||||
|
||||
/* include ICU headers */
|
||||
#include "unicode/utypes.h"
|
||||
|
|
73
icu4c/source/common/uposixdefs.h
Normal file
73
icu4c/source/common/uposixdefs.h
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2011, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*******************************************************************************
|
||||
* file name: uposixdefs.h
|
||||
* encoding: US-ASCII
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* created on: 2011jul25
|
||||
* created by: Markus W. Scherer
|
||||
*
|
||||
* Common definitions for implementation files working with POSIX functions.
|
||||
* *Important*: #include this file before any other header files!
|
||||
*/
|
||||
|
||||
#ifndef __UPOSIXDEFS_H__
|
||||
#define __UPOSIXDEFS_H__
|
||||
|
||||
/*
|
||||
* Define _XOPEN_SOURCE for access to POSIX functions.
|
||||
*
|
||||
* We cannot use U_PLATFORM from platform.h/utypes.h because
|
||||
* "The Open Group Base Specifications"
|
||||
* chapter "2.2 The Compilation Environment" says:
|
||||
* "In the compilation of an application that #defines a feature test macro
|
||||
* specified by IEEE Std 1003.1-2001,
|
||||
* no header defined by IEEE Std 1003.1-2001 shall be included prior to
|
||||
* the definition of the feature test macro."
|
||||
*/
|
||||
#ifdef _XOPEN_SOURCE
|
||||
/* Use the predefined value. */
|
||||
#else
|
||||
/*
|
||||
* Version 6.0:
|
||||
* The Open Group Base Specifications Issue 6 (IEEE Std 1003.1, 2004 Edition)
|
||||
* also known as
|
||||
* SUSv3 = Open Group Single UNIX Specification, Version 3 (UNIX03)
|
||||
*
|
||||
* Note: This definition used to be in C source code (e.g., putil.c)
|
||||
* and define _XOPEN_SOURCE to different values depending on __STDC_VERSION__.
|
||||
* In C++ source code (e.g., putil.cpp), __STDC_VERSION__ is not defined at all.
|
||||
*/
|
||||
# define _XOPEN_SOURCE 600
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Make sure things like readlink and such functions work.
|
||||
* Poorly upgraded Solaris machines can't have this defined.
|
||||
* Cleanly installed Solaris can use this #define.
|
||||
*
|
||||
* z/OS needs this definition for timeval and to get usleep.
|
||||
*/
|
||||
#if !defined(_XOPEN_SOURCE_EXTENDED)
|
||||
# define _XOPEN_SOURCE_EXTENDED 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* There is an issue with turning on _XOPEN_SOURCE_EXTENDED on certain platforms.
|
||||
* A compatibility issue exists between turning on _XOPEN_SOURCE_EXTENDED and using
|
||||
* standard C++ string class. As a result, standard C++ string class needs to be
|
||||
* turned off for the follwing platforms:
|
||||
* -AIX/VACPP
|
||||
* -Solaris/GCC
|
||||
*/
|
||||
#if (U_PLATFORM == U_PF_AIX && !defined(__GNUC__)) || (U_PLATFORM == U_PF_SOLARIS && defined(__GNUC__))
|
||||
# if _XOPEN_SOURCE_EXTENDED && !defined(U_HAVE_STD_STRING)
|
||||
# define U_HAVE_STD_STRING 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* __UPOSIXDEFS_H__ */
|
|
@ -18,15 +18,11 @@
|
|||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* define for fileno. */
|
||||
#ifndef _XOPEN_SOURCE
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
/* It is invalid to compile an XPG3, XPG4, XPG4v2 or XPG5 application using c99 */
|
||||
#define _XOPEN_SOURCE 600
|
||||
#else
|
||||
#define _XOPEN_SOURCE 4
|
||||
#endif
|
||||
#endif
|
||||
/*
|
||||
* Defines _XOPEN_SOURCE for access to POSIX functions.
|
||||
* Must be before any other #includes.
|
||||
*/
|
||||
#include "uposixdefs.h"
|
||||
|
||||
#include "locmap.h"
|
||||
#include "unicode/ustdio.h"
|
||||
|
|
|
@ -10,6 +10,10 @@
|
|||
# endif
|
||||
#endif
|
||||
|
||||
// Defines _XOPEN_SOURCE for access to POSIX functions.
|
||||
// Must be before any other #includes.
|
||||
#include "uposixdefs.h"
|
||||
|
||||
#include "simplethread.h"
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
@ -41,12 +45,10 @@
|
|||
#if U_PLATFORM == U_PF_OS390
|
||||
#define __DOT1 1
|
||||
#define __UU
|
||||
#define _XOPEN_SOURCE_EXTENDED 1
|
||||
#ifndef _XPG4_2
|
||||
#define _XPG4_2
|
||||
#endif
|
||||
#include <unistd.h>
|
||||
/*#include "platform_xopen_source_extended.h"*/
|
||||
#endif
|
||||
|
||||
#if defined(POSIX)
|
||||
|
|
|
@ -38,12 +38,10 @@
|
|||
#if U_PLATFORM == U_PF_OS390
|
||||
#define __DOT1 1
|
||||
#define __UU
|
||||
#define _XOPEN_SOURCE_EXTENDED 1
|
||||
#ifndef _XPG4_2
|
||||
#define _XPG4_2
|
||||
#endif
|
||||
#include <unistd.h>
|
||||
/*#include "platform_xopen_source_extended.h"*/
|
||||
#endif
|
||||
#if defined(POSIX)
|
||||
|
||||
|
|
|
@ -4,8 +4,9 @@
|
|||
* others. All Rights Reserved.
|
||||
********************************************************************/
|
||||
|
||||
/* z/OS needs this definition for timeval */
|
||||
#include "platform_xopen_source_extended.h"
|
||||
// Defines _XOPEN_SOURCE for access to POSIX functions.
|
||||
// Must be before any other #includes.
|
||||
#include "uposixdefs.h"
|
||||
|
||||
#include "unicode/uperf.h"
|
||||
#include "uoptions.h"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (C) 2000-2011, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*******************************************************************************
|
||||
* file name: pkgdata.c
|
||||
* file name: pkgdata.cpp
|
||||
* encoding: ANSI X3.4 (1968)
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
|
@ -14,18 +14,9 @@
|
|||
* (DLL, common data, etc.)
|
||||
*/
|
||||
|
||||
/*
|
||||
* We define _XOPEN_SOURCE so that we can get popen and pclose.
|
||||
*/
|
||||
#if !defined(_XOPEN_SOURCE)
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
/* It is invalid to compile an XPG3, XPG4, XPG4v2 or XPG5 application using c99 on Solaris */
|
||||
#define _XOPEN_SOURCE 600
|
||||
#else
|
||||
#define _XOPEN_SOURCE 4
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Defines _XOPEN_SOURCE for access to POSIX functions.
|
||||
// Must be before any other #includes.
|
||||
#include "uposixdefs.h"
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
**********************************************************************
|
||||
* Copyright (c) 2009-2011, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
*/
|
||||
#ifndef _PLATFORM_XOPEN_SOURCE_EXTENDED_H
|
||||
#define _PLATFORM_XOPEN_SOURCE_EXTENDED_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
/*
|
||||
* z/OS needs this definition for timeval and to get usleep.
|
||||
* We move this definition out of the various source files because
|
||||
* there might be some platform issues when this is defined.
|
||||
* See below.
|
||||
*/
|
||||
#if !defined(_XOPEN_SOURCE_EXTENDED)
|
||||
#define _XOPEN_SOURCE_EXTENDED 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* There is an issue with turning on _XOPEN_SOURCE_EXTENDED on certain platforms.
|
||||
* A compatibility issue exists between turning on _XOPEN_SOURCE_EXTENDED and using
|
||||
* standard C++ string class. As a result, standard C++ string class needs to be
|
||||
* turned off for the follwing platforms:
|
||||
* -AIX/VACPP
|
||||
* -Solaris/GCC
|
||||
*/
|
||||
#if (U_PLATFORM == U_PF_AIX && !defined(__GNUC__)) || (U_PLATFORM == U_PF_SOLARIS && defined(__GNUC__))
|
||||
# if _XOPEN_SOURCE_EXTENDED && !defined(U_HAVE_STD_STRING)
|
||||
# define U_HAVE_STD_STRING 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* _PLATFORM_XOPEN_SOURCE_EXTENDED_H */
|
|
@ -299,7 +299,6 @@
|
|||
<ClInclude Include="pkg_gencmn.h" />
|
||||
<ClInclude Include="pkg_icu.h" />
|
||||
<ClInclude Include="pkg_imp.h" />
|
||||
<ClInclude Include="platform_xopen_source_extended.h" />
|
||||
<ClInclude Include="swapimpl.h" />
|
||||
<ClInclude Include="toolutil.h" />
|
||||
<ClInclude Include="ucbuf.h" />
|
||||
|
|
Loading…
Add table
Reference in a new issue