diff --git a/meson.build b/meson.build index a10a103871..65b77c5214 100644 --- a/meson.build +++ b/meson.build @@ -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 diff --git a/src/basic/meson.build b/src/basic/meson.build index 4588a9a6e8..a2ac978a20 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -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, diff --git a/src/boot/meson.build b/src/boot/meson.build index c2a894d323..098f9435b8 100644 --- a/src/boot/meson.build +++ b/src/boot/meson.build @@ -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', diff --git a/src/core/meson.build b/src/core/meson.build index 0a135171fc..500fb13f9b 100644 --- a/src/core/meson.build +++ b/src/core/meson.build @@ -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, diff --git a/src/cryptsetup/cryptsetup-tokens/meson.build b/src/cryptsetup/cryptsetup-tokens/meson.build index b26940c6a3..804e18bc67 100644 --- a/src/cryptsetup/cryptsetup-tokens/meson.build +++ b/src/cryptsetup/cryptsetup-tokens/meson.build @@ -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) diff --git a/src/libsystemd-network/meson.build b/src/libsystemd-network/meson.build index 262ce9c4ef..333b3e0541 100644 --- a/src/libsystemd-network/meson.build +++ b/src/libsystemd-network/meson.build @@ -40,6 +40,7 @@ libsystemd_network = static_library( 'systemd-network', sources, include_directories : includes, + implicit_include_directories : false, dependencies : userspace, build_by_default : false) diff --git a/src/libsystemd/meson.build b/src/libsystemd/meson.build index 9558bfb4ab..988e5e0ce7 100644 --- a/src/libsystemd/meson.build +++ b/src/libsystemd/meson.build @@ -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 index 0000000000..5b8b582f27 --- /dev/null +++ b/src/libsystemd/sd-journal/meson.build @@ -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) diff --git a/src/libudev/meson.build b/src/libudev/meson.build index 7f999197af..e5c0c8361b 100644 --- a/src/libudev/meson.build +++ b/src/libudev/meson.build @@ -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) diff --git a/src/shared/meson.build b/src/shared/meson.build index 0a514dec7d..c25715c71d 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -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 index 0000000000..3526723af0 --- /dev/null +++ b/src/version/meson.build @@ -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('.')