diff mbox series

[v3,01/19] add detection of native platform

Message ID 20181214001536.6259-2-luc.vanoostenryck@gmail.com (mailing list archive)
State Mainlined, archived
Headers show
Series predefined macros for intmax_t/intptr_t/... | expand

Commit Message

Luc Van Oostenryck Dec. 14, 2018, 12:15 a.m. UTC
The underlying type of most builtin types (size_t, int32_t, ...), as
well as their size, the endianness and other parameters are platform
dependent. The minimal is to have these parameters correct on the
native machine.

Use the diffrent predefined macros to detect the native machine.

Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
---
 machine.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 machine.h
diff mbox series

Patch

diff --git a/machine.h b/machine.h
new file mode 100644
index 000000000..a01cdc207
--- /dev/null
+++ b/machine.h
@@ -0,0 +1,54 @@ 
+#ifndef MACHINE_H
+#define MACHINE_H
+
+enum machine {
+	MACH_ARM,
+	MACH_ARM64,
+	MACH_I386,
+	MACH_X86_64,
+	MACH_MIPS32,
+	MACH_MIPS64,
+	MACH_PPC32,
+	MACH_PPC64,
+	MACH_RISCV32,
+	MACH_RISCV64,
+	MACH_SPARC32,
+	MACH_SPARC64,
+	MACH_M68K,
+	MACH_S390X,
+	MACH_UNKNOWN
+};
+
+#if defined(__aarch64__)
+#define MACH_NATIVE	MACH_ARM64
+#elif defined(__arm__)
+#define	MACH_NATIVE	MACH_ARM
+#elif defined(__x86_64__) || defined(__x86_64)
+#define	MACH_NATIVE	MACH_X86_64
+#elif defined(__i386__) || defined(__i386)
+#define	MACH_NATIVE	MACH_I386
+#elif defined(__mips64__) || (defined(__mips) && __mips == 64)
+#define	MACH_NATIVE	MACH_MIPS64
+#elif defined(__mips__) || defined(__mips)
+#define	MACH_NATIVE	MACH_MIPS32
+#elif defined(__powerpc64__) || defined(__ppc64__)
+#define	MACH_NATIVE	MACH_PPC64
+#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__)
+#define	MACH_NATIVE	MACH_PPC32
+#elif defined(__riscv) && (__riscv_xlen == 64)
+#define	MACH_NATIVE	MACH_RISCV64
+#elif defined(__riscv) && (__riscv_xlen == 32)
+#define	MACH_NATIVE	MACH_RISCV32
+#elif defined(__sparc_v9__)
+#define	MACH_NATIVE	MACH_SPARC64
+#elif defined(__sparc__) || defined(__sparc)
+#define	MACH_NATIVE	MACH_SPARC32
+#elif defined(__m68k__)
+#define MACH_NATIVE	MACH_68K
+#elif defined(__s390x__) || defined(__zarch__)
+#define MACH_NATIVE	MACH_S390X
+#else
+#define MACH_NATIVE	MACH_UNKNOWN
+#endif
+
+#endif