diff options
Diffstat (limited to 'Modules/CMakeCompilerABI.h')
-rw-r--r-- | Modules/CMakeCompilerABI.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Modules/CMakeCompilerABI.h b/Modules/CMakeCompilerABI.h new file mode 100644 index 0000000..ad481d6 --- /dev/null +++ b/Modules/CMakeCompilerABI.h @@ -0,0 +1,38 @@ + +/* Size of a pointer-to-data in bytes. */ +#define SIZEOF_DPTR (sizeof(void*)) +const char info_sizeof_dptr[] = { + 'I', 'N', 'F', 'O', ':', 's', 'i', 'z', 'e', 'o', 'f', '_', 'd', 'p', 't', + 'r', '[', ('0' + ((SIZEOF_DPTR / 10) % 10)), ('0' + (SIZEOF_DPTR % 10)), ']', + '\0' + /* clang-format needs this comment to break after the opening brace */ +}; + +/* Application Binary Interface. */ +#if defined(__sgi) && defined(_ABIO32) +#define ABI_ID "ELF O32" +#elif defined(__sgi) && defined(_ABIN32) +#define ABI_ID "ELF N32" +#elif defined(__sgi) && defined(_ABI64) +#define ABI_ID "ELF 64" + +/* Check for (some) ARM ABIs. + * See e.g. http://wiki.debian.org/ArmEabiPort for some information on this. */ +#elif defined(__GNU__) && defined(__ELF__) && defined(__ARM_EABI__) +#define ABI_ID "ELF ARMEABI" +#elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEB__) +#define ABI_ID "ELF ARM" +#elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEL__) +#define ABI_ID "ELF ARM" + +#elif defined(__linux__) && defined(__ELF__) && defined(__amd64__) && \ + defined(__ILP32__) +#define ABI_ID "ELF X32" + +#elif defined(__ELF__) +#define ABI_ID "ELF" +#endif + +#if defined(ABI_ID) +static char const info_abi[] = "INFO:abi[" ABI_ID "]"; +#endif |