#if !defined(_PORTABLE_PLATFORM_H) || !defined(PLATFORM_HEADER_VERSION) \
|| _PORTABLE_PLATFORM_H != PLATFORM_HEADER_VERSION \
|| PLATFORM_HEADER_VERSION < 22
#undef PLATFORM_HEADER_VERSION
#define PLATFORM_HEADER_VERSION 22
#undef _PORTABLE_PLATFORM_H
#define _PORTABLE_PLATFORM_H PLATFORM_HEADER_VERSION
#undef PLATFORM_COMPILER_FAMILYNAME
#undef PLATFORM_COMPILER_FAMILYID
#undef PLATFORM_COMPILER_ID
#undef PLATFORM_COMPILER_VERSION
#undef PLATFORM_COMPILER_VERSION_STR
#undef PLATFORM_COMPILER_VERSION_INT
#undef PLATFORM_COMPILER_IDSTR
#undef PLATFORM_COMPILER_VERSION_GT
#undef PLATFORM_COMPILER_VERSION_GE
#undef PLATFORM_COMPILER_VERSION_EQ
#undef PLATFORM_COMPILER_VERSION_LE
#undef PLATFORM_COMPILER_VERSION_LT
#undef PLATFORM_COMPILER_C_LANGLVL
#undef PLATFORM_COMPILER_CXX_LANGLVL
#undef PLATFORM_COMPILER_INTEL
#undef PLATFORM_COMPILER_INTEL_C
#undef PLATFORM_COMPILER_INTEL_CXX
#undef PLATFORM_COMPILER_PATHSCALE
#undef PLATFORM_COMPILER_PATHSCALE_C
#undef PLATFORM_COMPILER_PATHSCALE_CXX
#undef PLATFORM_COMPILER_PGI
#undef PLATFORM_COMPILER_PGI_C
#undef PLATFORM_COMPILER_PGI_CXX
#undef PLATFORM_COMPILER_XLC
#undef PLATFORM_COMPILER_XLC_C
#undef PLATFORM_COMPILER_XLC_CXX
#undef PLATFORM_COMPILER_COMPAQ
#undef PLATFORM_COMPILER_COMPAQ_C
#undef PLATFORM_COMPILER_COMPAQ_CXX
#undef PLATFORM_COMPILER_SUN
#undef PLATFORM_COMPILER_SUN_C
#undef PLATFORM_COMPILER_SUN_CXX
#undef PLATFORM_COMPILER_HP
#undef PLATFORM_COMPILER_HP_C
#undef PLATFORM_COMPILER_HP_CXX
#undef PLATFORM_COMPILER_SGI
#undef PLATFORM_COMPILER_SGI_C
#undef PLATFORM_COMPILER_SGI_CXX
#undef PLATFORM_COMPILER_CRAY
#undef PLATFORM_COMPILER_CRAY_C
#undef PLATFORM_COMPILER_CRAY_CXX
#undef PLATFORM_COMPILER_KAI
#undef PLATFORM_COMPILER_KAI_C
#undef PLATFORM_COMPILER_KAI_CXX
#undef PLATFORM_COMPILER_MTA
#undef PLATFORM_COMPILER_MTA_C
#undef PLATFORM_COMPILER_MTA_CXX
#undef PLATFORM_COMPILER_NECSX
#undef PLATFORM_COMPILER_NECSX_C
#undef PLATFORM_COMPILER_NECSX_CXX
#undef PLATFORM_COMPILER_MICROSOFT
#undef PLATFORM_COMPILER_MICROSOFT_C
#undef PLATFORM_COMPILER_MICROSOFT_CXX
#undef PLATFORM_COMPILER_TINY
#undef PLATFORM_COMPILER_TINY_C
#undef PLATFORM_COMPILER_TINY_CXX
#undef PLATFORM_COMPILER_LCC
#undef PLATFORM_COMPILER_LCC_C
#undef PLATFORM_COMPILER_LCC_CXX
#undef PLATFORM_COMPILER_OPEN64
#undef PLATFORM_COMPILER_OPEN64_C
#undef PLATFORM_COMPILER_OPEN64_CXX
#undef PLATFORM_COMPILER_PCC
#undef PLATFORM_COMPILER_PCC_C
#undef PLATFORM_COMPILER_PCC_CXX
#undef PLATFORM_COMPILER_CLANG
#undef PLATFORM_COMPILER_CLANG_C
#undef PLATFORM_COMPILER_CLANG_CXX
#undef PLATFORM_COMPILER_NVHPC
#undef PLATFORM_COMPILER_NVHPC_C
#undef PLATFORM_COMPILER_NVHPC_CXX
#undef PLATFORM_COMPILER_GNU
#undef PLATFORM_COMPILER_GNU_C
#undef PLATFORM_COMPILER_GNU_CXX
#undef PLATFORM_COMPILER_UNKNOWN
#undef PLATFORM_OS_FAMILYNAME
#undef PLATFORM_OS_SUBFAMILYNAME
#undef PLATFORM_OS_CATAMOUNT
#undef PLATFORM_OS_BGP
#undef PLATFORM_OS_BGQ
#undef PLATFORM_OS_K42
#undef PLATFORM_OS_UCLINUX
#undef PLATFORM_OS_LINUX
#undef PLATFORM_OS_CNL
#undef PLATFORM_OS_SUBFAMILY_CNL
#undef PLATFORM_OS_WSL
#undef PLATFORM_OS_SUBFAMILY_WSL
#undef PLATFORM_OS_BLRTS
#undef PLATFORM_OS_CYGWIN
#undef PLATFORM_OS_MSWINDOWS
#undef PLATFORM_OS_AIX
#undef PLATFORM_OS_TRU64
#undef PLATFORM_OS_FREEBSD
#undef PLATFORM_OS_NETBSD
#undef PLATFORM_OS_OPENBSD
#undef PLATFORM_OS_SOLARIS
#undef PLATFORM_OS_DARWIN
#undef PLATFORM_OS_IRIX
#undef PLATFORM_OS_HPUX
#undef PLATFORM_OS_UNICOS
#undef PLATFORM_OS_MTA
#undef PLATFORM_OS_SUPERUX
#undef PLATFORM_OS_UNKNOWN
#undef PLATFORM_ARCH_FAMILYNAME
#undef PLATFORM_ARCH_32
#undef _PLATFORM_ARCH_32
#undef PLATFORM_ARCH_64
#undef _PLATFORM_ARCH_64
#undef PLATFORM_ARCH_BIG_ENDIAN
#undef _PLATFORM_ARCH_BIG_ENDIAN
#undef PLATFORM_ARCH_LITTLE_ENDIAN
#undef _PLATFORM_ARCH_LITTLE_ENDIAN
#undef PLATFORM_ARCH_POWERPC
#undef PLATFORM_ARCH_MIC
#undef PLATFORM_ARCH_X86_64
#undef PLATFORM_ARCH_IA64
#undef PLATFORM_ARCH_X86
#undef PLATFORM_ARCH_ALPHA
#undef PLATFORM_ARCH_MIPS
#undef PLATFORM_ARCH_SPARC
#undef PLATFORM_ARCH_PARISC
#undef PLATFORM_ARCH_CRAYX1
#undef PLATFORM_ARCH_CRAYT3E
#undef PLATFORM_ARCH_MTA
#undef PLATFORM_ARCH_NECSX
#undef PLATFORM_ARCH_MICROBLAZE
#undef PLATFORM_ARCH_ARM
#undef PLATFORM_ARCH_AARCH64
#undef PLATFORM_ARCH_TILE
#undef PLATFORM_ARCH_S390
#undef PLATFORM_ARCH_RISCV
#undef PLATFORM_ARCH_UNKNOWN
#undef OMPI_PORTABLE_PLATFORM_H
#define OMPI_PORTABLE_PLATFORM_H
#undef OPAL_PORTABLE_PLATFORM_H
#define OPAL_PORTABLE_PLATFORM_H
#undef _PLATFORM_STRINGIFY_HELPER
#define _PLATFORM_STRINGIFY_HELPER(x) #x
#undef PLATFORM_STRINGIFY
#define PLATFORM_STRINGIFY(x) _PLATFORM_STRINGIFY_HELPER(x)
#if defined(__INTEL_COMPILER)
#define PLATFORM_COMPILER_INTEL 1
#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
#undef _PLATFORM_INTEL_COMPILER_BUILD_DATE
#undef _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE
#define _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE 19900000
#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
#define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
(((((maj) * 100) + (min)) << 19) | \
((pat) < _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE ? \
0 : ((pat)-_PLATFORM_COMPILER_INTEL_MIN_BUILDDATE)))
#undef _PLATFORM__INTEL_COMPILER
#if __INTEL_COMPILER == 9999
#define _PLATFORM__INTEL_COMPILER 1201
#else
#define _PLATFORM__INTEL_COMPILER __INTEL_COMPILER
#endif
#define PLATFORM_COMPILER_VERSION \
PLATFORM_COMPILER_VERSION_INT(_PLATFORM__INTEL_COMPILER/100, _PLATFORM__INTEL_COMPILER%100, _PLATFORM_INTEL_COMPILER_BUILD_DATE)
#define PLATFORM_COMPILER_VERSION_STR \
PLATFORM_STRINGIFY(_PLATFORM__INTEL_COMPILER) "." PLATFORM_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__+0)
#define PLATFORM_COMPILER_VERSION_STR __PATHSCALE__
#elif defined(__NVCOMPILER)
#define PLATFORM_COMPILER_NVHPC 1
#define PLATFORM_COMPILER_FAMILYNAME NVHPC
#define PLATFORM_COMPILER_FAMILYID 20
#ifdef __cplusplus
#define PLATFORM_COMPILER_NVHPC_CXX 1
#else
#define PLATFORM_COMPILER_NVHPC_C 1
#endif
#define PLATFORM_COMPILER_VERSION \
PLATFORM_COMPILER_VERSION_INT(__NVCOMPILER_MAJOR__,__NVCOMPILER_MINOR__,__NVCOMPILER_PATCHLEVEL__)
#define PLATFORM_COMPILER_VERSION_STR \
PLATFORM_STRINGIFY(__NVCOMPILER_MAJOR__) "." PLATFORM_STRINGIFY(__NVCOMPILER_MINOR__) "-" PLATFORM_STRINGIFY(__NVCOMPILER_PATCHLEVEL__)
#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
#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 \
PLATFORM_STRINGIFY(__PGIC__) "." PLATFORM_STRINGIFY(__PGIC_MINOR__) "-" PLATFORM_STRINGIFY(__PGIC_PATCHLEVEL__)
#else
#ifdef PLATFORM_PGI_IS_ANCIENT
#define PLATFORM_COMPILER_VERSION 0
#elif defined(__x86_64__)
#include "omp.h"
#if defined(_PGOMP_H)
#define PLATFORM_COMPILER_VERSION 0x060101
#define PLATFORM_COMPILER_VERSION_STR ">=6.1-1"
#else
#define PLATFORM_COMPILER_VERSION 0
#define PLATFORM_COMPILER_VERSION_STR "<=6.0-8"
#endif
#else
#include "omp.h"
#if defined(_PGOMP_H)
#define PLATFORM_COMPILER_VERSION 0x060008
#define PLATFORM_COMPILER_VERSION_STR ">=6.0-8"
#else
#define PLATFORM_COMPILER_VERSION 0
#define PLATFORM_COMPILER_VERSION_STR "<=5.2-4"
#endif
#endif
#endif
#elif defined(__xlC__) || defined(__ibmxl__)
#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
#ifdef __ibmxl_version__
#define PLATFORM_COMPILER_VERSION \
(__ibmxl_version__ << 24 | __ibmxl_release__ << 16 | \
__ibmxl_modification__ << 8 | __ibmxl_ptf_fix_level__)
#define PLATFORM_COMPILER_VERSION_STR \
PLATFORM_STRINGIFY(__ibmxl_version__) "." PLATFORM_STRINGIFY(__ibmxl_release__) "." PLATFORM_STRINGIFY(__ibmxl_modification__) "." PLATFORM_STRINGIFY(__ibmxl_ptf_fix_level__)
#else
#ifdef __xlC_ver__
#define PLATFORM_COMPILER_VERSION (__xlC__ << 16 | __xlC_ver__)
#else
#define PLATFORM_COMPILER_VERSION (__xlC__ << 16)
#endif
#ifdef __xlc__
#define PLATFORM_COMPILER_VERSION_STR __xlc__
#else
#define PLATFORM_COMPILER_VERSION_STR PLATFORM_STRINGIFY(__xlC__)
#endif
#endif
#define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
( ((maj) << 24) | ((min) << 16) | ((pat) << 8) )
#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) )
#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) ( \
(min) < 10 ? \
( ((maj) << 8) | ((min) << 4) | (pat) ) : \
( ((maj) << 12) | (((min)/10) << 8) | (((min)%10) << 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__))
#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_MAJOR) && defined(_RELEASE_MINOR)
#define PLATFORM_COMPILER_VERSION \
PLATFORM_COMPILER_VERSION_INT(_RELEASE_MAJOR,_RELEASE_MINOR,0)
#elif defined(_RELEASE) && defined(_RELEASE_MINOR)
#define PLATFORM_COMPILER_VERSION \
PLATFORM_COMPILER_VERSION_INT(_RELEASE,_RELEASE_MINOR,0)
#elif defined(_RELEASE)
#define PLATFORM_COMPILER_VERSION \
PLATFORM_COMPILER_VERSION_INT(_RELEASE,0,0)
#endif
#ifdef _RELEASE_STRING
#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
#elif defined(__OPENCC__)
#define PLATFORM_COMPILER_OPEN64 1
#define PLATFORM_COMPILER_FAMILYNAME OPEN64
#define PLATFORM_COMPILER_FAMILYID 17
#ifdef __cplusplus
#define PLATFORM_COMPILER_OPEN64_CXX 1
#else
#define PLATFORM_COMPILER_OPEN64_C 1
#endif
#define PLATFORM_COMPILER_VERSION \
PLATFORM_COMPILER_VERSION_INT(__OPENCC__,__OPENCC_MINOR__,0)
#define PLATFORM_COMPILER_VERSION_STR __OPEN64__
#elif defined(__PCC__)
#define PLATFORM_COMPILER_PCC 1
#define PLATFORM_COMPILER_FAMILYNAME PCC
#define PLATFORM_COMPILER_FAMILYID 18
#ifdef __cplusplus
#define PLATFORM_COMPILER_PCC_CXX 1
#else
#define PLATFORM_COMPILER_PCC_C 1
#endif
#define PLATFORM_COMPILER_VERSION \
PLATFORM_COMPILER_VERSION_INT(__PCC__,__PCC_MINOR__,__PCC_MINORMINOR__)
#define PLATFORM_COMPILER_VERSION_STR \
PLATFORM_STRINGIFY(__PCC__) "." PLATFORM_STRINGIFY(__PCC_MINOR__) "." PLATFORM_STRINGIFY(__PCC_MINORMINOR__)
#elif defined(__clang__)
#define PLATFORM_COMPILER_CLANG 1
#define PLATFORM_COMPILER_FAMILYNAME CLANG
#define PLATFORM_COMPILER_FAMILYID 19
#ifdef __cplusplus
#define PLATFORM_COMPILER_CLANG_CXX 1
#else
#define PLATFORM_COMPILER_CLANG_C 1
#endif
#ifdef __clang_version__
#define PLATFORM_COMPILER_VERSION \
PLATFORM_COMPILER_VERSION_INT(__clang_major__,__clang_minor__,__clang_patchlevel__)
#define PLATFORM_COMPILER_VERSION_STR __clang_version__
#endif
#else
#define PLATFORM_COMPILER_UNKNOWN 1
#endif
#undef _PLATFORM_COMPILER_GNU_VERSION_STR
#undef __PLATFORM_COMPILER_GNU_VERSION_STR
#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__)
#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
#if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
#define __PLATFORM_COMPILER_GNU_VERSION_STR \
PLATFORM_STRINGIFY(__GNUC__) "." PLATFORM_STRINGIFY(__GNUC_MINOR__) "." PLATFORM_STRINGIFY(__GNUC_PATCHLEVEL__)
#elif defined(__GNUC_MINOR__)
#define __PLATFORM_COMPILER_GNU_VERSION_STR \
PLATFORM_STRINGIFY(__GNUC__) "." PLATFORM_STRINGIFY(__GNUC_MINOR__) ".?"
#else
#define __PLATFORM_COMPILER_GNU_VERSION_STR \
PLATFORM_STRINGIFY(__GNUC__) ".?.?"
#endif
#elif defined(PLATFORM_COMPILER_UNKNOWN)
#define PLATFORM_COMPILER_FAMILYNAME UNKNOWN
#define PLATFORM_COMPILER_FAMILYID 0
#endif
#ifndef PLATFORM_COMPILER_VERSION
#define PLATFORM_COMPILER_VERSION 0
#endif
#ifndef PLATFORM_COMPILER_VERSION_STR
#define PLATFORM_COMPILER_VERSION_STR PLATFORM_STRINGIFY(PLATFORM_COMPILER_VERSION)
#endif
#ifndef PLATFORM_COMPILER_VERSION_INT
#define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
(((maj) << 16) | ((min) << 8) | (pat))
#endif
#define PLATFORM_COMPILER_VERSION_GT(maj,min,pat) \
PLATFORM_COMPILER_VERSION > PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
#define PLATFORM_COMPILER_VERSION_GE(maj,min,pat) \
PLATFORM_COMPILER_VERSION >= PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
#define PLATFORM_COMPILER_VERSION_EQ(maj,min,pat) \
PLATFORM_COMPILER_VERSION == PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
#define PLATFORM_COMPILER_VERSION_LE(maj,min,pat) \
PLATFORM_COMPILER_VERSION <= PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
#define PLATFORM_COMPILER_VERSION_LT(maj,min,pat) \
PLATFORM_COMPILER_VERSION < PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
#ifdef __cplusplus
#define PLATFORM_COMPILER_ID (10000+PLATFORM_COMPILER_FAMILYID)
#else
#define PLATFORM_COMPILER_ID PLATFORM_COMPILER_FAMILYID
#endif
#if !defined(PLATFORM_COMPILER_C_LANGLVL) && !defined(PLATFORM_COMPILER_CXX_LANGLVL)
#if defined(__cplusplus) && (__cplusplus > 0)
#define PLATFORM_COMPILER_CXX_LANGLVL __cplusplus
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 0)
#define PLATFORM_COMPILER_C_LANGLVL __STDC_VERSION__
#elif defined(__STDC__) && !defined(__cplusplus) && !defined(__STDC_VERSION__)
#define PLATFORM_COMPILER_C_LANGLVL 199000L
#else
#endif
#endif
#undef _PLATFORM_COMPILER_STD_STDC
#ifdef __STDC__
#define _PLATFORM_COMPILER_STD_STDC "__STDC__"
#else
#define _PLATFORM_COMPILER_STD_STDC "-"
#endif
#undef _PLATFORM_COMPILER_STD_STDC_VERSION
#ifdef __STDC_VERSION__
#define _PLATFORM_COMPILER_STD_STDC_VERSION ",__STDC_VERSION__=" PLATFORM_STRINGIFY(__STDC_VERSION__)
#else
#define _PLATFORM_COMPILER_STD_STDC_VERSION
#endif
#undef _PLATFORM_COMPILER_STD_STDC_EXT
#ifdef __STDC_EXT__
#define _PLATFORM_COMPILER_STD_STDC_EXT ",__STDC_EXT__=" PLATFORM_STRINGIFY(__STDC_EXT__)
#else
#define _PLATFORM_COMPILER_STD_STDC_EXT
#endif
#undef _PLATFORM_COMPILER_STD_CPLUSPLUS
#ifdef __cplusplus
#define _PLATFORM_COMPILER_STD_CPLUSPLUS ",__cplusplus=" PLATFORM_STRINGIFY(__cplusplus)
#else
#define _PLATFORM_COMPILER_STD_CPLUSPLUS
#endif
#undef _PLATFORM_COMPILER_MISC_VERSION_STR
#ifndef _PLATFORM_COMPILER_MISC_VERSION_STR
#ifdef __VERSION__
#define _PLATFORM_COMPILER_MISC_VERSION_STR "|misc:" __VERSION__
#else
#define _PLATFORM_COMPILER_MISC_VERSION_STR
#endif
#endif
#undef _PLATFORM_COMPILER_GNU_VERSION_STR_HELP
#ifdef _PLATFORM_COMPILER_GNU_VERSION_STR
#define _PLATFORM_COMPILER_GNU_VERSION_STR_HELP "|GNU:" _PLATFORM_COMPILER_GNU_VERSION_STR
#else
#define _PLATFORM_COMPILER_GNU_VERSION_STR_HELP
#endif
#define PLATFORM_COMPILER_IDSTR \
"|COMPILER_FAMILY:" \
PLATFORM_STRINGIFY(PLATFORM_COMPILER_FAMILYNAME) \
"|COMPILER_VERSION:" PLATFORM_COMPILER_VERSION_STR \
"|COMPILER_FAMILYID:" \
PLATFORM_STRINGIFY(PLATFORM_COMPILER_FAMILYID) \
_PLATFORM_COMPILER_GNU_VERSION_STR_HELP \
"|STD:" _PLATFORM_COMPILER_STD_STDC \
_PLATFORM_COMPILER_STD_STDC_VERSION \
_PLATFORM_COMPILER_STD_STDC_EXT \
_PLATFORM_COMPILER_STD_CPLUSPLUS \
_PLATFORM_COMPILER_MISC_VERSION_STR \
"|"
#if defined(__LIBCATAMOUNT__) || defined(__QK_USER__)
#define PLATFORM_OS_CATAMOUNT 1
#define PLATFORM_OS_FAMILYNAME CATAMOUNT
#elif defined(GASNETI_ARCH_BGP) || defined(__bgp__)
#define PLATFORM_OS_BGP 1
#define PLATFORM_OS_FAMILYNAME BGP
#elif defined(GASNETI_ARCH_BGQ) || defined(__bgq__)
#define PLATFORM_OS_BGQ 1
#define PLATFORM_OS_FAMILYNAME BGQ
#elif defined(__K42)
#define PLATFORM_OS_K42 1
#define PLATFORM_OS_FAMILYNAME K42
#elif defined(__uClinux__)
#define PLATFORM_OS_UCLINUX 1
#define PLATFORM_OS_FAMILYNAME UCLINUX
#elif defined(__linux) || defined(__linux__) || defined(__gnu_linux__)
#define PLATFORM_OS_LINUX 1
#define PLATFORM_OS_FAMILYNAME LINUX
#if defined(GASNETI_ARCH_WSL)
#define PLATFORM_OS_SUBFAMILY_WSL 1
#define PLATFORM_OS_SUBFAMILYNAME WSL
#elif defined(__CRAYXT_COMPUTE_LINUX_TARGET)
#define PLATFORM_OS_SUBFAMILY_CNL 1
#define PLATFORM_OS_SUBFAMILYNAME CNL
#endif
#elif defined(__blrts) || defined(__blrts__) || defined(__gnu_blrts__)
#define PLATFORM_OS_BLRTS 1
#define PLATFORM_OS_FAMILYNAME BLRTS
#elif defined(__CYGWIN__)
#define PLATFORM_OS_CYGWIN 1
#define PLATFORM_OS_FAMILYNAME CYGWIN
#elif defined(_WIN32)
#define PLATFORM_OS_MSWINDOWS 1
#define PLATFORM_OS_FAMILYNAME MSWINDOWS
#elif defined(_AIX)
#define PLATFORM_OS_AIX 1
#define PLATFORM_OS_FAMILYNAME AIX
#elif defined(__osf__) || defined(__digital__)
#define PLATFORM_OS_TRU64 1
#define PLATFORM_OS_FAMILYNAME TRU64
#elif defined(__FreeBSD) || defined(__FreeBSD__)
#define PLATFORM_OS_FREEBSD 1
#define PLATFORM_OS_FAMILYNAME FREEBSD
#elif defined(__NetBSD) || defined(__NetBSD__)
#define PLATFORM_OS_NETBSD 1
#define PLATFORM_OS_FAMILYNAME NETBSD
#elif defined(__OpenBSD__)
#define PLATFORM_OS_OPENBSD 1
#define PLATFORM_OS_FAMILYNAME OPENBSD
#elif defined(__sun) || defined(__sun__)
#define PLATFORM_OS_SOLARIS 1
#define PLATFORM_OS_FAMILYNAME SOLARIS
#elif (defined(__APPLE__) && defined(__MACH__)) || \
defined(__osx86__)
#define PLATFORM_OS_DARWIN 1
#define PLATFORM_OS_FAMILYNAME DARWIN
#elif defined(__sgi) || defined(__sgi__)
#define PLATFORM_OS_IRIX 1
#define PLATFORM_OS_FAMILYNAME IRIX
#elif defined(__hpux) || defined(__hpux__)
#define PLATFORM_OS_HPUX 1
#define PLATFORM_OS_FAMILYNAME HPUX
#elif defined(_CRAY) || defined(_UNICOSMP)
#define PLATFORM_OS_UNICOS 1
#define PLATFORM_OS_FAMILYNAME UNICOS
#elif defined(__MTA__)
#define PLATFORM_OS_MTA 1
#define PLATFORM_OS_FAMILYNAME MTA
#elif defined(_SX)
#define PLATFORM_OS_SUPERUX 1
#define PLATFORM_OS_FAMILYNAME SUPERUX
#else
#define PLATFORM_OS_UNKNOWN 1
#define PLATFORM_OS_FAMILYNAME UNKNOWN
#endif
#if defined(__ppc64) || defined(__ppc64__) || \
defined(__PPC64) || defined(__PPC64__) || \
defined(__powerpc64) || defined(__powerpc64__)
#define PLATFORM_ARCH_POWERPC 1
#define PLATFORM_ARCH_FAMILYNAME POWERPC
#define _PLATFORM_ARCH_64 1
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(_POWER) || \
defined(__PPC) || defined(__PPC__) || \
defined(__powerpc) || defined(__powerpc__) || \
defined(__ppc) || defined(__ppc__) || \
defined(__POWERPC__)
#define PLATFORM_ARCH_POWERPC 1
#define PLATFORM_ARCH_FAMILYNAME POWERPC
#define _PLATFORM_ARCH_32 1
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(_ARCH_PPC) || defined(_ARCH_PPC64)
#define PLATFORM_ARCH_POWERPC 1
#define PLATFORM_ARCH_FAMILYNAME POWERPC
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(__KNC__) || defined(__MIC__)
#define PLATFORM_ARCH_MIC 1
#define PLATFORM_ARCH_FAMILYNAME MIC
#define _PLATFORM_ARCH_64 1
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#elif defined(__x86_64) || defined(__x86_64__) || \
defined(__athlon) || defined(__athlon__) || \
defined(__amd64) || defined(__amd64__)
#define PLATFORM_ARCH_X86_64 1
#define PLATFORM_ARCH_FAMILYNAME X86_64
#define _PLATFORM_ARCH_64 1
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#elif defined(__ia64__) || defined(__ia64)
#define PLATFORM_ARCH_IA64 1
#define PLATFORM_ARCH_FAMILYNAME IA64
#define _PLATFORM_ARCH_64 1
#if defined(PLATFORM_OS_LINUX) || defined(PLATFORM_OS_FREEBSD)
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#elif defined(PLATFORM_OS_HPUX)
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#else
#endif
#elif defined(__i386__) || defined(__i386) || \
defined(__i486__) || defined(__i486) || \
defined(__i586__) || defined(__i586) || \
defined(__i686__) || defined(__i686) || \
defined(__pentiumpro) || defined(__pentiumpro__) || \
defined(_M_IX86)
#define PLATFORM_ARCH_X86 1
#define PLATFORM_ARCH_FAMILYNAME X86
#define _PLATFORM_ARCH_32 1
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#elif defined(__alpha) || defined(__alpha__)
#define PLATFORM_ARCH_ALPHA 1
#define PLATFORM_ARCH_FAMILYNAME ALPHA
#define _PLATFORM_ARCH_64 1
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#elif defined(_mips) || defined(__mips) || defined(__mips__) || \
defined(__host_mips) || defined(__host_mips__) || \
defined(_MIPS_ARCH) || defined(__R4000)
#define PLATFORM_ARCH_MIPS 1
#define PLATFORM_ARCH_FAMILYNAME MIPS
#ifdef _MIPSEL
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#else
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#endif
#ifdef _MIPS_SZPTR
#if _MIPS_SZPTR == 32
#define _PLATFORM_ARCH_32 1
#elif _MIPS_SZPTR == 64
#define _PLATFORM_ARCH_64 1
#endif
#endif
#elif defined(__sparc) || defined(__sparc__) || \
defined(__sparclet__) || defined(__sparclite__) || \
defined(__sparcv8) || defined(__sparcv9)
#define PLATFORM_ARCH_SPARC 1
#define PLATFORM_ARCH_FAMILYNAME SPARC
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(__hppa) || defined(__hppa__) || \
defined(__parisc) || defined(__parisc__) || \
defined(_PA_RISC1_1) || defined(_PA_RISC2_0)
#define PLATFORM_ARCH_PARISC 1
#define PLATFORM_ARCH_FAMILYNAME PARISC
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(__crayx1)
#define PLATFORM_ARCH_CRAYX1 1
#define PLATFORM_ARCH_FAMILYNAME CRAYX1
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#define _PLATFORM_ARCH_64 1
#elif defined(_CRAYT3E)
#define PLATFORM_ARCH_CRAYT3E 1
#define PLATFORM_ARCH_FAMILYNAME CRAYT3E
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#define _PLATFORM_ARCH_64 1
#elif defined(__MTA__)
#define PLATFORM_ARCH_MTA 1
#define PLATFORM_ARCH_FAMILYNAME MTA
#elif defined(_SX)
#define PLATFORM_ARCH_NECSX 1
#define PLATFORM_ARCH_FAMILYNAME NECSX
#elif defined(__MICROBLAZE__)
#define PLATFORM_ARCH_MICROBLAZE 1
#define PLATFORM_ARCH_FAMILYNAME MICROBLAZE
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#define _PLATFORM_ARCH_32 1
#elif defined(__arm__)
#define PLATFORM_ARCH_ARM 1
#define PLATFORM_ARCH_FAMILYNAME ARM
#define _PLATFORM_ARCH_32 1
#if defined(__ARMEB__)
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(__ARMEL__)
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#endif
#elif defined(__aarch64__)
#define PLATFORM_ARCH_AARCH64 1
#define PLATFORM_ARCH_FAMILYNAME AARCH64
#if defined(__AARCH64EB__)
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(__AARCH64EL__)
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#endif
#elif defined(__tile__)
#define PLATFORM_ARCH_TILE 1
#define PLATFORM_ARCH_FAMILYNAME TILE
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#if defined(__tilegx__)
#define _PLATFORM_ARCH_64 1
#else
#define _PLATFORM_ARCH_32 1
#endif
#elif defined(__s390__)
#define PLATFORM_ARCH_S390 1
#define PLATFORM_ARCH_FAMILYNAME S390
#define _PLATFORM_ARCH_BIG_ENDIAN 1
#if defined(__s390x__)
#define _PLATFORM_ARCH_64 1
#else
#define _PLATFORM_ARCH_32 1
#endif
#elif defined(__riscv)
#define PLATFORM_ARCH_RISCV 1
#define PLATFORM_ARCH_FAMILYNAME RISCV
#define _PLATFORM_ARCH_LITTLE_ENDIAN 1
#if __riscv_xlen == 32
#define _PLATFORM_ARCH_32 1
#else
#define _PLATFORM_ARCH_64 1
#endif
#else
#define PLATFORM_ARCH_UNKNOWN 1
#define PLATFORM_ARCH_FAMILYNAME UNKNOWN
#endif
#if defined(PLATFORM_ARCH_BIG_ENDIAN) || defined(PLATFORM_ARCH_LITTLE_ENDIAN)
#error internal error in endianness configuration
#endif
#if defined(__BIG_ENDIAN__) || defined(WORDS_BIGENDIAN) || \
( __BYTE_ORDER__ > 0 && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ )
#define PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(__LITTLE_ENDIAN__) || defined(WORDS_LITTLEENDIAN) || \
( __BYTE_ORDER__ > 0 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ )
#define PLATFORM_ARCH_LITTLE_ENDIAN 1
#elif defined(_PLATFORM_ARCH_BIG_ENDIAN)
#define PLATFORM_ARCH_BIG_ENDIAN 1
#elif defined(_PLATFORM_ARCH_LITTLE_ENDIAN)
#define PLATFORM_ARCH_LITTLE_ENDIAN 1
#endif
#undef _PLATFORM_ARCH_BIG_ENDIAN
#undef _PLATFORM_ARCH_LITTLE_ENDIAN
#if defined(PLATFORM_ARCH_BIG_ENDIAN) && defined(PLATFORM_ARCH_LITTLE_ENDIAN)
#error conflicting endianness information
#endif
#if defined(PLATFORM_ARCH_64) || defined(PLATFORM_ARCH_32)
#error internal error in bit width configuration
#endif
#if SIZEOF_VOID_P == 8
#define PLATFORM_ARCH_64 1
#elif SIZEOF_VOID_P == 4
#define PLATFORM_ARCH_32 1
#elif defined(_LP64) || defined(__LP64__) || \
defined(__arch64__) || defined(__64BIT__) || \
__INTPTR_MAX__ > 2147483647
#define PLATFORM_ARCH_64 1
#elif defined(_ILP32) || defined(__ILP32__) || \
defined(__arch32__) || defined(__32BIT__) || \
__INTPTR_MAX__ == 2147483647
#define PLATFORM_ARCH_32 1
#elif defined(_PLATFORM_ARCH_64)
#define PLATFORM_ARCH_64 1
#elif defined(_PLATFORM_ARCH_32)
#define PLATFORM_ARCH_32 1
#endif
#undef _PLATFORM_ARCH_64
#undef _PLATFORM_ARCH_32
#if defined(PLATFORM_ARCH_64) && defined(PLATFORM_ARCH_32)
#error conflicting bit width information
#elif !defined(PLATFORM_ARCH_64) && !defined(PLATFORM_ARCH_32)
#error missing bit width information
#endif
#ifdef PLATFORM_SHOW
#include <stdio.h>
#include <assert.h>
const char *
COMPILER_FAMILYNAME = PLATFORM_STRINGIFY(PLATFORM_COMPILER_FAMILYNAME)
, *
COMPILER_FAMILYID = PLATFORM_STRINGIFY(PLATFORM_COMPILER_FAMILYID)
, *
COMPILER_VERSION_STR = PLATFORM_COMPILER_VERSION_STR
, *
COMPILER_IDSTR = PLATFORM_COMPILER_IDSTR
, *
OS_FAMILYNAME = PLATFORM_STRINGIFY(PLATFORM_OS_FAMILYNAME)
, *
ARCH_FAMILYNAME = PLATFORM_STRINGIFY(PLATFORM_ARCH_FAMILYNAME)
;
int main(void) {
#define PLATFORM_DISP(x) printf("PLATFORM_"#x"=%s\n",x)
#define PLATFORM_DISPI(x) printf("PLATFORM_"#x"=%li\n",(long int)PLATFORM_##x)
#define PLATFORM_DISPX(x) printf("PLATFORM_"#x"=0x%lx\n",(long int)PLATFORM_##x)
PLATFORM_DISP(COMPILER_FAMILYNAME);
PLATFORM_DISP(COMPILER_FAMILYID);
PLATFORM_DISPI(COMPILER_ID);
PLATFORM_DISPX(COMPILER_VERSION);
PLATFORM_DISP(COMPILER_VERSION_STR);
PLATFORM_DISP(COMPILER_IDSTR);
#ifdef PLATFORM_COMPILER_C_LANGLVL
PLATFORM_DISPI(COMPILER_C_LANGLVL);
#elif defined(PLATFORM_COMPILER_CXX_LANGLVL)
PLATFORM_DISPI(COMPILER_CXX_LANGLVL);
#else
printf("WARNING: Missing PLATFORM_COMPILER_C(XX)_LANGLVL!");
#endif
PLATFORM_DISP(OS_FAMILYNAME);
#ifdef PLATFORM_OS_SUBFAMILYNAME
{ const char * OS_SUBFAMILYNAME = PLATFORM_STRINGIFY(PLATFORM_OS_SUBFAMILYNAME);
PLATFORM_DISP(OS_SUBFAMILYNAME);
}
#endif
PLATFORM_DISP(ARCH_FAMILYNAME);
#ifdef PLATFORM_ARCH_32
PLATFORM_DISPI(ARCH_32);
assert(sizeof(void *) == 4);
#else
PLATFORM_DISPI(ARCH_64);
assert(sizeof(void *) == 8);
#endif
{ int x = 0x00FF;
unsigned char *p = (unsigned char *)&x;
#ifdef PLATFORM_ARCH_BIG_ENDIAN
PLATFORM_DISPI(ARCH_BIG_ENDIAN);
assert(*p == 0);
#else
PLATFORM_DISPI(ARCH_LITTLE_ENDIAN);
assert(*p == 0xFF);
#endif
}
return 0;
}
#endif
#endif