1*61046927SAndroid Build Coastguard Worker# Copyright © 2023 Igalia S.L. 2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 3*61046927SAndroid Build Coastguard Worker 4*61046927SAndroid Build Coastguard Workerisa_depend_files = [ 5*61046927SAndroid Build Coastguard Worker 'etnaviv.xml', 6*61046927SAndroid Build Coastguard Worker isaspec_py_deps, 7*61046927SAndroid Build Coastguard Worker] 8*61046927SAndroid Build Coastguard Worker 9*61046927SAndroid Build Coastguard Workeretnaviv_isa = custom_target( 10*61046927SAndroid Build Coastguard Worker 'etnaviv-isa', 11*61046927SAndroid Build Coastguard Worker input: ['etnaviv.xml'], 12*61046927SAndroid Build Coastguard Worker output: ['etnaviv-isa.c', 'etnaviv-isa.h'], 13*61046927SAndroid Build Coastguard Worker command: [ 14*61046927SAndroid Build Coastguard Worker prog_isaspec_decode, '--xml', '@INPUT@', 15*61046927SAndroid Build Coastguard Worker '--out-c', '@OUTPUT0@', '--out-h', '@OUTPUT1@', 16*61046927SAndroid Build Coastguard Worker ], 17*61046927SAndroid Build Coastguard Worker depend_files: isa_depend_files, 18*61046927SAndroid Build Coastguard Worker) 19*61046927SAndroid Build Coastguard Worker 20*61046927SAndroid Build Coastguard Workerdecode_files = [ 21*61046927SAndroid Build Coastguard Worker etnaviv_isa, 22*61046927SAndroid Build Coastguard Worker 'isa.h', 23*61046927SAndroid Build Coastguard Worker] 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Worker_libetnaviv_decode = static_library( 26*61046927SAndroid Build Coastguard Worker 'etnaviv_decode', 27*61046927SAndroid Build Coastguard Worker decode_files, 28*61046927SAndroid Build Coastguard Worker dependencies: [idep_mesautil, idep_isaspec_decode], 29*61046927SAndroid Build Coastguard Worker link_with: [libisaspec], 30*61046927SAndroid Build Coastguard Worker include_directories: [ 31*61046927SAndroid Build Coastguard Worker inc_include, 32*61046927SAndroid Build Coastguard Worker inc_src, 33*61046927SAndroid Build Coastguard Worker ], 34*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 35*61046927SAndroid Build Coastguard Worker) 36*61046927SAndroid Build Coastguard Worker 37*61046927SAndroid Build Coastguard Workeridep_libetnaviv_decode = declare_dependency( 38*61046927SAndroid Build Coastguard Worker include_directories : [ 39*61046927SAndroid Build Coastguard Worker include_directories('.'), 40*61046927SAndroid Build Coastguard Worker inc_include, 41*61046927SAndroid Build Coastguard Worker inc_src 42*61046927SAndroid Build Coastguard Worker ], 43*61046927SAndroid Build Coastguard Worker link_with : _libetnaviv_decode, 44*61046927SAndroid Build Coastguard Worker dependencies: [idep_isaspec_decode], 45*61046927SAndroid Build Coastguard Worker sources : [etnaviv_isa], 46*61046927SAndroid Build Coastguard Worker) 47*61046927SAndroid Build Coastguard Worker 48*61046927SAndroid Build Coastguard Workerprog_enums_h = files('enums.h.py') 49*61046927SAndroid Build Coastguard Workeretnaviv_enums_h = custom_target( 50*61046927SAndroid Build Coastguard Worker 'enums.h', 51*61046927SAndroid Build Coastguard Worker input: 'etnaviv.xml', 52*61046927SAndroid Build Coastguard Worker output: 'enums.h', 53*61046927SAndroid Build Coastguard Worker command: [prog_python, prog_enums_h, '--xml', '@INPUT@', '--output', '@OUTPUT@'], 54*61046927SAndroid Build Coastguard Worker depend_files: [isa_depend_files, prog_enums_h], 55*61046927SAndroid Build Coastguard Worker) 56*61046927SAndroid Build Coastguard Worker 57*61046927SAndroid Build Coastguard Workeridep_etnaviv_enums_h = declare_dependency( 58*61046927SAndroid Build Coastguard Worker sources : [etnaviv_enums_h], 59*61046927SAndroid Build Coastguard Worker include_directories : include_directories('.'), 60*61046927SAndroid Build Coastguard Worker) 61*61046927SAndroid Build Coastguard Worker 62*61046927SAndroid Build Coastguard Workerencode_h = custom_target( 63*61046927SAndroid Build Coastguard Worker 'encode.h', 64*61046927SAndroid Build Coastguard Worker input: ['etnaviv.xml'], 65*61046927SAndroid Build Coastguard Worker output: 'encode.h', 66*61046927SAndroid Build Coastguard Worker command: [ 67*61046927SAndroid Build Coastguard Worker prog_isaspec_encode, '--xml', '@INPUT@', '--out-h', '@OUTPUT@' 68*61046927SAndroid Build Coastguard Worker ], 69*61046927SAndroid Build Coastguard Worker depend_files: isa_depend_files, 70*61046927SAndroid Build Coastguard Worker) 71*61046927SAndroid Build Coastguard Worker 72*61046927SAndroid Build Coastguard Workerencode_files = [ 73*61046927SAndroid Build Coastguard Worker etnaviv_enums_h, 74*61046927SAndroid Build Coastguard Worker encode_h, 75*61046927SAndroid Build Coastguard Worker 'encode.c', 76*61046927SAndroid Build Coastguard Worker] 77*61046927SAndroid Build Coastguard Worker 78*61046927SAndroid Build Coastguard Workerlibetnaviv_encode = static_library( 79*61046927SAndroid Build Coastguard Worker 'etnaviv_encode', 80*61046927SAndroid Build Coastguard Worker encode_files, 81*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 82*61046927SAndroid Build Coastguard Worker include_directories: [ 83*61046927SAndroid Build Coastguard Worker inc_src, 84*61046927SAndroid Build Coastguard Worker ], 85*61046927SAndroid Build Coastguard Worker) 86*61046927SAndroid Build Coastguard Worker 87*61046927SAndroid Build Coastguard Workerdisasm = executable( 88*61046927SAndroid Build Coastguard Worker 'etnaviv-disasm', 89*61046927SAndroid Build Coastguard Worker ['disasm.c'], 90*61046927SAndroid Build Coastguard Worker dependencies: idep_libetnaviv_decode, 91*61046927SAndroid Build Coastguard Worker build_by_default: with_tools.contains('etnaviv'), 92*61046927SAndroid Build Coastguard Worker include_directories: [ 93*61046927SAndroid Build Coastguard Worker inc_src, 94*61046927SAndroid Build Coastguard Worker ], 95*61046927SAndroid Build Coastguard Worker install: false, 96*61046927SAndroid Build Coastguard Worker) 97*61046927SAndroid Build Coastguard Worker 98*61046927SAndroid Build Coastguard Workerif with_tools.contains('etnaviv') 99*61046927SAndroid Build Coastguard Worker isa_bindings_rs = rust.bindgen( 100*61046927SAndroid Build Coastguard Worker input : 'bindings.h', 101*61046927SAndroid Build Coastguard Worker output : 'isa_bindings.rs', 102*61046927SAndroid Build Coastguard Worker include_directories : [inc_src], 103*61046927SAndroid Build Coastguard Worker args : [ 104*61046927SAndroid Build Coastguard Worker '--disable-header-comment', 105*61046927SAndroid Build Coastguard Worker '--ignore-functions', 106*61046927SAndroid Build Coastguard Worker '--allowlist-type', 'etna_asm_result', 107*61046927SAndroid Build Coastguard Worker '--allowlist-type', 'etna_inst', 108*61046927SAndroid Build Coastguard Worker '--allowlist-type', 'isa_swiz', 109*61046927SAndroid Build Coastguard Worker '--default-enum-style', 'rust', 110*61046927SAndroid Build Coastguard Worker '--with-derive-default', 111*61046927SAndroid Build Coastguard Worker ], 112*61046927SAndroid Build Coastguard Worker ) 113*61046927SAndroid Build Coastguard Worker 114*61046927SAndroid Build Coastguard Worker _libetnaviv_isa_bindings_gen = static_library( 115*61046927SAndroid Build Coastguard Worker 'isa_bindings', 116*61046927SAndroid Build Coastguard Worker isa_bindings_rs, 117*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility : 'hidden', 118*61046927SAndroid Build Coastguard Worker rust_abi : 'rust', 119*61046927SAndroid Build Coastguard Worker rust_args: [ 120*61046927SAndroid Build Coastguard Worker '-Anon_camel_case_types', 121*61046927SAndroid Build Coastguard Worker ], 122*61046927SAndroid Build Coastguard Worker ) 123*61046927SAndroid Build Coastguard Worker 124*61046927SAndroid Build Coastguard Worker dep_indexmap = dependency('indexmap', 125*61046927SAndroid Build Coastguard Worker version : '>= 2.2.6', 126*61046927SAndroid Build Coastguard Worker fallback : ['indexmap', 'dep_indexmap'], 127*61046927SAndroid Build Coastguard Worker required : true, 128*61046927SAndroid Build Coastguard Worker ) 129*61046927SAndroid Build Coastguard Worker 130*61046927SAndroid Build Coastguard Worker dep_roxmltree = dependency('roxmltree', 131*61046927SAndroid Build Coastguard Worker version : '>= 0.20.roxmltree', 132*61046927SAndroid Build Coastguard Worker fallback : ['roxmltree', 'dep_roxmltree'], 133*61046927SAndroid Build Coastguard Worker required : true, 134*61046927SAndroid Build Coastguard Worker ) 135*61046927SAndroid Build Coastguard Worker 136*61046927SAndroid Build Coastguard Worker dep_syn = dependency('syn', 137*61046927SAndroid Build Coastguard Worker version : '>= 2.0.15', 138*61046927SAndroid Build Coastguard Worker fallback : ['syn', 'dep_syn'], 139*61046927SAndroid Build Coastguard Worker required : true, 140*61046927SAndroid Build Coastguard Worker ) 141*61046927SAndroid Build Coastguard Worker 142*61046927SAndroid Build Coastguard Worker dep_pest_generator = dependency('pest_generator', 143*61046927SAndroid Build Coastguard Worker version: '>= 2.7.6', 144*61046927SAndroid Build Coastguard Worker fallback: ['pest_generator', 'dep_pest_generator'], 145*61046927SAndroid Build Coastguard Worker required: true, 146*61046927SAndroid Build Coastguard Worker ) 147*61046927SAndroid Build Coastguard Worker 148*61046927SAndroid Build Coastguard Worker dep_pest = dependency('pest', 149*61046927SAndroid Build Coastguard Worker version: '>= 2.7.6', 150*61046927SAndroid Build Coastguard Worker fallback: ['pest', 'dep_pest'], 151*61046927SAndroid Build Coastguard Worker required: true, 152*61046927SAndroid Build Coastguard Worker ) 153*61046927SAndroid Build Coastguard Worker 154*61046927SAndroid Build Coastguard Worker _libetnaviv_isa_proc_rs = rust.proc_macro( 155*61046927SAndroid Build Coastguard Worker 'etnaviv_isa_proc', 156*61046927SAndroid Build Coastguard Worker files('isa_proc.rs', 'isa.rs'), 157*61046927SAndroid Build Coastguard Worker dependencies : [dep_indexmap, dep_roxmltree, dep_syn, dep_pest_generator], 158*61046927SAndroid Build Coastguard Worker ) 159*61046927SAndroid Build Coastguard Worker 160*61046927SAndroid Build Coastguard Worker if with_tests 161*61046927SAndroid Build Coastguard Worker # triggers a bug in meson 162*61046927SAndroid Build Coastguard Worker # rust.test('isa', _libetnaviv_isa_proc_rs, suite : ['etnaviv']) 163*61046927SAndroid Build Coastguard Worker endif 164*61046927SAndroid Build Coastguard Worker 165*61046927SAndroid Build Coastguard Worker libetnaviv_isa_rs = static_library( 166*61046927SAndroid Build Coastguard Worker 'etnaviv_isa_rs', 167*61046927SAndroid Build Coastguard Worker files('lib.rs'), 168*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility : 'hidden', 169*61046927SAndroid Build Coastguard Worker rust_abi : 'c', 170*61046927SAndroid Build Coastguard Worker dependencies: [dep_indexmap, dep_roxmltree, dep_pest], 171*61046927SAndroid Build Coastguard Worker link_with: [_libetnaviv_isa_bindings_gen, _libetnaviv_isa_proc_rs], 172*61046927SAndroid Build Coastguard Worker ) 173*61046927SAndroid Build Coastguard Worker 174*61046927SAndroid Build Coastguard Worker etnaviv_assembler = executable( 175*61046927SAndroid Build Coastguard Worker 'etnaviv-assembler', 176*61046927SAndroid Build Coastguard Worker ['assembler.c'], 177*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 178*61046927SAndroid Build Coastguard Worker dependencies: [ idep_libetnaviv_decode ], 179*61046927SAndroid Build Coastguard Worker link_with: [libetnaviv_encode, libetnaviv_isa_rs], 180*61046927SAndroid Build Coastguard Worker ) 181*61046927SAndroid Build Coastguard Workerelse 182*61046927SAndroid Build Coastguard Worker pre_args += '-DHAVE_ETNAVIV_NO_PEST' 183*61046927SAndroid Build Coastguard Worker 184*61046927SAndroid Build Coastguard Worker # dummy library 185*61046927SAndroid Build Coastguard Worker libetnaviv_isa_rs = static_library( 186*61046927SAndroid Build Coastguard Worker 'etnaviv_isa_rs', 187*61046927SAndroid Build Coastguard Worker sources: [], 188*61046927SAndroid Build Coastguard Worker ) 189*61046927SAndroid Build Coastguard Workerendif 190*61046927SAndroid Build Coastguard Worker 191*61046927SAndroid Build Coastguard Workersubdir('tests') 192