From 9c5eb9237cf6ae170086f0d4d87a025aa052cc9f Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 11 Sep 2023 17:09:07 -0600 Subject: meson: Don't set _FORTIFY_SOURCE for ChromeOS ChromeOS is moving to a platform default of `_FORTIFY_SOURCE=3`, and this definition conflicts with that: :4:9: error: '_FORTIFY_SOURCE' macro redefined [-Werror,-Wmacro-redefined] Rather than adding logic to keep up with their local configuration, it seems best to leave setting _FORTIFY_SOURCE on ChromeOS up to ChromeOS. Signed-off-by: George Burgess IV Reviewed-by: Jacopo Mondi Reviewed-by: Laurent Pinchart Signed-off-by: Laurent Pinchart --- meson.build | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/meson.build b/meson.build index 7959b538..2e834263 100644 --- a/meson.build +++ b/meson.build @@ -99,12 +99,26 @@ if cc.get_id() == 'clang' error('clang version is too old, libcamera requires 9.0 or newer') endif - # Turn _FORTIFY_SOURCE by default on optimised builds (as it requires -O1 - # or higher). This is needed on clang only as gcc enables it by default. + # Turn _FORTIFY_SOURCE by default on. This is needed on clang only as gcc + # enables it by default. FORTIFY will not work properly with `-O0`, and may + # result in macro redefinition errors if the user already has a setting for + # `-D_FORTIFY_SOURCE`. Do not enable FORTIFY in either of those cases. if get_option('optimization') != '0' - common_arguments += [ - '-D_FORTIFY_SOURCE=2', - ] + has_fortify_define = false + # Assume that if the user requests a FORTIFY level in cpp_args, they + # do the same for c_args. + foreach flag : get_option('cpp_args') + if flag == '-U_FORTIFY_SOURCE' + has_fortify_define = false + elif flag.startswith('-D_FORTIFY_SOURCE=') + has_fortify_define = true + endif + endforeach + if not has_fortify_define + common_arguments += [ + '-D_FORTIFY_SOURCE=2', + ] + endif endif # Use libc++ by default if available instead of libstdc++ when compiling -- cgit v1.2.1