blob: c71599db7b6702b57ab8817dec3ccf00600eb050 [file] [log] [blame] [raw]
# SPDX-License-Identifier: LGPL-2.1+
#
# Copyright 2017 Zbigniew Jędrzejewski-Szmek
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# systemd is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
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
barrier.c
barrier.h
bitmap.c
bitmap.h
blkid-util.h
blockdev-util.c
blockdev-util.h
bpf-program.c
bpf-program.h
btrfs-ctree.h
btrfs-util.c
btrfs-util.h
build.h
bus-label.c
bus-label.h
calendarspec.c
calendarspec.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
clock-util.c
clock-util.h
conf-files.c
conf-files.h
copy.c
copy.h
cpu-set-util.c
cpu-set-util.h
crypt-util.c
crypt-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-label.c
fileio-label.h
fileio.c
fileio.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
io-util.c
io-util.h
ioprio.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-label.c
mkdir.c
mkdir.h
module-util.h
mount-util.c
mount-util.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
procfs-util.c
procfs-util.h
random-util.c
random-util.h
ratelimit.c
ratelimit.h
raw-clone.h
raw-reboot.h
reboot-util.c
reboot-util.h
refcnt.h
replace-var.c
replace-var.h
rlimit-util.c
rlimit-util.h
rm-rf.c
rm-rf.h
securebits-util.c
securebits-util.h
securebits.h
selinux-util.c
selinux-util.h
set.c
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-protocol-list.c
socket-protocol-list.h
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-def.c
unit-def.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())
missing_h = files('missing.h')
generate_gperfs = find_program('generate-gperfs.py')
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)
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)
generate_socket_protocol_list = find_program('generate-socket-protocol-list.sh')
socket_protocol_list_txt = custom_target(
'socket-protocol-list.txt',
output : 'socket-protocol-list.txt',
command : [generate_socket_protocol_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', ''],
['socket-protocol', socket_protocol_list_txt, 'socket_protocol', 'IPPROTO_']]
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 += [missing_h] + generated_gperf_headers
libbasic = static_library(
'basic',
basic_sources,
include_directories : includes,
dependencies : [threads,
libcap,
libblkid,
libmount,
libselinux],
c_args : ['-fvisibility=default'],
install : false)
# A convenience library that is separate from libbasic to avoid
# unnecessary linking to libgcrypt.
libbasic_gcrypt = static_library(
'basic-gcrypt',
'gcrypt-util.c',
'gcrypt-util.h',
include_directories : includes,
dependencies : [libgcrypt],
c_args : ['-fvisibility=default'])