meson: rework include_directories() and finding of tools (#39956)

This is a cleanup in preparation for later additions.
This commit is contained in:
Yu Watanabe
2025-12-02 20:07:37 +09:00
committed by GitHub
12 changed files with 61 additions and 71 deletions

View File

@@ -79,17 +79,6 @@ summary({
##################################################################### #####################################################################
# Try to install the git pre-commit hook
git_setup_sh = find_program('tools/git-setup.sh', required : false)
if git_setup_sh.found()
git_hook = run_command(git_setup_sh, check : false)
if git_hook.returncode() == 0
message(git_hook.stdout().strip())
endif
endif
#####################################################################
fs = import('fs') fs = import('fs')
if get_option('split-bin') == 'auto' if get_option('split-bin') == 'auto'
split_bin = not fs.is_symlink('/usr/sbin') split_bin = not fs.is_symlink('/usr/sbin')
@@ -351,7 +340,6 @@ cc = meson.get_compiler('c')
userspace_c_args = [] userspace_c_args = []
userspace_c_ld_args = [] userspace_c_ld_args = []
userspace_sources = [] userspace_sources = []
meson_build_sh = files('tools/meson-build.sh')
want_tests = get_option('tests') want_tests = get_option('tests')
want_slow_tests = want_tests != 'false' and get_option('slow-tests') want_slow_tests = want_tests != 'false' and get_option('slow-tests')
@@ -1953,10 +1941,6 @@ conf.set10('ENABLE_UKIFY', want_ukify)
##################################################################### #####################################################################
check_efi_alignment_py = files('tools/check-efi-alignment.py')
#####################################################################
use_provided_vmlinux_h = false use_provided_vmlinux_h = false
use_generated_vmlinux_h = false use_generated_vmlinux_h = false
provided_vmlinux_h_path = get_option('vmlinux-h-path') provided_vmlinux_h_path = get_option('vmlinux-h-path')
@@ -2028,24 +2012,6 @@ conf.set10('ENABLE_SYSCTL_BPF', conf.get('HAVE_VMLINUX_H') == 1 and libbpf.versi
##################################################################### #####################################################################
check_version_history_py = files('tools/check-version-history.py')
elf2efi_py = files('tools/elf2efi.py')
export_dbus_interfaces_py = files('tools/dbus_exporter.py')
generate_gperfs = files('tools/generate-gperfs.py')
make_autosuspend_rules_py = files('tools/make-autosuspend-rules.py')
make_directive_index_py = files('tools/make-directive-index.py')
sync_docs_py = files('tools/sync-docs.py')
make_man_index_py = files('tools/make-man-index.py')
meson_render_jinja2 = files('tools/meson-render-jinja2.py')
update_dbus_docs_py = files('tools/update-dbus-docs.py')
update_hwdb_autosuspend_sh = files('tools/update-hwdb-autosuspend.sh')
update_hwdb_sh = files('tools/update-hwdb.sh')
update_man_rules_py = files('tools/update-man-rules.py')
update_syscall_tables_sh = files('tools/update-syscall-tables.sh')
xml_helper_py = files('tools/xml_helper.py')
#####################################################################
version_tag = get_option('version-tag') version_tag = get_option('version-tag')
if version_tag == '' if version_tag == ''
version_tag = meson.project_version() version_tag = meson.project_version()
@@ -2053,6 +2019,7 @@ endif
conf.set_quoted('VERSION_TAG', version_tag) conf.set_quoted('VERSION_TAG', version_tag)
subdir('tools')
subdir('src/version') subdir('src/version')
shared_lib_tag = get_option('shared-lib-tag') shared_lib_tag = get_option('shared-lib-tag')
@@ -2072,7 +2039,7 @@ config_h = configure_file(
userspace_c_args += ['-include', 'config.h'] userspace_c_args += ['-include', 'config.h']
jinja2_cmdline = [meson_render_jinja2, config_h] jinja2_cmdline = [meson_render_jinja2_py, config_h]
userspace = declare_dependency( userspace = declare_dependency(
compile_args : userspace_c_args, compile_args : userspace_c_args,
@@ -2335,7 +2302,6 @@ else
} }
endif endif
fuzz_additional_kwargs += { fuzz_additional_kwargs += {
'include_directories' : include_directories('src/fuzz'),
'c_args' : test_cflags, 'c_args' : test_cflags,
} }
@@ -2566,9 +2532,9 @@ foreach dict : executables
kwargs = {} kwargs = {}
foreach key, val : dict foreach key, val : dict
if key in ['name', 'dbus', 'public', 'conditions', if key in ['name', 'dbus', 'public', 'conditions', 'type', 'suite',
'type', 'suite', 'timeout', 'parallel', 'timeout', 'parallel', 'objects', 'sources', 'extract',
'objects', 'sources', 'extract'] 'include_directories']
continue continue
endif endif
@@ -2579,15 +2545,15 @@ foreach dict : executables
kwargs += { key : [ kwargs.get(key, []), val ]} kwargs += { key : [ kwargs.get(key, []), val ]}
endforeach endforeach
include_directories = dict['include_directories']
if not is_test
include_directories += fs.parent(exe_sources[0])
endif
foreach val : dict.get('objects', []) foreach val : dict.get('objects', [])
obj = objects_by_name[val] obj = objects_by_name[val]
kwargs += { kwargs += { 'objects' : obj['objects'] }
'objects' : obj['objects'], include_directories += obj['include_directories']
'include_directories' : [
kwargs.get('include_directories', []),
obj['include_directories'],
],
}
endforeach endforeach
if is_test if is_test
@@ -2598,6 +2564,7 @@ foreach dict : executables
endif endif
if is_fuzz if is_fuzz
include_directories += include_directories('src/fuzz')
foreach key, val : fuzz_additional_kwargs foreach key, val : fuzz_additional_kwargs
if key == 'sources' if key == 'sources'
exe_sources += val exe_sources += val
@@ -2612,6 +2579,7 @@ foreach dict : executables
sources : exe_sources, sources : exe_sources,
kwargs : kwargs, kwargs : kwargs,
implicit_include_directories : false, implicit_include_directories : false,
include_directories : include_directories,
) )
executables_by_name += { name : exe } executables_by_name += { name : exe }
@@ -2906,20 +2874,17 @@ endif
##################################################################### #####################################################################
check_help = files('tools/check-help.sh')
check_version = files('tools/check-version.sh')
foreach exec : public_programs foreach exec : public_programs
name = fs.name(exec.full_path()) name = fs.name(exec.full_path())
if want_tests != 'false' if want_tests != 'false'
test('check-help-' + name, test('check-help-' + name,
check_help, check_help_sh,
suite : 'dist', suite : 'dist',
args : exec.full_path(), args : exec.full_path(),
depends: exec) depends: exec)
test('check-version-' + name, test('check-version-' + name,
check_version, check_version_sh,
suite : 'dist', suite : 'dist',
args : [exec.full_path(), args : [exec.full_path(),
project_major_version], project_major_version],
@@ -2950,7 +2915,7 @@ if git.found()
run_target( run_target(
'git-contrib', 'git-contrib',
command : files('tools/git-contrib.sh')) command : git_contrib_sh)
#################################################### ####################################################
@@ -3013,10 +2978,9 @@ foreach name, exe : executables_by_name
symbol_analysis_exes += exe symbol_analysis_exes += exe
endforeach endforeach
find_unused_library_symbols = find_program('tools/find-unused-library-symbols.py')
test( test(
'libshared-unused-symbols', 'libshared-unused-symbols',
find_unused_library_symbols, find_unused_library_symbols_py,
suite : 'unused-symbols', suite : 'unused-symbols',
args : [libshared, libcore] + nss_targets + pam_targets + symbol_analysis_exes, args : [libshared, libcore] + nss_targets + pam_targets + symbol_analysis_exes,
) )
@@ -3024,7 +2988,7 @@ test(
run_target( run_target(
'check-api-docs', 'check-api-docs',
depends : [man, libsystemd, libudev], depends : [man, libsystemd, libudev],
command : [files('tools/check-api-docs.sh'), command : [check_api_docs_sh,
libsystemd.full_path(), libsystemd.full_path(),
libudev.full_path()]) libudev.full_path()])
@@ -3039,7 +3003,7 @@ if not meson.is_cross_build()
output : fs.name(dbus_interfaces_dir), output : fs.name(dbus_interfaces_dir),
install : dbus_interfaces_dir != 'no', install : dbus_interfaces_dir != 'no',
install_dir : fs.parent(dbus_interfaces_dir), install_dir : fs.parent(dbus_interfaces_dir),
command : [export_dbus_interfaces_py, '@OUTPUT@', dbus_programs]) command : [dbus_exporter_py, '@OUTPUT@', dbus_programs])
endif endif
custom_target( custom_target(
@@ -3047,7 +3011,7 @@ custom_target(
capture : true, capture : true,
install : want_tests != 'no' and install_tests, install : want_tests != 'no' and install_tests,
install_dir : testdata_dir, install_dir : testdata_dir,
command : [files('tools/meson-extract-unit-files.py'), command : [meson_extract_unit_files_py,
meson.project_build_root()]) meson.project_build_root()])
##################################################################### #####################################################################

View File

@@ -125,11 +125,12 @@ generated_sources += [load_fragment_gperf_c, load_fragment_gperf_nulstr_c, bpf_d
libcore_sources += [load_fragment_gperf_c, load_fragment_gperf_nulstr_c, bpf_delegate_configs_inc] libcore_sources += [load_fragment_gperf_c, load_fragment_gperf_nulstr_c, bpf_delegate_configs_inc]
libcore_build_dir = meson.current_build_dir() libcore_build_dir = meson.current_build_dir()
libcore_name = 'systemd-core-@0@'.format(shared_lib_tag) libcore_name = 'systemd-core-@0@'.format(shared_lib_tag)
core_includes = [includes, include_directories('.')]
libcore_static = static_library( libcore_static = static_library(
libcore_name, libcore_name,
libcore_sources, libcore_sources,
include_directories : [includes, include_directories('.')], include_directories : core_includes,
implicit_include_directories : false, implicit_include_directories : false,
c_args : ['-fvisibility=default'], c_args : ['-fvisibility=default'],
dependencies : [libaudit_cflags, dependencies : [libaudit_cflags,
@@ -157,8 +158,6 @@ libcore = shared_library(
install : true, install : true,
install_dir : pkglibdir) install_dir : pkglibdir)
core_includes = [includes, include_directories('.')]
systemd_sources = files( systemd_sources = files(
'main.c', 'main.c',
'crash-handler.c', 'crash-handler.c',
@@ -210,7 +209,6 @@ executables += [
'name' : 'systemd-executor', 'name' : 'systemd-executor',
'public' : true, 'public' : true,
'sources' : systemd_executor_sources, 'sources' : systemd_executor_sources,
'include_directories' : core_includes,
'link_with' : executor_libs, 'link_with' : executor_libs,
'dependencies' : [ 'dependencies' : [
libapparmor_cflags, libapparmor_cflags,

View File

@@ -37,7 +37,6 @@ executables += [
libexec_template + { libexec_template + {
'name' : 'systemd-coredump', 'name' : 'systemd-coredump',
'sources' : systemd_coredump_sources, 'sources' : systemd_coredump_sources,
'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'extract' : systemd_coredump_extract_sources, 'extract' : systemd_coredump_extract_sources,
'link_with' : [libshared], 'link_with' : [libshared],
'dependencies' : common_dependencies, 'dependencies' : common_dependencies,

View File

@@ -63,8 +63,6 @@ executables += [
'dbus' : true, 'dbus' : true,
'sources' : systemd_homed_sources, 'sources' : systemd_homed_sources,
'extract' : systemd_homed_extract_sources, 'extract' : systemd_homed_extract_sources,
'include_directories' : includes +
include_directories('.'),
'dependencies' : [ 'dependencies' : [
libcrypt, libcrypt,
libm, libm,

View File

@@ -66,7 +66,6 @@ executables += [
'name' : 'systemd-journald', 'name' : 'systemd-journald',
'sources' : systemd_journald_sources, 'sources' : systemd_journald_sources,
'extract' : systemd_journald_extract_sources, 'extract' : systemd_journald_extract_sources,
'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'dependencies' : [ 'dependencies' : [
liblz4_cflags, liblz4_cflags,
libselinux_cflags, libselinux_cflags,

View File

@@ -47,7 +47,6 @@ executables += [
'dbus' : true, 'dbus' : true,
'sources' : systemd_logind_sources, 'sources' : systemd_logind_sources,
'extract' : systemd_logind_extract_sources, 'extract' : systemd_logind_extract_sources,
'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'dependencies' : [ 'dependencies' : [
threads, threads,
], ],

View File

@@ -32,7 +32,6 @@ executables += [
'name' : 'systemd-nsresourced', 'name' : 'systemd-nsresourced',
'sources' : systemd_nsresourced_sources, 'sources' : systemd_nsresourced_sources,
'extract' : systemd_nsresourced_extract_sources, 'extract' : systemd_nsresourced_extract_sources,
'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'dependencies' : threads, 'dependencies' : threads,
}, },
libexec_template + { libexec_template + {

View File

@@ -83,7 +83,6 @@ executables += [
'dbus' : true, 'dbus' : true,
'sources' : systemd_resolved_sources, 'sources' : systemd_resolved_sources,
'extract' : systemd_resolved_extract_sources, 'extract' : systemd_resolved_extract_sources,
'include_directories' : [libexec_template['include_directories'], include_directories('.')],
}, },
executable_template + resolve_common_template + { executable_template + resolve_common_template + {
'name' : 'resolvectl', 'name' : 'resolvectl',

View File

@@ -5,7 +5,6 @@ executables += [
'name' : 'systemd-sleep', 'name' : 'systemd-sleep',
'sources' : files('sleep.c'), 'sources' : files('sleep.c'),
'extract' : files('battery-capacity.c'), 'extract' : files('battery-capacity.c'),
'include_directories' : [libexec_template['include_directories'], include_directories('.')],
}, },
test_template + { test_template + {
'sources' : files('test-battery-capacity.c'), 'sources' : files('test-battery-capacity.c'),

View File

@@ -34,7 +34,6 @@ executables += [
'name' : 'systemd-timesyncd', 'name' : 'systemd-timesyncd',
'sources' : timesyncd_sources, 'sources' : timesyncd_sources,
'extract' : timesyncd_extract_sources, 'extract' : timesyncd_extract_sources,
'include_directories' : [libexec_template['include_directories'], include_directories('.')],
'link_with' : timesyncd_link_with, 'link_with' : timesyncd_link_with,
'dependencies' : [ 'dependencies' : [
libm, libm,

View File

@@ -7,7 +7,7 @@ version_h = custom_target('version',
output : 'version.h', output : 'version.h',
capture : true, capture : true,
command : [ command : [
meson.project_source_root() / 'tools/vcs-tag.sh', vcs_tag_sh,
'@INPUT@', '@INPUT@',
get_option('mode'), get_option('mode'),
vcs_tag ? '1' : '0', vcs_tag ? '1' : '0',

37
tools/meson.build Normal file
View File

@@ -0,0 +1,37 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
check_api_docs_sh = files('check-api-docs.sh')
check_efi_alignment_py = files('check-efi-alignment.py')
check_help_sh = files('check-help.sh')
check_version_history_py = files('check-version-history.py')
check_version_sh = files('check-version.sh')
elf2efi_py = files('elf2efi.py')
dbus_exporter_py = files('dbus_exporter.py')
find_unused_library_symbols_py = files('find-unused-library-symbols.py')
generate_gperfs = files('generate-gperfs.py')
git_contrib_sh = files('git-contrib.sh')
make_autosuspend_rules_py = files('make-autosuspend-rules.py')
make_directive_index_py = files('make-directive-index.py')
make_man_index_py = files('make-man-index.py')
meson_build_sh = files('meson-build.sh')
meson_extract_unit_files_py = files('meson-extract-unit-files.py')
meson_render_jinja2_py = files('meson-render-jinja2.py')
sync_docs_py = files('sync-docs.py')
update_dbus_docs_py = files('update-dbus-docs.py')
update_hwdb_autosuspend_sh = files('update-hwdb-autosuspend.sh')
update_hwdb_sh = files('update-hwdb.sh')
update_man_rules_py = files('update-man-rules.py')
update_syscall_tables_sh = files('update-syscall-tables.sh')
vcs_tag_sh = files('vcs-tag.sh')
xml_helper_py = files('xml_helper.py')
#####################################################################
# Try to install the git pre-commit hook
git_setup_sh = find_program('./git-setup.sh', required : false)
if git_setup_sh.found()
git_hook = run_command(git_setup_sh, check : false)
if git_hook.returncode() == 0
message(git_hook.stdout().strip())
endif
endif