diff --git a/meson.build b/meson.build index a66738c211..936c3e0cae 100644 --- a/meson.build +++ b/meson.build @@ -118,6 +118,10 @@ conf_data = configuration_data( }, ) +#### Programs + +python_exe = find_program('python3', 'python', required: false) + #### Dependencies boost = dependency('boost', version: '>=1.66') @@ -350,6 +354,7 @@ INCLUDES = [ #### Build Starts Here LIBS_BUILT_SO_FAR = [] +subdir('tools') subdir('src') subdir('fuzz') if have_premium diff --git a/src/bin/admin/meson.build b/src/bin/admin/meson.build index 241631a3df..29fa90eb73 100644 --- a/src/bin/admin/meson.build +++ b/src/bin/admin/meson.build @@ -1,7 +1,8 @@ kea_admin_conf_data = configuration_data() -kea_admin_conf_data.set('prefix', get_option('prefix')) +kea_admin_conf_data.set('prefix', PREFIX) kea_admin_conf_data.set('exec_prefix', '${prefix}') -kea_admin_conf_data.set('datarootdir', '${prefix}/' + get_option('datadir')) +DATADIR = get_option('datadir') +kea_admin_conf_data.set('datarootdir', '${prefix}/' + DATADIR) kea_admin_conf_data.set('PACKAGE', 'kea') kea_admin_conf_data.set('PACKAGE_NAME', 'kea') kea_admin_conf_data.set('PACKAGE_VERSION', project_version) @@ -14,6 +15,14 @@ configure_file( input: 'kea-admin.in', output: 'kea-admin', configuration: kea_admin_conf_data, + install: true, + install_dir: get_option('sbindir'), +) +adminscriptsdir = f'@DATADIR@/kea/scripts' +configure_file( + input: 'admin-utils.sh.in', + output: 'admin-utils.sh', + copy: true, + install: true, + install_dir: adminscriptsdir, ) -configure_file(input: 'admin-utils.sh.in', output: 'admin-utils.sh', copy: true) -# install? diff --git a/src/bin/agent/meson.build b/src/bin/agent/meson.build new file mode 100644 index 0000000000..4ab4791042 --- /dev/null +++ b/src/bin/agent/meson.build @@ -0,0 +1,26 @@ +agent_lib = static_library( + 'agent', + 'agent_lexer.cc', + 'agent_parser.cc', + 'ca_cfg_mgr.cc', + 'ca_command_mgr.cc', + 'ca_controller.cc', + 'ca_log.cc', + 'ca_messages.cc', + 'ca_process.cc', + 'ca_response_creator.cc', + 'parser_context.cc', + 'simple_parser.cc', + dependencies: [crypto], + include_directories: [include_directories('.')] + INCLUDES, + link_with: LIBS_BUILT_SO_FAR, +) +executable( + 'kea-ctrl-agent', + 'main.cc', + dependencies: [crypto], + include_directories: [include_directories('.')] + INCLUDES, + install: true, + install_dir: 'sbin', + link_with: [agent_lib] + LIBS_BUILT_SO_FAR, +) diff --git a/src/bin/d2/meson.build b/src/bin/d2/meson.build new file mode 100644 index 0000000000..900da24ee7 --- /dev/null +++ b/src/bin/d2/meson.build @@ -0,0 +1,30 @@ +d2_lib = static_library( + 'd2', + 'check_exists_add.cc', + 'check_exists_remove.cc', + 'd2_controller.cc', + 'd2_lexer.cc', + 'd2_parser.cc', + 'd2_process.cc', + 'd2_queue_mgr.cc', + 'd2_update_mgr.cc', + 'nc_add.cc', + 'nc_remove.cc', + 'parser_context.cc', + 'simple_add.cc', + 'simple_add_without_dhcid.cc', + 'simple_remove.cc', + 'simple_remove_without_dhcid.cc', + dependencies: [crypto], + include_directories: [include_directories('.')] + INCLUDES, + link_with: LIBS_BUILT_SO_FAR, +) +executable( + 'kea-dhcp-ddns', + 'main.cc', + dependencies: [crypto], + include_directories: [include_directories('.')] + INCLUDES, + install: true, + install_dir: 'sbin', + link_with: [d2_lib] + LIBS_BUILT_SO_FAR, +) diff --git a/src/bin/keactrl/keactrl.in b/src/bin/keactrl/keactrl.in old mode 100644 new mode 100755 diff --git a/src/bin/keactrl/meson.build b/src/bin/keactrl/meson.build new file mode 100644 index 0000000000..8560118aa2 --- /dev/null +++ b/src/bin/keactrl/meson.build @@ -0,0 +1,65 @@ +keactrl_conf_data = configuration_data() +keactrl_conf_data.set('prefix', PREFIX) +SYSCONFDIR = get_option('sysconfdir') +keactrl_conf_data.set('sysconfdir', '${prefix}/' + SYSCONFDIR) +keactrl_conf_data.set('PACKAGE', 'kea') +keactrl_conf_data.set('exec_prefix', '${prefix}') +keactrl_conf_data.set('sbindir', '${prefix}/' + get_option('sbindir')) +if netconf_deps_found + keactrl_conf_data.set('HAVE_NETCONF', 'yes') +else + keactrl_conf_data.set('HAVE_NETCONF', 'no') +endif +keactrl_conf_data.set('EXTENDED_VERSION', project_version + ' (tarball)') +keactrl_conf_data.set('PACKAGE_VERSION', project_version) +keactrl_conf_data.set('runstatedir', '${prefix}/' + RUN_STATE_DIR + '/run') +keactrl_conf_data.set('localstatedir', '${prefix}/' + RUN_STATE_DIR) +kea_configfiles_destdir = f'@SYSCONFDIR@/kea' +configure_file( + input: 'keactrl.conf.in', + output: 'keactrl.conf', + configuration: keactrl_conf_data, + install_dir: kea_configfiles_destdir, +) +configure_file( + input: 'keactrl.in', + output: 'keactrl', + configuration: keactrl_conf_data, + install_dir: get_option('sbindir'), +) +path_replacer = f'@TOP_BUILD_DIR@/tools/path_replacer.sh' +custom_target( + input: 'kea-dhcp4.conf.pre', + output: 'kea-dhcp4.conf', + command: [path_replacer, '@INPUT@', '@OUTPUT@'], + install: true, + install_dir: kea_configfiles_destdir, +) +custom_target( + input: 'kea-dhcp6.conf.pre', + output: 'kea-dhcp6.conf', + command: [path_replacer, '@INPUT@', '@OUTPUT@'], + install: true, + install_dir: kea_configfiles_destdir, +) +custom_target( + input: 'kea-dhcp-ddns.conf.pre', + output: 'kea-dhcp-ddns.conf', + command: [path_replacer, '@INPUT@', '@OUTPUT@'], + install: true, + install_dir: kea_configfiles_destdir, +) +custom_target( + input: 'kea-ctrl-agent.conf.pre', + output: 'kea-ctrl-agent.conf', + command: [path_replacer, '@INPUT@', '@OUTPUT@'], + install: true, + install_dir: kea_configfiles_destdir, +) +custom_target( + input: 'kea-netconf.conf.pre', + output: 'kea-netconf.conf', + command: [path_replacer, '@INPUT@', '@OUTPUT@'], + install: netconf_deps_found, + install_dir: kea_configfiles_destdir, +) diff --git a/src/bin/meson.build b/src/bin/meson.build index 7a3c6fcf6e..989056a45c 100644 --- a/src/bin/meson.build +++ b/src/bin/meson.build @@ -1,10 +1,10 @@ subdir('lfc') subdir('dhcp4') subdir('dhcp6') -# subdir('d2') -# subdir('agent') +subdir('d2') +subdir('agent') subdir('admin') -# subdir('keactrl') +subdir('keactrl') subdir('perfdhcp') -# subdir('shell') +subdir('shell') # subdir('netconf') diff --git a/src/bin/perfdhcp/meson.build b/src/bin/perfdhcp/meson.build index 064f4eced1..480becef45 100644 --- a/src/bin/perfdhcp/meson.build +++ b/src/bin/perfdhcp/meson.build @@ -1,5 +1,5 @@ -perfdhcplib_lib = static_library( - 'perfdhcplib', +perfdhcp_lib = static_library( + 'perfdhcp', 'avalanche_scen.cc', 'basic_scen.cc', 'command_options.cc', @@ -22,5 +22,5 @@ executable( include_directories: [include_directories('.')] + INCLUDES, install: true, install_dir: 'sbin', - link_with: [perfdhcplib_lib] + LIBS_BUILT_SO_FAR, + link_with: [perfdhcp_lib] + LIBS_BUILT_SO_FAR, ) diff --git a/src/bin/shell/kea-shell.in b/src/bin/shell/kea-shell.in old mode 100644 new mode 100755 diff --git a/src/bin/shell/meson.build b/src/bin/shell/meson.build new file mode 100644 index 0000000000..5574a5af0f --- /dev/null +++ b/src/bin/shell/meson.build @@ -0,0 +1,40 @@ +if not python_exe.found() + subdir_done() +endif + +kea_shell_conf_data = configuration_data() +kea_shell_conf_data.set('PYTHON', python_exe.full_path()) +kea_shell_conf_data.set('PACKAGE_VERSION', project_version) +kea_shell_conf_data.set('EXTENDED_VERSION', project_version + ' (tarball)') + +r = run_command( + python_exe, + '-c', + 'import sysconfig; print(sysconfig.get_paths()[\'purelib\'])', + check: true, +) +PYTHON_SITE_PACKAGE = r.stdout().strip() +PKGPYTHONDIR = f'@PYTHON_SITE_PACKAGE@/kea' +kea_shell_conf_data.set('PKGPYTHONDIR', PKGPYTHONDIR) +configure_file( + input: 'kea-shell.in', + output: 'kea-shell', + configuration: kea_shell_conf_data, + install: true, + install_dir: get_option('sbindir'), +) +# Install into the system seti package location or not? +configure_file( + input: 'kea_conn.py', + output: 'kea_conn.py', + copy: true, + install: false, + install_dir: PKGPYTHONDIR, +) +configure_file( + input: 'kea_connector3.py', + output: 'kea_connector3.py', + copy: true, + install: false, + install_dir: PKGPYTHONDIR, +) diff --git a/src/share/database/scripts/mysql/meson.build b/src/share/database/scripts/mysql/meson.build index a724924e03..e51ceead60 100644 --- a/src/share/database/scripts/mysql/meson.build +++ b/src/share/database/scripts/mysql/meson.build @@ -1,5 +1,5 @@ DATADIR = get_option('datadir') -INSTALL_DIR = f'@DATADIR@/kea/script/mysql' +INSTALL_DIR = f'@DATADIR@/kea/scripts/mysql' configure_file( input: 'dhcpdb_create.mysql', output: 'dhcpdb_create.mysql', @@ -15,15 +15,15 @@ configure_file( install_dir: INSTALL_DIR, ) -mysql_script_conf_data = configuration_data() -mysql_script_conf_data.set('prefix', PREFIX) -mysql_script_conf_data.set('abs_top_builddir', TOP_BUILD_DIR) -mysql_script_conf_data.set('datarootdir', '${prefix}/' + DATADIR) -mysql_script_conf_data.set('PACKAGE_NAME', 'kea') +mysql_scripts_conf_data = configuration_data() +mysql_scripts_conf_data.set('prefix', PREFIX) +mysql_scripts_conf_data.set('abs_top_builddir', TOP_BUILD_DIR) +mysql_scripts_conf_data.set('datarootdir', '${prefix}/' + DATADIR) +mysql_scripts_conf_data.set('PACKAGE_NAME', 'kea') configure_file( input: 'wipe_data.sh.in', output: 'wipe_data.sh', - configuration: mysql_script_conf_data, + configuration: mysql_scripts_conf_data, install: true, install_dir: INSTALL_DIR, ) @@ -71,7 +71,7 @@ foreach file : upgrade_scripts configure_file( input: file + '.in', output: file, - configuration: mysql_script_conf_data, + configuration: mysql_scripts_conf_data, install: true, install_dir: INSTALL_DIR, ) diff --git a/src/share/database/scripts/pgsql/meson.build b/src/share/database/scripts/pgsql/meson.build index c8d097a188..43f8674981 100644 --- a/src/share/database/scripts/pgsql/meson.build +++ b/src/share/database/scripts/pgsql/meson.build @@ -1,5 +1,5 @@ DATADIR = get_option('datadir') -INSTALL_DIR = f'@DATADIR@/kea/script/pgsql' +INSTALL_DIR = f'@DATADIR@/kea/scripts/pgsql' configure_file( input: 'dhcpdb_create.pgsql', output: 'dhcpdb_create.pgsql', @@ -15,15 +15,15 @@ configure_file( install_dir: INSTALL_DIR, ) -pgsql_script_conf_data = configuration_data() -pgsql_script_conf_data.set('prefix', PREFIX) -pgsql_script_conf_data.set('abs_top_builddir', TOP_BUILD_DIR) -pgsql_script_conf_data.set('datarootdir', '${prefix}/' + DATADIR) -pgsql_script_conf_data.set('PACKAGE_NAME', 'kea') +pgsql_scripts_conf_data = configuration_data() +pgsql_scripts_conf_data.set('prefix', PREFIX) +pgsql_scripts_conf_data.set('abs_top_builddir', TOP_BUILD_DIR) +pgsql_scripts_conf_data.set('datarootdir', '${prefix}/' + DATADIR) +pgsql_scripts_conf_data.set('PACKAGE_NAME', 'kea') configure_file( input: 'wipe_data.sh.in', output: 'wipe_data.sh', - configuration: pgsql_script_conf_data, + configuration: pgsql_scripts_conf_data, install: true, install_dir: INSTALL_DIR, ) @@ -66,7 +66,7 @@ foreach file : upgrade_scripts configure_file( input: file + '.in', output: file, - configuration: pgsql_script_conf_data, + configuration: pgsql_scripts_conf_data, install: true, install_dir: INSTALL_DIR, ) diff --git a/tools/meson.build b/tools/meson.build new file mode 100644 index 0000000000..8fd840504d --- /dev/null +++ b/tools/meson.build @@ -0,0 +1,12 @@ +tools_conf_data = configuration_data() +tools_conf_data.set('prefix', PREFIX) +tools_conf_data.set('sysconfdir', '${prefix}/' + get_option('sysconfdir')) +tools_conf_data.set('localstatedir', '${prefix}/' + get_option('localstatedir')) +tools_conf_data.set('exec_prefix', '${prefix}') +tools_conf_data.set('libdir', '${exec_prefix}/' + get_option('libdir')) +tools_conf_data.set('SEP', '+') +configure_file( + input: 'path_replacer.sh.in', + output: 'path_replacer.sh', + configuration: tools_conf_data, +)