summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeCompilerABI.h
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/CMakeCompilerABI.h')
-rw-r--r--Modules/CMakeCompilerABI.h38
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