From 963bebd7b0e688fb1a66199ad28a12046d7ad8ac Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 1 Dec 2025 15:35:22 +0100 Subject: [PATCH] meson: add source dir to include_directories automatically Quite often we need to specify include_directories('.'). Normally, meson does this automatically, but we specify implicit_include_directories : false, see 30d20907bddfe064cc3437a888dd8f00d14929e4 for an explanation. Passing the include_directories argument through the template layers was rather cumbersome. Let's simplify things by always including the directory of the first source file. This makes the definitions simpler, at the cost of having an unnecessary include directory in the list in some cases. (Tests are excluded from this change, because they happen to not need this, but also because some tests have source[0] which is a custom target, and we'd need newer meson to support that.) --- meson.build | 23 ++++++++++++----------- src/core/meson.build | 1 - src/coredump/meson.build | 1 - src/home/meson.build | 2 -- src/journal/meson.build | 1 - src/login/meson.build | 1 - src/nsresourced/meson.build | 1 - src/resolve/meson.build | 1 - src/sleep/meson.build | 1 - src/timesync/meson.build | 1 - 10 files changed, 12 insertions(+), 21 deletions(-) diff --git a/meson.build b/meson.build index 8b08bb31783..85b8d1b407a 100644 --- a/meson.build +++ b/meson.build @@ -2334,7 +2334,6 @@ else } endif fuzz_additional_kwargs += { - 'include_directories' : include_directories('src/fuzz'), 'c_args' : test_cflags, } @@ -2565,9 +2564,9 @@ foreach dict : executables kwargs = {} foreach key, val : dict - if key in ['name', 'dbus', 'public', 'conditions', - 'type', 'suite', 'timeout', 'parallel', - 'objects', 'sources', 'extract'] + if key in ['name', 'dbus', 'public', 'conditions', 'type', 'suite', + 'timeout', 'parallel', 'objects', 'sources', 'extract', + 'include_directories'] continue endif @@ -2578,15 +2577,15 @@ foreach dict : executables kwargs += { key : [ kwargs.get(key, []), val ]} endforeach + include_directories = dict['include_directories'] + if not is_test + include_directories += fs.parent(exe_sources[0]) + endif + foreach val : dict.get('objects', []) obj = objects_by_name[val] - kwargs += { - 'objects' : obj['objects'], - 'include_directories' : [ - kwargs.get('include_directories', []), - obj['include_directories'], - ], - } + kwargs += { 'objects' : obj['objects'] } + include_directories += obj['include_directories'] endforeach if is_test @@ -2597,6 +2596,7 @@ foreach dict : executables endif if is_fuzz + include_directories += include_directories('src/fuzz') foreach key, val : fuzz_additional_kwargs if key == 'sources' exe_sources += val @@ -2611,6 +2611,7 @@ foreach dict : executables sources : exe_sources, kwargs : kwargs, implicit_include_directories : false, + include_directories : include_directories, ) executables_by_name += { name : exe } diff --git a/src/core/meson.build b/src/core/meson.build index 1fa0e684964..11f19ad1f4b 100644 --- a/src/core/meson.build +++ b/src/core/meson.build @@ -207,7 +207,6 @@ executables += [ 'name' : 'systemd-executor', 'public' : true, 'sources' : systemd_executor_sources, - 'include_directories' : core_includes, 'link_with' : executor_libs, 'dependencies' : [ libapparmor_cflags, diff --git a/src/coredump/meson.build b/src/coredump/meson.build index 230eb0f3e6f..355993d09ef 100644 --- a/src/coredump/meson.build +++ b/src/coredump/meson.build @@ -37,7 +37,6 @@ executables += [ libexec_template + { 'name' : 'systemd-coredump', 'sources' : systemd_coredump_sources, - 'include_directories' : [libexec_template['include_directories'], include_directories('.')], 'extract' : systemd_coredump_extract_sources, 'link_with' : [libshared], 'dependencies' : common_dependencies, diff --git a/src/home/meson.build b/src/home/meson.build index f913cb75e5d..dbb374ce4a1 100644 --- a/src/home/meson.build +++ b/src/home/meson.build @@ -63,8 +63,6 @@ executables += [ 'dbus' : true, 'sources' : systemd_homed_sources, 'extract' : systemd_homed_extract_sources, - 'include_directories' : includes + - include_directories('.'), 'dependencies' : [ libcrypt, libm, diff --git a/src/journal/meson.build b/src/journal/meson.build index fc5f557696e..1ad5c40dfa8 100644 --- a/src/journal/meson.build +++ b/src/journal/meson.build @@ -66,7 +66,6 @@ executables += [ 'name' : 'systemd-journald', 'sources' : systemd_journald_sources, 'extract' : systemd_journald_extract_sources, - 'include_directories' : [libexec_template['include_directories'], include_directories('.')], 'dependencies' : [ liblz4_cflags, libselinux_cflags, diff --git a/src/login/meson.build b/src/login/meson.build index 435dcf4d27d..df3c2329591 100644 --- a/src/login/meson.build +++ b/src/login/meson.build @@ -47,7 +47,6 @@ executables += [ 'dbus' : true, 'sources' : systemd_logind_sources, 'extract' : systemd_logind_extract_sources, - 'include_directories' : [libexec_template['include_directories'], include_directories('.')], 'dependencies' : [ threads, ], diff --git a/src/nsresourced/meson.build b/src/nsresourced/meson.build index 4fb55f67f9d..6b6ae1558c0 100644 --- a/src/nsresourced/meson.build +++ b/src/nsresourced/meson.build @@ -32,7 +32,6 @@ executables += [ 'name' : 'systemd-nsresourced', 'sources' : systemd_nsresourced_sources, 'extract' : systemd_nsresourced_extract_sources, - 'include_directories' : [libexec_template['include_directories'], include_directories('.')], 'dependencies' : threads, }, libexec_template + { diff --git a/src/resolve/meson.build b/src/resolve/meson.build index b32e9526c8d..49ac293f517 100644 --- a/src/resolve/meson.build +++ b/src/resolve/meson.build @@ -83,7 +83,6 @@ executables += [ 'dbus' : true, 'sources' : systemd_resolved_sources, 'extract' : systemd_resolved_extract_sources, - 'include_directories' : [libexec_template['include_directories'], include_directories('.')], }, executable_template + resolve_common_template + { 'name' : 'resolvectl', diff --git a/src/sleep/meson.build b/src/sleep/meson.build index ff9ea74aa2e..7411aa1cebd 100644 --- a/src/sleep/meson.build +++ b/src/sleep/meson.build @@ -5,7 +5,6 @@ executables += [ 'name' : 'systemd-sleep', 'sources' : files('sleep.c'), 'extract' : files('battery-capacity.c'), - 'include_directories' : [libexec_template['include_directories'], include_directories('.')], }, test_template + { 'sources' : files('test-battery-capacity.c'), diff --git a/src/timesync/meson.build b/src/timesync/meson.build index 51e9d3f5c10..b3072457720 100644 --- a/src/timesync/meson.build +++ b/src/timesync/meson.build @@ -34,7 +34,6 @@ executables += [ 'name' : 'systemd-timesyncd', 'sources' : timesyncd_sources, 'extract' : timesyncd_extract_sources, - 'include_directories' : [libexec_template['include_directories'], include_directories('.')], 'link_with' : timesyncd_link_with, 'dependencies' : [ libm, -- 2.47.3