xref: /aosp_15_r20/external/dtc/meson.build (revision cd60bc56d4bea3af4ec04523e4d71c2b272c8aff)
1*cd60bc56SAndroid Build Coastguard Workerproject('dtc', 'c',
2*cd60bc56SAndroid Build Coastguard Worker  version: '1.6.0',
3*cd60bc56SAndroid Build Coastguard Worker  license: ['GPL2+', 'BSD-2'],
4*cd60bc56SAndroid Build Coastguard Worker  default_options: 'werror=true',
5*cd60bc56SAndroid Build Coastguard Worker)
6*cd60bc56SAndroid Build Coastguard Worker
7*cd60bc56SAndroid Build Coastguard Workercc = meson.get_compiler('c')
8*cd60bc56SAndroid Build Coastguard Worker
9*cd60bc56SAndroid Build Coastguard Workeradd_project_arguments(
10*cd60bc56SAndroid Build Coastguard Worker  cc.get_supported_arguments([
11*cd60bc56SAndroid Build Coastguard Worker    '-Wpointer-arith',
12*cd60bc56SAndroid Build Coastguard Worker    '-Wcast-qual',
13*cd60bc56SAndroid Build Coastguard Worker    '-Wnested-externs',
14*cd60bc56SAndroid Build Coastguard Worker    '-Wstrict-prototypes',
15*cd60bc56SAndroid Build Coastguard Worker    '-Wmissing-prototypes',
16*cd60bc56SAndroid Build Coastguard Worker    '-Wredundant-decls',
17*cd60bc56SAndroid Build Coastguard Worker    '-Wshadow'
18*cd60bc56SAndroid Build Coastguard Worker  ]),
19*cd60bc56SAndroid Build Coastguard Worker  language: 'c'
20*cd60bc56SAndroid Build Coastguard Worker)
21*cd60bc56SAndroid Build Coastguard Worker
22*cd60bc56SAndroid Build Coastguard Workerif host_machine.system() == 'windows'
23*cd60bc56SAndroid Build Coastguard Worker  add_project_arguments(
24*cd60bc56SAndroid Build Coastguard Worker    '-D__USE_MINGW_ANSI_STDIO=1',
25*cd60bc56SAndroid Build Coastguard Worker    language: 'c'
26*cd60bc56SAndroid Build Coastguard Worker  )
27*cd60bc56SAndroid Build Coastguard Workerendif
28*cd60bc56SAndroid Build Coastguard Worker
29*cd60bc56SAndroid Build Coastguard Workeradd_project_arguments(
30*cd60bc56SAndroid Build Coastguard Worker  '-DFDT_ASSUME_MASK=' + get_option('assume-mask').to_string(),
31*cd60bc56SAndroid Build Coastguard Worker  language: 'c'
32*cd60bc56SAndroid Build Coastguard Worker)
33*cd60bc56SAndroid Build Coastguard Worker
34*cd60bc56SAndroid Build Coastguard Workerif get_option('static-build')
35*cd60bc56SAndroid Build Coastguard Worker  static_build = true
36*cd60bc56SAndroid Build Coastguard Worker  extra_link_args = ['-static']
37*cd60bc56SAndroid Build Coastguard Workerelse
38*cd60bc56SAndroid Build Coastguard Worker  static_build = false
39*cd60bc56SAndroid Build Coastguard Worker  extra_link_args = []
40*cd60bc56SAndroid Build Coastguard Workerendif
41*cd60bc56SAndroid Build Coastguard Worker
42*cd60bc56SAndroid Build Coastguard Workeryamltree = 'yamltree.c'
43*cd60bc56SAndroid Build Coastguard Workeryaml = dependency('yaml-0.1', required: get_option('yaml'), static: static_build)
44*cd60bc56SAndroid Build Coastguard Workerif not yaml.found()
45*cd60bc56SAndroid Build Coastguard Worker  add_project_arguments('-DNO_YAML', language: 'c')
46*cd60bc56SAndroid Build Coastguard Worker  yamltree = []
47*cd60bc56SAndroid Build Coastguard Workerendif
48*cd60bc56SAndroid Build Coastguard Worker
49*cd60bc56SAndroid Build Coastguard Workervalgrind = dependency('valgrind', required: get_option('valgrind'))
50*cd60bc56SAndroid Build Coastguard Workerif not valgrind.found()
51*cd60bc56SAndroid Build Coastguard Worker  add_project_arguments('-DNO_VALGRIND', language: 'c')
52*cd60bc56SAndroid Build Coastguard Workerendif
53*cd60bc56SAndroid Build Coastguard Worker
54*cd60bc56SAndroid Build Coastguard Workerpy = import('python')
55*cd60bc56SAndroid Build Coastguard Workerpy = py.find_installation(required: get_option('python'))
56*cd60bc56SAndroid Build Coastguard Workerswig = find_program('swig', required: get_option('python'))
57*cd60bc56SAndroid Build Coastguard Worker
58*cd60bc56SAndroid Build Coastguard Workerversion_gen_h = vcs_tag(
59*cd60bc56SAndroid Build Coastguard Worker  input: 'version_gen.h.in',
60*cd60bc56SAndroid Build Coastguard Worker  output: 'version_gen.h',
61*cd60bc56SAndroid Build Coastguard Worker)
62*cd60bc56SAndroid Build Coastguard Worker
63*cd60bc56SAndroid Build Coastguard Workersubdir('libfdt')
64*cd60bc56SAndroid Build Coastguard Worker
65*cd60bc56SAndroid Build Coastguard Workerif get_option('tools')
66*cd60bc56SAndroid Build Coastguard Worker  flex = find_program('flex', required: true)
67*cd60bc56SAndroid Build Coastguard Worker  bison = find_program('bison', required: true)
68*cd60bc56SAndroid Build Coastguard Worker
69*cd60bc56SAndroid Build Coastguard Worker  util_dep = declare_dependency(
70*cd60bc56SAndroid Build Coastguard Worker    sources: ['util.c', version_gen_h],
71*cd60bc56SAndroid Build Coastguard Worker    include_directories: '.',
72*cd60bc56SAndroid Build Coastguard Worker    dependencies: libfdt_dep
73*cd60bc56SAndroid Build Coastguard Worker  )
74*cd60bc56SAndroid Build Coastguard Worker
75*cd60bc56SAndroid Build Coastguard Worker  lgen = generator(
76*cd60bc56SAndroid Build Coastguard Worker    flex,
77*cd60bc56SAndroid Build Coastguard Worker    output: '@[email protected]',
78*cd60bc56SAndroid Build Coastguard Worker    arguments: ['-o', '@OUTPUT@', '@INPUT@'],
79*cd60bc56SAndroid Build Coastguard Worker  )
80*cd60bc56SAndroid Build Coastguard Worker
81*cd60bc56SAndroid Build Coastguard Worker  pgen = generator(
82*cd60bc56SAndroid Build Coastguard Worker    bison,
83*cd60bc56SAndroid Build Coastguard Worker    output: ['@[email protected]', '@[email protected]'],
84*cd60bc56SAndroid Build Coastguard Worker    arguments: ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'],
85*cd60bc56SAndroid Build Coastguard Worker  )
86*cd60bc56SAndroid Build Coastguard Worker
87*cd60bc56SAndroid Build Coastguard Worker  if cc.check_header('fnmatch.h')
88*cd60bc56SAndroid Build Coastguard Worker    executable(
89*cd60bc56SAndroid Build Coastguard Worker      'convert-dtsv0',
90*cd60bc56SAndroid Build Coastguard Worker      [
91*cd60bc56SAndroid Build Coastguard Worker        lgen.process('convert-dtsv0-lexer.l'),
92*cd60bc56SAndroid Build Coastguard Worker        'srcpos.c',
93*cd60bc56SAndroid Build Coastguard Worker      ],
94*cd60bc56SAndroid Build Coastguard Worker      dependencies: util_dep,
95*cd60bc56SAndroid Build Coastguard Worker      install: true,
96*cd60bc56SAndroid Build Coastguard Worker      link_args: extra_link_args,
97*cd60bc56SAndroid Build Coastguard Worker    )
98*cd60bc56SAndroid Build Coastguard Worker  endif
99*cd60bc56SAndroid Build Coastguard Worker
100*cd60bc56SAndroid Build Coastguard Worker  executable(
101*cd60bc56SAndroid Build Coastguard Worker    'dtc',
102*cd60bc56SAndroid Build Coastguard Worker    [
103*cd60bc56SAndroid Build Coastguard Worker      lgen.process('dtc-lexer.l'),
104*cd60bc56SAndroid Build Coastguard Worker      pgen.process('dtc-parser.y'),
105*cd60bc56SAndroid Build Coastguard Worker      'checks.c',
106*cd60bc56SAndroid Build Coastguard Worker      'data.c',
107*cd60bc56SAndroid Build Coastguard Worker      'dtc.c',
108*cd60bc56SAndroid Build Coastguard Worker      'flattree.c',
109*cd60bc56SAndroid Build Coastguard Worker      'fstree.c',
110*cd60bc56SAndroid Build Coastguard Worker      'livetree.c',
111*cd60bc56SAndroid Build Coastguard Worker      'srcpos.c',
112*cd60bc56SAndroid Build Coastguard Worker      'treesource.c',
113*cd60bc56SAndroid Build Coastguard Worker      yamltree,
114*cd60bc56SAndroid Build Coastguard Worker    ],
115*cd60bc56SAndroid Build Coastguard Worker    dependencies: [util_dep, yaml],
116*cd60bc56SAndroid Build Coastguard Worker    install: true,
117*cd60bc56SAndroid Build Coastguard Worker    link_args: extra_link_args,
118*cd60bc56SAndroid Build Coastguard Worker  )
119*cd60bc56SAndroid Build Coastguard Worker
120*cd60bc56SAndroid Build Coastguard Worker  foreach e: ['fdtdump', 'fdtget', 'fdtput', 'fdtoverlay']
121*cd60bc56SAndroid Build Coastguard Worker    executable(e, files(e + '.c'), dependencies: util_dep, install: true, link_args: extra_link_args)
122*cd60bc56SAndroid Build Coastguard Worker  endforeach
123*cd60bc56SAndroid Build Coastguard Worker
124*cd60bc56SAndroid Build Coastguard Worker  install_data(
125*cd60bc56SAndroid Build Coastguard Worker    'dtdiff',
126*cd60bc56SAndroid Build Coastguard Worker    install_dir: get_option('prefix') / get_option('bindir'),
127*cd60bc56SAndroid Build Coastguard Worker    install_mode: 'rwxr-xr-x',
128*cd60bc56SAndroid Build Coastguard Worker  )
129*cd60bc56SAndroid Build Coastguard Workerendif
130*cd60bc56SAndroid Build Coastguard Worker
131*cd60bc56SAndroid Build Coastguard Workerif not meson.is_cross_build()
132*cd60bc56SAndroid Build Coastguard Worker  if py.found() and swig.found()
133*cd60bc56SAndroid Build Coastguard Worker    subdir('pylibfdt')
134*cd60bc56SAndroid Build Coastguard Worker  endif
135*cd60bc56SAndroid Build Coastguard Worker
136*cd60bc56SAndroid Build Coastguard Worker  if get_option('tools')
137*cd60bc56SAndroid Build Coastguard Worker    subdir('tests')
138*cd60bc56SAndroid Build Coastguard Worker  endif
139*cd60bc56SAndroid Build Coastguard Workerendif
140