foreach module_name, module_deps: all_modules
module_backend_name = module_name + 'backend'
module_opt = get_option('module-' + module_name)
- module_opt_dyn = get_option('module-' + module_name + '-dyn')
- selected_modules += module_opt ? module_name : []
- selected_dyn_modules += module_opt_dyn ? module_name : []
+ if module_opt == 'disabled'
+ continue
+ elif module_opt == 'static'
+ selected_modules += module_name
+ else
+ selected_dyn_modules += module_name
+ endif
foreach dep: module_deps
+ if module_name == 'remote'
+ if dep == 'prog-curl'
+ if not opt_unittests
+ continue # We only need cURL for unit tests.
+ endif
+ elif dep == 'zeromq'
+ if not get_option('module-remote-zeromq')
+ continue
+ endif
+ endif
+ endif
+
subdir('meson' / dep)
endforeach
dependencies: [
libpdns,
libpdns_auth,
+ dep_modules,
],
- link_with: dep_modules,
)
option('experimental-pkcs11', type: 'feature', value: 'disabled', description: 'PKCS11 support')
option('experimental-gss-tsig', type: 'feature', value: 'disabled', description: 'GSS-TSIG support')
option('socket-dir', type: 'string', value: '/var/run', description: 'Where the control socket lives')
-option('module-bind', type: 'boolean', value: true, description: 'Bind backend')
-option('module-bind-dyn', type: 'boolean', value: false, description: 'Bind backend (dynamically loadable)')
-option('module-pipe', type: 'boolean', value: false, description: 'Pipe backend')
-option('module-pipe-dyn', type: 'boolean', value: true, description: 'Pipe backend (dynamically loadable)')
-option('module-gmysql', type: 'boolean', value: true, description: 'Generic MySQL backend')
-option('module-gmysql-dyn', type: 'boolean', value: false, description: 'Generic MySQL backend (dynamically loadable)')
-option('module-godbc', type: 'boolean', value: false, description: 'Generic ODBC backend')
-option('module-godbc-dyn', type: 'boolean', value: false, description: 'Generic ODBC backend (dynamically loadable)')
-option('module-gpgsql', type: 'boolean', value: false, description: 'Generic PostgreSQL backend')
-option('module-gpgsql-dyn', type: 'boolean', value: false, description: 'Generic PostgreSQL backend (dynamically loadable)')
-option('module-gsqlite3', type: 'boolean', value: false, description: 'Generic SQLite3 backend')
-option('module-gsqlite3-dyn', type: 'boolean', value: false, description: 'Generic SQLite3 backend (dynamically loadable)')
-option('module-ldap', type: 'boolean', value: false, description: 'LDAP backend')
-option('module-ldap-dyn', type: 'boolean', value: false, description: 'LDAP backend (dynamically loadable)')
-option('module-remote', type: 'combo', choices: ['disabled', 'with-zeromq', 'without-zeromq'], value: 'with-zeromq', description: 'Remote backend')
-option('module-remote-dyn', type: 'combo', choices: ['disabled', 'with-zeromq', 'without-zeromq'], value: 'disabled', description: 'Remote backend (dynamically loadable)')
-option('module-tinydns', type: 'boolean', value: false, description: 'TinyDNS backend')
-option('module-tinydns-dyn', type: 'boolean', value: false, description: 'TinyDNS backend (dynamically loadable)')
-option('module-geoip', type: 'boolean', value: false, description: 'GeoIP backend')
-option('module-geoip-dyn', type: 'boolean', value: false, description: 'GeoIP backend (dynamically loadable)')
-option('module-lmdb', type: 'boolean', value: false, description: 'LMDB backend')
-option('module-lmdb-dyn', type: 'boolean', value: false, description: 'LMDB backend (dynamically loadable)')
-option('module-lua2', type: 'boolean', value: false, description: 'Lua2 backend')
-option('module-lua2-dyn', type: 'boolean', value: false, description: 'Lua2 backend (dynamically loadable)')
+option('module-bind', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'static', description: 'Bind backend')
+option('module-pipe', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'dynamic', description: 'Pipe backend')
+option('module-gmysql', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'static', description: 'Generic MySQL backend')
+option('module-godbc', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Generic ODBC backend')
+option('module-gpgsql', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Generic PostgreSQL backend')
+option('module-gsqlite3', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Generic SQLite3 backend')
+option('module-ldap', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'LDAP backend')
+option('module-remote', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Remote backend')
+option('module-remote-zeromq', type: 'boolean', value: false, description: 'Use ZeroMQ in the Remote backend')
+option('module-tinydns', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'TinyDNS backend')
+option('module-geoip', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'GeoIP backend')
+option('module-lmdb', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'LMDB backend')
+option('module-lua2', type: 'combo', choices: ['disabled', 'static', 'dynamic'], value: 'disabled', description: 'Lua2 backend')
option('tools', type: 'boolean', value: false, description: 'Build extra tools')
option('tools-ixfrdist', type: 'boolean', value: false, description: 'Build ixfrdist')
option('lua-records', type: 'boolean', value: true, description: 'Support Lua records')
deps = [dep_pdns, dep_libcrypto]
-set_variable('dep_' + module_backend_name, dependency('', required: false))
-if module_opt
- lib = static_library(module_backend_name, sources, dependencies: deps, extra_files: extras)
- set_variable('dep_' + module_backend_name, lib)
-endif
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
-if module_opt_dyn
- shared_module(module_backend_name, sources, dependencies: deps, extra_files: extras)
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif
deps = [dep_pdns, dep_libcrypto, dep_libssl, dep_mysql]
-set_variable('dep_' + module_backend_name, dependency('', required: false))
-if module_opt
- lib = static_library(module_backend_name, sources, dependencies: deps, extra_files: extras)
- set_variable('dep_' + module_backend_name, lib)
-endif
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
-if module_opt_dyn
- shared_module(module_backend_name, sources, dependencies: deps, extra_files: extras)
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif
deps = [dep_pdns, dep_libcrypto, dep_odbc]
-set_variable('dep_' + module_backend_name, dependency('', required: false))
-if module_opt
- lib = static_library(module_backend_name, sources, dependencies: deps, extra_files: extras)
- set_variable('dep_' + module_backend_name, lib)
-endif
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
-if module_opt_dyn
- shared_module(module_backend_name, sources, dependencies: deps, extra_files: extras)
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif
deps = [dep_pdns, dep_libcrypto, dep_pgsql]
-set_variable('dep_' + module_backend_name, dependency('', required: false))
-if module_opt
- lib = static_library(module_backend_name, sources, dependencies: deps, extra_files: extras)
- set_variable('dep_' + module_backend_name, lib)
-endif
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
-if module_opt_dyn
- shared_module(module_backend_name, sources, dependencies: deps, extra_files: extras)
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif
]
deps = [dep_pdns, dep_libcrypto, dep_sqlite3]
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
-set_variable('dep_' + module_backend_name, dependency('', required: false))
-if module_opt
- lib = static_library(module_backend_name, sources, dependencies: deps, extra_files: extras)
- set_variable('dep_' + module_backend_name, lib)
-endif
-
-if module_opt_dyn
- shared_module(module_backend_name, sources, dependencies: deps, extra_files: extras)
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif
deps = [dep_pdns, dep_libcrypto, dep_ldap]
-set_variable('dep_' + module_backend_name, dependency('', required: false))
-if module_opt
- lib = static_library(module_backend_name, sources, dependencies: deps, extra_files: extras)
- set_variable('dep_' + module_backend_name, lib)
-endif
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
-if module_opt_dyn
- shared_module(module_backend_name, sources, dependencies: deps, extra_files: extras)
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif
'lua2backend.cc',
]
-headers = [
+extras = [
'lua2backend.hh',
'lua2api2.hh',
]
-if get_variable(module_name + '_module')
- static_library(
- module_backend_name,
- sources,
- dependencies: [dep_pdns, dep_libcrypto, dep_lua],
- extra_files: [headers],
- )
-endif
+deps = [dep_pdns, dep_libcrypto, dep_lua]
-if get_variable(module_name + '_dyn_module')
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif
deps = [dep_pdns, dep_libcrypto]
-set_variable('dep_' + module_backend_name, dependency('', required: false))
-if module_opt
- lib = static_library(module_backend_name, sources, dependencies: deps, extra_files: extras)
- set_variable('dep_' + module_backend_name, lib)
-endif
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
-if module_opt_dyn
- shared_module(module_backend_name, sources, dependencies: deps, extra_files: extras)
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif
sources = [
# TODO Change this into a libpdns library
- '../../pdns/arguments.cc',
- '../../pdns/auth-packetcache.cc',
- '../../pdns/auth-querycache.cc',
- '../../pdns/auth-zonecache.cc',
- '../../pdns/base32.cc',
- '../../pdns/base64.cc',
- '../../pdns/dns.cc',
- '../../pdns/dns_random_urandom.cc',
- '../../pdns/dnsbackend.cc',
- '../../pdns/dnslabeltext.cc',
- '../../pdns/dnsname.cc',
- '../../pdns/dnspacket.cc',
- '../../pdns/dnsparser.cc',
- '../../pdns/dnsrecords.cc',
- '../../pdns/dnssecinfra.cc',
- '../../pdns/dnswriter.cc',
- '../../pdns/ednscookies.cc',
- '../../pdns/ednsoptions.cc',
- '../../pdns/ednssubnet.cc',
- '../../pdns/gss_context.cc',
- '../../pdns/iputils.cc',
- '../../pdns/json.cc',
- '../../pdns/logger.cc',
- '../../pdns/misc.cc',
- '../../pdns/nameserver.cc',
- '../../pdns/nsecrecords.cc',
- '../../pdns/qtype.cc',
- '../../pdns/rcpgenerator.cc',
- '../../pdns/shuffle.cc',
- '../../pdns/sillyrecords.cc',
- '../../pdns/statbag.cc',
- '../../pdns/svc-records.cc',
- '../../pdns/ueberbackend.cc',
- '../../pdns/unix_utility.cc',
'httpconnector.cc',
'pipeconnector.cc',
'remotebackend.cc',
'zmqconnector.cc',
]
-if remote_module
- static_library('remotebackend', sources)
-endif
+extras = [
+ 'testrunner.sh',
+ 'unittest_http.rb',
+ 'unittest_json.rb',
+ 'unittest_pipe.rb',
+ 'unittest_zeromq.rb',
+ 'unittest_post.rb',
+ 'unittest.rb',
+ 'Gemfile',
+ 'Gemfile.lock',
+ # 'remotebackend_pipe.test',
+ # 'remotebackend_unix.test',
+ # 'remotebackend_http.test',
+ # 'remotebackend_post.test',
+ # 'remotebackend_json.test',
+ # 'remotebackend_zeromq.test',
+ 'remotebackend.hh',
+]
+
+deps = [
+ dep_pdns,
+ dep_yahttp,
+ dep_json11,
+ dep_zeromq,
+ dep_lua,
+ dep_libsodium,
+ dep_threads,
+ dep_arc4random,
+]
+
+lib = static_library(
+ module_backend_name,
+ sources,
+ dependencies: deps,
+ extra_files: extras,
+)
-if remote_dyn_module
+dep_name = 'dep_' + module_backend_name
+set_variable(dep_name, dependency('', required: false))
+if module_opt == 'static'
+ dep = declare_dependency(link_with: lib)
+ set_variable(dep_name, dep)
+else
+ shared_module(module_backend_name, link_with: lib)
endif