]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Meson: libdecaf signers support
authorFred Morcos <fred.morcos@open-xchange.com>
Sat, 17 Jun 2023 11:24:43 +0000 (13:24 +0200)
committerFred Morcos <fred.morcos@open-xchange.com>
Wed, 20 Mar 2024 12:28:24 +0000 (13:28 +0100)
meson.build
meson_options.txt

index 09063a8541c51f6e5f76e5c75a3f869aca3d5e11..312df92313de6244f32e539bdf5f1b9e683c92d5 100644 (file)
@@ -447,6 +447,44 @@ if dep_libsodium.found()
 endif
 summary('libsodium', dep_libsodium.found(), bool_yn: true, section: 'Configuration')
 
+# libdecaf signers -----------------------------------------------------------------------
+opt_libdecaf = get_option('libdecaf')
+dep_libdecaf = []
+if not opt_libdecaf.disabled()
+  dep_libdecaf = dependency('libdecaf', required: false)
+  if not dep_libdecaf.found()
+    dep_libdecaf = cxx.find_library('decaf', dirs: ['/usr', '/usr/local'], required: opt_libdecaf)
+  endif
+
+  found_header = false
+  if dep_libdecaf.found()
+    include_dirs = ['/usr/include', '/usr/local/include']
+    headers = ['decaf.hxx', 'decaf/decaf.hxx']
+    do_break = false
+    foreach dirname: include_dirs
+      dir = include_directories(dirname, is_system: true)
+      foreach header: headers
+        message(dirname / header)
+        if cxx.has_header(header, dependencies: dep_libdecaf, required: false, include_directories: dir)
+          conf.set('HAVE_LIBDECAF', 1, description: 'Whether we build libdecaf-based signers')
+          found_header = '-I' + dirname / header
+          add_global_arguments([found_header], language: ['c', 'cpp'])
+          do_break = true
+          break
+        endif
+      endforeach
+
+      if do_break
+        break
+      endif
+    endforeach
+  endif
+
+  show_colors = dep_libdecaf.found() or not opt_libdecaf.auto()
+  summary('libdecaf', dep_libdecaf.found(), bool_yn: show_colors, section: 'Configuration')
+  summary('libdecaf headers', found_header, bool_yn: show_colors, section: 'Configuration')
+endif
+
 # Generate config.h ----------------------------------------------------------------------
 config_h = configure_file(configuration: conf, output: 'config.h')
 # summary('Defines', conf.keys(), section: 'Build Configuration') # Meson 0.57
@@ -458,6 +496,7 @@ deps += dep_threads
 deps += dep_lua
 deps += dep_net
 deps += dep_libsodium
+deps += dep_libdecaf
 
 # TODO: Other source files
 auth = executable('pdns', config_h, dependencies: deps, export_dynamic: true)
index 34a5e5988da34ec4bb62f3f9dbccae828f19cdd4..51639a9f5c87b77022b79b7ee5336e733b3373d1 100644 (file)
@@ -3,3 +3,4 @@ option('hardening', type: 'feature', value: 'auto', description: 'Compiler secur
 option('fortify-source', type: 'combo', choices: ['auto', 'disabled', '1', '2', '3'], value: '2', description: 'Source fortification level')
 option('kiss-rng', type: 'boolean', value: false, description: 'Use the unsafe KISS RNG')
 option('libsodium', type: 'feature', value: 'auto', description: 'Build support for libsodium-based signers')
+option('libdecaf', type: 'feature', value: 'auto', description: 'Build support for libdecaf-based signers')