blob: 92a4df20177608f16d2775c60153448aab005a9a [file] [log] [blame] [raw]
# 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)