highs: 1.8.0 -> 1.8.1 (#360451)
[NixPkgs.git] / pkgs / os-specific / darwin / apple-source-releases / file_cmds / meson.build.in
blob170f9ac242436ef7deddd053c3495a25647df6fe
1 # Build settings based on the upstream Xcode project.
2 # See: https://github.com/apple-oss-distributions/file_cmds/blob/main/file_cmds.xcodeproj/project.pbxproj
4 # Project settings
5 project('file_cmds', 'c', version : '@version@')
6 add_global_arguments(
7     '-DTARGET_OS_BRIDGE=0',
8     language : 'c',
11 # Dependencies
12 cc = meson.get_compiler('c')
14 core_foundation = dependency('appleframeworks', modules : 'CoreFoundation')
16 libbsd = dependency('libbsd-overlay', required : false)
17 bzip2 = dependency('bzip2')
18 xz = dependency('liblzma')
19 libxo = dependency('libxo')
20 zlib = dependency('zlib')
22 copyfile = cc.find_library('copyfile')
23 removefile = cc.find_library('removefile')
24 libutil = cc.find_library('util')
27 # Compatibility tests
28 utimensat_test = '''
29 #include <stdlib.h>
30 #include <fcntl.h>
31 #include <sys/stat.h>
32 int main(int argc, char* argv[]) {
33     return utimensat(AT_FDCWD, NULL, NULL, 0);
35 '''
37 rpmatch_test = '''
38 #include <stdlib.h>
39 int main(int argc, char* argv[]) {
40     return rpmatch("NO");
42 '''
44 has_utimensat = cc.compiles(utimensat_test, name : 'supports utimensat')
45 utimensat_c_args = has_utimensat ? [ ] : [ '-include', 'time_compat.h', '-I' + meson.source_root() + '/compat' ]
46 utimensat_sources = has_utimensat ? [ ] : [ 'compat/time_compat.c' ]
48 has_rpmatch = cc.compiles(rpmatch_test, name : 'supports rpmatch')
49 rpmatch_c_args = has_rpmatch ? [ ] : [ '-include', 'rpmatch_compat.h', '-I' + meson.source_root() + '/compat' ]
50 rpmatch_sources = has_rpmatch ? [ ] : [ 'compat/rpmatch_compat.c' ]
52 compat_link_args = not (has_utimensat and has_rpmatch) ? [ '-Wl,-undefined,dynamic_lookup' ] : [ ]
55 # Binaries
56 executable(
57     'chflags',
58     install : true,
59     sources: [ 'chflags/chflags.c' ],
61 install_man('chflags/chflags.1')
63 executable(
64     'chmod',
65     install : true,
66     sources: [
67         'chmod/chmod.c',
68         'chmod/chmod_acl.c',
69     ]
71 install_man('chmod/chmod.1')
73 executable(
74     'chown',
75     install : true,
76     sources: [ 'chown/chown.c' ],
78 install_man('chown/chown.8')
80 install_symlink(
81     'chgrp',
82     install_dir : get_option('bindir'),
83     pointing_to : 'chown',
85 install_man('chown/chgrp.1')
87 executable(
88     'cksum',
89     install : true,
90     sources: [
91         'cksum/cksum.c',
92         'cksum/crc.c',
93         'cksum/crc32.c',
94         'cksum/print.c',
95         'cksum/sum1.c',
96         'cksum/sum2.c',
97     ]
99 install_man('cksum/cksum.1')
101 install_symlink(
102     'sum',
103     install_dir : get_option('bindir'),
104     pointing_to : 'cksum',
106 install_man('cksum/sum.1')
108 executable(
109     'compress',
110     c_args : [ utimensat_c_args, rpmatch_c_args ],
111     install : true,
112     link_args : compat_link_args,
113     sources: [
114         'compress/compress.c',
115         'compress/zopen.c',
116         utimensat_sources,
117         rpmatch_sources,
118     ]
120 install_man('compress/compress.1')
122 install_symlink(
123     'uncompress',
124     install_dir : get_option('bindir'),
125     pointing_to : 'compress',
127 install_man('compress/uncompress.1')
129 install_man('compress/zopen.3')
131 executable(
132     'cp',
133     c_args : [
134         utimensat_c_args,
135         rpmatch_c_args,
136     ],
137     dependencies : [ copyfile ],
138     install : true,
139     link_args : compat_link_args,
140     sources: [
141         'cp/cp.c',
142         'cp/utils.c',
143         utimensat_sources,
144         rpmatch_sources,
145     ]
147 install_man('cp/cp.1')
149 executable(
150     'dd',
151     dependencies : [ libutil ],
152     install : true,
153     sources: [
154         'dd/args.c',
155         'dd/conv.c',
156         'dd/conv_tab.c',
157         'dd/dd.c',
158          # 'dd/gen.c', # Not compiled in the Xcode project. Building it causes a duplicate symbol error when linking.
159         'dd/misc.c',
160         'dd/position.c',
161     ]
163 install_man('dd/dd.1')
165 executable(
166     'df',
167     dependencies : [ libutil, libxo ],
168     install : true,
169     sources: [ 'df/df.c' ],
171 install_man('df/df.1')
173 executable(
174     'du',
175     dependencies : [ libutil ],
176     install : true,
177     sources: [ 'du/du.c' ],
179 install_man('du/du.1')
181 executable(
182     'gzip',
183     c_args : [ '-DGZIP_APPLE_VERSION="@version@"' ],
184     dependencies : [ bzip2, copyfile, xz, zlib ],
185     install : true,
186     sources: [
187         'gzip/futimens.c',
188         'gzip/gzip.c',
189         # Apple only builds with gzip support
190         # 'gzip/unbzip2.c',
191         # 'gzip/unlz.c',
192         # 'gzip/unpack.c',
193         # 'gzip/unxz.c',
194         # 'gzip/zuncompress.c',
195     ]
197 install_man('gzip/gzip.1')
199 foreach cmd : [ 'gzexe', 'zdiff', 'zforce', 'zmore', 'znew' ]
200     install_data(
201         f'gzip/@cmd@',
202         install_dir : get_option('bindir'),
203         install_mode : 'r-xr-xr-x',
204     )
205     install_man(f'gzip/@cmd@.1')
206 endforeach
208 install_symlink(
209     'zless',
210     install_dir : get_option('bindir'),
211     pointing_to : 'zmore',
214 executable(
215     'install-bin', # Meson reserves the name “install”, so use a different name and rename in install phase.
216     c_args : utimensat_c_args,
217     dependencies : [ copyfile ],
218     install : true,
219     link_args : compat_link_args,
220     sources: [
221         'install/xinstall.c',
222         utimensat_sources,
223     ],
225 install_man('install/install.1')
227 executable(
228     'ipcrm',
229     install : true,
230     sources: [ 'ipcrm/ipcrm.c' ],
232 install_man('ipcrm/ipcrm.1')
234 executable(
235     'ipcs',
236     install : true,
237     sources: [ 'ipcs/ipcs.c' ],
239 install_man('ipcs/ipcs.1')
241 executable(
242     'ln',
243     install : true,
244     sources: [ 'ln/ln.c' ],
246 install_man('ln/ln.1')
248 install_symlink(
249     'link',
250     install_dir : get_option('bindir'),
251     pointing_to : 'ln',
253 install_man('ln/link.1')
255 install_man(f'ln/symlink.7')
257 executable(
258     'ls',
259     c_args : [
260         # https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/stat.h#L520
261         '-DSF_DATALESS=0x40000000',
262     ],
263     dependencies : [ libbsd, libutil ],
264     install : true,
265     sources: [
266         'ls/cmp.c',
267         'ls/util.c',
268         'ls/ls.c',
269         'ls/print.c',
270     ]
272 install_man('ls/ls.1')
274 executable(
275     'mkdir',
276     install : true,
277     sources: [ 'mkdir/mkdir.c' ],
279 install_man('mkdir/mkdir.1')
281 executable(
282     'mkfifo',
283     install : true,
284     sources: [ 'mkfifo/mkfifo.c' ],
286 install_man('mkfifo/mkfifo.1')
288 executable(
289     'mknod',
290     install : true,
291     sources: [
292         'mknod/mknod.c',
293         'mknod/pack_dev.c',
294     ],
296 install_man('mknod/mknod.8')
298 executable(
299     'mtree',
300     # Define these flags for the 10.12 SDK assuming that users on older systems can’t encounter dataless files.
301     c_args : [
302         # https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/stat.h#L520
303         '-DSF_DATALESS=0x40000000',
304         # https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/resource.h#L598
305         '-DIOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES=3',
306         # https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/resource.h#L640
307         '-DIOPOL_MATERIALIZE_DATALESS_FILES_OFF=1',
308         # https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/attr.h#L562
309         '-DATTR_CMNEXT_LINKID=0x00000010',
310     ],
311     dependencies : [ core_foundation, removefile ],
312     install : true,
313     sources: [
314         'cksum/crc.c',
315         'mtree/commoncrypto.c',
316         'mtree/compare.c',
317         'mtree/create.c',
318         'mtree/excludes.c',
319         'mtree/metrics.c',
320         'mtree/misc.c',
321         'mtree/mtree.c',
322         'mtree/spec.c',
323         'mtree/specspec.c',
324         'mtree/verify.c',
325     ]
327 install_man('mtree/mtree.8')
329 executable(
330     'mv',
331     c_args : [ utimensat_c_args, rpmatch_c_args ],
332     dependencies : [ copyfile ],
333     install : true,
334     link_args : compat_link_args,
335     sources: [
336         'mv/mv.c',
337         utimensat_sources,
338         rpmatch_sources,
339     ],
341 install_man('mv/mv.1')
343 executable(
344     'pathchk',
345     install : true,
346     sources: [ 'pathchk/pathchk.c' ],
348 install_man('pathchk/pathchk.1')
350 executable(
351     'pax',
352     dependencies : [ copyfile ],
353     install : true,
354     sources: [
355         'pax/ar_io.c',
356         'pax/ar_subs.c',
357         'pax/buf_subs.c',
358         'pax/cache.c',
359         'pax/cpio.c',
360         'pax/file_subs.c',
361         'pax/ftree.c',
362         'pax/gen_subs.c',
363         'pax/getoldopt.c',
364         'pax/options.c',
365         'pax/pat_rep.c',
366         'pax/pax.c',
367         'pax/pax_format.c',
368         'pax/sel_subs.c',
369         'pax/tables.c',
370         'pax/tar.c',
371         'pax/tty_subs.c',
372     ]
374 install_man('pax/pax.1')
376 executable(
377     'rm',
378     c_args : rpmatch_c_args,
379     dependencies : [ removefile ],
380     install : true,
381     link_args : compat_link_args,
382     sources: [
383         'rm/rm.c',
384         rpmatch_sources,
385     ],
387 install_man('rm/rm.1')
389 install_symlink(
390     'unlink',
391     install_dir : get_option('bindir'),
392     pointing_to : 'rm',
394 install_man('rm/unlink.1')
396 executable(
397     'rmdir',
398     install : true,
399     sources: [ 'rmdir/rmdir.c' ],
401 install_man('rmdir/rmdir.1')
403 install_data(
404     'shar/shar.sh',
405     install_dir : get_option('bindir'),
406     install_mode : 'r-xr-xr-x',
407     rename : 'shar',
409 install_man('shar/shar.1')
411 executable(
412     'stat',
413     install : true,
414     sources: [ 'stat/stat.c' ],
416 install_man('stat/stat.1')
418 install_symlink(
419     'readlink',
420     install_dir : get_option('bindir'),
421     pointing_to : 'stat',
423 install_man('stat/readlink.1')
425 executable(
426     'touch',
427     c_args : utimensat_c_args,
428     install : true,
429     link_args : compat_link_args,
430     sources: [
431         'touch/touch.c',
432         utimensat_sources,
433     ],
435 install_man('touch/touch.1')
437 executable(
438     'truncate',
439     dependencies : [ libutil ],
440     install : true,
441     sources: [ 'truncate/truncate.c' ],
443 install_man('truncate/truncate.1')
445 executable(
446     'xattr',
447     install : true,
448     sources: [ 'xattr/xattr.c' ],
450 install_man('xattr/xattr.1')