ch9344: 2.0 -> 0-unstable-2024-11-15 (#354536)
[NixPkgs.git] / pkgs / os-specific / darwin / apple-source-releases / shell_cmds / meson.build.in
blob33612f0cd1f9db16de83f0e0e6757caa1ba406b3
1 # Build settings based on the upstream Xcode project.
2 # See: https://github.com/apple-oss-distributions/shell_cmds/blob/main/shell_cmds.xcodeproj/project.pbxproj
4 # Project settings
5 project('shell_cmds', 'c', 'cpp', version : '@version@')
6 add_global_arguments('-D__FBSDID=__RCSID', language : 'c')
8 fs = import('fs')
10 # Dependencies
11 build_cc = meson.get_compiler('c', native : true)
13 host_cc = meson.get_compiler('c')
14 host_cxx = meson.get_compiler('cpp')
17 # pam = cc.find_library('pam')
18 libbsd = dependency('libbsd-overlay', required : false)
19 libedit = dependency('libedit')
20 libresolv = host_cc.find_library('resolv')
21 libsbuf = host_cc.find_library('sbuf')
22 libutil = host_cc.find_library('util')
23 libxo = dependency('libxo')
26 # Generators
27 bison = generator(
28     find_program('bison', required : true),
29     arguments : ['@INPUT@', '--header=@OUTPUT0@', '--output=@OUTPUT1@'],
30     output : [ '@BASENAME@.tab.h', '@BASENAME@.tab.c'],
34 # Binaries
36 ## These commands all are single files with a man page.
38 single_file_cmds = [
39     'basename',
40     'chroot',
41     'dirname',
42     'echo',
43     'false',
44     'getopt',
45     'hostname',
46     'jot',
47     'kill',
48     'killall',
49     'lastcomm',
50     'logname',
51     'mktemp',
52     'nice',
53     'nohup', # needs vproc_priv.h
54     'path_helper',
55     'printenv',
56     'printf',
57     'pwd',
58     'realpath',
59     'renice',
60     'script',
61     'seq',
62     'shlock',
63     'sleep',
64     'systime',
65     'tee',
66     'time',
67     'true',
68     'uname',
69     'what',
70     'whereis',
71     'which',
72     'yes',
75 foreach cmd : single_file_cmds
76     executable(
77         cmd,
78         install : true,
79         sources : [ f'@cmd@/@cmd@.c' ],
80     )
81     foreach section : [ 1, 2, 3, 4, 5, 6, 7, 8 ]
82         if fs.exists(f'@cmd@/@cmd@.@section@')
83             install_man(f'@cmd@/@cmd@.@section@')
84         endif
85     endforeach
86 endforeach
88 install_data(
89     'alias/generic.sh',
90     install_dir : get_option('bindir'),
91     install_mode : 'r-xr-xr-x',
92     rename : 'alias',
94 install_man(
95     'alias/alias.1',
96     'alias/builtin.1',
98 foreach alias : run_command('cat', 'xcodescripts/builtins.txt', check : true).stdout().strip().split('\n')
99     install_symlink(
100         alias,
101         install_dir : get_option('bindir'),
102         pointing_to : 'alias',
103     )
104 endforeach
106 executable(
107     'apply',
108     dependencies : libsbuf,
109     install : true,
110     sources : [ 'apply/apply.c' ],
112 install_man('apply/apply.1')
114 executable(
115     'date',
116     include_directories : 'date',
117     install : true,
118     sources : [
119         'date/date.c',
120         'date/vary.c',
121     ],
123 install_man('date/date.1')
125 executable(
126     'env',
127     include_directories : 'env',
128     install : true,
129     sources : [
130         'env/env.c',
131         'env/envopts.c',
132     ],
134 install_man('env/env.1')
136 executable(
137     'expr',
138     install : true,
139     sources : [
140         bison.process('expr/expr.y')
141     ],
143 install_man('expr/expr.1')
145 executable(
146     'find',
147     c_args : [ '-D_DARWIN_USE_64_BIT_INODE' ],
148     include_directories : 'find',
149     install : true,
150     sources : [
151         'find/find.c',
152         'find/function.c',
153         'find/ls.c',
154         'find/main.c',
155         'find/misc.c',
156         'find/operator.c',
157         'find/option.c',
158         bison.process('find/getdate.y'),
159     ],
161 install_man('find/find.1')
163 executable(
164     'hexdump',
165     include_directories : 'hexdump',
166     install : true,
167     sources : [
168         'hexdump/conv.c',
169         'hexdump/display.c',
170         'hexdump/hexdump.c',
171         'hexdump/hexsyntax.c',
172         'hexdump/odsyntax.c',
173         'hexdump/parse.c',
174     ],
176 install_man(
177     'hexdump/hexdump.1',
178     'hexdump/od.1',
180 install_symlink(
181     'od',
182     install_dir : get_option('bindir'),
183     pointing_to : 'hexdump',
186 executable(
187     'id',
188     c_args : [ '-DUSE_BSM_AUDIT' ],
189     include_directories : 'id',
190     install : true,
191     sources : [
192         'id/id.c',
193         # 'id/open_directory.c', # Not actually used and doesn’t compile anyway.
194     ],
196 install_man(
197     'id/groups.1',
198     'id/id.1',
199     'id/whoami.1',
201 foreach cmd : [ 'groups', 'whoami' ]
202     install_symlink(
203         cmd,
204         install_dir : get_option('bindir'),
205         pointing_to : 'id',
206     )
207 endforeach
209 executable(
210     'locate',
211     include_directories : 'locate/locate',
212     install : true,
213     sources : [
214         'locate/locate/locate.c',
215         'locate/locate/util.c',
216     ],
218 executable(
219     'locate.bigram',
220     include_directories : 'locate/locate',
221     install : true,
222     sources : [ 'locate/bigram/locate.bigram.c', ],
224 executable(
225     'locate.code',
226     include_directories : 'locate/locate',
227     install : true,
228     sources : [ 'locate/code/locate.code.c', ],
230 install_data(
231     'locate/locate/locate.rc',
232     install_dir : get_option('sysconfdir'),
234 install_data(
235     'locate/locate/concatdb.sh',
236     'locate/locate/updatedb.sh',
237     'locate/locate/mklocatedb.sh',
238     install_dir : get_option('libexecdir'),
239     install_mode : 'r-xr-xr-x',
240     rename : [
241         'locate.concatdb',
242         'locate.updatedb',
243         'locate.mklocatedb',
244     ],
246 install_man(
247     'locate/locate/locate.1',
248     'locate/locate/locate.updatedb.8',
249     'locate/bigram/locate.bigram.8',
250     'locate/code/locate.code.8',
252 foreach manpage : [ 'concatdb', 'mklocatedb' ]
253     install_symlink(
254         f'locate.@manpage@.8',
255         install_dir : get_option('mandir') + '/man8',
256         pointing_to : 'locate.updatedb.8',
257     )
258 endforeach
260 executable(
261     'lockf',
262     dependencies : [ libbsd ],
263     install : true,
264     sources : [ 'lockf/lockf.c' ],
266 install_man('lockf/lockf.1')
268 # Building `sh` requires several custom targets to generate files it needs.
270 bash_bin = find_program('bash')
271 mknodes = executable('mknodes', sources : 'sh/mknodes.c', native : true)
272 mksyntax = executable('mksyntax', sources : 'sh/mksyntax.c', native : true)
274 builtins = custom_target(
275     command : [ bash_bin, '@SOURCE_ROOT@/sh/mkbuiltins', '@SOURCE_ROOT@/sh'],
276     output : [ 'builtins.c', 'builtins.h' ],
279 nodes = custom_target(
280     command : [ mknodes, '@SOURCE_ROOT@/sh/nodetypes', '@SOURCE_ROOT@/sh/nodes.c.pat' ],
281     output : [ 'nodes.c', 'nodes.h' ],
284 syntax = custom_target(
285     command : [ mksyntax ],
286     output : [ 'syntax.c', 'syntax.h' ],
289 tokens = custom_target(
290     command : [ bash_bin, '@SOURCE_ROOT@/sh/mktokens' ],
291     output : 'token.h',
294 executable(
295     'sh',
296     c_args : [ '-DSHELL' ],
297     dependencies : [ libedit ],
298     include_directories : [ 'sh', 'sh/bltin' ],
299     install : true,
300     sources : [
301         'kill/kill.c',
302         'printf/printf.c',
303         'sh/alias.c',
304         'sh/arith_yacc.c',
305         'sh/arith_yylex.c',
306         'sh/bltin/echo.c',
307         'sh/cd.c',
308         'sh/error.c',
309         'sh/eval.c',
310         'sh/exec.c',
311         'sh/expand.c',
312         'sh/histedit.c',
313         'sh/input.c',
314         'sh/jobs.c',
315         'sh/mail.c',
316         'sh/main.c',
317         'sh/memalloc.c',
318         'sh/miscbltin.c',
319         'sh/mystring.c',
320         'sh/options.c',
321         'sh/output.c',
322         'sh/parser.c',
323         'sh/redir.c',
324         'sh/show.c',
325         'sh/trap.c',
326         'sh/var.c',
327         'test/test.c',
328         builtins,
329         nodes,
330         syntax,
331         tokens,
332     ],
334 install_man('sh/sh.1')
336 # Requires entitlements
337 # executable(
338 #     'su',
339 #     dependencies : pam,
340 #     sources : [ 'su/su.c' ],
341 # )
342 # install_data(
343 #     'su/su.pam',
344 #     install_dir : get_option('sysconfdir') + 'pam.d',
345 #     rename : 'su'
346 # )
347 # install_man('su/su.1')
349 executable(
350     'stdbuf',
351     install : true,
352     sources : [ 'stdbuf/stdbuf.c' ],
354 install_man('stdbuf/stdbuf.1')
356 executable(
357     '[',
358     install : true,
359     sources : [ 'test/test.c' ],
361 install_man(
362     'test/[.1',
363     'test/test.1',
365 install_symlink(
366     'test',
367     install_dir : get_option('bindir'),
368     pointing_to : '[',
372 executable(
373     'users',
374     install : true,
375     sources : [ 'users/users.cc' ],
377 install_man('users/users.1')
379 executable(
380     'w',
381     c_args : [
382         '-DHAVE_KVM=0',
383         '-DHAVE_UTMPX=1',
384     ],
385     dependencies : [ libresolv, libsbuf, libutil, libxo ],
386     include_directories : 'w',
387     install : true,
388     sources : [
389         'w/fmt.c',
390         'w/pr_time.c',
391         'w/proc_compare.c',
392         'w/w.c',
393     ],
395 install_man(
396     'w/uptime.1',
397     'w/w.1',
399 install_symlink(
400     'uptime',
401     install_dir : get_option('bindir'),
402     pointing_to : 'w',
405 executable(
406     'who',
407     c_args : [
408         '-D_UTMPX_COMPAT',
409         '-DSUPPORT_UTMPX',
410     ],
411     install : true,
412     sources : [ 'who/who.c' ],
414 install_man('who/who.1')
416 executable(
417     'xargs',
418     dependencies : [ libbsd ],
419     include_directories : 'xargs',
420     install : true,
421     sources : [
422         'xargs/strnsubst.c',
423         'xargs/xargs.c',
424     ],
426 install_man('xargs/xargs.1')