| # 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-util.c', |
| 'arphrd-util.h', |
| 'async.c', |
| 'async.h', |
| 'audit-util.c', |
| 'audit-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', |
| 'chase-symlinks.c', |
| 'chase-symlinks.h', |
| 'chattr-util.c', |
| 'chattr-util.h', |
| 'conf-files.c', |
| 'conf-files.h', |
| 'def.h', |
| 'dirent-util.c', |
| 'dirent-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', |
| 'filesystems.c', |
| 'filesystems.h', |
| 'format-util.c', |
| 'format-util.h', |
| 'fs-util.c', |
| 'fs-util.h', |
| 'glob-util.c', |
| 'glob-util.h', |
| 'glyph-util.c', |
| 'glyph-util.h', |
| 'gunicode.c', |
| 'gunicode.h', |
| 'hash-funcs.c', |
| 'hash-funcs.h', |
| 'hashmap.c', |
| 'hashmap.h', |
| 'hexdecoct.c', |
| 'hexdecoct.h', |
| 'hmac.c', |
| 'hmac.h', |
| 'hostname-util.c', |
| 'hostname-util.h', |
| 'in-addr-util.c', |
| 'in-addr-util.h', |
| 'inotify-util.c', |
| 'inotify-util.h', |
| 'io-util.c', |
| 'io-util.h', |
| 'ioprio-util.c', |
| 'ioprio-util.h', |
| 'limits-util.c', |
| 'limits-util.h', |
| 'linux/btrfs.h', |
| 'linux/btrfs_tree.h', |
| 'linux/can/netlink.h', |
| 'linux/can/vxcan.h', |
| 'linux/cfm_bridge.h', |
| 'linux/fib_rules.h', |
| 'linux/fou.h', |
| 'linux/genetlink.h', |
| 'linux/hdlc/ioctl.h', |
| 'linux/if.h', |
| 'linux/if_addr.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/mrp_bridge.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_ioprio.h', |
| 'missing_keyctl.h', |
| 'missing_magic.h', |
| 'missing_mman.h', |
| 'missing_mount.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.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', |
| 'random-util.c', |
| 'random-util.h', |
| 'ratelimit.c', |
| 'ratelimit.h', |
| 'raw-clone.h', |
| 'raw-reboot.h', |
| 'recovery-key.c', |
| 'recovery-key.h', |
| 'recurse-dir.c', |
| 'recurse-dir.h', |
| 'replace-var.c', |
| 'replace-var.h', |
| 'rlimit-util.c', |
| 'rlimit-util.h', |
| 'set.h', |
| 'sigbus.c', |
| 'sigbus.h', |
| 'signal-util.c', |
| 'signal-util.h', |
| 'siphash24.c', |
| 'siphash24.h', |
| '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', |
| 'sync-util.c', |
| 'sync-util.h', |
| 'sysctl-util.c', |
| 'sysctl-util.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') |
| |
| 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', |
| 'loongarch64', |
| 'm68k', |
| 'mips64', |
| 'mips64n32', |
| 'mipso32', |
| 'powerpc', |
| 'powerpc64', |
| 'riscv32', |
| 'riscv64', |
| '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]) |
| |
| ############################################################ |
| |
| filesystem_includes = ['linux/magic.h', |
| 'linux/gfs2_ondisk.h'] |
| |
| check_filesystems = find_program('check-filesystems.sh') |
| r = run_command([check_filesystems, cpp, 'filesystems-gperf.gperf'] + filesystem_includes, check: false) |
| if r.returncode() != 0 |
| error('found unknown filesystem(s) defined in kernel headers:\n\n' + r.stdout()) |
| r.stdout() |
| endif |
| |
| filesystems_gperf_h = custom_target( |
| 'filesystems-gperf.h', |
| input : 'filesystems-gperf.gperf', |
| output : 'filesystems-gperf.h', |
| command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) |
| |
| generate_filesystem_list = find_program('generate-filesystem-list.py') |
| fname = 'filesystem-list.h' |
| filesystem_list_h = custom_target( |
| fname, |
| input : 'filesystems-gperf.gperf', |
| output : fname, |
| command : [generate_filesystem_list, |
| '@INPUT@'], |
| capture : true) |
| |
| generate_filesystem_switch_case_h = find_program('generate-filesystem-switch-case.py') |
| fname = 'filesystem-switch-case.h' |
| filesystem_switch_case_h = custom_target( |
| fname, |
| input : 'filesystems-gperf.gperf', |
| output : 'filesystem-switch-case.h', |
| command : [generate_filesystem_switch_case_h, |
| '@INPUT@'], |
| capture : true) |
| |
| basic_sources += [filesystem_list_h, filesystem_switch_case_h, filesystems_gperf_h] |
| |
| libbasic = static_library( |
| 'basic', |
| basic_sources, |
| fundamental_sources, |
| include_directories : basic_includes, |
| dependencies : [versiondep, |
| threads, |
| libcap, |
| libm], |
| c_args : ['-fvisibility=default'], |
| build_by_default : 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'], |
| build_by_default : false) |