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()) 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) 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 = basic_sources_plain + [missing_h] + generated_gperf_headers libbasic = static_library( 'basic', basic_sources, include_directories : includes, dependencies : [threads, libcap, libblkid, libselinux, ], install : false)