# SPDX-License-Identifier: LGPL-2.1-or-later basic_sources = files(''' MurmurHash2.c MurmurHash2.h af-list.c af-list.h alloc-util.c alloc-util.h architecture.c architecture.h arphrd-list.c arphrd-list.h async.c async.h audit-util.c audit-util.h blockdev-util.c blockdev-util.h btrfs-util.c btrfs-util.h build.c build.h bus-label.c bus-label.h cap-list.c cap-list.h capability-util.c capability-util.h cgroup-util.c cgroup-util.h chattr-util.c chattr-util.h conf-files.c conf-files.h copy.c copy.h def.h device-nodes.c device-nodes.h dirent-util.c dirent-util.h dlfcn-util.c dlfcn-util.h dns-def.h efivars.c efivars.h env-file.c env-file.h env-util.c env-util.h errno-list.c errno-list.h errno-util.h escape.c escape.h ether-addr-util.c ether-addr-util.h extract-word.c extract-word.h fd-util.c fd-util.h fileio.c fileio.h format-util.c format-util.h fs-util.c fs-util.h glob-util.c glob-util.h gunicode.c gunicode.h hash-funcs.c hash-funcs.h hashmap.c hashmap.h hexdecoct.c hexdecoct.h hostname-util.c hostname-util.h in-addr-util.c in-addr-util.h io-util.c io-util.h ioprio.h kbd-util.c kbd-util.h khash.c khash.h label.c label.h limits-util.c limits-util.h linux/btrfs.h linux/btrfs_tree.h linux/can/netlink.h linux/can/vxcan.h linux/fib_rules.h linux/fou.h linux/hdlc/ioctl.h linux/if.h linux/if_addr.h linux/if_arp.h linux/if_bonding.h linux/if_bridge.h linux/if_ether.h linux/if_link.h linux/if_macsec.h linux/if_tun.h linux/if_tunnel.h linux/in.h linux/in6.h linux/ipv6_route.h linux/l2tp.h linux/libc-compat.h linux/loadavg.h linux/netdevice.h linux/netfilter/nf_tables.h linux/netfilter/nfnetlink.h linux/netlink.h linux/nexthop.h linux/nl80211.h linux/pkt_sched.h linux/rtnetlink.h linux/wireguard.h list.h locale-util.c locale-util.h log.c log.h login-util.c login-util.h macro.h memfd-util.c memfd-util.h memory-util.c memory-util.h mempool.c mempool.h missing_audit.h missing_capability.h missing_drm.h missing_fcntl.h missing_fs.h missing_input.h missing_keyctl.h missing_magic.h missing_mman.h missing_network.h missing_prctl.h missing_random.h missing_resource.h missing_sched.h missing_securebits.h missing_socket.h missing_stat.h missing_stdlib.h missing_syscall.h missing_timerfd.h missing_type.h mkdir-label.c mkdir.c mkdir.h mountpoint-util.c mountpoint-util.h namespace-util.c namespace-util.h nss-util.h nulstr-util.c nulstr-util.h ordered-set.c ordered-set.h os-util.c os-util.h parse-util.c parse-util.h path-lookup.c path-lookup.h path-util.c path-util.h percent-util.c percent-util.h prioq.c prioq.h proc-cmdline.c proc-cmdline.h process-util.c process-util.h procfs-util.c procfs-util.h pthread-util.h quota-util.c quota-util.h random-util.c random-util.h ratelimit.c ratelimit.h raw-clone.h raw-reboot.h recovery-key.c recovery-key.h replace-var.c replace-var.h rlimit-util.c rlimit-util.h rm-rf.c rm-rf.h selinux-util.c selinux-util.h set.h sigbus.c sigbus.h signal-util.c signal-util.h siphash24.c siphash24.h smack-util.c smack-util.h socket-label.c socket-util.c socket-util.h sort-util.c sort-util.h sparse-endian.h special.h stat-util.c stat-util.h static-destruct.h stdio-util.h strbuf.c strbuf.h string-table.c string-table.h string-util.c string-util.h strv.c strv.h strxcpyx.c strxcpyx.h syslog-util.c syslog-util.h terminal-util.c terminal-util.h time-util.c time-util.h tmpfile-util.c tmpfile-util.h umask-util.h unaligned.h unit-def.c unit-def.h unit-file.c unit-file.h unit-name.c unit-name.h user-util.c user-util.h utf8.c utf8.h util.c util.h virt.c virt.h xattr-util.c xattr-util.h '''.split()) missing_audit_h = files('missing_audit.h') missing_capability_h = files('missing_capability.h') missing_socket_h = files('missing_socket.h') missing_syscall_def_h = files('missing_syscall_def.h') basic_sources += missing_syscall_def_h generate_af_list = find_program('generate-af-list.sh') af_list_txt = custom_target( 'af-list.txt', output : 'af-list.txt', command : [generate_af_list, cpp, config_h, missing_socket_h], capture : true) generate_arphrd_list = find_program('generate-arphrd-list.sh') arphrd_list_txt = custom_target( 'arphrd-list.txt', output : 'arphrd-list.txt', command : [generate_arphrd_list, cpp, config_h], capture : true) generate_cap_list = find_program('generate-cap-list.sh') cap_list_txt = custom_target( 'cap-list.txt', output : 'cap-list.txt', command : [generate_cap_list, cpp, config_h, missing_capability_h], capture : true) generate_errno_list = find_program('generate-errno-list.sh') errno_list_txt = custom_target( 'errno-list.txt', output : 'errno-list.txt', command : [generate_errno_list, cpp], capture : true) generated_gperf_headers = [] foreach item : [['af', af_list_txt, 'af', ''], ['arphrd', arphrd_list_txt, 'arphrd', 'ARPHRD_'], ['cap', cap_list_txt, 'capability', ''], ['errno', errno_list_txt, 'errno', '']] fname = '@0@-from-name.gperf'.format(item[0]) gperf_file = custom_target( fname, input : item[1], output : fname, command : [generate_gperfs, item[2], item[3], '@INPUT@'], capture : true) fname = '@0@-from-name.h'.format(item[0]) target1 = custom_target( fname, input : gperf_file, output : fname, command : [gperf, '-L', 'ANSI-C', '-t', '--ignore-case', '-N', 'lookup_@0@'.format(item[2]), '-H', 'hash_@0@_name'.format(item[2]), '-p', '-C', '@INPUT@'], capture : true) fname = '@0@-to-name.h'.format(item[0]) awkscript = '@0@-to-name.awk'.format(item[0]) target2 = custom_target( fname, input : [awkscript, item[1]], output : fname, command : [awk, '-f', '@INPUT0@', '@INPUT1@'], capture : true) generated_gperf_headers += [target1, target2] endforeach basic_sources += generated_gperf_headers ############################################################ arch_list = [ 'alpha', 'arc', 'arm', 'arm64', 'i386', 'ia64', 'm68k', 'mips64', 'mips64n32', 'mipso32', 'powerpc', 'powerpc64', 's390', 's390x', 'sparc', 'x86_64'] run_target( 'update-syscall-tables', command : [update_syscall_tables_sh, meson.current_source_dir()] + arch_list) syscall_list_txt = files('syscall-list.txt') syscall_lists = [] foreach arch: arch_list syscall_lists += files('syscalls-@0@.txt'.format(arch)) endforeach missing_syscalls_py = find_program('missing_syscalls.py') run_target( 'update-syscall-header', command : [missing_syscalls_py, missing_syscall_def_h, syscall_lists]) ############################################################ libbasic = static_library( 'basic', basic_sources, fundamental_sources, include_directories : basic_includes, dependencies : [versiondep, threads, libcap, libseccomp, libselinux, libm, libdl], c_args : ['-fvisibility=default'], install : false) ############################################################ basic_gcrypt_sources = files( 'gcrypt-util.c', 'gcrypt-util.h') # A convenience library that is separate from libbasic to avoid # unnecessary linking to libgcrypt. libbasic_gcrypt = static_library( 'basic-gcrypt', basic_gcrypt_sources, include_directories : basic_includes, dependencies : [libgcrypt], c_args : ['-fvisibility=default'])