From 963bebd7b0e688fb1a66199ad28a12046d7ad8ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?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 8b08bb3178..85b8d1b407 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 1fa0e68496..11f19ad1f4 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 230eb0f3e6..355993d09e 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 f913cb75e5..dbb374ce4a 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 fc5f557696..1ad5c40dfa 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 435dcf4d27..df3c232959 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 4fb55f67f9..6b6ae1558c 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 b32e9526c8..49ac293f51 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 ff9ea74aa2..7411aa1ceb 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 51e9d3f5c1..b307245772 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,