]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Meson: Refactor some compiler hardening features
authorFred Morcos <fred.morcos@open-xchange.com>
Wed, 12 Jul 2023 11:43:10 +0000 (13:43 +0200)
committerFred Morcos <fred.morcos@open-xchange.com>
Wed, 20 Mar 2024 12:28:28 +0000 (13:28 +0100)
meson/hardening/fortify-source/meson.build
meson/hardening/global-offset-table/meson.build
meson/hardening/pie/meson.build
meson/hardening/stack-prot/meson.build

index 9be7d5ea4bc886f91ac9fed2a88b9b10845d402b..1d9b61f6dc6f34dd80ffb9542a998af23cc080ee 100644 (file)
@@ -1,5 +1,5 @@
 # Fortify Source
-# Inputs: hardening_features
+# Inputs: hardening_features deps
 
 fortify_source_opt = get_option('fortify-source')
 
@@ -16,7 +16,8 @@ if fortify_source_opt != 'disabled'
     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
index a1330095ddd2434cb7167025993f155383b2a847..bef947ae80dd4c32173932e3b08c2ae7f2910309 100644 (file)
@@ -1,5 +1,5 @@
 # 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']
@@ -7,7 +7,8 @@ found_variant = false
 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
 
index 5f4b827a6496beea279bf3d5daee6878eadd6cd1..1f0ffd2ea7cf7f5caf98aff3249d3aa02478a084 100644 (file)
@@ -1,5 +1,5 @@
 # PIE
-# Inputs: hardening_features conf
+# Inputs: hardening_features conf deps
 
 prog = '''
 #include <pthread.h>
@@ -23,10 +23,11 @@ else
   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
index 648da003a218c448a1de91f2a604670a999d2b63..a6dd8780c6fa79b1fd5a23517a5efb4f9be0a807 100644 (file)
@@ -1,10 +1,11 @@
 # 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']]