# Fortify Source
-# Inputs: hardening_features
+# Inputs: hardening_features deps
fortify_source_opt = get_option('fortify-source')
variant_str = variant.to_string()
if fortify_source_level == variant
if cxx.has_argument('-D_FORTIFY_SOURCE=' + variant_str)
- add_project_arguments('-U_FORTIFY_SOURCE', '-D_FORTIFY_SOURCE=' + variant_str, language: 'cpp')
+ dep_fortify = declare_dependency(compile_args: ['-U_FORTIFY_SOURCE', '-D_FORTIFY_SOURCE=' + variant_str])
+ deps += dep_fortify
break
else
fortify_source_level = fortify_source_level - 1
# Read-only Global Offset Table
-# Inputs: hardening_features
+# Inputs: hardening_features deps
ld_help = run_command(cxx, '-Wl,-help', '2>&1', check: true).stdout().strip()
variants = ['relro', 'now']
foreach variant: variants
if ld_help.contains('-z ' + variant)
found_variant = true
- add_project_link_arguments('-Wl,-z', '-Wl,' + variant, language: 'cpp')
+ dep_relro = declare_dependency(link_args: ['-Wl,-z', '-Wl,' + variant])
+ deps += dep_relro
endif
endforeach
# PIE
-# Inputs: hardening_features conf
+# Inputs: hardening_features conf deps
prog = '''
#include <pthread.h>
foreach variant: pie_variants
cflags = variant[0]
ldflags = variant[1]
+ dep_pie = declare_dependency(compile_args: cflags, link_args: ldflags)
+ # if cxx.links(prog, dependencies: dep_pie, name: 'compiler can build Position Independent Executables') # TODO Meson 0.57
if cxx.links(prog, args: cflags + ldflags, name: 'compiler can build Position Independent Executables')
- add_project_arguments(cflags, language: 'cpp')
- add_project_link_arguments(ldflags, language: 'cpp')
+ deps += dep_pie
found_variant = true
break
endif
# Stack Protector
-# Inputs: hardening_features
+# Inputs: hardening_features deps
support_stack_protector = cxx.has_argument('-fstack-protector')
if support_stack_protector
- add_project_arguments('-fstack-protector', language: ['c', 'cpp'])
+ dep_sp = declare_dependency(compile_args: ['-fstack-protector'])
+ deps += dep_sp
endif
hardening_features += [[support_stack_protector, 'Stack Protector']]