summaryrefslogtreecommitdiffstats
path: root/src/basic/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'src/basic/meson.build')
-rw-r--r--src/basic/meson.build467
1 files changed, 467 insertions, 0 deletions
diff --git a/src/basic/meson.build b/src/basic/meson.build
new file mode 100644
index 0000000..bfe52d5
--- /dev/null
+++ b/src/basic/meson.build
@@ -0,0 +1,467 @@
+# 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',
+ 'devnum-util.c',
+ 'devnum-util.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',
+ 'math-util.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',
+ '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',
+ 'uid-range.c',
+ 'uid-range.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',
+ 'parisc',
+ '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, files('filesystems-gperf.gperf')] + filesystem_includes, check: false)
+if r.returncode() != 0
+ error('Unknown filesystems defined in kernel headers:\n\n' + 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)
+
+############################################################
+
+basic_compress_sources = files(
+ 'compress.c',
+ 'compress.h')
+
+# A convenience library that is separate from libbasic to avoid unnecessary
+# linking to the compression libraries.
+libbasic_compress = static_library(
+ 'basic-compress',
+ basic_compress_sources,
+ include_directories : basic_includes,
+ dependencies : [libxz,
+ libzstd,
+ liblz4],
+ c_args : ['-fvisibility=default'],
+ build_by_default : false)