summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Burgess IV <gbiv@google.com>2023-09-11 17:09:07 -0600
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-09-19 11:25:08 +0300
commit9c5eb9237cf6ae170086f0d4d87a025aa052cc9f (patch)
tree9f1869036b69ed6a9fa33fcf9fefa662a8ee2ac7
parent90e0fea6c6ba6294bf9438d37d74676cc53ef924 (diff)
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: <command line>: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 <gbiv@google.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--meson.build24
1 files 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