# SPDX-License-Identifier: LGPL-2.1-or-later shared_sources = files( 'acl-util.h', 'acpi-fpdt.c', 'acpi-fpdt.h', 'apparmor-util.c', 'apparmor-util.h', 'ask-password-api.c', 'ask-password-api.h', 'barrier.c', 'barrier.h', 'base-filesystem.c', 'base-filesystem.h', 'binfmt-util.c', 'binfmt-util.h', 'bitmap.c', 'bitmap.h', 'blkid-util.h', 'blockdev-util.c', 'blockdev-util.h', 'bond-util.c', 'bond-util.h', 'boot-timestamps.c', 'boot-timestamps.h', 'bootspec.c', 'bootspec.h', 'bpf-dlopen.c', 'bpf-dlopen.h', 'bpf-program.c', 'bpf-program.h', 'bridge-util.c', 'bridge-util.h', 'btrfs-util.c', 'btrfs-util.h', 'bus-get-properties.c', 'bus-get-properties.h', 'bus-locator.c', 'bus-locator.h', 'bus-log-control-api.c', 'bus-log-control-api.h', 'bus-map-properties.c', 'bus-map-properties.h', 'bus-message-util.c', 'bus-message-util.h', 'bus-object.c', 'bus-object.h', 'bus-polkit.c', 'bus-polkit.h', 'bus-print-properties.c', 'bus-print-properties.h', 'bus-unit-procs.c', 'bus-unit-procs.h', 'bus-unit-util.c', 'bus-unit-util.h', 'bus-util.c', 'bus-util.h', 'bus-wait-for-jobs.c', 'bus-wait-for-jobs.h', 'bus-wait-for-units.c', 'bus-wait-for-units.h', 'calendarspec.c', 'calendarspec.h', 'cgroup-setup.c', 'cgroup-setup.h', 'cgroup-show.c', 'cgroup-show.h', 'chown-recursive.c', 'chown-recursive.h', 'clean-ipc.c', 'clean-ipc.h', 'clock-util.c', 'clock-util.h', 'condition.c', 'condition.h', 'conf-parser.c', 'conf-parser.h', 'copy.c', 'copy.h', 'coredump-util.c', 'coredump-util.h', 'cpu-set-util.c', 'cpu-set-util.h', 'creds-util.c', 'creds-util.h', 'cryptsetup-util.c', 'cryptsetup-util.h', 'daemon-util.h', 'data-fd-util.c', 'data-fd-util.h', 'dev-setup.c', 'dev-setup.h', 'device-nodes.c', 'device-nodes.h', 'devnode-acl.h', 'discover-image.c', 'discover-image.h', 'dissect-image.c', 'dissect-image.h', 'dlfcn-util.c', 'dlfcn-util.h', 'dm-util.c', 'dm-util.h', 'dns-domain.c', 'dns-domain.h', 'dropin.c', 'dropin.h', 'efi-api.c', 'efi-api.h', 'efi-loader.c', 'efi-loader.h', 'elf-util.c', 'elf-util.h', 'enable-mempool.c', 'env-file-label.c', 'env-file-label.h', 'ethtool-util.c', 'ethtool-util.h', 'exec-util.c', 'exec-util.h', 'exit-status.c', 'exit-status.h', 'extension-release.c', 'extension-release.h', 'fdisk-util.h', 'fdset.c', 'fdset.h', 'fileio-label.c', 'fileio-label.h', 'find-esp.c', 'find-esp.h', 'firewall-util-nft.c', 'firewall-util-private.h', 'firewall-util.c', 'firewall-util.h', 'format-table.c', 'format-table.h', 'fsck-util.h', 'fstab-util.c', 'fstab-util.h', 'generator.c', 'generator.h', 'geneve-util.c', 'geneve-util.h', 'gpt.c', 'gpt.h', 'group-record.c', 'group-record.h', 'hostname-setup.c', 'hostname-setup.h', 'hwdb-util.c', 'hwdb-util.h', 'id128-print.c', 'id128-print.h', 'idn-util.c', 'idn-util.h', 'ima-util.c', 'ima-util.h', 'import-util.c', 'import-util.h', 'in-addr-prefix-util.c', 'in-addr-prefix-util.h', 'initreq.h', 'install-file.c', 'install-file.h', 'install-printf.c', 'install-printf.h', 'install.c', 'install.h', 'ip-protocol-list.c', 'ip-protocol-list.h', 'ipvlan-util.c', 'ipvlan-util.h', 'journal-importer.c', 'journal-importer.h', 'journal-util.c', 'journal-util.h', 'json-internal.h', 'json.c', 'json.h', 'kbd-util.c', 'kbd-util.h', 'keyring-util.c', 'keyring-util.h', 'killall.c', 'killall.h', 'label.c', 'label.h', 'libcrypt-util.c', 'libcrypt-util.h', 'libfido2-util.c', 'libfido2-util.h', 'libmount-util.h', 'linux/auto_dev-ioctl.h', 'linux/bpf.h', 'linux/bpf_common.h', 'linux/bpf_insn.h', 'linux/dm-ioctl.h', 'linux/ethtool.h', 'local-addresses.c', 'local-addresses.h', 'lockfile-util.c', 'lockfile-util.h', 'log-link.h', 'logs-show.c', 'logs-show.h', 'loop-util.c', 'loop-util.h', 'loopback-setup.c', 'loopback-setup.h', 'machine-id-setup.c', 'machine-id-setup.h', 'machine-pool.c', 'machine-pool.h', 'macvlan-util.c', 'macvlan-util.h', 'main-func.h', 'mkdir-label.c', 'mkdir-label.h', 'mkfs-util.c', 'mkfs-util.h', 'module-util.h', 'mount-setup.c', 'mount-setup.h', 'mount-util.c', 'mount-util.h', 'net-condition.c', 'net-condition.h', 'netif-naming-scheme.c', 'netif-naming-scheme.h', 'netif-sriov.c', 'netif-sriov.h', 'netif-util.c', 'netif-util.h', 'nscd-flush.h', 'nsflags.c', 'nsflags.h', 'numa-util.c', 'numa-util.h', 'openssl-util.c', 'openssl-util.h', 'output-mode.c', 'output-mode.h', 'pager.c', 'pager.h', 'parse-argument.c', 'parse-argument.h', 'parse-socket-bind-item.c', 'parse-socket-bind-item.h', 'pcre2-dlopen.c', 'pcre2-dlopen.h', 'pe-header.h', 'pkcs11-util.c', 'pkcs11-util.h', 'pretty-print.c', 'pretty-print.h', 'psi-util.c', 'psi-util.h', 'ptyfwd.c', 'ptyfwd.h', 'pwquality-util.c', 'pwquality-util.h', 'qrcode-util.c', 'qrcode-util.h', 'quota-util.c', 'quota-util.h', 'reboot-util.c', 'reboot-util.h', 'resize-fs.c', 'resize-fs.h', 'resolve-util.c', 'resolve-util.h', 'rm-rf.c', 'rm-rf.h', 'seccomp-util.h', 'securebits-util.c', 'securebits-util.h', 'selinux-util.c', 'selinux-util.h', 'serialize.c', 'serialize.h', 'service-util.c', 'service-util.h', 'sleep-config.c', 'sleep-config.h', 'smack-util.c', 'smack-util.h', 'socket-label.c', 'socket-netlink.c', 'socket-netlink.h', 'spawn-ask-password-agent.c', 'spawn-ask-password-agent.h', 'spawn-polkit-agent.c', 'spawn-polkit-agent.h', 'specifier.c', 'specifier.h', 'switch-root.c', 'switch-root.h', 'tmpfile-util-label.c', 'tmpfile-util-label.h', 'tomoyo-util.c', 'tomoyo-util.h', 'tpm2-util.c', 'tpm2-util.h', 'udev-util.c', 'udev-util.h', 'uid-alloc-range.c', 'uid-alloc-range.h', 'uid-range.c', 'uid-range.h', 'user-record-nss.c', 'user-record-nss.h', 'user-record-show.c', 'user-record-show.h', 'user-record.c', 'user-record.h', 'userdb-dropin.c', 'userdb-dropin.h', 'userdb.c', 'userdb.h', 'utmp-wtmp.h', 'varlink.c', 'varlink.h', 'verb-log-control.c', 'verb-log-control.h', 'verbs.c', 'verbs.h', 'vlan-util.c', 'vlan-util.h', 'volatile-util.c', 'volatile-util.h', 'watchdog.c', 'watchdog.h', 'web-util.c', 'web-util.h', 'wifi-util.c', 'wifi-util.h', 'xml.c', 'xml.h', ) if get_option('tests') != 'false' shared_sources += files( 'test-tables.h', 'tests.c', 'tests.h', ) endif generate_syscall_list = find_program('generate-syscall-list.py') fname = 'syscall-list.h' syscall_list_h = custom_target( fname, input : syscall_list_txt, output : fname, command : [generate_syscall_list, '@INPUT@'], capture : true) if conf.get('HAVE_ACL') == 1 shared_sources += files( 'acl-util.c', 'devnode-acl.c', ) endif if conf.get('ENABLE_UTMP') == 1 shared_sources += files('utmp-wtmp.c') endif if conf.get('HAVE_SECCOMP') == 1 shared_sources += files('seccomp-util.c') shared_sources += syscall_list_h endif if conf.get('HAVE_LIBIPTC') == 1 shared_sources += files('firewall-util-iptables.c') endif if conf.get('HAVE_LIBBPF') == 1 shared_sources += files( 'bpf-link.c', 'bpf-link.h', ) endif if conf.get('HAVE_KMOD') == 1 shared_sources += files('module-util.c') endif if conf.get('HAVE_PAM') == 1 shared_sources += files( 'pam-util.c', 'pam-util.h', ) endif if conf.get('ENABLE_NSCD') == 1 shared_sources += files('nscd-flush.c') endif generate_ip_protocol_list = find_program('generate-ip-protocol-list.sh') ip_protocol_list_txt = custom_target( 'ip-protocol-list.txt', output : 'ip-protocol-list.txt', command : [generate_ip_protocol_list, cpp], capture : true) fname = 'ip-protocol-from-name.gperf' gperf_file = custom_target( fname, input : ip_protocol_list_txt, output : fname, command : [generate_gperfs, 'ip_protocol', 'IPPROTO_', '@INPUT@'], capture : true) fname = 'ip-protocol-from-name.h' target1 = custom_target( fname, input : gperf_file, output : fname, command : [gperf, '-L', 'ANSI-C', '-t', '--ignore-case', '-N', 'lookup_ip_protocol', '-H', 'hash_ip_protocol_name', '-p', '-C', '@INPUT@'], capture : true) fname = 'ip-protocol-to-name.h' awkscript = 'ip-protocol-to-name.awk' target2 = custom_target( fname, input : [awkscript, ip_protocol_list_txt], output : fname, command : [awk, '-f', '@INPUT0@', '@INPUT1@'], capture : true) shared_generated_gperf_headers = [target1, target2] shared_sources += shared_generated_gperf_headers libshared_name = 'systemd-shared-@0@'.format(shared_lib_tag) libshared_deps = [threads, libacl, libblkid, libcap, libcrypt, libdl, libgcrypt, libiptc, libkmod, liblz4, libmount, libopenssl, libp11kit, libpam, librt, libseccomp, libselinux, libzstd, libxz] libshared_sym_path = '@0@/libshared.sym'.format(meson.current_source_dir()) libshared_static = static_library( libshared_name, shared_sources, include_directories : includes, dependencies : libshared_deps, c_args : ['-fvisibility=default'], build_by_default : false) libshared = shared_library( libshared_name, include_directories : includes, c_args : ['-fvisibility=default'], link_args : ['-shared', '-Wl,--version-script=' + libshared_sym_path], link_whole : [libshared_static, libbasic, libbasic_gcrypt, libsystemd_static], dependencies : libshared_deps, install : true, install_dir : rootlibexecdir)