From 08ffdbe987915583e955724829601cf25517e741 Mon Sep 17 00:00:00 2001 From: Shiqing Fan Date: Mon, 15 Feb 2010 22:14:59 +0000 Subject: [PATCH] Changes for portable platform headers. Commit it on behalf of Ralph. This commit was SVN r22619. --- configure.ac | 2 +- ompi/CMakeLists.txt | 3 - ompi/include/Makefile.am | 7 +- ..._platform.h.in => mpi_portable_platform.h} | 802 +++++++++--------- opal/include/Makefile.am | 5 +- opal/include/opal_portable_platform.h | 401 +++++++++ orte/tools/orte-info/param.c | 36 +- 7 files changed, 828 insertions(+), 428 deletions(-) rename ompi/include/{mpi_portable_platform.h.in => mpi_portable_platform.h} (97%) create mode 100644 opal/include/opal_portable_platform.h diff --git a/configure.ac b/configure.ac index ed53485eaf..c571231f34 100644 --- a/configure.ac +++ b/configure.ac @@ -114,7 +114,7 @@ AM_CONFIG_HEADER([opal/include/opal_config.h]) m4_ifdef([project_orte], [AM_CONFIG_HEADER([orte/include/orte_config.h])]) m4_ifdef([project_ompi], - [AM_CONFIG_HEADER([ompi/include/ompi_config.h ompi/include/mpi.h ompi/include/mpi_portable_platform.h])]) + [AM_CONFIG_HEADER([ompi/include/ompi_config.h ompi/include/mpi.h])]) # override/fixup the version numbers set by AC_INIT, since on # developer builds, there's no good way to know what the version is diff --git a/ompi/CMakeLists.txt b/ompi/CMakeLists.txt index 1dfccc0e8d..5460154077 100644 --- a/ompi/CMakeLists.txt +++ b/ompi/CMakeLists.txt @@ -133,9 +133,6 @@ ENDIF(BUILD_SHARED_LIBS) # generate ompi_config.h CONFIGURE_FILE(${OpenMPI_SOURCE_DIR}/ompi/include/ompi_config.h.in ${OpenMPI_BINARY_DIR}/ompi/include/ompi_config.h) -# generate mpi_portable_platform.h -CONFIGURE_FILE(${OpenMPI_SOURCE_DIR}/ompi/include/mpi_portable_platform.h.in ${OpenMPI_BINARY_DIR}/ompi/include/mpi_portable_platform.h) - # generate version.h CONFIGURE_FILE(${OpenMPI_SOURCE_DIR}/ompi/include/ompi/version.h.in ${OpenMPI_BINARY_DIR}/ompi/include/ompi/version.h) diff --git a/ompi/include/Makefile.am b/ompi/include/Makefile.am index d83652573e..e993ebacdd 100644 --- a/ompi/include/Makefile.am +++ b/ompi/include/Makefile.am @@ -9,7 +9,7 @@ # University of Stuttgart. All rights reserved. # Copyright (c) 2004-2005 The Regents of the University of California. # All rights reserved. -# Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. # $COPYRIGHT$ # @@ -28,7 +28,7 @@ nodist_headers = \ ompi_config.h # Install these in $(includedir) -include_HEADERS = +include_HEADERS = mpi_portable_platform.h # Always install these in $(pkgincludedir) pkginclude_HEADERS = @@ -44,8 +44,7 @@ endif # counterparts (which AM automatically ships). nodist_include_HEADERS = \ mpi.h \ - mpi-ext.h \ - mpi_portable_platform.h + mpi-ext.h if OMPI_WANT_F77_BINDINGS nodist_include_HEADERS += \ diff --git a/ompi/include/mpi_portable_platform.h.in b/ompi/include/mpi_portable_platform.h similarity index 97% rename from ompi/include/mpi_portable_platform.h.in rename to ompi/include/mpi_portable_platform.h index dce562bcbf..e89b1d4a0a 100644 --- a/ompi/include/mpi_portable_platform.h.in +++ b/ompi/include/mpi_portable_platform.h @@ -1,401 +1,401 @@ -/* - * Header file with preprocessor magic to figure out, which compiler the user has been calling! - * - * This code is adapted from the file other/portable_platform.h of GASnet-1.14.0: - * - Ripping out the required parts. - * - Get rid of brackets as it messes up autoconf - * - Delete version tests for older PGI versions (#include "omp.h" not acceptabe) - * - Indent ('#' should be in column 0) - * - * External packages (vt, romio) depend on top_build_dir/ompi/include, therefore - * although this is not changed in the configure process, this has to be set as - * a .in file... - * --------------------------------------------------------------------------- - */ -#ifndef MPI_PORTABLE_PLATFORM_H -#define MPI_PORTABLE_PLATFORM_H - -/* All files in this directory and all sub-directories (except where otherwise noted) - * are subject to the following licensing terms: - * - * --------------------------------------------------------------------------- - * "Copyright (c) 2000-2003 The Regents of the University of California. - * All rights reserved. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose, without fee, and without written agreement is - * hereby granted, provided that the above copyright notice and the following - * two paragraphs appear in all copies of this software. - * - * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT - * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF - * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." - * --------------------------------------------------------------------------- - * - * Please see the license.txt files within the gm-conduit, lapi-conduit and - * vapi-conduit directories for the licensing terms governing those - * contributed components. - * - * The authors/contributors of GASNet include: - * - * Dan Bonachea : - * General infrastructure & documentation - * mpi-conduit - * elan-conduit - * smp-conduit - * udp-conduit - * extended-ref - * template-conduit - * Christian Bell : gm-conduit, shmem-conduit - * Mike Welcome : lapi-conduit, portals-conduit - * Paul H. Hargrove : vapi-conduit, ibv-conduit - * Rajesh Nishtala : collectives, dcmf-conduit - * Parry Husbands (PJRHusbands@lbl.gov): lapi-conduit - * - * For more information about GASNet, visit our home page at: - * http://gasnet.cs.berkeley.edu/ - * Or send email to: - * - * - * Source code contributions (fixes, patches, extensions etc.) should be - * sent to to be reviewed for acceptance into the primary - * distribution. Contributions are most likely to be accepted if they - * are provided as public domain, or under a BSD-style license such as - * the one above. - * - */ -#ifndef _STRINGIFY -#define _STRINGIFY_HELPER(x) #x -#define _STRINGIFY(x) _STRINGIFY_HELPER(x) -#endif - -#if defined(__INTEL_COMPILER) -# define PLATFORM_COMPILER_FAMILYNAME INTEL -# define PLATFORM_COMPILER_FAMILYID 2 -# ifdef __cplusplus -# define PLATFORM_COMPILER_INTEL_CXX 1 -# else -# define PLATFORM_COMPILER_INTEL_C 1 -# endif -# define _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE 19700000 /* year 1970: predates most intel products :) */ -# ifdef __INTEL_COMPILER_BUILD_DATE -# define _PLATFORM_INTEL_COMPILER_BUILD_DATE __INTEL_COMPILER_BUILD_DATE -# else -# define _PLATFORM_INTEL_COMPILER_BUILD_DATE _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE -# endif - /* patch number is a decimal build date: YYYYMMDD */ -# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ - (((((maj) * 10) | (min)) << 20) | \ - ((pat) < _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE ? \ - _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE : ((pat)-_PLATFORM_COMPILER_INTEL_MIN_BUILDDATE))) -# define PLATFORM_COMPILER_VERSION \ - PLATFORM_COMPILER_VERSION_INT(__INTEL_COMPILER/10, __INTEL_COMPILER/100, _PLATFORM_INTEL_COMPILER_BUILD_DATE) -# define PLATFORM_COMPILER_VERSION_STR \ - _STRINGIFY(__INTEL_COMPILER)"."_STRINGIFY(_PLATFORM_INTEL_COMPILER_BUILD_DATE) - -#elif defined(__PATHSCALE__) -# define PLATFORM_COMPILER_PATHSCALE 1 -# define PLATFORM_COMPILER_FAMILYNAME PATHSCALE -# define PLATFORM_COMPILER_FAMILYID 3 -# ifdef __cplusplus -# define PLATFORM_COMPILER_PATHSCALE_CXX 1 -# else -# define PLATFORM_COMPILER_PATHSCALE_C 1 -# endif -# define PLATFORM_COMPILER_VERSION \ - PLATFORM_COMPILER_VERSION_INT(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__) -# define PLATFORM_COMPILER_VERSION_STR __PATHSCALE__ - -#elif defined(__PGI) -# define PLATFORM_COMPILER_PGI 1 -# define PLATFORM_COMPILER_FAMILYNAME PGI -# define PLATFORM_COMPILER_FAMILYID 4 -# ifdef __cplusplus -# define PLATFORM_COMPILER_PGI_CXX 1 -# else -# define PLATFORM_COMPILER_PGI_C 1 -# endif -# if __PGIC__ == 99 - /* bug 2230: PGI versioning was broken for some platforms in 7.0 - no way to know exact version, but provide something slightly more accurate */ -# define PLATFORM_COMPILER_VERSION 0x070000 -# define PLATFORM_COMPILER_VERSION_STR "7.?-?" -# elif defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) -# define PLATFORM_COMPILER_VERSION \ - PLATFORM_COMPILER_VERSION_INT(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__) -# define PLATFORM_COMPILER_VERSION_STR \ - _STRINGIFY(__PGIC__)"."_STRINGIFY(__PGIC_MINOR__)"-"_STRINGIFY(__PGIC_PATCHLEVEL__) -# else - /* PGI before 6.1-4 lacks any version ID preprocessor macros - so use this filthy hack */ - /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - * We cannot do these within mpi.h.in, as we should not include ompi.h - * Hopefully, compilers with integrated preprocessors will not analyse code within the #if 0-block - * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - */ -#if 0 -# ifdef PLATFORM_PGI_IS_ANCIENT - /* Include below might fail for ancient versions lacking this header, but testing shows it - works back to at least 5.1-3 (Nov 2003), and based on docs probably back to 3.2 (Sep 2000) */ -# define PLATFORM_COMPILER_VERSION 0 -# elif defined(__x86_64__) /* bug 1753 - 64-bit omp.h upgrade happenned in <6.0-8,6.1-1) */ -# include "omp.h" -# if defined(_PGOMP_H) - /* 6.1.1 or newer */ -# define PLATFORM_COMPILER_VERSION 0x060101 -# define PLATFORM_COMPILER_VERSION_STR ">=6.1-1" -# else - /* 6.0.8 or older */ -# define PLATFORM_COMPILER_VERSION 0 -# define PLATFORM_COMPILER_VERSION_STR "<=6.0-8" -# endif -# else /* 32-bit omp.h upgrade happenned in <5.2-4,6.0-8 */ -# include "omp.h" -# if defined(_PGOMP_H) - /* 6.0-8 or newer */ -# define PLATFORM_COMPILER_VERSION 0x060008 -# define PLATFORM_COMPILER_VERSION_STR ">=6.0-8" -# else - /* 5.2-4 or older */ -# define PLATFORM_COMPILER_VERSION 0 -# define PLATFORM_COMPILER_VERSION_STR "<=5.2-4" -# endif -# endif -#endif /* 0 */ - /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */ -# endif - -#elif defined(__xlC__) -# define PLATFORM_COMPILER_XLC 1 -# define PLATFORM_COMPILER_FAMILYNAME XLC -# define PLATFORM_COMPILER_FAMILYID 5 -# ifdef __cplusplus -# define PLATFORM_COMPILER_XLC_CXX 1 -# else -# define PLATFORM_COMPILER_XLC_C 1 -# endif -# define PLATFORM_COMPILER_VERSION __xlC__ -# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ - ( ((maj) << 8) | ((min) << 4) | (pat) ) - -#elif defined(__DECC) || defined(__DECCXX) -# define PLATFORM_COMPILER_COMPAQ 1 -# define PLATFORM_COMPILER_FAMILYNAME COMPAQ -# define PLATFORM_COMPILER_FAMILYID 6 -# ifdef __cplusplus -# define PLATFORM_COMPILER_COMPAQ_CXX 1 -# else -# define PLATFORM_COMPILER_COMPAQ_C 1 -# endif -# if defined(__DECC_VER) -# define PLATFORM_COMPILER_VERSION __DECC_VER -# elif defined(__DECCXX_VER) -# define PLATFORM_COMPILER_VERSION __DECCXX_VER -# endif - -# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ - ( ((maj) * 10000000) + ((min) * 100000) + (90000) + (pat) ) - /* 90000 = official ver, 80000 = customer special ver, 60000 = field test ver */ - -#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) -# define PLATFORM_COMPILER_SUN 1 -# define PLATFORM_COMPILER_FAMILYNAME SUN -# define PLATFORM_COMPILER_FAMILYID 7 -# ifdef __cplusplus -# define PLATFORM_COMPILER_SUN_CXX 1 -# else -# define PLATFORM_COMPILER_SUN_C 1 -# endif -# if defined(__SUNPRO_C) && __SUNPRO_C > 0 -# define PLATFORM_COMPILER_VERSION __SUNPRO_C -# elif defined(__SUNPRO_CC) && __SUNPRO_CC > 0 -# define PLATFORM_COMPILER_VERSION __SUNPRO_CC -# endif -# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ - ( ((maj) << 8) | ((min) << 4) | (pat) ) - -#elif defined(__HP_cc) || defined(__HP_aCC) -# define PLATFORM_COMPILER_HP 1 -# define PLATFORM_COMPILER_FAMILYNAME HP -# define PLATFORM_COMPILER_FAMILYID 8 -# ifdef __cplusplus -# define PLATFORM_COMPILER_HP_CXX 1 -# else -# define PLATFORM_COMPILER_HP_C 1 -# endif -# if defined(__HP_cc) && __HP_cc > 0 -# define PLATFORM_COMPILER_VERSION __HP_cc -# elif defined(__HP_aCC) && __HP_aCC > 0 -# define PLATFORM_COMPILER_VERSION __HP_aCC -# endif -# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ - ( ((maj) << 16) | ((min) << 8) | (pat) ) - -#elif defined(_SGI_COMPILER_VERSION) || \ - (defined(_COMPILER_VERSION) && defined(__sgi) && !defined(__GNUC__)) /* 7.3.0 and earlier lack _SGI_COMPILER_VERSION */ -# define PLATFORM_COMPILER_SGI 1 -# define PLATFORM_COMPILER_FAMILYNAME SGI -# define PLATFORM_COMPILER_FAMILYID 9 -# ifdef __cplusplus -# define PLATFORM_COMPILER_SGI_CXX 1 -# else -# define PLATFORM_COMPILER_SGI_C 1 -# endif -# if defined(_SGI_COMPILER_VERSION) && _SGI_COMPILER_VERSION > 0 -# define PLATFORM_COMPILER_VERSION _SGI_COMPILER_VERSION -# elif defined(_COMPILER_VERSION) && _COMPILER_VERSION > 0 -# define PLATFORM_COMPILER_VERSION _COMPILER_VERSION -# endif -# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ - ( ((maj) << 8) | ((min) << 4) | (pat) ) - -#elif defined(_CRAYC) -# define PLATFORM_COMPILER_CRAY 1 -# define PLATFORM_COMPILER_FAMILYNAME CRAY -# define PLATFORM_COMPILER_FAMILYID 10 -# ifdef __cplusplus -# define PLATFORM_COMPILER_CRAY_CXX 1 -# else -# define PLATFORM_COMPILER_CRAY_C 1 -# endif -# if defined(_RELEASE) && defined(_RELEASE_MINOR) /* X1 and XT */ -# define PLATFORM_COMPILER_VERSION \ - PLATFORM_COMPILER_VERSION_INT(_RELEASE,_RELEASE_MINOR,0) -# elif defined(_RELEASE) /* T3E */ -# define PLATFORM_COMPILER_VERSION \ - PLATFORM_COMPILER_VERSION_INT(_RELEASE,0,0) -# endif -# ifdef _RELEASE_STRING /* X1 and XT */ -# define PLATFORM_COMPILER_VERSION_STR _RELEASE_STRING -# endif - -#elif defined(__KCC) -# define PLATFORM_COMPILER_KAI 1 -# define PLATFORM_COMPILER_FAMILYNAME KAI -# define PLATFORM_COMPILER_FAMILYID 11 -# ifdef __cplusplus -# define PLATFORM_COMPILER_KAI_CXX 1 -# else -# define PLATFORM_COMPILER_KAI_C 1 -# endif - -#elif defined(__MTA__) -# define PLATFORM_COMPILER_MTA 1 -# define PLATFORM_COMPILER_FAMILYNAME MTA -# define PLATFORM_COMPILER_FAMILYID 12 -# ifdef __cplusplus -# define PLATFORM_COMPILER_MTA_CXX 1 -# else -# define PLATFORM_COMPILER_MTA_C 1 -# endif - -#elif defined(_SX) -# define PLATFORM_COMPILER_NECSX 1 -# define PLATFORM_COMPILER_FAMILYNAME NECSX -# define PLATFORM_COMPILER_FAMILYID 13 -# ifdef __cplusplus -# define PLATFORM_COMPILER_NECSX_CXX 1 -# else -# define PLATFORM_COMPILER_NECSX_C 1 -# endif - -#elif defined(_MSC_VER) -# define PLATFORM_COMPILER_MICROSOFT 1 -# define PLATFORM_COMPILER_FAMILYNAME MICROSOFT -# define PLATFORM_COMPILER_FAMILYID 14 -# ifdef __cplusplus -# define PLATFORM_COMPILER_MICROSOFT_CXX 1 -# else -# define PLATFORM_COMPILER_MICROSOFT_C 1 -# endif -# define PLATFORM_COMPILER_VERSION _MSC_VER - -#elif defined(__TINYC__) -# define PLATFORM_COMPILER_TINY 1 -# define PLATFORM_COMPILER_FAMILYNAME TINY -# define PLATFORM_COMPILER_FAMILYID 15 -# ifdef __cplusplus -# define PLATFORM_COMPILER_TINY_CXX 1 -# else -# define PLATFORM_COMPILER_TINY_C 1 -# endif - -#elif defined(__LCC__) -# define PLATFORM_COMPILER_LCC 1 -# define PLATFORM_COMPILER_FAMILYNAME LCC -# define PLATFORM_COMPILER_FAMILYID 16 -# ifdef __cplusplus -# define PLATFORM_COMPILER_LCC_CXX 1 -# else -# define PLATFORM_COMPILER_LCC_C 1 -# endif - -#else /* unknown compiler */ -# define PLATFORM_COMPILER_UNKNOWN 1 -#endif - -/* this stanza comes last, because many vendor compilers lie and claim - to be GNU C for compatibility reasons and/or because they share a frontend */ -#if defined(__GNUC__) -# undef PLATFORM_COMPILER_UNKNOWN -# ifndef PLATFORM_COMPILER_FAMILYID -# define PLATFORM_COMPILER_GNU 1 -# define PLATFORM_COMPILER_FAMILYNAME GNU -# define PLATFORM_COMPILER_FAMILYID 1 -# ifdef __cplusplus -# define PLATFORM_COMPILER_GNU_CXX 1 -# else -# define PLATFORM_COMPILER_GNU_C 1 -# endif -# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) -# define PLATFORM_COMPILER_VERSION \ - PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__) -# elif defined(__GNUC_MINOR__) /* older versions of egcs lack __GNUC_PATCHLEVEL__ */ -# define PLATFORM_COMPILER_VERSION \ - PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,0) -# else -# define PLATFORM_COMPILER_VERSION \ - PLATFORM_COMPILER_VERSION_INT(__GNUC__,0,0) -# endif -# define PLATFORM_COMPILER_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR -# else -# define _PLATFORM_COMPILER_GNU_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR -# endif - /* gather any advertised GNU version number info, even for non-gcc compilers */ -# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) -# define __PLATFORM_COMPILER_GNU_VERSION_STR \ - _STRINGIFY(__GNUC__)"."_STRINGIFY(__GNUC_MINOR__)"."_STRINGIFY(__GNUC_PATCHLEVEL__) -# elif defined(__GNUC_MINOR__) -# define __PLATFORM_COMPILER_GNU_VERSION_STR \ - _STRINGIFY(__GNUC__)"."_STRINGIFY(__GNUC_MINOR__)".?" -# else -# define __PLATFORM_COMPILER_GNU_VERSION_STR \ - _STRINGIFY(__GNUC__)".?.?" -# endif -#elif defined(PLATFORM_COMPILER_UNKNOWN) /* unknown compiler */ -# define PLATFORM_COMPILER_FAMILYNAME UNKNOWN -# define PLATFORM_COMPILER_FAMILYID 0 -#endif - -/* Default Values */ -#ifndef PLATFORM_COMPILER_VERSION -# define PLATFORM_COMPILER_VERSION 0 /* don't know */ -#endif - -#ifndef PLATFORM_COMPILER_VERSION_STR -# define PLATFORM_COMPILER_VERSION_STR _STRINGIFY(PLATFORM_COMPILER_VERSION) -#endif - -#ifndef PLATFORM_COMPILER_VERSION_INT -# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ - (((maj) << 16) | ((min) << 8) | (pat)) -#endif - - -#endif /* MPI_PORTABLE_PLATFORM_H */ +/* + * Header file with preprocessor magic to figure out, which compiler the user has been calling! + * + * This code is adapted from the file other/portable_platform.h of GASnet-1.14.0: + * - Ripping out the required parts. + * - Get rid of brackets as it messes up autoconf + * - Delete version tests for older PGI versions (#include "omp.h" not acceptabe) + * - Indent ('#' should be in column 0) + * + * External packages (vt, romio) depend on top_build_dir/ompi/include, therefore + * although this is not changed in the configure process, this has to be set as + * a .in file... + * --------------------------------------------------------------------------- + */ +#ifndef MPI_PORTABLE_PLATFORM_H +#define MPI_PORTABLE_PLATFORM_H + +/* All files in this directory and all sub-directories (except where otherwise noted) + * are subject to the following licensing terms: + * + * --------------------------------------------------------------------------- + * "Copyright (c) 2000-2003 The Regents of the University of California. + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without written agreement is + * hereby granted, provided that the above copyright notice and the following + * two paragraphs appear in all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF + * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + * --------------------------------------------------------------------------- + * + * Please see the license.txt files within the gm-conduit, lapi-conduit and + * vapi-conduit directories for the licensing terms governing those + * contributed components. + * + * The authors/contributors of GASNet include: + * + * Dan Bonachea : + * General infrastructure & documentation + * mpi-conduit + * elan-conduit + * smp-conduit + * udp-conduit + * extended-ref + * template-conduit + * Christian Bell : gm-conduit, shmem-conduit + * Mike Welcome : lapi-conduit, portals-conduit + * Paul H. Hargrove : vapi-conduit, ibv-conduit + * Rajesh Nishtala : collectives, dcmf-conduit + * Parry Husbands (PJRHusbands@lbl.gov): lapi-conduit + * + * For more information about GASNet, visit our home page at: + * http://gasnet.cs.berkeley.edu/ + * Or send email to: + * + * + * Source code contributions (fixes, patches, extensions etc.) should be + * sent to to be reviewed for acceptance into the primary + * distribution. Contributions are most likely to be accepted if they + * are provided as public domain, or under a BSD-style license such as + * the one above. + * + */ +#ifndef _STRINGIFY +#define _STRINGIFY_HELPER(x) #x +#define _STRINGIFY(x) _STRINGIFY_HELPER(x) +#endif + +#if defined(__INTEL_COMPILER) +# define PLATFORM_COMPILER_FAMILYNAME INTEL +# define PLATFORM_COMPILER_FAMILYID 2 +# ifdef __cplusplus +# define PLATFORM_COMPILER_INTEL_CXX 1 +# else +# define PLATFORM_COMPILER_INTEL_C 1 +# endif +# define _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE 19700000 /* year 1970: predates most intel products :) */ +# ifdef __INTEL_COMPILER_BUILD_DATE +# define _PLATFORM_INTEL_COMPILER_BUILD_DATE __INTEL_COMPILER_BUILD_DATE +# else +# define _PLATFORM_INTEL_COMPILER_BUILD_DATE _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE +# endif + /* patch number is a decimal build date: YYYYMMDD */ +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + (((((maj) * 10) | (min)) << 20) | \ + ((pat) < _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE ? \ + _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE : ((pat)-_PLATFORM_COMPILER_INTEL_MIN_BUILDDATE))) +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__INTEL_COMPILER/10, __INTEL_COMPILER/100, _PLATFORM_INTEL_COMPILER_BUILD_DATE) +# define PLATFORM_COMPILER_VERSION_STR \ + _STRINGIFY(__INTEL_COMPILER)"."_STRINGIFY(_PLATFORM_INTEL_COMPILER_BUILD_DATE) + +#elif defined(__PATHSCALE__) +# define PLATFORM_COMPILER_PATHSCALE 1 +# define PLATFORM_COMPILER_FAMILYNAME PATHSCALE +# define PLATFORM_COMPILER_FAMILYID 3 +# ifdef __cplusplus +# define PLATFORM_COMPILER_PATHSCALE_CXX 1 +# else +# define PLATFORM_COMPILER_PATHSCALE_C 1 +# endif +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__) +# define PLATFORM_COMPILER_VERSION_STR __PATHSCALE__ + +#elif defined(__PGI) +# define PLATFORM_COMPILER_PGI 1 +# define PLATFORM_COMPILER_FAMILYNAME PGI +# define PLATFORM_COMPILER_FAMILYID 4 +# ifdef __cplusplus +# define PLATFORM_COMPILER_PGI_CXX 1 +# else +# define PLATFORM_COMPILER_PGI_C 1 +# endif +# if __PGIC__ == 99 + /* bug 2230: PGI versioning was broken for some platforms in 7.0 + no way to know exact version, but provide something slightly more accurate */ +# define PLATFORM_COMPILER_VERSION 0x070000 +# define PLATFORM_COMPILER_VERSION_STR "7.?-?" +# elif defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__) +# define PLATFORM_COMPILER_VERSION_STR \ + _STRINGIFY(__PGIC__)"."_STRINGIFY(__PGIC_MINOR__)"-"_STRINGIFY(__PGIC_PATCHLEVEL__) +# else + /* PGI before 6.1-4 lacks any version ID preprocessor macros - so use this filthy hack */ + /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + * We cannot do these within mpi.h.in, as we should not include ompi.h + * Hopefully, compilers with integrated preprocessors will not analyse code within the #if 0-block + * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + */ +#if 0 +# ifdef PLATFORM_PGI_IS_ANCIENT + /* Include below might fail for ancient versions lacking this header, but testing shows it + works back to at least 5.1-3 (Nov 2003), and based on docs probably back to 3.2 (Sep 2000) */ +# define PLATFORM_COMPILER_VERSION 0 +# elif defined(__x86_64__) /* bug 1753 - 64-bit omp.h upgrade happenned in <6.0-8,6.1-1) */ +# include "omp.h" +# if defined(_PGOMP_H) + /* 6.1.1 or newer */ +# define PLATFORM_COMPILER_VERSION 0x060101 +# define PLATFORM_COMPILER_VERSION_STR ">=6.1-1" +# else + /* 6.0.8 or older */ +# define PLATFORM_COMPILER_VERSION 0 +# define PLATFORM_COMPILER_VERSION_STR "<=6.0-8" +# endif +# else /* 32-bit omp.h upgrade happenned in <5.2-4,6.0-8 */ +# include "omp.h" +# if defined(_PGOMP_H) + /* 6.0-8 or newer */ +# define PLATFORM_COMPILER_VERSION 0x060008 +# define PLATFORM_COMPILER_VERSION_STR ">=6.0-8" +# else + /* 5.2-4 or older */ +# define PLATFORM_COMPILER_VERSION 0 +# define PLATFORM_COMPILER_VERSION_STR "<=5.2-4" +# endif +# endif +#endif /* 0 */ + /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */ +# endif + +#elif defined(__xlC__) +# define PLATFORM_COMPILER_XLC 1 +# define PLATFORM_COMPILER_FAMILYNAME XLC +# define PLATFORM_COMPILER_FAMILYID 5 +# ifdef __cplusplus +# define PLATFORM_COMPILER_XLC_CXX 1 +# else +# define PLATFORM_COMPILER_XLC_C 1 +# endif +# define PLATFORM_COMPILER_VERSION __xlC__ +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) << 8) | ((min) << 4) | (pat) ) + +#elif defined(__DECC) || defined(__DECCXX) +# define PLATFORM_COMPILER_COMPAQ 1 +# define PLATFORM_COMPILER_FAMILYNAME COMPAQ +# define PLATFORM_COMPILER_FAMILYID 6 +# ifdef __cplusplus +# define PLATFORM_COMPILER_COMPAQ_CXX 1 +# else +# define PLATFORM_COMPILER_COMPAQ_C 1 +# endif +# if defined(__DECC_VER) +# define PLATFORM_COMPILER_VERSION __DECC_VER +# elif defined(__DECCXX_VER) +# define PLATFORM_COMPILER_VERSION __DECCXX_VER +# endif + +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) * 10000000) + ((min) * 100000) + (90000) + (pat) ) + /* 90000 = official ver, 80000 = customer special ver, 60000 = field test ver */ + +#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# define PLATFORM_COMPILER_SUN 1 +# define PLATFORM_COMPILER_FAMILYNAME SUN +# define PLATFORM_COMPILER_FAMILYID 7 +# ifdef __cplusplus +# define PLATFORM_COMPILER_SUN_CXX 1 +# else +# define PLATFORM_COMPILER_SUN_C 1 +# endif +# if defined(__SUNPRO_C) && __SUNPRO_C > 0 +# define PLATFORM_COMPILER_VERSION __SUNPRO_C +# elif defined(__SUNPRO_CC) && __SUNPRO_CC > 0 +# define PLATFORM_COMPILER_VERSION __SUNPRO_CC +# endif +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) << 8) | ((min) << 4) | (pat) ) + +#elif defined(__HP_cc) || defined(__HP_aCC) +# define PLATFORM_COMPILER_HP 1 +# define PLATFORM_COMPILER_FAMILYNAME HP +# define PLATFORM_COMPILER_FAMILYID 8 +# ifdef __cplusplus +# define PLATFORM_COMPILER_HP_CXX 1 +# else +# define PLATFORM_COMPILER_HP_C 1 +# endif +# if defined(__HP_cc) && __HP_cc > 0 +# define PLATFORM_COMPILER_VERSION __HP_cc +# elif defined(__HP_aCC) && __HP_aCC > 0 +# define PLATFORM_COMPILER_VERSION __HP_aCC +# endif +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) << 16) | ((min) << 8) | (pat) ) + +#elif defined(_SGI_COMPILER_VERSION) || \ + (defined(_COMPILER_VERSION) && defined(__sgi) && !defined(__GNUC__)) /* 7.3.0 and earlier lack _SGI_COMPILER_VERSION */ +# define PLATFORM_COMPILER_SGI 1 +# define PLATFORM_COMPILER_FAMILYNAME SGI +# define PLATFORM_COMPILER_FAMILYID 9 +# ifdef __cplusplus +# define PLATFORM_COMPILER_SGI_CXX 1 +# else +# define PLATFORM_COMPILER_SGI_C 1 +# endif +# if defined(_SGI_COMPILER_VERSION) && _SGI_COMPILER_VERSION > 0 +# define PLATFORM_COMPILER_VERSION _SGI_COMPILER_VERSION +# elif defined(_COMPILER_VERSION) && _COMPILER_VERSION > 0 +# define PLATFORM_COMPILER_VERSION _COMPILER_VERSION +# endif +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) << 8) | ((min) << 4) | (pat) ) + +#elif defined(_CRAYC) +# define PLATFORM_COMPILER_CRAY 1 +# define PLATFORM_COMPILER_FAMILYNAME CRAY +# define PLATFORM_COMPILER_FAMILYID 10 +# ifdef __cplusplus +# define PLATFORM_COMPILER_CRAY_CXX 1 +# else +# define PLATFORM_COMPILER_CRAY_C 1 +# endif +# if defined(_RELEASE) && defined(_RELEASE_MINOR) /* X1 and XT */ +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(_RELEASE,_RELEASE_MINOR,0) +# elif defined(_RELEASE) /* T3E */ +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(_RELEASE,0,0) +# endif +# ifdef _RELEASE_STRING /* X1 and XT */ +# define PLATFORM_COMPILER_VERSION_STR _RELEASE_STRING +# endif + +#elif defined(__KCC) +# define PLATFORM_COMPILER_KAI 1 +# define PLATFORM_COMPILER_FAMILYNAME KAI +# define PLATFORM_COMPILER_FAMILYID 11 +# ifdef __cplusplus +# define PLATFORM_COMPILER_KAI_CXX 1 +# else +# define PLATFORM_COMPILER_KAI_C 1 +# endif + +#elif defined(__MTA__) +# define PLATFORM_COMPILER_MTA 1 +# define PLATFORM_COMPILER_FAMILYNAME MTA +# define PLATFORM_COMPILER_FAMILYID 12 +# ifdef __cplusplus +# define PLATFORM_COMPILER_MTA_CXX 1 +# else +# define PLATFORM_COMPILER_MTA_C 1 +# endif + +#elif defined(_SX) +# define PLATFORM_COMPILER_NECSX 1 +# define PLATFORM_COMPILER_FAMILYNAME NECSX +# define PLATFORM_COMPILER_FAMILYID 13 +# ifdef __cplusplus +# define PLATFORM_COMPILER_NECSX_CXX 1 +# else +# define PLATFORM_COMPILER_NECSX_C 1 +# endif + +#elif defined(_MSC_VER) +# define PLATFORM_COMPILER_MICROSOFT 1 +# define PLATFORM_COMPILER_FAMILYNAME MICROSOFT +# define PLATFORM_COMPILER_FAMILYID 14 +# ifdef __cplusplus +# define PLATFORM_COMPILER_MICROSOFT_CXX 1 +# else +# define PLATFORM_COMPILER_MICROSOFT_C 1 +# endif +# define PLATFORM_COMPILER_VERSION _MSC_VER + +#elif defined(__TINYC__) +# define PLATFORM_COMPILER_TINY 1 +# define PLATFORM_COMPILER_FAMILYNAME TINY +# define PLATFORM_COMPILER_FAMILYID 15 +# ifdef __cplusplus +# define PLATFORM_COMPILER_TINY_CXX 1 +# else +# define PLATFORM_COMPILER_TINY_C 1 +# endif + +#elif defined(__LCC__) +# define PLATFORM_COMPILER_LCC 1 +# define PLATFORM_COMPILER_FAMILYNAME LCC +# define PLATFORM_COMPILER_FAMILYID 16 +# ifdef __cplusplus +# define PLATFORM_COMPILER_LCC_CXX 1 +# else +# define PLATFORM_COMPILER_LCC_C 1 +# endif + +#else /* unknown compiler */ +# define PLATFORM_COMPILER_UNKNOWN 1 +#endif + +/* this stanza comes last, because many vendor compilers lie and claim + to be GNU C for compatibility reasons and/or because they share a frontend */ +#if defined(__GNUC__) +# undef PLATFORM_COMPILER_UNKNOWN +# ifndef PLATFORM_COMPILER_FAMILYID +# define PLATFORM_COMPILER_GNU 1 +# define PLATFORM_COMPILER_FAMILYNAME GNU +# define PLATFORM_COMPILER_FAMILYID 1 +# ifdef __cplusplus +# define PLATFORM_COMPILER_GNU_CXX 1 +# else +# define PLATFORM_COMPILER_GNU_C 1 +# endif +# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__) +# elif defined(__GNUC_MINOR__) /* older versions of egcs lack __GNUC_PATCHLEVEL__ */ +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,0) +# else +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__GNUC__,0,0) +# endif +# define PLATFORM_COMPILER_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR +# else +# define _PLATFORM_COMPILER_GNU_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR +# endif + /* gather any advertised GNU version number info, even for non-gcc compilers */ +# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) +# define __PLATFORM_COMPILER_GNU_VERSION_STR \ + _STRINGIFY(__GNUC__)"."_STRINGIFY(__GNUC_MINOR__)"."_STRINGIFY(__GNUC_PATCHLEVEL__) +# elif defined(__GNUC_MINOR__) +# define __PLATFORM_COMPILER_GNU_VERSION_STR \ + _STRINGIFY(__GNUC__)"."_STRINGIFY(__GNUC_MINOR__)".?" +# else +# define __PLATFORM_COMPILER_GNU_VERSION_STR \ + _STRINGIFY(__GNUC__)".?.?" +# endif +#elif defined(PLATFORM_COMPILER_UNKNOWN) /* unknown compiler */ +# define PLATFORM_COMPILER_FAMILYNAME UNKNOWN +# define PLATFORM_COMPILER_FAMILYID 0 +#endif + +/* Default Values */ +#ifndef PLATFORM_COMPILER_VERSION +# define PLATFORM_COMPILER_VERSION 0 /* don't know */ +#endif + +#ifndef PLATFORM_COMPILER_VERSION_STR +# define PLATFORM_COMPILER_VERSION_STR _STRINGIFY(PLATFORM_COMPILER_VERSION) +#endif + +#ifndef PLATFORM_COMPILER_VERSION_INT +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + (((maj) << 16) | ((min) << 8) | (pat)) +#endif + + +#endif /* MPI_PORTABLE_PLATFORM_H */ diff --git a/opal/include/Makefile.am b/opal/include/Makefile.am index 6c3c24c776..9aa48ec6b1 100644 --- a/opal/include/Makefile.am +++ b/opal/include/Makefile.am @@ -9,6 +9,7 @@ # University of Stuttgart. All rights reserved. # Copyright (c) 2004-2005 The Regents of the University of California. # All rights reserved. +# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -20,7 +21,9 @@ EXTRA_DIST = CMakeLists.txt headers = \ opal_config_bottom.h \ - opal_stdint.h + opal_stdint.h \ + opal_portable_platform.h + nodist_headers = \ opal_config.h diff --git a/opal/include/opal_portable_platform.h b/opal/include/opal_portable_platform.h new file mode 100644 index 0000000000..059b40003b --- /dev/null +++ b/opal/include/opal_portable_platform.h @@ -0,0 +1,401 @@ +/* + * Header file with preprocessor magic to figure out, which compiler the user has been calling! + * + * This code is adapted from the file other/portable_platform.h of GASnet-1.14.0: + * - Ripping out the required parts. + * - Get rid of brackets as it messes up autoconf + * - Delete version tests for older PGI versions (#include "omp.h" not acceptabe) + * - Indent ('#' should be in column 0) + * + * External packages (vt, romio) depend on top_build_dir/ompi/include, therefore + * although this is not changed in the configure process, this has to be set as + * a .in file... + * --------------------------------------------------------------------------- + */ +#ifndef OPAL_PORTABLE_PLATFORM_H +#define OPAL_PORTABLE_PLATFORM_H + +/* All files in this directory and all sub-directories (except where otherwise noted) + * are subject to the following licensing terms: + * + * --------------------------------------------------------------------------- + * "Copyright (c) 2000-2003 The Regents of the University of California. + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without written agreement is + * hereby granted, provided that the above copyright notice and the following + * two paragraphs appear in all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF + * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + * --------------------------------------------------------------------------- + * + * Please see the license.txt files within the gm-conduit, lapi-conduit and + * vapi-conduit directories for the licensing terms governing those + * contributed components. + * + * The authors/contributors of GASNet include: + * + * Dan Bonachea : + * General infrastructure & documentation + * mpi-conduit + * elan-conduit + * smp-conduit + * udp-conduit + * extended-ref + * template-conduit + * Christian Bell : gm-conduit, shmem-conduit + * Mike Welcome : lapi-conduit, portals-conduit + * Paul H. Hargrove : vapi-conduit, ibv-conduit + * Rajesh Nishtala : collectives, dcmf-conduit + * Parry Husbands (PJRHusbands@lbl.gov): lapi-conduit + * + * For more information about GASNet, visit our home page at: + * http://gasnet.cs.berkeley.edu/ + * Or send email to: + * + * + * Source code contributions (fixes, patches, extensions etc.) should be + * sent to to be reviewed for acceptance into the primary + * distribution. Contributions are most likely to be accepted if they + * are provided as public domain, or under a BSD-style license such as + * the one above. + * + */ +#ifndef _STRINGIFY +#define _STRINGIFY_HELPER(x) #x +#define _STRINGIFY(x) _STRINGIFY_HELPER(x) +#endif + +#if defined(__INTEL_COMPILER) +# define PLATFORM_COMPILER_FAMILYNAME INTEL +# define PLATFORM_COMPILER_FAMILYID 2 +# ifdef __cplusplus +# define PLATFORM_COMPILER_INTEL_CXX 1 +# else +# define PLATFORM_COMPILER_INTEL_C 1 +# endif +# define _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE 19700000 /* year 1970: predates most intel products :) */ +# ifdef __INTEL_COMPILER_BUILD_DATE +# define _PLATFORM_INTEL_COMPILER_BUILD_DATE __INTEL_COMPILER_BUILD_DATE +# else +# define _PLATFORM_INTEL_COMPILER_BUILD_DATE _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE +# endif + /* patch number is a decimal build date: YYYYMMDD */ +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + (((((maj) * 10) | (min)) << 20) | \ + ((pat) < _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE ? \ + _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE : ((pat)-_PLATFORM_COMPILER_INTEL_MIN_BUILDDATE))) +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__INTEL_COMPILER/10, __INTEL_COMPILER/100, _PLATFORM_INTEL_COMPILER_BUILD_DATE) +# define PLATFORM_COMPILER_VERSION_STR \ + _STRINGIFY(__INTEL_COMPILER)"."_STRINGIFY(_PLATFORM_INTEL_COMPILER_BUILD_DATE) + +#elif defined(__PATHSCALE__) +# define PLATFORM_COMPILER_PATHSCALE 1 +# define PLATFORM_COMPILER_FAMILYNAME PATHSCALE +# define PLATFORM_COMPILER_FAMILYID 3 +# ifdef __cplusplus +# define PLATFORM_COMPILER_PATHSCALE_CXX 1 +# else +# define PLATFORM_COMPILER_PATHSCALE_C 1 +# endif +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__) +# define PLATFORM_COMPILER_VERSION_STR __PATHSCALE__ + +#elif defined(__PGI) +# define PLATFORM_COMPILER_PGI 1 +# define PLATFORM_COMPILER_FAMILYNAME PGI +# define PLATFORM_COMPILER_FAMILYID 4 +# ifdef __cplusplus +# define PLATFORM_COMPILER_PGI_CXX 1 +# else +# define PLATFORM_COMPILER_PGI_C 1 +# endif +# if __PGIC__ == 99 + /* bug 2230: PGI versioning was broken for some platforms in 7.0 + no way to know exact version, but provide something slightly more accurate */ +# define PLATFORM_COMPILER_VERSION 0x070000 +# define PLATFORM_COMPILER_VERSION_STR "7.?-?" +# elif defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__) +# define PLATFORM_COMPILER_VERSION_STR \ + _STRINGIFY(__PGIC__)"."_STRINGIFY(__PGIC_MINOR__)"-"_STRINGIFY(__PGIC_PATCHLEVEL__) +# else + /* PGI before 6.1-4 lacks any version ID preprocessor macros - so use this filthy hack */ + /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + * We cannot do these within mpi.h.in, as we should not include ompi.h + * Hopefully, compilers with integrated preprocessors will not analyse code within the #if 0-block + * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + */ +#if 0 +# ifdef PLATFORM_PGI_IS_ANCIENT + /* Include below might fail for ancient versions lacking this header, but testing shows it + works back to at least 5.1-3 (Nov 2003), and based on docs probably back to 3.2 (Sep 2000) */ +# define PLATFORM_COMPILER_VERSION 0 +# elif defined(__x86_64__) /* bug 1753 - 64-bit omp.h upgrade happenned in <6.0-8,6.1-1) */ +# include "omp.h" +# if defined(_PGOMP_H) + /* 6.1.1 or newer */ +# define PLATFORM_COMPILER_VERSION 0x060101 +# define PLATFORM_COMPILER_VERSION_STR ">=6.1-1" +# else + /* 6.0.8 or older */ +# define PLATFORM_COMPILER_VERSION 0 +# define PLATFORM_COMPILER_VERSION_STR "<=6.0-8" +# endif +# else /* 32-bit omp.h upgrade happenned in <5.2-4,6.0-8 */ +# include "omp.h" +# if defined(_PGOMP_H) + /* 6.0-8 or newer */ +# define PLATFORM_COMPILER_VERSION 0x060008 +# define PLATFORM_COMPILER_VERSION_STR ">=6.0-8" +# else + /* 5.2-4 or older */ +# define PLATFORM_COMPILER_VERSION 0 +# define PLATFORM_COMPILER_VERSION_STR "<=5.2-4" +# endif +# endif +#endif /* 0 */ + /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */ +# endif + +#elif defined(__xlC__) +# define PLATFORM_COMPILER_XLC 1 +# define PLATFORM_COMPILER_FAMILYNAME XLC +# define PLATFORM_COMPILER_FAMILYID 5 +# ifdef __cplusplus +# define PLATFORM_COMPILER_XLC_CXX 1 +# else +# define PLATFORM_COMPILER_XLC_C 1 +# endif +# define PLATFORM_COMPILER_VERSION __xlC__ +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) << 8) | ((min) << 4) | (pat) ) + +#elif defined(__DECC) || defined(__DECCXX) +# define PLATFORM_COMPILER_COMPAQ 1 +# define PLATFORM_COMPILER_FAMILYNAME COMPAQ +# define PLATFORM_COMPILER_FAMILYID 6 +# ifdef __cplusplus +# define PLATFORM_COMPILER_COMPAQ_CXX 1 +# else +# define PLATFORM_COMPILER_COMPAQ_C 1 +# endif +# if defined(__DECC_VER) +# define PLATFORM_COMPILER_VERSION __DECC_VER +# elif defined(__DECCXX_VER) +# define PLATFORM_COMPILER_VERSION __DECCXX_VER +# endif + +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) * 10000000) + ((min) * 100000) + (90000) + (pat) ) + /* 90000 = official ver, 80000 = customer special ver, 60000 = field test ver */ + +#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# define PLATFORM_COMPILER_SUN 1 +# define PLATFORM_COMPILER_FAMILYNAME SUN +# define PLATFORM_COMPILER_FAMILYID 7 +# ifdef __cplusplus +# define PLATFORM_COMPILER_SUN_CXX 1 +# else +# define PLATFORM_COMPILER_SUN_C 1 +# endif +# if defined(__SUNPRO_C) && __SUNPRO_C > 0 +# define PLATFORM_COMPILER_VERSION __SUNPRO_C +# elif defined(__SUNPRO_CC) && __SUNPRO_CC > 0 +# define PLATFORM_COMPILER_VERSION __SUNPRO_CC +# endif +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) << 8) | ((min) << 4) | (pat) ) + +#elif defined(__HP_cc) || defined(__HP_aCC) +# define PLATFORM_COMPILER_HP 1 +# define PLATFORM_COMPILER_FAMILYNAME HP +# define PLATFORM_COMPILER_FAMILYID 8 +# ifdef __cplusplus +# define PLATFORM_COMPILER_HP_CXX 1 +# else +# define PLATFORM_COMPILER_HP_C 1 +# endif +# if defined(__HP_cc) && __HP_cc > 0 +# define PLATFORM_COMPILER_VERSION __HP_cc +# elif defined(__HP_aCC) && __HP_aCC > 0 +# define PLATFORM_COMPILER_VERSION __HP_aCC +# endif +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) << 16) | ((min) << 8) | (pat) ) + +#elif defined(_SGI_COMPILER_VERSION) || \ + (defined(_COMPILER_VERSION) && defined(__sgi) && !defined(__GNUC__)) /* 7.3.0 and earlier lack _SGI_COMPILER_VERSION */ +# define PLATFORM_COMPILER_SGI 1 +# define PLATFORM_COMPILER_FAMILYNAME SGI +# define PLATFORM_COMPILER_FAMILYID 9 +# ifdef __cplusplus +# define PLATFORM_COMPILER_SGI_CXX 1 +# else +# define PLATFORM_COMPILER_SGI_C 1 +# endif +# if defined(_SGI_COMPILER_VERSION) && _SGI_COMPILER_VERSION > 0 +# define PLATFORM_COMPILER_VERSION _SGI_COMPILER_VERSION +# elif defined(_COMPILER_VERSION) && _COMPILER_VERSION > 0 +# define PLATFORM_COMPILER_VERSION _COMPILER_VERSION +# endif +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + ( ((maj) << 8) | ((min) << 4) | (pat) ) + +#elif defined(_CRAYC) +# define PLATFORM_COMPILER_CRAY 1 +# define PLATFORM_COMPILER_FAMILYNAME CRAY +# define PLATFORM_COMPILER_FAMILYID 10 +# ifdef __cplusplus +# define PLATFORM_COMPILER_CRAY_CXX 1 +# else +# define PLATFORM_COMPILER_CRAY_C 1 +# endif +# if defined(_RELEASE) && defined(_RELEASE_MINOR) /* X1 and XT */ +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(_RELEASE,_RELEASE_MINOR,0) +# elif defined(_RELEASE) /* T3E */ +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(_RELEASE,0,0) +# endif +# ifdef _RELEASE_STRING /* X1 and XT */ +# define PLATFORM_COMPILER_VERSION_STR _RELEASE_STRING +# endif + +#elif defined(__KCC) +# define PLATFORM_COMPILER_KAI 1 +# define PLATFORM_COMPILER_FAMILYNAME KAI +# define PLATFORM_COMPILER_FAMILYID 11 +# ifdef __cplusplus +# define PLATFORM_COMPILER_KAI_CXX 1 +# else +# define PLATFORM_COMPILER_KAI_C 1 +# endif + +#elif defined(__MTA__) +# define PLATFORM_COMPILER_MTA 1 +# define PLATFORM_COMPILER_FAMILYNAME MTA +# define PLATFORM_COMPILER_FAMILYID 12 +# ifdef __cplusplus +# define PLATFORM_COMPILER_MTA_CXX 1 +# else +# define PLATFORM_COMPILER_MTA_C 1 +# endif + +#elif defined(_SX) +# define PLATFORM_COMPILER_NECSX 1 +# define PLATFORM_COMPILER_FAMILYNAME NECSX +# define PLATFORM_COMPILER_FAMILYID 13 +# ifdef __cplusplus +# define PLATFORM_COMPILER_NECSX_CXX 1 +# else +# define PLATFORM_COMPILER_NECSX_C 1 +# endif + +#elif defined(_MSC_VER) +# define PLATFORM_COMPILER_MICROSOFT 1 +# define PLATFORM_COMPILER_FAMILYNAME MICROSOFT +# define PLATFORM_COMPILER_FAMILYID 14 +# ifdef __cplusplus +# define PLATFORM_COMPILER_MICROSOFT_CXX 1 +# else +# define PLATFORM_COMPILER_MICROSOFT_C 1 +# endif +# define PLATFORM_COMPILER_VERSION _MSC_VER + +#elif defined(__TINYC__) +# define PLATFORM_COMPILER_TINY 1 +# define PLATFORM_COMPILER_FAMILYNAME TINY +# define PLATFORM_COMPILER_FAMILYID 15 +# ifdef __cplusplus +# define PLATFORM_COMPILER_TINY_CXX 1 +# else +# define PLATFORM_COMPILER_TINY_C 1 +# endif + +#elif defined(__LCC__) +# define PLATFORM_COMPILER_LCC 1 +# define PLATFORM_COMPILER_FAMILYNAME LCC +# define PLATFORM_COMPILER_FAMILYID 16 +# ifdef __cplusplus +# define PLATFORM_COMPILER_LCC_CXX 1 +# else +# define PLATFORM_COMPILER_LCC_C 1 +# endif + +#else /* unknown compiler */ +# define PLATFORM_COMPILER_UNKNOWN 1 +#endif + +/* this stanza comes last, because many vendor compilers lie and claim + to be GNU C for compatibility reasons and/or because they share a frontend */ +#if defined(__GNUC__) +# undef PLATFORM_COMPILER_UNKNOWN +# ifndef PLATFORM_COMPILER_FAMILYID +# define PLATFORM_COMPILER_GNU 1 +# define PLATFORM_COMPILER_FAMILYNAME GNU +# define PLATFORM_COMPILER_FAMILYID 1 +# ifdef __cplusplus +# define PLATFORM_COMPILER_GNU_CXX 1 +# else +# define PLATFORM_COMPILER_GNU_C 1 +# endif +# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__) +# elif defined(__GNUC_MINOR__) /* older versions of egcs lack __GNUC_PATCHLEVEL__ */ +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,0) +# else +# define PLATFORM_COMPILER_VERSION \ + PLATFORM_COMPILER_VERSION_INT(__GNUC__,0,0) +# endif +# define PLATFORM_COMPILER_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR +# else +# define _PLATFORM_COMPILER_GNU_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR +# endif + /* gather any advertised GNU version number info, even for non-gcc compilers */ +# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) +# define __PLATFORM_COMPILER_GNU_VERSION_STR \ + _STRINGIFY(__GNUC__)"."_STRINGIFY(__GNUC_MINOR__)"."_STRINGIFY(__GNUC_PATCHLEVEL__) +# elif defined(__GNUC_MINOR__) +# define __PLATFORM_COMPILER_GNU_VERSION_STR \ + _STRINGIFY(__GNUC__)"."_STRINGIFY(__GNUC_MINOR__)".?" +# else +# define __PLATFORM_COMPILER_GNU_VERSION_STR \ + _STRINGIFY(__GNUC__)".?.?" +# endif +#elif defined(PLATFORM_COMPILER_UNKNOWN) /* unknown compiler */ +# define PLATFORM_COMPILER_FAMILYNAME UNKNOWN +# define PLATFORM_COMPILER_FAMILYID 0 +#endif + +/* Default Values */ +#ifndef PLATFORM_COMPILER_VERSION +# define PLATFORM_COMPILER_VERSION 0 /* don't know */ +#endif + +#ifndef PLATFORM_COMPILER_VERSION_STR +# define PLATFORM_COMPILER_VERSION_STR _STRINGIFY(PLATFORM_COMPILER_VERSION) +#endif + +#ifndef PLATFORM_COMPILER_VERSION_INT +# define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \ + (((maj) << 16) | ((min) << 8) | (pat)) +#endif + + +#endif /* OPAL_PORTABLE_PLATFORM_H */ diff --git a/orte/tools/orte-info/param.c b/orte/tools/orte-info/param.c index 1cb41584de..3833ec6329 100644 --- a/orte/tools/orte-info/param.c +++ b/orte/tools/orte-info/param.c @@ -39,10 +39,10 @@ #include "opal/util/printf.h" #include "opal/memoryhooks/memory.h" #include "opal/mca/base/mca_base_param.h" +#include "opal/include/opal_portable_platform.h" #include "orte/util/show_help.h" -#include "ompi/include/mpi_portable_platform.h" #include "orte/tools/orte-info/orte-info.h" @@ -535,13 +535,13 @@ void orte_info_do_config(bool want_all) orte_info_out("Built on", "build:timestamp", OMPI_BUILD_DATE); orte_info_out("Built host", "build:host", OMPI_BUILD_HOST); - orte_info_out("C corteler", "corteler:c:command", OPAL_CC); - orte_info_out("C corteler absolute", "corteler:c:absolute", OPAL_CC_ABSOLUTE); - orte_info_out("C corteler family name", "corteler:c:familyname", _STRINGIFY(OPAL_BUILD_PLATFORM_COMPILER_FAMILYNAME)); - orte_info_out("C corteler version", "corteler:c:version", _STRINGIFY(OPAL_BUILD_PLATFORM_COMPILER_VERSION_STR)); + orte_info_out("C compiler", "compiler:c:command", OPAL_CC); + orte_info_out("C compiler absolute", "compiler:c:absolute", OPAL_CC_ABSOLUTE); + orte_info_out("C compiler family name", "compiler:c:familyname", _STRINGIFY(OPAL_BUILD_PLATFORM_COMPILER_FAMILYNAME)); + orte_info_out("C compiler version", "compiler:c:version", _STRINGIFY(OPAL_BUILD_PLATFORM_COMPILER_VERSION_STR)); if (want_all) { - orte_info_out_int("C char size", "corteler:c:sizeof:char", sizeof(char)); + orte_info_out_int("C char size", "compiler:c:sizeof:char", sizeof(char)); /* JMS: should be fixed in MPI-2.2 to differentiate between C _Bool and C++ bool. For the moment, the code base assumes that they are the same. Because of opal_config_bottom.h, @@ -549,18 +549,18 @@ void orte_info_do_config(bool want_all) though this technically isn't right. This should be fixed when we update to MPI-2.2. See below for note about C++ bool alignment. */ - orte_info_out_int("C bool size", "corteler:c:sizeof:bool", sizeof(bool)); - orte_info_out_int("C short size", "corteler:c:sizeof:short", sizeof(short)); - orte_info_out_int("C int size", "corteler:c:sizeof:int", sizeof(int)); - orte_info_out_int("C long size", "corteler:c:sizeof:long", sizeof(long)); - orte_info_out_int("C float size", "corteler:c:sizeof:float", sizeof(float)); - orte_info_out_int("C double size", "corteler:c:sizeof:double", sizeof(double)); - orte_info_out_int("C pointer size", "corteler:c:sizeof:pointer", sizeof(void *)); - orte_info_out_int("C char align", "corteler:c:align:char", OPAL_ALIGNMENT_CHAR); - orte_info_out("C bool align", "corteler:c:align:bool", "skipped"); - orte_info_out_int("C int align", "corteler:c:align:int", OPAL_ALIGNMENT_INT); - orte_info_out_int("C float align", "corteler:c:align:float", OPAL_ALIGNMENT_FLOAT); - orte_info_out_int("C double align", "corteler:c:align:double", OPAL_ALIGNMENT_DOUBLE); + orte_info_out_int("C bool size", "compiler:c:sizeof:bool", sizeof(bool)); + orte_info_out_int("C short size", "compiler:c:sizeof:short", sizeof(short)); + orte_info_out_int("C int size", "compiler:c:sizeof:int", sizeof(int)); + orte_info_out_int("C long size", "compiler:c:sizeof:long", sizeof(long)); + orte_info_out_int("C float size", "compiler:c:sizeof:float", sizeof(float)); + orte_info_out_int("C double size", "compiler:c:sizeof:double", sizeof(double)); + orte_info_out_int("C pointer size", "compiler:c:sizeof:pointer", sizeof(void *)); + orte_info_out_int("C char align", "compiler:c:align:char", OPAL_ALIGNMENT_CHAR); + orte_info_out("C bool align", "compiler:c:align:bool", "skipped"); + orte_info_out_int("C int align", "compiler:c:align:int", OPAL_ALIGNMENT_INT); + orte_info_out_int("C float align", "compiler:c:align:float", OPAL_ALIGNMENT_FLOAT); + orte_info_out_int("C double align", "compiler:c:align:double", OPAL_ALIGNMENT_DOUBLE); } if (want_all) {