evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / cc / cctools / meson.build
blobc2261d98c958a87ded3cb0ac2a317ac862752d17
1 # Build settings based on the upstream Xcode project.
2 # See: https://github.com/apple-oss-distributions/cctools/blob/main/cctools.xcodeproj/project.pbxproj
4 # Project settings
5 project(
6     'cctools',
7     'c',
8     version : '@version@',
9     default_options : {
10         'c_args': [
11             '-DCCTB_MACOS=YES',
12             '-DCCTB_PROJECT=cctools',
13             '-DCCTB_PROJVERS=cctools-@version@',
14             '-DCCTB_VERSION=@version@',
15             '-DCURRENT_PROJECT_VERSION="@version@"',
16             '-DCODEDIRECTORY_SUPPORT',
17             '-DLTO_SUPPORT',
18         ],
19     },
22 fs = import('fs')
24 # Options
25 target_prefix = get_option('target_prefix')
28 # Dependencies
29 cc = meson.get_compiler('c')
31 libcodedirectory = cc.find_library('codedirectory')
32 libprunetrie = cc.find_library('prunetrie')
35 # Feature tests
36 # Add compatibility header for Darwin SDKs that don’t define `utimensat`.
37 utimensat_test = '''
38 #include <fcntl.h>
39 #include <sys/stat.h>
40 int main(int argc, char* argv[]) {
41     utimensat(AT_FDCWD, NULL, NULL, 0);
42     return 0;
44 '''
45 if host_machine.system() == 'darwin' and not cc.compiles(utimensat_test, name : 'supports utimensat')
46     add_project_arguments('-include', 'compat.h', language : 'c')
47     add_project_link_arguments('-undefined', 'dynamic_lookup', language : 'c')
48 endif
51 incdirs = include_directories('include')
53 # Static libraries
54 libstuff = static_library(
55     'stuff',
56     c_args : [
57         '-DCPU_TYPE_RISCV32=24', # Per src/abstraction/MachOFileAbstraction.hpp from ld64
58     ],
59     include_directories : [incdirs, 'include/stuff'],
60     sources : [
61         'libstuff/SymLoc.c',
62         'libstuff/align.c',
63         'libstuff/allocate.c',
64         'libstuff/apple_version.c',
65         'libstuff/arch.c',
66         'libstuff/arch_usage.c',
67         'libstuff/args.c',
68         'libstuff/best_arch.c',
69         'libstuff/breakout.c',
70         'libstuff/bytesex.c',
71         'libstuff/checkout.c',
72         'libstuff/code_directory.c',
73         'libstuff/coff_bytesex.c',
74         'libstuff/crc32.c',
75         'libstuff/depinfo.c',
76         'libstuff/diagnostics.c',
77         'libstuff/dylib_roots.c',
78         'libstuff/dylib_table.c',
79         'libstuff/errors.c',
80         'libstuff/execute.c',
81         'libstuff/fatal_arch.c',
82         'libstuff/fatals.c',
83         'libstuff/get_arch_from_host.c',
84         'libstuff/get_toc_byte_sex.c',
85         'libstuff/guess_short_name.c',
86         'libstuff/hash_string.c',
87         'libstuff/hppa.c',
88         'libstuff/llvm.c',
89         'libstuff/lto.c',
90         'libstuff/macosx_deployment_target.c',
91         'libstuff/ofile.c',
92         'libstuff/ofile_error.c',
93         'libstuff/ofile_get_word.c',
94         'libstuff/print.c',
95         'libstuff/reloc.c',
96         'libstuff/rnd.c',
97         'libstuff/seg_addr_table.c',
98         'libstuff/set_arch_flag_name.c',
99         'libstuff/swap_headers.c',
100         'libstuff/symbol_list.c',
101         'libstuff/unix_standard_mode.c',
102         'libstuff/version_number.c',
103         'libstuff/vm_flush_cache.c',
104         'libstuff/write64.c',
105         'libstuff/writeout.c',
106         'libstuff/xcode.c',
107     ],
110 libstuff_otool = static_library(
111     'stuff_otool',
112     c_args : [
113         '-DCPU_TYPE_RISCV32=24', # Per src/abstraction/MachOFileAbstraction.hpp from ld64
114     ],
115     include_directories : [incdirs, 'include/stuff', 'otool'],
116     sources : [
117         'libstuff/SymLoc.c',
118         'libstuff/align.c',
119         'libstuff/allocate.c',
120         'libstuff/apple_version.c',
121         'libstuff/arch.c',
122         'libstuff/arch_usage.c',
123         'libstuff/args.c',
124         'libstuff/best_arch.c',
125         'libstuff/breakout.c',
126         'libstuff/bytesex.c',
127         'libstuff/checkout.c',
128         'libstuff/code_directory.c',
129         'libstuff/coff_bytesex.c',
130         'libstuff/crc32.c',
131         'libstuff/depinfo.c',
132         'libstuff/diagnostics.c',
133         'libstuff/dylib_roots.c',
134         'libstuff/dylib_table.c',
135         'libstuff/errors.c',
136         'libstuff/execute.c',
137         'libstuff/fatal_arch.c',
138         'libstuff/fatals.c',
139         'libstuff/get_arch_from_host.c',
140         'libstuff/get_toc_byte_sex.c',
141         'libstuff/guess_short_name.c',
142         'libstuff/hash_string.c',
143         'libstuff/hppa.c',
144         'libstuff/llvm.c',
145         'libstuff/lto.c',
146         'libstuff/macosx_deployment_target.c',
147         'libstuff/ofile.c',
148         'libstuff/ofile_error.c',
149         'libstuff/ofile_get_word.c',
150         'libstuff/print.c',
151         'libstuff/reloc.c',
152         'libstuff/rnd.c',
153         'libstuff/seg_addr_table.c',
154         'libstuff/set_arch_flag_name.c',
155         'libstuff/swap_headers.c',
156         'libstuff/symbol_list.c',
157         'libstuff/unix_standard_mode.c',
158         'libstuff/version_number.c',
159         'libstuff/vm_flush_cache.c',
160         'libstuff/write64.c',
161         'libstuff/writeout.c',
162         'libstuff/xcode.c',
163     ],
167 # Binaries
168 ar = executable(
169     f'@target_prefix@ar',
170     include_directories : incdirs,
171     install : true,
172     link_with : [libstuff],
173     sources : [
174         'ar/append.c',
175         'ar/ar.c',
176         'ar/archive.c',
177         'ar/contents.c',
178         'ar/delete.c',
179         'ar/extract.c',
180         'ar/misc.c',
181         'ar/move.c',
182         'ar/print.c',
183         'ar/replace.c',
184     ],
186 install_man(
187     'ar/ar.1',
188     'ar/ar.5',
191 as = executable(
192     f'@target_prefix@gas',
193     include_directories : incdirs,
194     install : true,
195     link_with : [libstuff],
196     sources : ['as/driver.c'],
199 as_common = files(
200     'as/app.c',
201     'as/as.c',
202     'as/atof-generic.c',
203     'as/atof-ieee.c',
204     'as/dwarf2dbg.c',
205     'as/expr.c',
206     'as/fixes.c',
207     'as/flonum-const.c',
208     'as/flonum-copy.c',
209     'as/flonum-mult.c',
210     'as/frags.c',
211     'as/hash.c',
212     'as/hex-value.c',
213     'as/input-file.c',
214     'as/input-scrub.c',
215     'as/layout.c',
216     'as/messages.c',
217     'as/obstack.c',
218     'as/read.c',
219     'as/sections.c',
220     'as/symbols.c',
221     'as/write_object.c',
222     'as/xmalloc.c',
225 as_arm = executable(
226     'as-arm',
227     c_args : [
228         '-DARM',
229         '-DNeXT_MOD',
230     ],
231     include_directories : [
232         incdirs,
233         'as',
234         'include/gnu',
235     ],
236     install : true,
237     install_dir : 'libexec/as/arm',
238     link_with : [libstuff],
239     sources : [as_common, 'as/arm.c'],
242 as_i386 = executable(
243     'as-i386',
244     c_args : [
245         '-DI386',
246         '-Di486',
247         '-Di586',
248         '-Di686',
249         '-DNeXT_MOD',
250     ],
251     include_directories : [
252         incdirs,
253         'as',
254         'include/gnu',
255     ],
256     install : true,
257     install_dir : 'libexec/as/i386',
258     link_with : [libstuff],
259     sources : [as_common, 'as/i386.c'],
262 as_x86_64 = executable(
263     'as-x86_64',
264     c_args : [
265         '-DI386',
266         '-Di486',
267         '-Di586',
268         '-Di686',
269         '-DARCH64',
270         '-DNeXT_MOD',
271     ],
272     include_directories : [
273         incdirs,
274         'as',
275         'include/gnu'
276     ],
277     install : true,
278     install_dir : 'libexec/as/x86_64',
279     link_with : [libstuff],
280     sources : [as_common, 'as/i386.c'],
283 # # ld # excluded because ld64 is built separately
285 bitcode_strip = executable(
286     f'@target_prefix@bitcode_strip',
287     dependencies : [libcodedirectory],
288     include_directories : incdirs,
289     install : true,
290     link_with : [libstuff],
291     sources : ['misc/bitcode_strip.c'],
293 install_man('man/bitcode_strip.1')
295 check_dylib = executable(
296     f'@target_prefix@check_dylib',
297     include_directories : incdirs,
298     install : true,
299     link_with : [libstuff],
300     sources : ['misc/check_dylib.c'],
302 install_man('man/check_dylib.1')
304 checksyms = executable(
305     f'@target_prefix@checksyms',
306     include_directories : incdirs,
307     install : true,
308     link_with : [libstuff],
309     sources : ['misc/checksyms.c'],
311 install_man('man/checksyms.1')
313 cmpdylib = executable(
314     f'@target_prefix@cmpdylib',
315     include_directories : incdirs,
316     install : true,
317     link_with : [libstuff],
318     sources : ['misc/cmpdylib.c'],
320 install_man('man/cmpdylib.1')
322 codesign_allocate = executable(
323     f'@target_prefix@codesign_allocate',
324     dependencies : [libcodedirectory],
325     include_directories : incdirs,
326     install : true,
327     link_with : [libstuff],
328     sources : ['misc/codesign_allocate.c'],
330 install_man('man/codesign_allocate.1')
332 ctf_insert = executable(
333     f'@target_prefix@ctf_insert',
334     dependencies : [libcodedirectory],
335     include_directories : [incdirs, 'include/stuff'],
336     install : true,
337     link_with : [libstuff],
338     sources : ['misc/ctf_insert.c'],
340 install_man('man/ctf_insert.1')
342 depinfo = executable(
343     f'@target_prefix@depinfo',
344     include_directories : incdirs,
345     install : true,
346     link_with : [libstuff],
347     sources : ['misc/depinfo.c'],
349 install_man('man/depinfo.1')
351 diagtest = executable(
352     f'@target_prefix@diagtest',
353     include_directories : incdirs,
354     install : true,
355     link_with : [libstuff],
356     sources : ['misc/diagtest.c'],
358 install_man('man/diagtest.1')
360 gprof = executable(
361     f'@target_prefix@gprof',
362     include_directories : incdirs,
363     install : true,
364     link_with : [libstuff],
365     sources : [
366         'gprof/arcs.c',
367         'gprof/calls.c',
368         'gprof/dfn.c',
369         'gprof/getnfile.c',
370         'gprof/gprof.c',
371         'gprof/hertz.c',
372         'gprof/lookup.c',
373         'gprof/printgprof.c',
374         'gprof/printlist.c',
375         'gprof/scatter.c',
376     ],
378 install_man('man/gprof.1')
380 # Not supported on 64-bit architectures
381 # indr = executable(
382 #     f'@target_prefix@indr',
383 #     include_directories : incdirs,
384 #     sources : ['misc/indr.c'],
385 # )
386 # install_man('man/indr.1')
388 install_name_tool = executable(
389     f'@target_prefix@install_name_tool',
390     dependencies : [libcodedirectory],
391     include_directories : incdirs,
392     install : true,
393     link_with : [libstuff],
394     sources : ['misc/install_name_tool.c'],
396 install_man('man/install_name_tool.1')
398 libtool = executable(
399     f'@target_prefix@libtool',
400     include_directories : incdirs,
401     install : true,
402     link_with : [libstuff],
403     sources : ['misc/libtool.c'],
405 install_man('man/libtool.1')
407 lipo = executable(
408     f'@target_prefix@lipo',
409     include_directories : incdirs,
410     install : true,
411     link_with : [libstuff],
412     sources : ['misc/lipo.c'],
414 install_man('man/lipo.1')
416 mtoc = executable(
417     f'@target_prefix@mtoc',
418     include_directories : incdirs,
419     install : true,
420     link_with : [libstuff],
421     sources : ['efitools/mtoc.c'],
423 install_man('man/mtoc.1')
425 mtor = executable(
426     f'@target_prefix@mtor',
427     include_directories : incdirs,
428     install : true,
429     link_with : [libstuff],
430     sources : ['efitools/mtor.c'],
432 install_man('man/mtor.1')
434 nm = executable(
435     f'@target_prefix@nm',
436     include_directories : incdirs,
437     install : true,
438     link_with : [libstuff],
439     sources : ['misc/nm.c'],
441 install_man('man/nm-classic.1')
443 nmedit = executable(
444     f'@target_prefix@nmedit',
445     c_args : ['-DNMEDIT'],
446     dependencies : [libcodedirectory],
447     include_directories : incdirs,
448     install : true,
449     link_with : [libstuff],
450     sources : ['misc/strip.c'],
452 install_man('man/nmedit.1')
454 otool = executable(
455     f'@target_prefix@otool',
456     c_args : ['-DEFI_SUPPORT'],
457     include_directories : incdirs,
458     install : true,
459     link_with : [libstuff],
460     sources : [
461         'otool/arm64_disasm.c',
462         'otool/arm_disasm.c',
463         'otool/coff_print.c',
464         'otool/dyld_bind_info.c',
465         'otool/hppa_disasm.c',
466         'otool/i386_disasm.c',
467         'otool/i860_disasm.c',
468         'otool/m68k_disasm.c',
469         'otool/m88k_disasm.c',
470         'otool/main.c',
471         'otool/ofile_print.c',
472         'otool/ppc_disasm.c',
473         'otool/print_bitcode.c',
474         'otool/print_objc.c',
475         'otool/print_objc2_32bit.c',
476         'otool/print_objc2_64bit.c',
477         'otool/print_objc2_util.c',
478         'otool/sparc_disasm.c',
479     ],
481 install_man('man/otool-classic.1')
483 pagestuff = executable(
484     f'@target_prefix@pagestuff',
485     include_directories : incdirs,
486     install : true,
487     link_with : [libstuff],
488     sources : ['misc/pagestuff.c'],
490 install_man('man/pagestuff.1')
492 # ranlib is a symlink to libtool
493 install_man(
494     'man/ranlib.1',
495     'man/ranlib.5',
498 redo_prebinding = executable(
499     f'@target_prefix@redo_prebinding',
500     dependencies : [libcodedirectory],
501     include_directories : incdirs,
502     install : true,
503     link_with : [libstuff],
504     sources : ['misc/redo_prebinding.c'],
506 install_man('man/redo_prebinding.1')
508 seg_addr_table = executable(
509     f'@target_prefix@seg_addr_table',
510     include_directories : incdirs,
511     install : true,
512     link_with : [libstuff],
513     sources : ['misc/seg_addr_table.c'],
515 install_man('man/seg_addr_table.1')
517 seg_hack = executable(
518     f'@target_prefix@seg_hack',
519     dependencies : [libcodedirectory],
520     include_directories : incdirs,
521     install : true,
522     link_with : [libstuff],
523     sources : ['misc/seg_hack.c'],
526 segedit = executable(
527     f'@target_prefix@segedit',
528     include_directories : incdirs,
529     install : true,
530     link_with : [libstuff],
531     sources : ['misc/segedit.c'],
533 install_man('man/segedit.1',)
535 size = executable(
536     f'@target_prefix@size',
537     include_directories : incdirs,
538     install : true,
539     link_with : [libstuff],
540     sources : ['misc/size.c'],
542 install_man('man/size-classic.1')
544 strings = executable(
545     f'@target_prefix@strings',
546     include_directories : incdirs,
547     install : true,
548     link_with : [libstuff],
549     sources : ['misc/strings.c'],
551 install_man('man/strings.1')
553 strip = executable(
554     f'@target_prefix@strip',
555     c_args : ['-DTRIE_SUPPORT'],
556     dependencies : [libcodedirectory, libprunetrie],
557     include_directories : incdirs,
558     install : true,
559     link_with : [libstuff],
560     sources : ['misc/strip.c'],
562 install_man('man/strip.1')
564 vtool = executable(
565     f'@target_prefix@vtool',
566     dependencies : [libcodedirectory],
567     include_directories : [incdirs, 'include/stuff'],
568     install : true,
569     link_with : [libstuff],
570     sources : ['misc/vtool.c'],
572 install_man('man/vtool.1')
575 # Development files
576 # Static libraries
577 libmacho = static_library(
578     'macho',
579     include_directories : incdirs,
580     sources : [
581         'libmacho/arch.c',
582         'libmacho/get_end.c',
583         'libmacho/getsecbyname.c',
584         'libmacho/getsegbyname.c',
585         'libmacho/hppa_swap.c',
586         'libmacho/i386_swap.c',
587         'libmacho/i860_swap.c',
588         'libmacho/m68k_swap.c',
589         'libmacho/m88k_swap.c',
590         'libmacho/ppc_swap.c',
591         'libmacho/slot_name.c',
592         'libmacho/sparc_swap.c',
593         'libmacho/swap.c',
594     ],
597 libredo_prebinding = static_library(
598     'redo_prebinding',
599     c_args : ['-DLIBRARY_API'],
600     include_directories : incdirs,
601     sources : ['misc/redo_prebinding.c'],
603 install_man('man/redo_prebinding.3')
606 # Development files
607 # Based on the contents of the upstream SDK.
608 install_headers(
609     'include/mach-o/arch.h',
610     'include/mach-o/fat.h',
611     'include/mach-o/getsect.h',
612     'include/mach-o/ldsyms.h',
613     'include/mach-o/loader.h',
614     'include/mach-o/nlist.h',
615     'include/mach-o/ranlib.h',
616     'include/mach-o/reloc.h',
617     'include/mach-o/stab.h',
618     'include/mach-o/swap.h',
619     subdir : 'mach-o',
622 # Some of these architectures are irrelevant, but the Libsystem derivation expects their headers to be present.
623 # Not every arch has both headers, so tailor the lists for each that does.
624 foreach arch : ['arm', 'arm64', 'hppa', 'i860', 'm88k', 'ppc', 'sparc', 'x86_64']
625     install_headers(
626         f'include/mach-o/@arch@/reloc.h',
627         subdir : f'mach-o/@arch@',
628     )
629 endforeach
630 foreach arch : ['hppa', 'i386', 'i860', 'm68k', 'm88k', 'ppc', 'sparc']
631     install_headers(
632         f'include/mach-o/@arch@/swap.h',
633         subdir : f'mach-o/@arch@',
634     )
635 endforeach
637 install_data(
638     'include/modules/mach-o.modulemap',
639     install_dir : get_option('includedir'),
640     rename : 'mach-o/module.map',
642 install_man(
643     'man/Mach-O.5',
644     'man/NSModule.3',
645     'man/NSObjectFileImage.3',
646     'man/NSObjectFileImage_priv.3',
647     'man/arch.3',
648     'man/dyld.3',
649     'man/end.3',
650     'man/get_end.3',
651     'man/getsectbyname.3',
652     'man/getsectbynamefromheader.3',
653     'man/getsectdata.3',
654     'man/getsectdatafromheader.3',
655     'man/getsegbyname.3',
656     'man/stab.5',