summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meson.build11
-rw-r--r--src/boot/meson.build6
-rw-r--r--src/fundamental/macro-fundamental.h14
3 files changed, 26 insertions, 5 deletions
diff --git a/meson.build b/meson.build
index f9f400a7d6..48ba967d0e 100644
--- a/meson.build
+++ b/meson.build
@@ -516,9 +516,6 @@ add_project_link_arguments(
userspace_c_args += cc.get_supported_arguments(possible_cc_flags)
userspace_c_ld_args += cc.get_supported_link_arguments(possible_link_flags)
-have = cc.has_argument('-Wzero-length-bounds')
-conf.set10('HAVE_ZERO_LENGTH_BOUNDS', have)
-
if cc.compiles('''
#include <time.h>
#include <inttypes.h>
@@ -538,6 +535,14 @@ endif
cpp = ' '.join(cc.cmd_array() + get_option('c_args')) + ' -E'
+# new in GCC 10
+have = cc.has_argument('-Wzero-length-bounds')
+conf.set10('HAVE_WARNING_ZERO_LENGTH_BOUNDS', have)
+
+# new in GCC 15
+have = cc.has_argument('-Wzero-as-null-pointer-constant')
+conf.set10('HAVE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT', have)
+
#####################################################################
# compilation result tests
diff --git a/src/boot/meson.build b/src/boot/meson.build
index cc5102c551..f726996233 100644
--- a/src/boot/meson.build
+++ b/src/boot/meson.build
@@ -74,6 +74,12 @@ if conf.get('ENABLE_BOOTLOADER') != 1
endif
efi_conf = configuration_data()
+
+# import several configs from userspace
+foreach name : ['HAVE_WARNING_ZERO_LENGTH_BOUNDS', 'HAVE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT']
+ efi_conf.set10(name, conf.get(name) == 1)
+endforeach
+
efi_conf.set10('ENABLE_TPM', get_option('tpm'))
foreach ctype : ['color-normal', 'color-entry', 'color-highlight', 'color-edit']
diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h
index 7bee2915e1..5eb31cd742 100644
--- a/src/fundamental/macro-fundamental.h
+++ b/src/fundamental/macro-fundamental.h
@@ -52,13 +52,23 @@
_Pragma("GCC diagnostic push"); \
_Pragma("GCC diagnostic ignored \"-Wstringop-truncation\"")
-#define DISABLE_WARNING_ZERO_LENGTH_BOUNDS \
+#if HAVE_WARNING_ZERO_LENGTH_BOUNDS
+# define DISABLE_WARNING_ZERO_LENGTH_BOUNDS \
_Pragma("GCC diagnostic push"); \
_Pragma("GCC diagnostic ignored \"-Wzero-length-bounds\"")
+#else
+# define DISABLE_WARNING_ZERO_LENGTH_BOUNDS \
+ _Pragma("GCC diagnostic push")
+#endif
-#define DISABLE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT \
+#if HAVE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT
+# define DISABLE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT \
_Pragma("GCC diagnostic push"); \
_Pragma("GCC diagnostic ignored \"-Wzero-as-null-pointer-constant\"")
+#else
+# define DISABLE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT \
+ _Pragma("GCC diagnostic push")
+#endif
#define REENABLE_WARNING \
_Pragma("GCC diagnostic pop")