1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 #ifndef OPAL_PORTABLE_PLATFORM_H
  16 #define OPAL_PORTABLE_PLATFORM_H
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 
  25 
  26 
  27 
  28 
  29 
  30 
  31 
  32 
  33 
  34 
  35 
  36 
  37 
  38 
  39 
  40 
  41 
  42 
  43 
  44 
  45 
  46 
  47 
  48 
  49 
  50 
  51 
  52 
  53 
  54 
  55 
  56 
  57 
  58 
  59 
  60 
  61 
  62 
  63 
  64 
  65 
  66 
  67 
  68 
  69 
  70 
  71 
  72 
  73 
  74 #ifndef _STRINGIFY
  75 #define _STRINGIFY_HELPER(x) #x
  76 #define _STRINGIFY(x) _STRINGIFY_HELPER(x)
  77 #endif
  78 
  79 #if defined(__INTEL_COMPILER)
  80 #    define PLATFORM_COMPILER_FAMILYNAME INTEL
  81 #    define PLATFORM_COMPILER_FAMILYID 2
  82 #    ifdef __cplusplus
  83 #        define PLATFORM_COMPILER_INTEL_CXX  1
  84 #    else
  85 #        define PLATFORM_COMPILER_INTEL_C  1
  86 #    endif
  87 #    define _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE 19700000 
  88 #    ifdef __INTEL_COMPILER_BUILD_DATE
  89 #        define _PLATFORM_INTEL_COMPILER_BUILD_DATE __INTEL_COMPILER_BUILD_DATE
  90 #    else
  91 #        define _PLATFORM_INTEL_COMPILER_BUILD_DATE _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE
  92 #    endif
  93      
  94 #    define PLATFORM_COMPILER_VERSION_INT(maj,min,pat)         \
  95          (((((maj) * 10) | (min)) << 20) |                      \
  96             ((pat) < _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE ?   \
  97              _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE : ((pat)-_PLATFORM_COMPILER_INTEL_MIN_BUILDDATE)))
  98 #    define PLATFORM_COMPILER_VERSION \
  99          PLATFORM_COMPILER_VERSION_INT(__INTEL_COMPILER/10, __INTEL_COMPILER/100, _PLATFORM_INTEL_COMPILER_BUILD_DATE)
 100 #    define PLATFORM_COMPILER_VERSION_STR \
 101          _STRINGIFY(__INTEL_COMPILER) "." _STRINGIFY(_PLATFORM_INTEL_COMPILER_BUILD_DATE)
 102 
 103 #elif defined(__PATHSCALE__)
 104 #    define PLATFORM_COMPILER_PATHSCALE  1
 105 #    define PLATFORM_COMPILER_FAMILYNAME PATHSCALE
 106 #    define PLATFORM_COMPILER_FAMILYID 3
 107 #    ifdef __cplusplus
 108 #        define PLATFORM_COMPILER_PATHSCALE_CXX  1
 109 #    else
 110 #        define PLATFORM_COMPILER_PATHSCALE_C  1
 111 #    endif
 112 #    define PLATFORM_COMPILER_VERSION \
 113          PLATFORM_COMPILER_VERSION_INT(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__)
 114 #    define PLATFORM_COMPILER_VERSION_STR __PATHSCALE__
 115 
 116 #elif defined(__PGI)
 117 #    define PLATFORM_COMPILER_PGI  1
 118 #    define PLATFORM_COMPILER_FAMILYNAME PGI
 119 #    define PLATFORM_COMPILER_FAMILYID 4
 120 #    ifdef __cplusplus
 121 #        define PLATFORM_COMPILER_PGI_CXX  1
 122 #    else
 123 #        define PLATFORM_COMPILER_PGI_C  1
 124 #    endif
 125 #    if __PGIC__ == 99
 126       
 127 
 128 #      define PLATFORM_COMPILER_VERSION 0x070000
 129 #      define PLATFORM_COMPILER_VERSION_STR "7.?-?"
 130 #    elif defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
 131 #      define PLATFORM_COMPILER_VERSION \
 132             PLATFORM_COMPILER_VERSION_INT(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__)
 133 #      define PLATFORM_COMPILER_VERSION_STR \
 134             _STRINGIFY(__PGIC__) "." _STRINGIFY(__PGIC_MINOR__) "-" _STRINGIFY(__PGIC_PATCHLEVEL__)
 135 #    else
 136        
 137        
 138 
 139 
 140 
 141 
 142 #if 0
 143 #        ifdef PLATFORM_PGI_IS_ANCIENT
 144          
 145 
 146 #            define PLATFORM_COMPILER_VERSION 0
 147 #        elif defined(__x86_64__) 
 148 #            include "omp.h"
 149 #            if defined(_PGOMP_H)
 150                  
 151 #                define PLATFORM_COMPILER_VERSION 0x060101
 152 #                define PLATFORM_COMPILER_VERSION_STR ">=6.1-1"
 153 #            else
 154                  
 155 #                define PLATFORM_COMPILER_VERSION 0
 156 #                define PLATFORM_COMPILER_VERSION_STR "<=6.0-8"
 157 #            endif
 158 #        else 
 159 #            include "omp.h"
 160 #            if defined(_PGOMP_H)
 161                  
 162 #                define PLATFORM_COMPILER_VERSION 0x060008
 163 #                define PLATFORM_COMPILER_VERSION_STR ">=6.0-8"
 164 #            else
 165                  
 166 #                define PLATFORM_COMPILER_VERSION 0
 167 #                define PLATFORM_COMPILER_VERSION_STR "<=5.2-4"
 168 #            endif
 169 #        endif
 170 #endif 
 171        
 172 #    endif
 173 
 174 #elif defined(__xlC__)
 175 #    define PLATFORM_COMPILER_XLC  1
 176 #    define PLATFORM_COMPILER_FAMILYNAME XLC
 177 #    define PLATFORM_COMPILER_FAMILYID 5
 178 #    ifdef __cplusplus
 179 #        define PLATFORM_COMPILER_XLC_CXX  1
 180 #    else
 181 #        define PLATFORM_COMPILER_XLC_C  1
 182 #    endif
 183 #    define PLATFORM_COMPILER_VERSION __xlC__
 184 #    define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
 185          ( ((maj) << 8) | ((min) << 4) | (pat) )
 186 
 187 #elif defined(__DECC) || defined(__DECCXX)
 188 #    define PLATFORM_COMPILER_COMPAQ  1
 189 #    define PLATFORM_COMPILER_FAMILYNAME COMPAQ
 190 #    define PLATFORM_COMPILER_FAMILYID 6
 191 #    ifdef __cplusplus
 192 #        define PLATFORM_COMPILER_COMPAQ_CXX  1
 193 #    else
 194 #        define PLATFORM_COMPILER_COMPAQ_C  1
 195 #    endif
 196 #    if defined(__DECC_VER)
 197 #        define PLATFORM_COMPILER_VERSION __DECC_VER
 198 #    elif defined(__DECCXX_VER)
 199 #        define PLATFORM_COMPILER_VERSION __DECCXX_VER
 200 #    endif
 201 
 202 #    define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
 203          ( ((maj) * 10000000) + ((min) * 100000) + (90000) + (pat) )
 204          
 205 
 206 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
 207 #    define PLATFORM_COMPILER_SUN  1
 208 #    define PLATFORM_COMPILER_FAMILYNAME SUN
 209 #    define PLATFORM_COMPILER_FAMILYID 7
 210 #    ifdef __cplusplus
 211 #        define PLATFORM_COMPILER_SUN_CXX  1
 212 #    else
 213 #        define PLATFORM_COMPILER_SUN_C  1
 214 #    endif
 215 #    if defined(__SUNPRO_C) && __SUNPRO_C > 0
 216 #        define PLATFORM_COMPILER_VERSION __SUNPRO_C
 217 #    elif defined(__SUNPRO_CC) && __SUNPRO_CC > 0
 218 #        define PLATFORM_COMPILER_VERSION __SUNPRO_CC
 219 #    endif
 220 #    define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
 221          ( ((maj) << 8) | ((min) << 4) | (pat) )
 222 
 223 #elif defined(__HP_cc) || defined(__HP_aCC)
 224 #    define PLATFORM_COMPILER_HP  1
 225 #    define PLATFORM_COMPILER_FAMILYNAME HP
 226 #    define PLATFORM_COMPILER_FAMILYID 8
 227 #    ifdef __cplusplus
 228 #        define PLATFORM_COMPILER_HP_CXX  1
 229 #    else
 230 #        define PLATFORM_COMPILER_HP_C  1
 231 #    endif
 232 #    if defined(__HP_cc) && __HP_cc > 0
 233 #        define PLATFORM_COMPILER_VERSION __HP_cc
 234 #    elif defined(__HP_aCC) && __HP_aCC > 0
 235 #        define PLATFORM_COMPILER_VERSION __HP_aCC
 236 #    endif
 237 #    define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
 238          ( ((maj) << 16) | ((min) << 8) | (pat) )
 239 
 240 #elif defined(_SGI_COMPILER_VERSION) || \
 241    (defined(_COMPILER_VERSION) && defined(__sgi) && !defined(__GNUC__)) 
 242 #    define PLATFORM_COMPILER_SGI  1
 243 #    define PLATFORM_COMPILER_FAMILYNAME SGI
 244 #    define PLATFORM_COMPILER_FAMILYID 9
 245 #    ifdef __cplusplus
 246 #        define PLATFORM_COMPILER_SGI_CXX  1
 247 #    else
 248 #        define PLATFORM_COMPILER_SGI_C  1
 249 #    endif
 250 #    if defined(_SGI_COMPILER_VERSION) && _SGI_COMPILER_VERSION > 0
 251 #        define PLATFORM_COMPILER_VERSION _SGI_COMPILER_VERSION
 252 #    elif defined(_COMPILER_VERSION) && _COMPILER_VERSION > 0
 253 #        define PLATFORM_COMPILER_VERSION _COMPILER_VERSION
 254 #    endif
 255 #    define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
 256          ( ((maj) << 8) | ((min) << 4) | (pat) )
 257 
 258 #elif defined(_CRAYC)
 259 #    define PLATFORM_COMPILER_CRAY  1
 260 #    define PLATFORM_COMPILER_FAMILYNAME CRAY
 261 #    define PLATFORM_COMPILER_FAMILYID 10
 262 #    ifdef __cplusplus
 263 #        define PLATFORM_COMPILER_CRAY_CXX  1
 264 #    else
 265 #        define PLATFORM_COMPILER_CRAY_C  1
 266 #    endif
 267 #    if defined(_RELEASE) && defined(_RELEASE_MINOR) 
 268 #        define PLATFORM_COMPILER_VERSION \
 269              PLATFORM_COMPILER_VERSION_INT(_RELEASE,_RELEASE_MINOR,0)
 270 #     elif defined(_RELEASE) 
 271 #        define PLATFORM_COMPILER_VERSION \
 272              PLATFORM_COMPILER_VERSION_INT(_RELEASE,0,0)
 273 #     endif
 274 #     ifdef _RELEASE_STRING 
 275 #        define PLATFORM_COMPILER_VERSION_STR _RELEASE_STRING
 276 #     endif
 277 
 278 #elif defined(__KCC)
 279 #    define PLATFORM_COMPILER_KAI  1
 280 #    define PLATFORM_COMPILER_FAMILYNAME KAI
 281 #    define PLATFORM_COMPILER_FAMILYID 11
 282 #    ifdef __cplusplus
 283 #        define PLATFORM_COMPILER_KAI_CXX  1
 284 #    else
 285 #        define PLATFORM_COMPILER_KAI_C  1
 286 #    endif
 287 
 288 #elif defined(__MTA__)
 289 #    define PLATFORM_COMPILER_MTA  1
 290 #    define PLATFORM_COMPILER_FAMILYNAME MTA
 291 #    define PLATFORM_COMPILER_FAMILYID 12
 292 #    ifdef __cplusplus
 293 #        define PLATFORM_COMPILER_MTA_CXX  1
 294 #    else
 295 #        define PLATFORM_COMPILER_MTA_C  1
 296 #    endif
 297 
 298 #elif defined(_SX)
 299 #    define PLATFORM_COMPILER_NECSX  1
 300 #    define PLATFORM_COMPILER_FAMILYNAME NECSX
 301 #    define PLATFORM_COMPILER_FAMILYID 13
 302 #    ifdef __cplusplus
 303 #        define PLATFORM_COMPILER_NECSX_CXX  1
 304 #    else
 305 #        define PLATFORM_COMPILER_NECSX_C  1
 306 #    endif
 307 
 308 #elif defined(_MSC_VER)
 309 #    define PLATFORM_COMPILER_MICROSOFT  1
 310 #    define PLATFORM_COMPILER_FAMILYNAME MICROSOFT
 311 #    define PLATFORM_COMPILER_FAMILYID 14
 312 #    ifdef __cplusplus
 313 #        define PLATFORM_COMPILER_MICROSOFT_CXX  1
 314 #    else
 315 #        define PLATFORM_COMPILER_MICROSOFT_C  1
 316 #    endif
 317 #    define PLATFORM_COMPILER_VERSION _MSC_VER
 318 
 319 #elif defined(__TINYC__)
 320 #    define PLATFORM_COMPILER_TINY  1
 321 #    define PLATFORM_COMPILER_FAMILYNAME TINY
 322 #    define PLATFORM_COMPILER_FAMILYID 15
 323 #    ifdef __cplusplus
 324 #        define PLATFORM_COMPILER_TINY_CXX  1
 325 #    else
 326 #        define PLATFORM_COMPILER_TINY_C  1
 327 #    endif
 328 
 329 #elif defined(__LCC__)
 330 #    define PLATFORM_COMPILER_LCC 1
 331 #    define PLATFORM_COMPILER_FAMILYNAME LCC
 332 #    define PLATFORM_COMPILER_FAMILYID 16
 333 #    ifdef __cplusplus
 334 #        define PLATFORM_COMPILER_LCC_CXX  1
 335 #    else
 336 #        define PLATFORM_COMPILER_LCC_C  1
 337 #    endif
 338 
 339 #else 
 340 #     define PLATFORM_COMPILER_UNKNOWN  1
 341 #endif
 342 
 343 
 344 
 345 #if defined(__GNUC__)
 346 #    undef PLATFORM_COMPILER_UNKNOWN
 347 #    ifndef PLATFORM_COMPILER_FAMILYID
 348 #        define PLATFORM_COMPILER_GNU  1
 349 #        define PLATFORM_COMPILER_FAMILYNAME GNU
 350 #        define PLATFORM_COMPILER_FAMILYID 1
 351 #        ifdef __cplusplus
 352 #            define PLATFORM_COMPILER_GNU_CXX  1
 353 #        else
 354 #            define PLATFORM_COMPILER_GNU_C  1
 355 #        endif
 356 #        if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
 357 #            define PLATFORM_COMPILER_VERSION \
 358                  PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
 359 #        elif defined(__GNUC_MINOR__) 
 360 #            define PLATFORM_COMPILER_VERSION \
 361                  PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,0)
 362 #        else
 363 #            define PLATFORM_COMPILER_VERSION \
 364                  PLATFORM_COMPILER_VERSION_INT(__GNUC__,0,0)
 365 #        endif
 366 #        define PLATFORM_COMPILER_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR
 367 #    else
 368 #        define _PLATFORM_COMPILER_GNU_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR
 369 #    endif
 370      
 371 #    if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
 372 #        define __PLATFORM_COMPILER_GNU_VERSION_STR \
 373              _STRINGIFY(__GNUC__) "." _STRINGIFY(__GNUC_MINOR__) "." _STRINGIFY(__GNUC_PATCHLEVEL__)
 374 #    elif defined(__GNUC_MINOR__)
 375 #        define __PLATFORM_COMPILER_GNU_VERSION_STR \
 376              _STRINGIFY(__GNUC__) "." _STRINGIFY(__GNUC_MINOR__) ".?"
 377 #    else
 378 #        define __PLATFORM_COMPILER_GNU_VERSION_STR \
 379              _STRINGIFY(__GNUC__) ".?.?"
 380 #    endif
 381 #elif defined(PLATFORM_COMPILER_UNKNOWN) 
 382 #    define PLATFORM_COMPILER_FAMILYNAME UNKNOWN
 383 #    define PLATFORM_COMPILER_FAMILYID 0
 384 #endif
 385 
 386 
 387 #ifndef PLATFORM_COMPILER_VERSION
 388 #    define PLATFORM_COMPILER_VERSION 0 
 389 #endif
 390 
 391 #ifndef PLATFORM_COMPILER_VERSION_STR
 392 #    define PLATFORM_COMPILER_VERSION_STR _STRINGIFY(PLATFORM_COMPILER_VERSION)
 393 #endif
 394 
 395 #ifndef PLATFORM_COMPILER_VERSION_INT
 396 #    define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
 397         (((maj) << 16) | ((min) << 8) | (pat))
 398 #endif
 399 
 400 
 401 #endif