]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/meson.build
3685b639ae50505cc799055ceebe6c7b1c505caf
[thirdparty/systemd.git] / src / basic / meson.build
1 # SPDX-License-Identifier: LGPL-2.1-or-later
2
3 basic_sources = files('''
4 MurmurHash2.c
5 MurmurHash2.h
6 af-list.c
7 af-list.h
8 alloc-util.c
9 alloc-util.h
10 architecture.c
11 architecture.h
12 arphrd-list.c
13 arphrd-list.h
14 async.c
15 async.h
16 audit-util.c
17 audit-util.h
18 blockdev-util.c
19 blockdev-util.h
20 btrfs-util.c
21 btrfs-util.h
22 build.c
23 build.h
24 bus-label.c
25 bus-label.h
26 cap-list.c
27 cap-list.h
28 capability-util.c
29 capability-util.h
30 cgroup-util.c
31 cgroup-util.h
32 chattr-util.c
33 chattr-util.h
34 conf-files.c
35 conf-files.h
36 copy.c
37 copy.h
38 creds-util.c
39 creds-util.h
40 def.h
41 dirent-util.c
42 dirent-util.h
43 dlfcn-util.c
44 dlfcn-util.h
45 dns-def.h
46 efivars.c
47 efivars.h
48 env-file.c
49 env-file.h
50 env-util.c
51 env-util.h
52 errno-list.c
53 errno-list.h
54 errno-util.h
55 escape.c
56 escape.h
57 ether-addr-util.c
58 ether-addr-util.h
59 extract-word.c
60 extract-word.h
61 fd-util.c
62 fd-util.h
63 fileio.c
64 fileio.h
65 format-util.c
66 format-util.h
67 fs-util.c
68 fs-util.h
69 glob-util.c
70 glob-util.h
71 gunicode.c
72 gunicode.h
73 hash-funcs.c
74 hash-funcs.h
75 hashmap.c
76 hashmap.h
77 hexdecoct.c
78 hexdecoct.h
79 hostname-util.c
80 hostname-util.h
81 in-addr-util.c
82 in-addr-util.h
83 io-util.c
84 io-util.h
85 ioprio.h
86 khash.c
87 khash.h
88 label.c
89 label.h
90 limits-util.c
91 limits-util.h
92 linux/btrfs.h
93 linux/btrfs_tree.h
94 linux/can/netlink.h
95 linux/can/vxcan.h
96 linux/fib_rules.h
97 linux/fou.h
98 linux/hdlc/ioctl.h
99 linux/if.h
100 linux/if_addr.h
101 linux/if_arp.h
102 linux/if_bonding.h
103 linux/if_bridge.h
104 linux/if_ether.h
105 linux/if_link.h
106 linux/if_macsec.h
107 linux/if_tun.h
108 linux/if_tunnel.h
109 linux/in.h
110 linux/in6.h
111 linux/ipv6_route.h
112 linux/l2tp.h
113 linux/libc-compat.h
114 linux/loadavg.h
115 linux/netdevice.h
116 linux/netfilter/nf_tables.h
117 linux/netfilter/nfnetlink.h
118 linux/netlink.h
119 linux/nexthop.h
120 linux/nl80211.h
121 linux/pkt_sched.h
122 linux/rtnetlink.h
123 linux/wireguard.h
124 list.h
125 locale-util.c
126 locale-util.h
127 log.c
128 log.h
129 login-util.c
130 login-util.h
131 macro.h
132 memfd-util.c
133 memfd-util.h
134 memory-util.c
135 memory-util.h
136 mempool.c
137 mempool.h
138 missing_audit.h
139 missing_capability.h
140 missing_drm.h
141 missing_fcntl.h
142 missing_fs.h
143 missing_input.h
144 missing_keyctl.h
145 missing_magic.h
146 missing_mman.h
147 missing_mount.h
148 missing_network.h
149 missing_prctl.h
150 missing_random.h
151 missing_resource.h
152 missing_sched.h
153 missing_securebits.h
154 missing_socket.h
155 missing_stat.h
156 missing_stdlib.h
157 missing_syscall.h
158 missing_timerfd.h
159 missing_type.h
160 mkdir-label.c
161 mkdir.c
162 mkdir.h
163 mountpoint-util.c
164 mountpoint-util.h
165 namespace-util.c
166 namespace-util.h
167 nss-util.h
168 nulstr-util.c
169 nulstr-util.h
170 ordered-set.c
171 ordered-set.h
172 os-util.c
173 os-util.h
174 parse-util.c
175 parse-util.h
176 path-lookup.c
177 path-lookup.h
178 path-util.c
179 path-util.h
180 percent-util.c
181 percent-util.h
182 prioq.c
183 prioq.h
184 proc-cmdline.c
185 proc-cmdline.h
186 process-util.c
187 process-util.h
188 procfs-util.c
189 procfs-util.h
190 pthread-util.h
191 random-util.c
192 random-util.h
193 ratelimit.c
194 ratelimit.h
195 raw-clone.h
196 raw-reboot.h
197 recovery-key.c
198 recovery-key.h
199 replace-var.c
200 replace-var.h
201 rlimit-util.c
202 rlimit-util.h
203 rm-rf.c
204 rm-rf.h
205 selinux-util.c
206 selinux-util.h
207 set.h
208 sigbus.c
209 sigbus.h
210 signal-util.c
211 signal-util.h
212 siphash24.c
213 siphash24.h
214 smack-util.c
215 smack-util.h
216 socket-label.c
217 socket-util.c
218 socket-util.h
219 sort-util.c
220 sort-util.h
221 sparse-endian.h
222 special.h
223 stat-util.c
224 stat-util.h
225 static-destruct.h
226 stdio-util.h
227 strbuf.c
228 strbuf.h
229 string-table.c
230 string-table.h
231 string-util.c
232 string-util.h
233 strv.c
234 strv.h
235 strxcpyx.c
236 strxcpyx.h
237 sysctl-util.c
238 sysctl-util.h
239 syslog-util.c
240 syslog-util.h
241 terminal-util.c
242 terminal-util.h
243 time-util.c
244 time-util.h
245 tmpfile-util.c
246 tmpfile-util.h
247 umask-util.h
248 unaligned.h
249 unit-def.c
250 unit-def.h
251 unit-file.c
252 unit-file.h
253 unit-name.c
254 unit-name.h
255 user-util.c
256 user-util.h
257 utf8.c
258 utf8.h
259 util.c
260 util.h
261 virt.c
262 virt.h
263 xattr-util.c
264 xattr-util.h
265 '''.split())
266
267 missing_audit_h = files('missing_audit.h')
268 missing_capability_h = files('missing_capability.h')
269 missing_socket_h = files('missing_socket.h')
270
271 missing_syscall_def_h = files('missing_syscall_def.h')
272 basic_sources += missing_syscall_def_h
273
274 generate_af_list = find_program('generate-af-list.sh')
275 af_list_txt = custom_target(
276 'af-list.txt',
277 output : 'af-list.txt',
278 command : [generate_af_list, cpp, config_h, missing_socket_h],
279 capture : true)
280
281 generate_arphrd_list = find_program('generate-arphrd-list.sh')
282 arphrd_list_txt = custom_target(
283 'arphrd-list.txt',
284 output : 'arphrd-list.txt',
285 command : [generate_arphrd_list, cpp, config_h],
286 capture : true)
287
288 generate_cap_list = find_program('generate-cap-list.sh')
289 cap_list_txt = custom_target(
290 'cap-list.txt',
291 output : 'cap-list.txt',
292 command : [generate_cap_list, cpp, config_h, missing_capability_h],
293 capture : true)
294
295 generate_errno_list = find_program('generate-errno-list.sh')
296 errno_list_txt = custom_target(
297 'errno-list.txt',
298 output : 'errno-list.txt',
299 command : [generate_errno_list, cpp],
300 capture : true)
301
302 generated_gperf_headers = []
303 foreach item : [['af', af_list_txt, 'af', ''],
304 ['arphrd', arphrd_list_txt, 'arphrd', 'ARPHRD_'],
305 ['cap', cap_list_txt, 'capability', ''],
306 ['errno', errno_list_txt, 'errno', '']]
307
308 fname = '@0@-from-name.gperf'.format(item[0])
309 gperf_file = custom_target(
310 fname,
311 input : item[1],
312 output : fname,
313 command : [generate_gperfs, item[2], item[3], '@INPUT@'],
314 capture : true)
315
316 fname = '@0@-from-name.h'.format(item[0])
317 target1 = custom_target(
318 fname,
319 input : gperf_file,
320 output : fname,
321 command : [gperf,
322 '-L', 'ANSI-C', '-t', '--ignore-case',
323 '-N', 'lookup_@0@'.format(item[2]),
324 '-H', 'hash_@0@_name'.format(item[2]),
325 '-p', '-C',
326 '@INPUT@'],
327 capture : true)
328
329 fname = '@0@-to-name.h'.format(item[0])
330 awkscript = '@0@-to-name.awk'.format(item[0])
331 target2 = custom_target(
332 fname,
333 input : [awkscript, item[1]],
334 output : fname,
335 command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
336 capture : true)
337
338 generated_gperf_headers += [target1, target2]
339 endforeach
340
341 basic_sources += generated_gperf_headers
342
343 ############################################################
344
345 arch_list = [
346 'alpha',
347 'arc',
348 'arm',
349 'arm64',
350 'i386',
351 'ia64',
352 'm68k',
353 'mips64',
354 'mips64n32',
355 'mipso32',
356 'powerpc',
357 'powerpc64',
358 'riscv32',
359 'riscv64',
360 's390',
361 's390x',
362 'sparc',
363 'x86_64'
364 ]
365
366 run_target(
367 'update-syscall-tables',
368 command : [update_syscall_tables_sh, meson.current_source_dir()] + arch_list)
369
370 syscall_list_txt = files('syscall-list.txt')
371
372 syscall_lists = []
373 foreach arch: arch_list
374 syscall_lists += files('syscalls-@0@.txt'.format(arch))
375 endforeach
376
377 missing_syscalls_py = find_program('missing_syscalls.py')
378
379 run_target(
380 'update-syscall-header',
381 command : [missing_syscalls_py,
382 missing_syscall_def_h,
383 syscall_lists])
384
385 ############################################################
386
387 libbasic = static_library(
388 'basic',
389 basic_sources,
390 fundamental_sources,
391 include_directories : basic_includes,
392 dependencies : [versiondep,
393 threads,
394 libcap,
395 libseccomp,
396 libselinux,
397 libm,
398 libdl],
399 c_args : ['-fvisibility=default'],
400 install : false)
401
402 ############################################################
403
404 basic_gcrypt_sources = files(
405 'gcrypt-util.c',
406 'gcrypt-util.h')
407
408 # A convenience library that is separate from libbasic to avoid
409 # unnecessary linking to libgcrypt.
410 libbasic_gcrypt = static_library(
411 'basic-gcrypt',
412 basic_gcrypt_sources,
413 include_directories : basic_includes,
414 dependencies : [libgcrypt],
415 c_args : ['-fvisibility=default'])