]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: Remove unneeded include directories
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 9 May 2025 18:48:51 +0000 (20:48 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 12 May 2025 11:35:50 +0000 (13:35 +0200)
meson by default adds the current source and build directory as include
directories. Because we structure our meson code by gathering a giant dict
of everything we want to do and then doing all the actual target generation
in the top level meson.build, this behavior does not make sense at all because
we end up adding the top level repository directory as an include directory
which is never what we want.

At the same time, let's also make sure the top level directory of the build
directory is not an include directory, by moving the version.h generation
into the src/version subdirectory and then adding the src/version subdirectory
of the build directory as an include directory instead of the top level
repository directory.

Making this change means that language servers such as clangd can't get
confused when they automatically insert an #include line and insert
"#include "src/basic/fs-util.h" instead of "#include "fs-util.h".

meson.build
src/basic/meson.build
src/boot/meson.build
src/core/meson.build
src/cryptsetup/cryptsetup-tokens/meson.build
src/libsystemd-network/meson.build
src/libsystemd/meson.build
src/libsystemd/sd-journal/meson.build [new file with mode: 0644]
src/libudev/meson.build
src/shared/meson.build
src/version/meson.build [new file with mode: 0644]

index a10a1038719a562c1924a1990baa6666754b3873..65b77c52148eaf90d001c3badf8ffe9531edb098 100644 (file)
@@ -1957,14 +1957,7 @@ endif
 
 conf.set_quoted('VERSION_TAG', version_tag)
 
-vcs_tag = get_option('vcs-tag')
-version_h = custom_target('version',
-        build_always_stale : vcs_tag,
-        input : 'src/version/version.h.in',
-        output : 'version.h',
-        capture : true,
-        command : ['tools/vcs-tag.sh', '@INPUT@', get_option('mode'), vcs_tag ? '1' : '0'],
-)
+subdir('src/version')
 
 shared_lib_tag = get_option('shared-lib-tag')
 if shared_lib_tag == ''
@@ -2018,19 +2011,17 @@ dbus_programs = []
 # A list of boot stubs. Required for testing of ukify.
 boot_stubs = []
 
-build_dir_include = include_directories('.')
-
 basic_includes = [
         include_directories(
                 'src/basic',
                 'src/fundamental',
                 'src/systemd',
-                '.',
         ),
         include_directories(
                 'src/basic/include',
                 is_system : true,
         ),
+        version_include,
 ]
 
 libsystemd_includes = [basic_includes, include_directories(
@@ -2061,6 +2052,7 @@ libsystemd = shared_library(
         'systemd',
         version : libsystemd_version,
         include_directories : libsystemd_includes,
+        implicit_include_directories : false,
         link_args : ['-shared',
                      # Make sure our library is never deleted from memory, so that our open logging fds don't leak on dlopen/dlclose cycles.
                      '-z', 'nodelete',
@@ -2081,6 +2073,7 @@ install_libsystemd_static = static_library(
         basic_sources,
         fundamental_sources,
         include_directories : libsystemd_includes,
+        implicit_include_directories : false,
         build_by_default : static_libsystemd != 'false',
         install : static_libsystemd != 'false',
         install_tag: 'libsystemd',
@@ -2111,6 +2104,7 @@ libudev = shared_library(
         'udev',
         version : libudev_version,
         include_directories : includes,
+        implicit_include_directories : false,
         link_args : ['-shared',
                      '-Wl,--version-script=' + libudev_sym_path],
         link_with : [libsystemd_static, libshared_static],
@@ -2130,6 +2124,7 @@ install_libudev_static = static_library(
         libsystemd_sources,
         libudev_sources,
         include_directories : includes,
+        implicit_include_directories : false,
         build_by_default : static_libudev != 'false',
         install : static_libudev != 'false',
         install_tag: 'libudev',
@@ -2470,6 +2465,7 @@ foreach dict : executables
         exe = executable(
                 name,
                 kwargs : kwargs,
+                implicit_include_directories : false,
         )
 
         executables_by_name += { name : exe }
@@ -2600,6 +2596,7 @@ foreach dict : modules
         lib = shared_library(
                 name,
                 kwargs : kwargs,
+                implicit_include_directories : false,
         )
 
         if is_nss
index 4588a9a6e88c32649b0f398927c3b20e1514a48c..a2ac978a20cd813fdc0f2acab52711b3c3628eb5 100644 (file)
@@ -290,6 +290,7 @@ libbasic_static = static_library(
         basic_sources,
         fundamental_sources,
         include_directories : basic_includes,
+        implicit_include_directories : false,
         dependencies : [libcap,
                         libdl,
                         libgcrypt_cflags,
index c2a894d323684d0089fc6c4eb390ed4f072535e7..098f9435b85126bf0271c14fd566b170ce8c3dfb 100644 (file)
@@ -15,6 +15,7 @@ libefitest = static_library(
                 basic_includes,
                 include_directories('.'),
         ],
+        implicit_include_directories : false,
         dependencies : userspace)
 
 efitest_base = {
@@ -153,9 +154,9 @@ configure_file(
 ############################################################
 
 efi_includes = [
-        build_dir_include,
         fundamental_include,
         include_directories('.'),
+        version_include,
 ]
 
 efi_c_args = [
@@ -380,6 +381,7 @@ foreach archspec : efi_archspecs
                 libefi_sources,
                 version_h,
                 include_directories : efi_includes,
+                implicit_include_directories : false,
                 c_args : archspec['c_args'],
                 gnu_symbol_visibility : 'hidden',
                 override_options : efi_override_options,
@@ -387,6 +389,7 @@ foreach archspec : efi_archspecs
 
         kwargs = {
                 'include_directories' : efi_includes,
+                'implicit_include_directories' : false,
                 'c_args' : archspec['c_args'],
                 'link_args' : archspec['link_args'],
                 'gnu_symbol_visibility' : 'hidden',
index 0a135171fce78684b7e42868a8a86fbd88588367..500fb13f9ba0370f594d030912c9550cc39e5569 100644 (file)
@@ -105,7 +105,8 @@ libcore_static = static_library(
         libcore_sources,
         load_fragment_gperf_c,
         load_fragment_gperf_nulstr_c,
-        include_directories : includes,
+        include_directories : [includes, include_directories('.')],
+        implicit_include_directories : false,
         c_args : ['-fvisibility=default'],
         dependencies : [libacl,
                         libaudit,
@@ -123,6 +124,7 @@ libcore_static = static_library(
 libcore = shared_library(
         libcore_name,
         c_args : ['-fvisibility=default'],
+        implicit_include_directories : false,
         link_args : ['-shared',
                      '-Wl,--version-script=' + libshared_sym_path],
         link_depends : libshared_sym_path,
index b26940c6a3b10079fc70afabb158558518d72835..804e18bc67a2e015e26882d089065c7cb30115a0 100644 (file)
@@ -4,6 +4,7 @@ lib_cryptsetup_token_common = static_library(
         'cryptsetup-token-common',
         'cryptsetup-token-util.c',
         include_directories : includes,
+        implicit_include_directories : false,
         dependencies : userspace,
         link_with : libshared,
         build_by_default : false)
index 262ce9c4effa100aead588cab89508265bab32c8..333b3e0541f21e32065c4469828a817c4314d240 100644 (file)
@@ -40,6 +40,7 @@ libsystemd_network = static_library(
         'systemd-network',
         sources,
         include_directories : includes,
+        implicit_include_directories : false,
         dependencies : userspace,
         build_by_default : false)
 
index 9558bfb4ab9f64a2b73fc6446b1a7019681876f6..988e5e0ce78e7805aedd2f2157bf14295d3a0afb 100644 (file)
@@ -14,26 +14,7 @@ sd_journal_sources = files(
         'sd-journal/sd-journal.c',
 )
 
-audit_type_includes = [config_h,
-                       missing_audit_h,
-                       'linux/audit.h']
-if conf.get('HAVE_AUDIT') == 1
-        audit_type_includes += 'libaudit.h'
-endif
-
-generate_audit_type_list = find_program('sd-journal/generate-audit_type-list.sh')
-audit_type_list_txt = custom_target(
-        'audit_type-list.txt',
-        output : 'audit_type-list.txt',
-        command : [generate_audit_type_list, cpp] + audit_type_includes,
-        capture : true)
-
-audit_type_to_name = custom_target(
-        'audit_type-to-name.h',
-        input : ['sd-journal/audit_type-to-name.awk', audit_type_list_txt],
-        output : 'audit_type-to-name.h',
-        command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
-        capture : true)
+subdir('sd-journal')
 
 generated_sources += audit_type_to_name
 sd_journal_sources += audit_type_to_name
@@ -160,6 +141,7 @@ libsystemd_static = static_library(
         'systemd_static',
         libsystemd_sources,
         include_directories : libsystemd_includes,
+        implicit_include_directories : false,
         c_args : libsystemd_c_args,
         link_with : [libbasic_static],
         dependencies : [threads,
diff --git a/src/libsystemd/sd-journal/meson.build b/src/libsystemd/sd-journal/meson.build
new file mode 100644 (file)
index 0000000..5b8b582
--- /dev/null
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+# We're generating a header file here intended to be included
+# by audit-type.c. To make that work, we have to add the generated
+# header file's directory to the include directories for libsystemd.
+# In meson, adding include directories is done via include_directories(),
+# which always adds two include directories for each argument, one relative to
+# the source directory and one relative to the build directory. We don't
+# want to add src/libsystemd to the include directories, yet custom_target()
+# does not allow path segments in its output argument, so to make sure the
+# generated header is written to src/libsystemd/sd-journal in the build directory,
+# the custom_target() has to be defined here in src/libsystemd/sd-journal
+# in the source directory.
+
+audit_type_includes = [config_h,
+                       missing_audit_h,
+                       'linux/audit.h']
+if conf.get('HAVE_AUDIT') == 1
+        audit_type_includes += 'libaudit.h'
+endif
+
+generate_audit_type_list = find_program('generate-audit_type-list.sh')
+audit_type_list_txt = custom_target(
+        'audit_type-list.txt',
+        output : 'audit_type-list.txt',
+        command : [generate_audit_type_list, cpp] + audit_type_includes,
+        capture : true)
+
+audit_type_to_name = custom_target(
+        'audit_type-to-name.h',
+        input : ['audit_type-to-name.awk', audit_type_list_txt],
+        output : 'audit_type-to-name.h',
+        command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
+        capture : true)
index 7f999197afeb778a4d0204aaefed2771579f1487..e5c0c8361be1b32bf7d030dac8bb04a70abbcd9b 100644 (file)
@@ -27,6 +27,7 @@ libudev_basic = static_library(
         'udev-basic',
         libudev_sources,
         include_directories : includes,
+        implicit_include_directories : false,
         dependencies : userspace,
         c_args : ['-fvisibility=default'],
         build_by_default : false)
index 0a514dec7dfc864667d2893ac33c00e340ef184d..c25715c71d2f45049c167e621326d403d9664753 100644 (file)
@@ -360,6 +360,7 @@ libshared_static = static_library(
         libshared_name,
         shared_sources,
         include_directories : includes,
+        implicit_include_directories : false,
         dependencies : [libshared_deps,
                         userspace],
         c_args : ['-fvisibility=default'],
@@ -368,6 +369,7 @@ libshared_static = static_library(
 libshared = shared_library(
         libshared_name,
         include_directories : includes,
+        implicit_include_directories : false,
         c_args : ['-fvisibility=default'],
         link_args : ['-shared',
                      '-Wl,--version-script=' + libshared_sym_path],
@@ -386,6 +388,7 @@ libshared_fdisk = static_library(
         'shared-fdisk',
         shared_fdisk_sources,
         include_directories : includes,
+        implicit_include_directories : false,
         dependencies : [libfdisk,
                         userspace],
         c_args : ['-fvisibility=default'],
diff --git a/src/version/meson.build b/src/version/meson.build
new file mode 100644 (file)
index 0000000..3526723
--- /dev/null
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+vcs_tag = get_option('vcs-tag')
+version_h = custom_target('version',
+        build_always_stale : vcs_tag,
+        input : 'version.h.in',
+        output : 'version.h',
+        capture : true,
+        command : [meson.project_source_root() / 'tools/vcs-tag.sh', '@INPUT@', get_option('mode'), vcs_tag ? '1' : '0'],
+)
+version_include = include_directories('.')