]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Add define VALA_ARCH_* to allow buildtime architecture check wip/arch-defines
authorRico Tzschichholz <ricotz@ubuntu.com>
Mon, 17 Jan 2022 12:29:59 +0000 (13:29 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 17 Jan 2022 13:06:56 +0000 (14:06 +0100)
configure.ac
tests/Makefile.am
tests/parser/preprocessor-arch.vala [new file with mode: 0644]
vala/valacodecontext.vala
vapi/config.vapi

index cd036c78e332cb8d66e0b7656accd98146b418c4..7887ecd390bb44bdf8569a694808d1b79b07b28c 100644 (file)
@@ -44,6 +44,7 @@ AC_PROG_INSTALL
 AC_PROG_MKDIR_P
 
 AC_CANONICAL_HOST
+AC_CANONICAL_CPU_ARCH
 
 # Detect the target system
 build_linux=no
@@ -56,6 +57,9 @@ case "${host_os}" in
 esac
 AM_CONDITIONAL([HAVE_LINUX], [test "$build_linux" = "yes"])
 
+AC_SUBST(PACKAGE_TARGET_CPU_ARCH)
+AC_DEFINE_UNQUOTED(PACKAGE_TARGET_CPU_ARCH, "$target_cpu_arch", [Define to the target architecture])
+
 LT_PREREQ([2.2.6])
 LT_INIT([disable-static])
 PKG_PROG_PKG_CONFIG([0.21])
index 5156172d212153e3def74b11696114a4fc72b93e..be96cf7ecb1ee3a45c0bcee24472677a31b1b3d8 100644 (file)
@@ -934,6 +934,7 @@ TESTS = \
        parser/namespaces.vala \
        parser/namespace-missing-bracket.test \
        parser/preprocessor.vala \
+       parser/preprocessor-arch.vala \
        parser/preprocessor-glib.vala \
        parser/preprocessor-vala.vala \
        parser/property-default-redefined.test \
diff --git a/tests/parser/preprocessor-arch.vala b/tests/parser/preprocessor-arch.vala
new file mode 100644 (file)
index 0000000..198ed43
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ x86_64
+ i386
+ ppc64el
+ ppc
+ aarch64
+ arm
+ sparc64
+ sparc
+ mips64
+ mips
+ alpha
+ hppa1
+ hppa2
+ m68k
+ s390x
+*/
+void main () {
+#if VALA_ARCH_X86_64
+       assert (sizeof (void*) == 8);
+       assert (sizeof (int) == 4);
+       assert (sizeof (uint8) == 1);
+       assert (sizeof (uint16) == 2);
+       assert (sizeof (uint32) == 4);
+       assert (sizeof (size_t) == 8);
+       assert (sizeof (ssize_t) == 8);
+       assert (sizeof (uint64) == 8);
+       assert (sizeof (int64) == 8);
+#elif VALA_ARCH_I386
+       assert (sizeof (void*) == 4);
+       assert (sizeof (int) == 4);
+       assert (sizeof (uint8) == 1);
+       assert (sizeof (uint16) == 2);
+       assert (sizeof (uint32) == 4);
+       assert (sizeof (size_t) == 4);
+       assert (sizeof (ssize_t) == 4);
+       assert (sizeof (uint64) == 8);
+       assert (sizeof (int64) == 8);
+#elif VALA_ARCH_PPC64EL
+#elif VALA_ARCH_PPC
+#elif VALA_ARCH_AARCH64
+#elif VALA_ARCH_ARM
+#elif VALA_ARCH_SPARC64
+#elif VALA_ARCH_SPARC
+#elif VALA_ARCH_MIPS64
+#elif VALA_ARCH_MIPS
+#elif VALA_ARCH_ALPHA
+#elif VALA_ARCH_HPPA1
+#elif VALA_ARCH_HPPA2
+#elif VALA_ARCH_M68K
+#elif VALA_ARCH_S390X
+#else
+       message ("Targeting an unkown arch");
+#endif
+}
index 9fc211f7a3a85b104c3833bbc420cd5de17ae46d..707f69d6735a8343b1eab41538ae07e5f0d71e07 100644 (file)
@@ -582,6 +582,8 @@ public class Vala.CodeContext {
                for (int i = 16; i <= target_glib_minor; i += 2) {
                        defines.add ("GLIB_2_%d".printf (i));
                }
+
+               defines.add ("VALA_ARCH_%s".printf (Config.PACKAGE_TARGET_CPU_ARCH.ascii_up ().replace ("-", "_")));
        }
 
        /**
index c8b5d58a1aea0387371c8baa1fe6f025810b863f..b67b67160d59d6d79bb10ed93b8cddd8605b4985 100644 (file)
@@ -24,6 +24,7 @@
 namespace Config {
        public const string PACKAGE_DATADIR;
        public const string PACKAGE_SUFFIX;
+       public const string PACKAGE_TARGET_CPU_ARCH;
        public const string PACKAGE_VALADOC_LIBDIR;
        public const string PACKAGE_VALADOC_ICONDIR;
 }