X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fsystemd.git;a=blobdiff_plain;f=meson.build;h=30e4743489814571f2ecbf5ba80eec4ef23d9ac5;hp=8554015e67f04b2abac51dd2387d70e0fee47142;hb=e87e6962fd58c0ac52f924c34311447d0fd7d51e;hpb=9bbd37845c40a54b61866e92a89fde4b34a4c582 diff --git a/meson.build b/meson.build index 8554015e67f..30e47434898 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1+ project('systemd', 'c', - version : '241', + version : '242', license : 'LGPLv2+', default_options: [ 'c_std=gnu99', @@ -12,8 +12,8 @@ project('systemd', 'c', meson_version : '>= 0.46', ) -libsystemd_version = '0.25.0' -libudev_version = '1.6.13' +libsystemd_version = '0.26.0' +libudev_version = '1.6.14' # We need the same data in two different formats, ugh! # Also, for hysterical reasons, we use different variable @@ -32,10 +32,13 @@ project_source_root = meson.current_source_dir() want_ossfuzz = get_option('oss-fuzz') want_libfuzzer = get_option('llvm-fuzz') -if want_ossfuzz and want_libfuzzer - error('only one of oss-fuzz and llvm-fuzz can be specified') +want_fuzzbuzz = get_option('fuzzbuzz') +if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1 + error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified') endif -fuzzer_build = want_ossfuzz or want_libfuzzer + +skip_deps = want_ossfuzz or want_libfuzzer +fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz ##################################################################### @@ -190,7 +193,6 @@ conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir) conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path) conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path) conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local')) -conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local')) conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper()) @@ -277,9 +279,9 @@ substs.set('RANDOM_SEED', join_paths(randoms substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path) substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path) substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local')) -substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local')) substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no') substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE')) +substs.set('BUILD_ROOT', meson.current_build_dir()) ##################################################################### @@ -300,9 +302,18 @@ else endif if want_libfuzzer - fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer') + fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false) + if fuzzing_engine.found() + add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c') + elif cc.has_argument('-fsanitize=fuzzer-no-link') + add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c') + else + error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported') + endif elif want_ossfuzz fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine') +elif want_fuzzbuzz + fuzzing_engine = meson.get_compiler('cpp').find_library(get_option('fuzzbuzz-engine'), dirs: get_option('fuzzbuzz-engine-dir')) endif possible_cc_flags = [ @@ -383,6 +394,16 @@ if get_option('buildtype') != 'debug' possible_link_flags += '-Wl,--gc-sections' endif +if get_option('b_ndebug') == 'true' + # With asserts disabled with get a bunch of warnings about variables which + # are used only in the asserts. This is not useful at all, so let's just silence + # those warnings. + possible_cc_flags += [ + '-Wno-unused-variable', + '-Wno-unused-but-set-variable', + ] +endif + add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c') add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c') @@ -401,11 +422,14 @@ endif cpp = ' '.join(cc.cmd_array()) + ' -E' +has_wstringop_truncation = cc.has_argument('-Wstringop-truncation') + ##################################################################### # compilation result tests conf.set('_GNU_SOURCE', true) conf.set('__SANE_USERSPACE_TYPES__', true) +conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation) conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include ')) conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include ')) @@ -444,96 +468,6 @@ endforeach conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h) -foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'], - ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'], - ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'], - ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'], - ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'], - ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'], - ['FRA_TUN_ID', 'linux/fib_rules.h'], - ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'], - ['FRA_PAD', 'linux/fib_rules.h'], - ['FRA_L3MDEV', 'linux/fib_rules.h'], - ['FRA_UID_RANGE', 'linux/fib_rules.h'], - ['FRA_DPORT_RANGE', 'linux/fib_rules.h'], - ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'], - ['FOU_CMD_GET', 'linux/fou.h'], - ['IFA_FLAGS', 'linux/if_addr.h'], - ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'], - ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'], - ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'], - ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'], - ['IFLA_IPVLAN_MODE', 'linux/if_link.h'], - ['IPVLAN_MODE_L3S', 'linux/if_link.h'], - ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'], - ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'], - ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'], - ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'], - ['IFLA_LINK_NETNSID', 'linux/if_link.h'], - ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'], - ['IFLA_PROTO_DOWN', 'linux/if_link.h'], - ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'], - ['IFLA_PAD', 'linux/if_link.h'], - ['IFLA_XDP', 'linux/if_link.h'], - ['IFLA_EVENT', 'linux/if_link.h'], - ['IFLA_IF_NETNSID', 'linux/if_link.h'], - ['IFLA_TARGET_NETNSID', 'linux/if_link.h'], - ['IFLA_NEW_IFINDEX', 'linux/if_link.h'], - ['IFLA_MAX_MTU', 'linux/if_link.h'], - ['IFLA_BOND_MODE', 'linux/if_link.h'], - ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'], - ['IFLA_BOND_AD_INFO', 'linux/if_link.h'], - ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'], - ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'], - ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'], - ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'], - ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'], - ['IFLA_VXLAN_LABEL', 'linux/if_link.h'], - ['IFLA_VXLAN_GPE', 'linux/if_link.h'], - ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'], - ['IFLA_GENEVE_TOS', 'linux/if_link.h'], - ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'], - ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'], - ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'], - ['IFLA_GENEVE_LABEL', 'linux/if_link.h'], - ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'], - ['IFLA_BR_MAX_AGE', 'linux/if_link.h'], - ['IFLA_BR_PRIORITY', 'linux/if_link.h'], - ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'], - ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'], - ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'], - ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'], - ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'], - ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'], - ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'], - ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'], - ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'], - ['IFLA_BRPORT_PAD', 'linux/if_link.h'], - ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'], - ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'], - ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'], - ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'], - ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'], - ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'], - ['IFLA_VRF_TABLE', 'linux/if_link.h'], - # if_tunnel.h is buggy and cannot be included on its own - ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include '], - ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include '], - ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include '], - ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include '], - ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include '], - ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include '], - ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include '], - ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include '], - ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include '], - ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include '], - ['LO_FLAGS_PARTSCAN', 'linux/loop.h'], - ] - prefix = decl.length() > 2 ? decl[2] : '' - have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix) - conf.set10('HAVE_' + decl[0], have) -endforeach - foreach ident : ['secure_getenv', '__secure_getenv'] conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident)) endforeach @@ -670,11 +604,8 @@ if not cc.has_header('sys/capability.h') error('POSIX caps headers not found') endif foreach header : ['crypt.h', - 'linux/btrfs_tree.h', - 'linux/fou.h', 'linux/memfd.h', 'linux/vm_sockets.h', - 'linux/can/vxcan.h', 'sys/auxv.h', 'valgrind/memcheck.h', 'valgrind/valgrind.h', @@ -898,7 +829,7 @@ libmount = dependency('mount', version : fuzzer_build ? '>= 0' : '>= 2.30') want_seccomp = get_option('seccomp') -if want_seccomp != 'false' and not fuzzer_build +if want_seccomp != 'false' and not skip_deps libseccomp = dependency('libseccomp', version : '>= 2.3.1', required : want_seccomp == 'true') @@ -910,7 +841,7 @@ endif conf.set10('HAVE_SECCOMP', have) want_selinux = get_option('selinux') -if want_selinux != 'false' and not fuzzer_build +if want_selinux != 'false' and not skip_deps libselinux = dependency('libselinux', version : '>= 2.1.9', required : want_selinux == 'true') @@ -922,7 +853,7 @@ endif conf.set10('HAVE_SELINUX', have) want_apparmor = get_option('apparmor') -if want_apparmor != 'false' and not fuzzer_build +if want_apparmor != 'false' and not skip_deps libapparmor = dependency('libapparmor', required : want_apparmor == 'true') have = libapparmor.found() @@ -940,7 +871,7 @@ endif want_polkit = get_option('polkit') install_polkit = false install_polkit_pkla = false -if want_polkit != 'false' and not fuzzer_build +if want_polkit != 'false' and not skip_deps install_polkit = true libpolkit = dependency('polkit-gobject-1', @@ -953,7 +884,7 @@ endif conf.set10('ENABLE_POLKIT', install_polkit) want_acl = get_option('acl') -if want_acl != 'false' and not fuzzer_build +if want_acl != 'false' and not skip_deps libacl = cc.find_library('acl', required : want_acl == 'true') have = libacl.found() else @@ -963,7 +894,7 @@ endif conf.set10('HAVE_ACL', have) want_audit = get_option('audit') -if want_audit != 'false' and not fuzzer_build +if want_audit != 'false' and not skip_deps libaudit = dependency('audit', required : want_audit == 'true') have = libaudit.found() else @@ -973,7 +904,7 @@ endif conf.set10('HAVE_AUDIT', have) want_blkid = get_option('blkid') -if want_blkid != 'false' and not fuzzer_build +if want_blkid != 'false' and not skip_deps libblkid = dependency('blkid', required : want_blkid == 'true') have = libblkid.found() else @@ -983,7 +914,7 @@ endif conf.set10('HAVE_BLKID', have) want_kmod = get_option('kmod') -if want_kmod != 'false' and not fuzzer_build +if want_kmod != 'false' and not skip_deps libkmod = dependency('libkmod', version : '>= 15', required : want_kmod == 'true') @@ -995,7 +926,7 @@ endif conf.set10('HAVE_KMOD', have) want_pam = get_option('pam') -if want_pam != 'false' and not fuzzer_build +if want_pam != 'false' and not skip_deps libpam = cc.find_library('pam', required : want_pam == 'true') libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true') have = libpam.found() and libpam_misc.found() @@ -1007,7 +938,7 @@ endif conf.set10('HAVE_PAM', have) want_microhttpd = get_option('microhttpd') -if want_microhttpd != 'false' and not fuzzer_build +if want_microhttpd != 'false' and not skip_deps libmicrohttpd = dependency('libmicrohttpd', version : '>= 0.9.33', required : want_microhttpd == 'true') @@ -1019,7 +950,7 @@ endif conf.set10('HAVE_MICROHTTPD', have) want_libcryptsetup = get_option('libcryptsetup') -if want_libcryptsetup != 'false' and not fuzzer_build +if want_libcryptsetup != 'false' and not skip_deps libcryptsetup = dependency('libcryptsetup', version : '>= 1.6.0', required : want_libcryptsetup == 'true') @@ -1037,7 +968,7 @@ conf.set10('HAVE_LIBCRYPTSETUP', have) conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector) want_libcurl = get_option('libcurl') -if want_libcurl != 'false' and not fuzzer_build +if want_libcurl != 'false' and not skip_deps libcurl = dependency('libcurl', version : '>= 7.32.0', required : want_libcurl == 'true') @@ -1054,7 +985,7 @@ if want_libidn == 'true' and want_libidn2 == 'true' error('libidn and libidn2 cannot be requested simultaneously') endif -if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build +if want_libidn != 'false' and want_libidn2 != 'true' and not skip_deps libidn = dependency('libidn', required : want_libidn == 'true') have = libidn.found() @@ -1063,7 +994,7 @@ else libidn = [] endif conf.set10('HAVE_LIBIDN', have) -if not have and want_libidn2 != 'false' and not fuzzer_build +if not have and want_libidn2 != 'false' and not skip_deps # libidn is used for both libidn and libidn2 objects libidn = dependency('libidn2', required : want_libidn2 == 'true') @@ -1074,7 +1005,7 @@ endif conf.set10('HAVE_LIBIDN2', have) want_libiptc = get_option('libiptc') -if want_libiptc != 'false' and not fuzzer_build +if want_libiptc != 'false' and not skip_deps libiptc = dependency('libiptc', required : want_libiptc == 'true') have = libiptc.found() @@ -1085,7 +1016,7 @@ endif conf.set10('HAVE_LIBIPTC', have) want_qrencode = get_option('qrencode') -if want_qrencode != 'false' and not fuzzer_build +if want_qrencode != 'false' and not skip_deps libqrencode = dependency('libqrencode', required : want_qrencode == 'true') have = libqrencode.found() @@ -1096,7 +1027,7 @@ endif conf.set10('HAVE_QRENCODE', have) want_gcrypt = get_option('gcrypt') -if want_gcrypt != 'false' and not fuzzer_build +if want_gcrypt != 'false' and not skip_deps libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true') libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true') have = libgcrypt.found() and libgpg_error.found() @@ -1111,7 +1042,7 @@ endif conf.set10('HAVE_GCRYPT', have) want_gnutls = get_option('gnutls') -if want_gnutls != 'false' and not fuzzer_build +if want_gnutls != 'false' and not skip_deps libgnutls = dependency('gnutls', version : '>= 3.1.4', required : want_gnutls == 'true') @@ -1123,7 +1054,7 @@ endif conf.set10('HAVE_GNUTLS', have) want_openssl = get_option('openssl') -if want_openssl != 'false' and not fuzzer_build +if want_openssl != 'false' and not skip_deps libopenssl = dependency('openssl', version : '>= 1.1.0', required : want_openssl == 'true') @@ -1135,7 +1066,7 @@ endif conf.set10('HAVE_OPENSSL', have) want_elfutils = get_option('elfutils') -if want_elfutils != 'false' and not fuzzer_build +if want_elfutils != 'false' and not skip_deps libdw = dependency('libdw', required : want_elfutils == 'true') have = libdw.found() @@ -1146,7 +1077,7 @@ endif conf.set10('HAVE_ELFUTILS', have) want_zlib = get_option('zlib') -if want_zlib != 'false' and not fuzzer_build +if want_zlib != 'false' and not skip_deps libz = dependency('zlib', required : want_zlib == 'true') have = libz.found() @@ -1157,7 +1088,7 @@ endif conf.set10('HAVE_ZLIB', have) want_bzip2 = get_option('bzip2') -if want_bzip2 != 'false' and not fuzzer_build +if want_bzip2 != 'false' and not skip_deps libbzip2 = cc.find_library('bz2', required : want_bzip2 == 'true') have = libbzip2.found() @@ -1168,7 +1099,7 @@ endif conf.set10('HAVE_BZIP2', have) want_xz = get_option('xz') -if want_xz != 'false' and not fuzzer_build +if want_xz != 'false' and not skip_deps libxz = dependency('liblzma', required : want_xz == 'true') have = libxz.found() @@ -1179,7 +1110,7 @@ endif conf.set10('HAVE_XZ', have) want_lz4 = get_option('lz4') -if want_lz4 != 'false' and not fuzzer_build +if want_lz4 != 'false' and not skip_deps liblz4 = dependency('liblz4', version : '>= 1.3.0', required : want_lz4 == 'true') @@ -1191,7 +1122,7 @@ endif conf.set10('HAVE_LZ4', have) want_xkbcommon = get_option('xkbcommon') -if want_xkbcommon != 'false' and not fuzzer_build +if want_xkbcommon != 'false' and not skip_deps libxkbcommon = dependency('xkbcommon', version : '>= 0.3.0', required : want_xkbcommon == 'true') @@ -1214,7 +1145,7 @@ endif conf.set10('HAVE_PCRE2', have) want_glib = get_option('glib') -if want_glib != 'false' and not fuzzer_build +if want_glib != 'false' and not skip_deps libglib = dependency('glib-2.0', version : '>= 2.22.0', required : want_glib == 'true') @@ -1233,7 +1164,7 @@ endif conf.set10('HAVE_GLIB', have) want_dbus = get_option('dbus') -if want_dbus != 'false' and not fuzzer_build +if want_dbus != 'false' and not skip_deps libdbus = dependency('dbus-1', version : '>= 1.3.2', required : want_dbus == 'true') @@ -1245,7 +1176,7 @@ endif conf.set10('HAVE_DBUS', have) default_dnssec = get_option('default-dnssec') -if fuzzer_build +if skip_deps default_dnssec = 'no' endif if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0 @@ -1286,7 +1217,7 @@ conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls) conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl) default_dns_over_tls = get_option('default-dns-over-tls') -if fuzzer_build +if skip_deps default_dns_over_tls = 'no' endif if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0 @@ -1317,7 +1248,7 @@ if want_remote != 'false' conf.get('HAVE_LIBCURL') == 1] # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so # it's possible to build one without the other. Complain only if - # support was explictly requested. The auxiliary files like sysusers + # support was explicitly requested. The auxiliary files like sysusers # config should be installed when any of the programs are built. if want_remote == 'true' and not (have_deps[0] and have_deps[1]) error('remote support was requested, but dependencies are not available') @@ -1596,8 +1527,7 @@ foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'], # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned link_args : ['-Wl,-z,nodelete', '-shared', - '-Wl,--version-script=' + version_script_arg, - '-Wl,--undefined'], + '-Wl,--version-script=' + version_script_arg], link_with : [libsystemd_static, libbasic], dependencies : [threads, @@ -1950,7 +1880,10 @@ else libbasic_gcrypt] endif -exe = executable('systemctl', 'src/systemctl/systemctl.c', +exe = executable('systemctl', + 'src/systemctl/systemctl.c', + 'src/systemctl/sysv-compat.h', + 'src/systemctl/sysv-compat.c', include_directories : includes, link_with : systemctl_link_with, dependencies : [threads, @@ -2551,6 +2484,7 @@ exe = executable('systemd-mount', 'src/mount/mount-tool.c', include_directories : includes, link_with : [libshared], + dependencies: [libmount], install_rpath : rootlibexecdir, install : true) public_programs += exe @@ -2732,7 +2666,8 @@ exe = executable('systemd-nspawn', link_with : [libcore_shared, libnspawn_core, libshared], - dependencies : [libblkid], + dependencies : [libblkid, + libseccomp], install_rpath : rootlibexecdir, install : true) public_programs += exe @@ -2896,13 +2831,24 @@ foreach tuple : fuzzers dependencies = tuple[2] defs = tuple.length() >= 4 ? tuple[3] : [] incs = tuple.length() >= 5 ? tuple[4] : includes + link_args = [] - if fuzzer_build + if want_ossfuzz or want_fuzzbuzz dependencies += fuzzing_engine + elif want_libfuzzer + if fuzzing_engine.found() + dependencies += fuzzing_engine + else + link_args += ['-fsanitize=fuzzer'] + endif else sources += 'src/fuzz/fuzz-main.c' endif + if want_fuzzbuzz + sources += 'src/fuzz/fuzzer-entry-point.c' + endif + name = sources[0].split('/')[-1].split('.')[0] fuzzer_exes += executable( @@ -2912,6 +2858,7 @@ foreach tuple : fuzzers link_with : link_with, dependencies : dependencies, c_args : defs, + link_args: link_args, install : false) endforeach endif @@ -2979,6 +2926,16 @@ endforeach ############################################################ +check_directives_sh = find_program('tools/check-directives.sh') + +if want_tests != 'false' + test('check-directives', + check_directives_sh, + args : project_source_root) +endif + +############################################################ + # Enable tests for all supported sanitizers foreach tuple : sanitizers sanitizer = tuple[0] @@ -3099,7 +3056,6 @@ status = [ 'bash completions directory: @0@'.format(bashcompletiondir), 'zsh completions directory: @0@'.format(zshcompletiondir), 'extra start script: @0@'.format(get_option('rc-local')), - 'extra stop script: @0@'.format(get_option('halt-local')), 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'), get_option('debug-tty')), 'TTY GID: @0@'.format(tty_gid),