]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Meson: Rework backend handling to fix some issues
authorFred Morcos <fred.morcos@open-xchange.com>
Mon, 11 Sep 2023 09:06:05 +0000 (11:06 +0200)
committerFred Morcos <fred.morcos@open-xchange.com>
Wed, 20 Mar 2024 12:28:51 +0000 (13:28 +0100)
This separates the configuration (i.e. detection) of backend module dependencies, and the
modules building step which allows us to support:

 1) First detecting dependencies for backend modules. Making options and deps available
 for building libpdns-related artifacts.

 2) Using libpdns deps in modules.

meson.build

index 86547a1cbea53a219b475fa39b7478aa413f9fbe..36840806923a30d9567e4b59bf65ac7c2849c1b7 100644 (file)
@@ -133,21 +133,13 @@ all_modules = {
   'lmdb':     {'deps': ['lmdb', 'boost-serialization'], 'exts': ['lmdb-safe']},
 }
 
-selected_modules = []
-selected_dyn_modules = []
-dep_modules = []
+# Configure module dependencies
 foreach module_name, module_props: all_modules
-  module_backend_name = module_name + 'backend'
   module_opt = get_option('module-' + module_name)
   module_deps = module_props['deps']
-  module_exts = module_props['exts']
 
   if module_opt == 'disabled'
     continue
-  elif module_opt == 'static'
-    selected_modules += module_name
-  else
-    selected_dyn_modules += module_name
   endif
 
   foreach dep: module_deps
@@ -165,6 +157,28 @@ foreach module_name, module_props: all_modules
 
     subdir('meson' / dep)
   endforeach
+endforeach
+
+# Add the sqlite3 dependency for the bind and gsqlite3 backends and pdnsutil.
+deps += get_variable('dep_sqlite3', dependency('', required: false))
+
+subdir('pdns')
+
+selected_modules = []
+selected_dyn_modules = []
+dep_modules = []
+foreach module_name, module_props: all_modules
+  module_backend_name = module_name + 'backend'
+  module_opt = get_option('module-' + module_name)
+  module_exts = module_props['exts']
+
+  if module_opt == 'disabled'
+    continue
+  elif module_opt == 'static'
+    selected_modules += module_name
+  else
+    selected_dyn_modules += module_name
+  endif
 
   foreach ext: module_exts
     subdir('ext' / ext)
@@ -186,16 +200,9 @@ conf.set_quoted(
   description: 'Dynamically loadable modules built along with pdns'
 )
 
-# TODO This should be cleaned up
-if get_variable('dep_sqlite3', dependency('', required: false)).found()
-  deps += dep_sqlite3
-endif
-
 # Generate config.h
 config_h = configure_file(configuration: conf, output: 'config.h')
 
-subdir('pdns')
-
 pdns_auth = executable(
   'pdns-auth',
   config_h,