--- /dev/null
+opt_dnstap = get_option('dnstap')
+dep_dnstap = dependency('libfstrm', required: opt_dnstap)
+
+if dep_dnstap.found()
+ funcs = [
+ 'fstrm_tcp_writer_init',
+ ]
+
+ foreach func: funcs
+ has = cxx.has_function(func, dependencies: dep_dnstap)
+ conf.set('HAVE_' + func.to_upper(), has, description: 'Have libfstram ' + func)
+ endforeach
+endif
+
+conf.set('HAVE_FSTRM', dep_dnstap.found(), description: 'libfstrm')
+summary('DNSTAP', dep_dnstap.found(), bool_yn: true, section: 'Configuration')
+
--- /dev/null
+opt_libcurl = get_option('libcurl')
+dep_libcurl = dependency('libcurl', version: '>= 7.21.3', required: opt_libcurl)
+conf.set('HAVE_LIBCURL', dep_libcurl.found(), description: 'Whether we have libcurl')
+summary('CURL', dep_libcurl.found(), bool_yn: true, section: 'Configuration')
opt_libsnmp = get_option('snmp')
-dep_libsnmp = dependency('libsnmp', required: opt_libsnmp)
+
+if get_option('snmp')
+ snmp_config = find_program('net-snmp-config', required: true)
+ snmp_ldflags_res = run_command(snmp_config, '--libs', check: true)
+ snmp_ldflags = snmp_ldflags_res.stdout().strip().split()
+ snmp_ldflags_res = run_command(snmp_config, '--agent-libs', check: true)
+ snmp_ldflags += snmp_ldflags_res.stdout().strip().split()
+
+ dep_libsnmp = declare_dependency(
+ link_args: snmp_ldflags,
+ )
+endif
+
+if dep_libsnmp.found()
+ funcs = [
+ 'snmp_select_info2',
+ ]
+
+ foreach func: funcs
+ define = 'HAVE_' + func.to_upper()
+ have_func = cxx.has_function(func, dependencies: dep_libsnmp)
+ conf.set(define, have_func, description: 'Have libsnmp ' + func)
+ endforeach
+endif
conf.set('HAVE_LIBSSNMP', dep_libsnmp.found(), description: 'libsnmp')
summary('SNMP', dep_libsnmp.found(), bool_yn: true, section: 'Configuration')
# Create the configuration object and dependencies list.
conf = configuration_data()
+conf.set_quoted('PACKAGE_STRING', meson.project_version(), description: 'version')
# Feature detection and system configuration
subdir('meson' / 'config') # Config
subdir('meson' / 'various-functions') # Various Functions
subdir('meson' / 'various-headers') # Various Headers
subdir('meson' / 'libresolv') # res_query XXX
+subdir('meson' / 'dnstap') # DNSTAP through libfstream
+subdir('meson' / 'libcurl') # Curl
common_sources = []
src_dir / 'ednspadding.cc',
src_dir / 'ednssubnet.cc',
src_dir / 'filterpo.cc',
- src_dir / 'fstrm_logger.cc',
src_dir / 'gettime.cc',
src_dir / 'gss_context.cc',
src_dir / 'iputils.cc',
src_dir / 'zoneparser-tng.cc',
)
+conditional_sources = {
+ 'minicurl': {
+ 'sources': [
+ src_dir / 'minicurl.cc',
+ src_dir / 'minicurl.hh',
+ ],
+ 'condition': dep_libcurl.found(),
+ },
+ 'dnstap': {
+ 'sources': [
+ src_dir / 'dnstap.cc',
+ src_dir / 'fstrm_logger.cc',
+ ],
+ 'condition': dep_dnstap.found(),
+ },
+}
+
+foreach name, info: conditional_sources
+ if info['condition']
+ common_sources += files(info['sources'])
+ endif
+endforeach
+
# Generate config.h
config_h = configure_file(configuration: conf, output: 'config.h')
dep_libsnmp,
dep_libsodium,
dep_libssl,
+ dep_gnutls,
dep_lua,
dep_protozero,
dep_rust_settings,
dep_settings,
dep_yahttp,
dep_htmlfiles,
+ dep_dnstap,
+ dep_libcurl,
]
+# XXX pub suffix list
+
libpdns_dnslabeltext_source = src_dir / 'dnslabeltext.rl'
libpdns_dnslabeltext_gen = src_dir / 'dnslabeltext.cc'
if not fs.is_file(libpdns_dnslabeltext_gen)
option('malloc-trace', type: 'boolean', value: false, description: 'Enable malloc-trace')
option('socket-dir', type: 'string', value: '/var/run', description: 'Where the control socket lives')
option('snmp', type: 'boolean', value: false, description: 'Enable SNMP')
+option('dnstap', type: 'feature', value: 'auto', description: 'Enable DNSTAP support through libfstrm')
+option('libcurl', type: 'feature', value: 'auto', description: 'Enable Curl support')