libsmbios_c library
|
00001 // Boost config.h configuration header file ------------------------------// 00002 00003 // (C) Copyright John Maddock 2001 - 2003. 00004 // (C) Copyright Darin Adler 2001. 00005 // (C) Copyright Peter Dimov 2001. 00006 // (C) Copyright Bill Kempf 2002. 00007 // (C) Copyright Jens Maurer 2002. 00008 // (C) Copyright David Abrahams 2002 - 2003. 00009 // (C) Copyright Gennaro Prota 2003. 00010 // (C) Copyright Eric Friedman 2003. 00011 // Use, modification and distribution are subject to the 00012 // Boost Software License, Version 1.0. (See accompanying file 00013 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 00014 00015 // See http://www.boost.org for most recent version. 00016 00017 // Boost config.h policy and rationale documentation has been moved to 00018 // http://www.boost.org/libs/config 00019 // 00020 // This file is intended to be stable, and relatively unchanging. 00021 // It should contain boilerplate code only - no compiler specific 00022 // code unless it is unavoidable - no changes unless unavoidable. 00023 00024 #ifndef LIBSMBIOS_C_CONFIG_SUFFIX_H 00025 #define LIBSMBIOS_C_CONFIG_SUFFIX_H 00026 00027 // 00028 // look for long long by looking for the appropriate macros in <limits.h>. 00029 // Note that we use limits.h rather than climits for maximal portability, 00030 // remember that since these just declare a bunch of macros, there should be 00031 // no namespace issues from this. 00032 // 00033 #include <limits.h> 00034 # if !defined(LIBSMBIOS_C_HAS_LONG_LONG) \ 00035 && !(defined(LIBSMBIOS_C_MSVC) && LIBSMBIOS_C_MSVC <=1300) && !defined(__BORLANDC__) \ 00036 && (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) 00037 # define LIBSMBIOS_C_HAS_LONG_LONG 00038 #endif 00039 #if !defined(LIBSMBIOS_C_HAS_LONG_LONG) && !defined(LIBSMBIOS_C_NO_INTEGRAL_INT64_T) 00040 # define LIBSMBIOS_C_NO_INTEGRAL_INT64_T 00041 #endif 00042 00043 // GCC 3.x will clean up all of those nasty macro definitions that 00044 // LIBSMBIOS_C_NO_CTYPE_FUNCTIONS is intended to help work around, so undefine 00045 // it under GCC 3.x. 00046 #if defined(__GNUC__) && (__GNUC__ >= 3) && defined(LIBSMBIOS_C_NO_CTYPE_FUNCTIONS) 00047 # undef LIBSMBIOS_C_NO_CTYPE_FUNCTIONS 00048 #endif 00049 00050 00051 00052 // 00053 // We can't have a <cwctype> if there is no <cwchar>: 00054 // 00055 # if defined(LIBSMBIOS_C_NO_CWCHAR) && !defined(LIBSMBIOS_C_NO_CWCTYPE) 00056 # define LIBSMBIOS_C_NO_CWCTYPE 00057 # endif 00058 00059 // 00060 // We can't have a swprintf if there is no <cwchar>: 00061 // 00062 # if defined(LIBSMBIOS_C_NO_CWCHAR) && !defined(LIBSMBIOS_C_NO_SWPRINTF) 00063 # define LIBSMBIOS_C_NO_SWPRINTF 00064 # endif 00065 00066 // 00067 // If Win32 support is turned off, then we must turn off 00068 // threading support also, unless there is some other 00069 // thread API enabled: 00070 // 00071 #if defined(LIBSMBIOS_C_DISABLE_WIN32) && defined(_WIN32) \ 00072 && !defined(LIBSMBIOS_C_DISABLE_THREADS) && !defined(LIBSMBIOS_C_HAS_PTHREADS) 00073 # define LIBSMBIOS_C_DISABLE_THREADS 00074 #endif 00075 00076 // 00077 // Turn on threading support if the compiler thinks that it's in 00078 // multithreaded mode. We put this here because there are only a 00079 // limited number of macros that identify this (if there's any missing 00080 // from here then add to the appropriate compiler section): 00081 // 00082 #if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \ 00083 || defined(_PTHREADS)) && !defined(LIBSMBIOS_C_HAS_THREADS) 00084 # define LIBSMBIOS_C_HAS_THREADS 00085 #endif 00086 00087 // 00088 // Turn threading support off if LIBSMBIOS_C_DISABLE_THREADS is defined: 00089 // 00090 #if defined(LIBSMBIOS_C_DISABLE_THREADS) && defined(LIBSMBIOS_C_HAS_THREADS) 00091 # undef LIBSMBIOS_C_HAS_THREADS 00092 #endif 00093 00094 // 00095 // Turn threading support off if we don't recognise the threading API: 00096 // 00097 #if defined(LIBSMBIOS_C_HAS_THREADS) && !defined(LIBSMBIOS_C_HAS_PTHREADS)\ 00098 && !defined(LIBSMBIOS_C_HAS_WINTHREADS) && !defined(LIBSMBIOS_C_HAS_BETHREADS)\ 00099 && !defined(LIBSMBIOS_C_HAS_MPTASKS) 00100 # undef LIBSMBIOS_C_HAS_THREADS 00101 #endif 00102 00103 // 00104 // Turn threading detail macros off if we don't (want to) use threading 00105 // 00106 #ifndef LIBSMBIOS_C_HAS_THREADS 00107 # undef LIBSMBIOS_C_HAS_PTHREADS 00108 # undef LIBSMBIOS_C_HAS_PTHREAD_MUTEXATTR_SETTYPE 00109 # undef LIBSMBIOS_C_HAS_WINTHREADS 00110 # undef LIBSMBIOS_C_HAS_BETHREADS 00111 # undef LIBSMBIOS_C_HAS_MPTASKS 00112 #endif 00113 00114 // 00115 // If the compiler claims to be C99 conformant, then it had better 00116 // have a <stdint.h>: 00117 // 00118 # if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901) 00119 # define LIBSMBIOS_C_HAS_STDINT_H 00120 # endif 00121 00122 00123 // LIBSMBIOS_C_HAS_ABI_HEADERS 00124 // This macro gets set if we have headers that fix the ABI, 00125 // and prevent ODR violations when linking to external libraries: 00126 #if defined(LIBSMBIOS_C_ABI_PREFIX) && defined(LIBSMBIOS_C_ABI_SUFFIX) && !defined(LIBSMBIOS_C_HAS_ABI_HEADERS) 00127 # define LIBSMBIOS_C_HAS_ABI_HEADERS 00128 #endif 00129 00130 #if defined(LIBSMBIOS_C_HAS_ABI_HEADERS) && defined(LIBSMBIOS_C_DISABLE_ABI_HEADERS) 00131 # undef LIBSMBIOS_C_HAS_ABI_HEADERS 00132 #endif 00133 00134 00135 00136 // LIBSMBIOS_C_UNREACHABLE_RETURN(x) workaround -------------------------------------// 00137 // Normally evaluates to nothing, unless LIBSMBIOS_C_NO_UNREACHABLE_RETURN_DETECTION 00138 // is defined, in which case it evaluates to return x; Use when you have a return 00139 // statement that can never be reached. 00140 00141 #ifdef LIBSMBIOS_C_NO_UNREACHABLE_RETURN_DETECTION 00142 # define LIBSMBIOS_C_UNREACHABLE_RETURN(x) return x; 00143 #else 00144 # define LIBSMBIOS_C_UNREACHABLE_RETURN(x) 00145 #endif 00146 00147 00148 // ---------------------------------------------------------------------------// 00149 00150 // 00151 // Helper macro LIBSMBIOS_C_STRINGIZE: 00152 // Converts the parameter X to a string after macro replacement 00153 // on X has been performed. 00154 // 00155 #define LIBSMBIOS_C_STRINGIZE(X) LIBSMBIOS_C_DO_STRINGIZE(X) 00156 #define LIBSMBIOS_C_DO_STRINGIZE(X) #X 00157 00158 // 00159 // Helper macro LIBSMBIOS_C_JOIN: 00160 // The following piece of macro magic joins the two 00161 // arguments together, even when one of the arguments is 00162 // itself a macro (see 16.3.1 in C++ standard). The key 00163 // is that macro expansion of macro arguments does not 00164 // occur in LIBSMBIOS_C_DO_JOIN2 but does in LIBSMBIOS_C_DO_JOIN. 00165 // 00166 #define LIBSMBIOS_C_JOIN( X, Y ) LIBSMBIOS_C_DO_JOIN( X, Y ) 00167 #define LIBSMBIOS_C_DO_JOIN( X, Y ) LIBSMBIOS_C_DO_JOIN2(X,Y) 00168 #define LIBSMBIOS_C_DO_JOIN2( X, Y ) X##Y 00169 00170 // 00171 // Set some default values for compiler/library/platform names. 00172 // These are for debugging config setup only: 00173 // 00174 # ifndef LIBSMBIOS_C_COMPILER 00175 # define LIBSMBIOS_C_COMPILER "Unknown ISO C++ Compiler" 00176 # endif 00177 # ifndef LIBSMBIOS_C_STDLIB 00178 # define LIBSMBIOS_C_STDLIB "Unknown ISO standard library" 00179 # endif 00180 # ifndef LIBSMBIOS_C_PLATFORM 00181 # if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \ 00182 || defined(_POSIX_SOURCE) 00183 # define LIBSMBIOS_C_PLATFORM "Generic Unix" 00184 # else 00185 # define LIBSMBIOS_C_PLATFORM "Unknown" 00186 # endif 00187 # endif 00188 00189 #endif 00190 00191 00192