# 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
        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-loader.c
        efi-loader.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
        fdset.c
        fdset.h
        fileio-label.c
        fileio-label.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
        initreq.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
        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
        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
        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
        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-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
        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
'''.split())

if get_option('tests') != 'false'
        shared_sources += files('''
                test-tables.h
                tests.c
                tests.h
        '''.split())
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
        '''.split())
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
        '''.split())
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(meson.project_version())

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'])

libshared = shared_library(
        libshared_name,
        include_directories : includes,
        link_args : ['-shared',
                     '-Wl,--version-script=' + libshared_sym_path],
        link_whole : [libshared_static,
                      libbasic,
                      libbasic_gcrypt,
                      libsystemd_static],
        c_args : ['-fvisibility=default'],
        dependencies : libshared_deps,
        install : true,
        install_dir : rootlibexecdir)
