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