00001 /* 00002 ******************************************************************************* 00003 * 00004 * Copyright (C) 1997-2001, International Business Machines 00005 * Corporation and others. All Rights Reserved. 00006 * 00007 ******************************************************************************* 00008 * 00009 * FILE NAME : platform.h 00010 * 00011 * Date Name Description 00012 * 05/13/98 nos Creation (content moved here from ptypes.h). 00013 * 03/02/99 stephen Added AS400 support. 00014 * 03/30/99 stephen Added Linux support. 00015 * 04/13/99 stephen Reworked for autoconf. 00016 ******************************************************************************* 00017 */ 00018 00019 /* Define the platform we're on. */ 00020 #ifndef U_LINUX 00021 #define U_LINUX 00022 #endif 00023 00024 /* Define whether inttypes.h is available */ 00025 #ifndef U_HAVE_INTTYPES_H 00026 #define U_HAVE_INTTYPES_H 1 00027 #endif 00028 00029 /* 00030 * Define what support for C++ streams is available. 00031 * If U_IOSTREAM_SOURCE is set to 199711, then <iostream> is available 00032 * (1997711 is the date the ISO/IEC C++ FDIS was published), and then 00033 * one should qualify streams using the std namespace in ICU header 00034 * files. 00035 * If U_IOSTREAM_SOURCE is set to 198506, then <iostream.h> is 00036 * available instead (198506 is the date when Stroustrup published 00037 * "An Extensible I/O Facility for C++" at the summer USENIX conference). 00038 * If U_IOSTREAM_SOURCE is 0, then C++ streams are not available and 00039 * support for them will be silently suppressed in ICU. 00040 * 00041 */ 00042 00043 #ifndef U_IOSTREAM_SOURCE 00044 #define U_IOSTREAM_SOURCE 199711 00045 #endif 00046 00047 /* Determines whether specific types are available */ 00048 #ifndef HAVE_INT8_T 00049 #define HAVE_INT8_T 1 00050 #endif 00051 00052 #ifndef HAVE_UINT8_T 00053 #define HAVE_UINT8_T 0 00054 #endif 00055 00056 #ifndef HAVE_INT16_T 00057 #define HAVE_INT16_T 1 00058 #endif 00059 00060 #ifndef HAVE_UINT16_T 00061 #define HAVE_UINT16_T 0 00062 #endif 00063 00064 #ifndef HAVE_INT32_T 00065 #define HAVE_INT32_T 1 00066 #endif 00067 00068 #ifndef HAVE_UINT32_T 00069 #define HAVE_UINT32_T 0 00070 #endif 00071 00072 #ifndef HAVE_BOOL_T 00073 #define HAVE_BOOL_T 0 00074 #endif 00075 00076 /* Determines the endianness of the platform */ 00077 #define U_IS_BIG_ENDIAN 0 00078 00079 #define HAVE_DLOPEN 1 00080 00081 /* 1 or 0 to enable or disable threads. If undefined, default is: enable threads. */ 00082 #define ICU_USE_THREADS 1 00083 00084 /*===========================================================================*/ 00085 /* Platform/Language determination */ 00086 /*===========================================================================*/ 00087 00088 #ifdef macintosh 00089 #ifdef XP_MAC 00090 #undef XP_MAC 00091 #endif 00092 #define XP_MAC 1 00093 #include <string.h> 00094 #endif 00095 00096 /*===========================================================================*/ 00097 /* Generic data types */ 00098 /*===========================================================================*/ 00099 00100 /* If your platform does not have the <inttypes.h> header, you may 00101 need to edit the typedefs below. */ 00102 #if U_HAVE_INTTYPES_H 00103 #include <inttypes.h> 00104 #else 00105 #include <sys/types.h> 00106 #if STDC_HEADERS 00107 #include <stdlib.h> 00108 #include <stddef.h> 00109 #endif 00110 00111 #if ! HAVE_INT8_T 00112 typedef signed char int8_t; 00113 #endif 00114 00115 #if ! HAVE_UINT8_T 00116 typedef unsigned char uint8_t; 00117 #endif 00118 00119 #if ! HAVE_INT16_T 00120 typedef signed short int16_t; 00121 #endif 00122 00123 #if ! HAVE_UINT16_T 00124 typedef unsigned short uint16_t; 00125 #endif 00126 00127 #if ! HAVE_INT32_T 00128 # if defined(_LP64) 00129 typedef signed int int32_t; 00130 # else 00131 typedef signed long int32_t; 00132 # endif 00133 #endif 00134 00135 #if ! HAVE_UINT32_T 00136 # if defined(_LP64) 00137 typedef unsigned int uint32_t; 00138 # else 00139 typedef unsigned long uint32_t; 00140 # endif 00141 #endif 00142 00143 #endif 00144 00145 /*===========================================================================*/ 00146 /* Character data types */ 00147 /*===========================================================================*/ 00148 00149 #ifdef OS390 00150 # define U_CHARSET_FAMILY 1 00151 #endif 00152 00153 /*===========================================================================*/ 00154 /* Information about wchar support */ 00155 /*===========================================================================*/ 00156 00157 #define U_HAVE_WCHAR_H 1 00158 #define U_SIZEOF_WCHAR_T 4 00159 00160 #define U_HAVE_WCSCPY 1 00161 00162 /*===========================================================================*/ 00163 /* Information about POSIX support */ 00164 /*===========================================================================*/ 00165 00166 #define U_HAVE_NL_LANGINFO 1 00167 #define U_HAVE_NL_LANGINFO_CODESET 1 00168 #define U_NL_LANGINFO_CODESET _NL_CTYPE_CODESET_NAME 00169 00170 #define U_TZSET tzset 00171 #define U_TIMEZONE timezone 00172 #define U_TZNAME tzname 00173 00174 /*===========================================================================*/ 00175 /* Symbol import-export control */ 00176 /*===========================================================================*/ 00177 00178 #define U_EXPORT 00179 #define U_EXPORT2 00180 #define U_IMPORT 00181 00182 /*===========================================================================*/ 00183 /* Code alignment and C function inlining */ 00184 /*===========================================================================*/ 00185 00186 #define U_INLINE 00187 #define U_ALIGN_CODE(n) 00188 00189 /*===========================================================================*/ 00190 /* Programs used by ICU code */ 00191 /*===========================================================================*/ 00192 00193 #define U_MAKE "/usr/bin/gmake" 00194