summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
Diffstat (limited to 'src/basic')
l---------src/basic/Makefile1
-rw-r--r--src/basic/errno-to-name.awk9
-rwxr-xr-xsrc/basic/generate-errno-list.sh4
-rwxr-xr-xsrc/basic/generate-gperfs.py16
-rw-r--r--src/basic/meson.build424
5 files changed, 453 insertions, 1 deletions
diff --git a/src/basic/Makefile b/src/basic/Makefile
deleted file mode 120000
index d0b0e8e00..000000000
--- a/src/basic/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../Makefile \ No newline at end of file
diff --git a/src/basic/errno-to-name.awk b/src/basic/errno-to-name.awk
new file mode 100644
index 000000000..0878abacb
--- /dev/null
+++ b/src/basic/errno-to-name.awk
@@ -0,0 +1,9 @@
+BEGIN{
+ print "static const char* const errno_names[] = { "
+}
+!/EDEADLOCK/ && !/EWOULDBLOCK/ && !/ENOTSUP/ {
+ printf " [%s] = \"%s\",\n", $1, $1
+}
+END{
+ print "};"
+}
diff --git a/src/basic/generate-errno-list.sh b/src/basic/generate-errno-list.sh
new file mode 100755
index 000000000..e2bab8b32
--- /dev/null
+++ b/src/basic/generate-errno-list.sh
@@ -0,0 +1,4 @@
+#!/bin/sh -eu
+
+$1 -dM -include errno.h - </dev/null | \
+ awk '/^#define[ \t]+E[^ _]+[ \t]+/ { print $2; }'
diff --git a/src/basic/generate-gperfs.py b/src/basic/generate-gperfs.py
new file mode 100755
index 000000000..d4cc9aa45
--- /dev/null
+++ b/src/basic/generate-gperfs.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+
+"""Generate %-from-name.gperf from %-list.txt
+"""
+
+import sys
+
+name, prefix, input = sys.argv[1:]
+
+print("""\
+struct {}_name {{ const char* name; int id; }};
+%null-strings
+%%""".format(name))
+
+for line in open(input):
+ print("{0}, {1}{0}".format(line.rstrip(), prefix))
diff --git a/src/basic/meson.build b/src/basic/meson.build
new file mode 100644
index 000000000..4ba97edd1
--- /dev/null
+++ b/src/basic/meson.build
@@ -0,0 +1,424 @@
+#if 0 /// elogind has a shorter list
+# basic_sources_plain = files('''
+# 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
+# barrier.c
+# barrier.h
+# bitmap.c
+# bitmap.h
+# blkid-util.h
+# btrfs-ctree.h
+# btrfs-util.c
+# btrfs-util.h
+# build.h
+# bus-label.c
+# bus-label.h
+# calendarspec.c
+# calendarspec.h
+# capability-util.c
+# capability-util.h
+# cap-list.c
+# cap-list.h
+# cgroup-util.c
+# cgroup-util.h
+# chattr-util.c
+# chattr-util.h
+# clock-util.c
+# clock-util.h
+# conf-files.c
+# conf-files.h
+# copy.c
+# copy.h
+# cpu-set-util.c
+# cpu-set-util.h
+# def.h
+# device-nodes.c
+# device-nodes.h
+# dirent-util.c
+# dirent-util.h
+# env-util.c
+# env-util.h
+# errno-list.c
+# errno-list.h
+# escape.c
+# escape.h
+# ether-addr-util.c
+# ether-addr-util.h
+# exec-util.c
+# exec-util.h
+# exit-status.c
+# exit-status.h
+# extract-word.c
+# extract-word.h
+# fd-util.c
+# fd-util.h
+# fileio.c
+# fileio.h
+# fileio-label.c
+# fileio-label.h
+# 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
+# ioprio.h
+# io-util.c
+# io-util.h
+# journal-importer.c
+# journal-importer.h
+# khash.c
+# khash.h
+# label.c
+# label.h
+# list.h
+# locale-util.c
+# locale-util.h
+# lockfile-util.c
+# lockfile-util.h
+# log.c
+# log.h
+# login-util.c
+# login-util.h
+# macro.h
+# memfd-util.c
+# memfd-util.h
+# mempool.c
+# mempool.h
+# missing_syscall.h
+# mkdir.c
+# mkdir.h
+# mkdir-label.c
+# mount-util.c
+# mount-util.h
+# MurmurHash2.c
+# MurmurHash2.h
+# nss-util.h
+# ordered-set.c
+# ordered-set.h
+# parse-util.c
+# parse-util.h
+# path-util.c
+# path-util.h
+# prioq.c
+# prioq.h
+# proc-cmdline.c
+# proc-cmdline.h
+# process-util.c
+# process-util.h
+# random-util.c
+# random-util.h
+# ratelimit.c
+# ratelimit.h
+# raw-clone.h
+# refcnt.h
+# replace-var.c
+# replace-var.h
+# rlimit-util.c
+# rlimit-util.h
+# rm-rf.c
+# rm-rf.h
+# securebits.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
+# sparse-endian.h
+# special.h
+# stat-util.c
+# stat-util.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
+# umask-util.h
+# unaligned.h
+# unit-name.c
+# unit-name.h
+# user-util.c
+# user-util.h
+# utf8.c
+# utf8.h
+# util.c
+# util.h
+# verbs.c
+# verbs.h
+# virt.c
+# virt.h
+# web-util.c
+# web-util.h
+# xattr-util.c
+# xattr-util.h
+# xml.c
+# xml.h
+# '''.split())
+#else
+basic_sources_plain = files('''
+ alloc-util.c
+ alloc-util.h
+ audit-util.c
+ audit-util.h
+ build.h
+ bus-label.c
+ bus-label.h
+ capability-util.c
+ capability-util.h
+ cgroup-util.c
+ cgroup-util.h
+ conf-files.c
+ conf-files.h
+ copy.c
+ copy.h
+ def.h
+ dirent-util.c
+ dirent-util.h
+ env-util.c
+ env-util.h
+ errno-list.c
+ errno-list.h
+ escape.c
+ escape.h
+ exec-util.c
+ exec-util.h
+ extract-word.c
+ extract-word.h
+ fd-util.c
+ fd-util.h
+ fileio.c
+ fileio.h
+ fileio-label.c
+ fileio-label.h
+ format-util.h
+ fs-util.c
+ fs-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
+ io-util.c
+ io-util.h
+ khash.c
+ khash.h
+ label.c
+ label.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
+ mempool.c
+ mempool.h
+ missing_syscall.h
+ mkdir.c
+ mkdir.h
+ mkdir-label.c
+ mount-util.c
+ mount-util.h
+ parse-printf-format.c
+ parse-printf-format.h
+ parse-util.c
+ parse-util.h
+ path-util.c
+ path-util.h
+ prioq.c
+ prioq.h
+ proc-cmdline.c
+ proc-cmdline.h
+ process-util.c
+ process-util.h
+ random-util.c
+ random-util.h
+ refcnt.h
+ rm-rf.c
+ rm-rf.h
+ selinux-util.c
+ selinux-util.h
+ set.h
+ signal-util.c
+ signal-util.h
+ siphash24.c
+ siphash24.h
+ smack-util.c
+ smack-util.h
+ socket-util.c
+ socket-util.h
+ sparse-endian.h
+ stat-util.c
+ stat-util.h
+ stdio-util.h
+ string-table.c
+ string-table.h
+ string-util.c
+ string-util.h
+ strv.c
+ strv.h
+ syslog-util.c
+ syslog-util.h
+ terminal-util.c
+ terminal-util.h
+ time-util.c
+ time-util.h
+ umask-util.h
+ unaligned.h
+ unit-name.c
+ unit-name.h
+ user-util.c
+ user-util.h
+ utf8.c
+ utf8.h
+ util.c
+ util.h
+ verbs.c
+ verbs.h
+ virt.c
+ virt.h
+ xattr-util.c
+ xattr-util.h
+'''.split())
+#endif // 0
+
+missing_h = files('missing.h')
+
+generate_gperfs = find_program('generate-gperfs.py')
+
+#if 0 /// elogind has only the errno list.
+# 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],
+# 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],
+# 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_h],
+# capture : true)
+#endif // 0
+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 = []
+#if 0 /// elogind has only the errno list.
+# foreach item : [['af', af_list_txt, 'af', ''],
+# ['arphrd', arphrd_list_txt, 'arphrd', 'ARPHRD_'],
+# ['cap', cap_list_txt, 'capability', ''],
+# ['errno', errno_list_txt, 'errno', '']]
+#else
+foreach item : [['errno', errno_list_txt, 'errno', '']]
+#endif // 0
+
+ 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 = basic_sources_plain + [missing_h] + generated_gperf_headers
+
+libbasic = static_library(
+ 'basic',
+ basic_sources,
+ include_directories : includes,
+ dependencies : [threads,
+ libcap,
+#if 0 /// no blkid in elogind
+# libblkid,
+#endif // 0
+ libselinux,
+ ],
+ install : false)