Sierra Toolkit Version of the Day
FeatureTest.hpp
00001 #ifndef STK_UTIL_UTIL_FeatureTest_h
00002 #  define STK_UTIL_UTIL_FeatureTest_h
00003 
00004 // #include <boost/config.hpp>
00005 
00093 
00094 // Platform/operating system based features and bugs
00095 #if defined(REDS)       // Redstorm
00096 #  define SIERRA_SETVBUF_OUTPUT 1
00097 #  define SIERRA_DIAG_ENDL_NOFLUSH
00098 #  define SIERRA_SRAND_PARALLEL_IO_BUG
00099 #  define SIERRA_HEAP_INFO
00100 #  define SIERRA_MEMORY_INFO
00101 #  define SIERRA_USER_SHUTDOWN_SIGNAL SIGUSR1
00102 #  define SIERRA_SHUTDOWN_SIGNAL SIGTERM
00103 
00104 #elif defined(_CRAYXE)              // Cray
00105 #  define SIERRA_SETVBUF_OUTPUT 1
00106 #  define SIERRA_DIAG_ENDL_NOFLUSH
00107 #  define SIERRA_SRAND_PARALLEL_IO_BUG
00108 #  define SIERRA_HEAP_INFO
00109 #  define SIERRA_MEMORY_INFO
00110 #  define SIERRA_SHUTDOWN_SIGNAL SIGTERM
00111 #  define SIERRA_USER_SHUTDOWN_SIGNAL SIGURG
00112 
00113 #elif defined(__sun)        // sass8000/sass9000
00114 #  define SIERRA_HEAP_INFO
00115 #  define SIERRA_MEMORY_INFO
00116 #  define SIERRA_MPI_ABORT_SIGNAL SIGTERM
00117 #  define SIERRA_USER_SHUTDOWN_SIGNAL SIGHUP
00118 
00119 #elif defined(__linux__)  // Generic linux
00120 #  define SIERRA_USE_PLATFORM_DEMANGLER
00121 #  define SIERRA_HEAP_INFO
00122 #  define SIERRA_MEMORY_INFO
00123 #  define SIERRA_MPI_ABORT_SIGNAL SIGTERM
00124 #  define SIERRA_USER_SHUTDOWN_SIGNAL SIGUSR1
00125 
00126 #elif defined(__APPLE__)  // MacOS
00127 #  define SIERRA_USE_PLATFORM_DEMANGLER
00128 #  define SIERRA_HEAP_INFO
00129 #  define SIERRA_MEMORY_INFO
00130 #  define SIERRA_MPI_ABORT_SIGNAL SIGTERM
00131 #  define SIERRA_USER_SHUTDOWN_SIGNAL SIGUSR1
00132 
00133 #else // Unknown platform
00134 #  warning Could not determine platform/operating system
00135 #endif
00136 
00137 
00138 // Compiler/runtime specific features and bugs
00139 
00140 #if defined(__xlC__)        // IBM compiler
00141 #  if __xlC__ < 0x0800
00142 #    define SIERRA_TEMPLATE_FUNCTION_SELECT_BUG
00143 #  endif
00144 #  define SIERRA_TYPE_INFO_BEFORE_EQUALITY_BUG
00145 #  define SIERRA_AUTO_PTR_ASSIGNMENT_BUG
00146 
00147 #elif defined(__sun) || defined(__SUNPRO_CC)  // Sun spro compiler
00148 #  define SIERRA_MPI_ALLREDUCE_USER_FUNCTION_BUG
00149 
00150 #elif defined(__INTEL_COMPILER)     // Intel compiler
00151 #  if __INTEL_COMPILER/100 == 10 && defined(__ia64) // Version 10 Intel compiler on ia64
00152 #    define SIERRA_IA64_OPTIMIZER_FIX
00153 #  elif __INTEL_COMPILER/100 == 11 && defined(__ia64) // Version 11 Intel compiler on ia64
00154 #    define SIERRA_IA64_OPTIMIZER_FIX
00155 #  elif __INTEL_COMPILER/100 >= 12 && defined(__ia64) // Version 12+ Intel compiler on ia64
00156 #    define SIERRA_IA64_OPTIMIZER_WARN
00157 #  endif
00158 
00159 #elif defined(__PGI)        // PGI compiler
00160 
00161 #elif defined(_CRAYC)       // CRAY compiler
00162 
00163 #elif defined(__APPLE_CC__)     // Apple compiler
00164 
00165 #elif defined(__PATHSCALE__)      // Pathscale compiler
00166 #  if (__GNUC__ > 3) || defined(PATHSCALE_GNU4) // Only with gcc3 front-end
00167 #    define NO_SIERRA_TEMPLATE_CALL_BUG
00168 #  else
00169 #    define SIERRA_TEMPLATE_CALL_BUG
00170 #  endif
00171 
00172 #elif defined(__GNUC__)       // GNU compiler, do this last since *every* compiler thinks its gcc
00173 #  if __GNUC__ == 3 && __GNUC_MINOR__ < 4
00174 #    define SIERRA_TEMPLATE_CALL_BUG
00175 #  endif
00176 
00177 #else // Unknown compiler
00178 #  warning Could not determine compiler/runtime
00179 #endif
00180 
00184 
00185 #endif // STK_UTIL_UTIL_FeatureTest_h
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines