1*61046927SAndroid Build Coastguard Workernv_classes = [ 2*61046927SAndroid Build Coastguard Worker 'cl902d', 3*61046927SAndroid Build Coastguard Worker 'cl9039', 4*61046927SAndroid Build Coastguard Worker 'cl906f', 5*61046927SAndroid Build Coastguard Worker 'cl9097', 6*61046927SAndroid Build Coastguard Worker 'cl90b5', 7*61046927SAndroid Build Coastguard Worker 'cl90c0', 8*61046927SAndroid Build Coastguard Worker 'cla040', 9*61046927SAndroid Build Coastguard Worker 'cla0b5', 10*61046927SAndroid Build Coastguard Worker 'cla097', 11*61046927SAndroid Build Coastguard Worker 'cla140', 12*61046927SAndroid Build Coastguard Worker 'cla297', 13*61046927SAndroid Build Coastguard Worker 'clb097', 14*61046927SAndroid Build Coastguard Worker 'clb0c0', 15*61046927SAndroid Build Coastguard Worker 'clb197', 16*61046927SAndroid Build Coastguard Worker 'clb1c0', 17*61046927SAndroid Build Coastguard Worker 'clc097', 18*61046927SAndroid Build Coastguard Worker 'clc1b5', 19*61046927SAndroid Build Coastguard Worker 'cla0c0', 20*61046927SAndroid Build Coastguard Worker 'clc0c0', 21*61046927SAndroid Build Coastguard Worker 'clc397', 22*61046927SAndroid Build Coastguard Worker 'clc3c0', 23*61046927SAndroid Build Coastguard Worker 'clc597', 24*61046927SAndroid Build Coastguard Worker 'clc5c0', 25*61046927SAndroid Build Coastguard Worker 'clc697', 26*61046927SAndroid Build Coastguard Worker 'clc6c0', 27*61046927SAndroid Build Coastguard Worker 'clc797', 28*61046927SAndroid Build Coastguard Worker 'clc7c0', 29*61046927SAndroid Build Coastguard Worker] 30*61046927SAndroid Build Coastguard Worker 31*61046927SAndroid Build Coastguard Workerhwref_gens = [ 32*61046927SAndroid Build Coastguard Worker 'maxwell/gm107', 33*61046927SAndroid Build Coastguard Worker 'pascal/gp100', 34*61046927SAndroid Build Coastguard Worker 'hopper/gh100', 35*61046927SAndroid Build Coastguard Worker 'turing/tu102', 36*61046927SAndroid Build Coastguard Worker] 37*61046927SAndroid Build Coastguard Worker 38*61046927SAndroid Build Coastguard Workercl_generated = [] 39*61046927SAndroid Build Coastguard Workerforeach cl : nv_classes 40*61046927SAndroid Build Coastguard Worker cl_generated += custom_target( 41*61046927SAndroid Build Coastguard Worker cl + '.h', 42*61046927SAndroid Build Coastguard Worker input : ['class_parser.py', 'nvidia/classes/'+cl+'.h'], 43*61046927SAndroid Build Coastguard Worker output : ['nv_push_'+cl+'.h', 'nv_push_'+cl+'.c'], 44*61046927SAndroid Build Coastguard Worker command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@', 45*61046927SAndroid Build Coastguard Worker '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@'], 46*61046927SAndroid Build Coastguard Worker ) 47*61046927SAndroid Build Coastguard Workerendforeach 48*61046927SAndroid Build Coastguard Worker 49*61046927SAndroid Build Coastguard Worker_libnvidia_headers = static_library( 50*61046927SAndroid Build Coastguard Worker 'nvidia_headers_c', 51*61046927SAndroid Build Coastguard Worker ['nv_push.c', cl_generated], 52*61046927SAndroid Build Coastguard Worker include_directories : ['.', 'nvidia/classes', inc_include, inc_src], 53*61046927SAndroid Build Coastguard Worker c_args : [no_override_init_args], 54*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility : 'hidden', 55*61046927SAndroid Build Coastguard Worker) 56*61046927SAndroid Build Coastguard Worker 57*61046927SAndroid Build Coastguard Workeridep_nvidia_headers = declare_dependency( 58*61046927SAndroid Build Coastguard Worker include_directories : include_directories('.', 'nvidia/classes'), 59*61046927SAndroid Build Coastguard Worker sources : cl_generated, 60*61046927SAndroid Build Coastguard Worker link_with : _libnvidia_headers, 61*61046927SAndroid Build Coastguard Worker) 62*61046927SAndroid Build Coastguard Worker 63*61046927SAndroid Build Coastguard Workerexecutable( 64*61046927SAndroid Build Coastguard Worker 'nv_push_dump', 65*61046927SAndroid Build Coastguard Worker 'nv_push_dump.c', 66*61046927SAndroid Build Coastguard Worker dependencies : [ idep_mesautil, idep_nvidia_headers ], 67*61046927SAndroid Build Coastguard Worker build_by_default : with_tools.contains('nouveau'), 68*61046927SAndroid Build Coastguard Worker install : with_tools.contains('nouveau'), 69*61046927SAndroid Build Coastguard Worker) 70*61046927SAndroid Build Coastguard Worker 71*61046927SAndroid Build Coastguard Worker# Only generate Rust bindings for NVK 72*61046927SAndroid Build Coastguard Workerif with_nouveau_vk 73*61046927SAndroid Build Coastguard Worker cl_rs_generated = [] 74*61046927SAndroid Build Coastguard Worker foreach cl : nv_classes 75*61046927SAndroid Build Coastguard Worker cl_rs_generated += custom_target( 76*61046927SAndroid Build Coastguard Worker 'nvh_classes_' + cl + '.rs', 77*61046927SAndroid Build Coastguard Worker input : ['class_parser.py', 'nvidia/classes/'+cl+'.h'], 78*61046927SAndroid Build Coastguard Worker output : ['nvh_classes_'+cl+'.rs'], 79*61046927SAndroid Build Coastguard Worker command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@', 80*61046927SAndroid Build Coastguard Worker '--out-rs', '@OUTPUT0@'], 81*61046927SAndroid Build Coastguard Worker ) 82*61046927SAndroid Build Coastguard Worker 83*61046927SAndroid Build Coastguard Worker cl_rs_generated += custom_target( 84*61046927SAndroid Build Coastguard Worker 'nvh_' + cl + '_mthd.rs', 85*61046927SAndroid Build Coastguard Worker input : ['class_parser.py', 'nvidia/classes/'+cl+'.h'], 86*61046927SAndroid Build Coastguard Worker output : ['nvh_classes_'+cl+'_mthd.rs'], 87*61046927SAndroid Build Coastguard Worker command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@', 88*61046927SAndroid Build Coastguard Worker '--out-rs-mthd', '@OUTPUT0@'], 89*61046927SAndroid Build Coastguard Worker ) 90*61046927SAndroid Build Coastguard Worker 91*61046927SAndroid Build Coastguard Worker fs = import('fs') 92*61046927SAndroid Build Coastguard Worker if cl.endswith('c0') and fs.is_file('nvidia/classes/'+cl+'qmd.h') 93*61046927SAndroid Build Coastguard Worker cl_rs_generated += custom_target( 94*61046927SAndroid Build Coastguard Worker 'nvh_classes_' + cl + '_qmd.rs', 95*61046927SAndroid Build Coastguard Worker input : ['struct_parser.py', 'nvidia/classes/'+cl+'qmd.h'], 96*61046927SAndroid Build Coastguard Worker output : ['nvh_classes_'+cl+'_qmd.rs'], 97*61046927SAndroid Build Coastguard Worker command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@', 98*61046927SAndroid Build Coastguard Worker '--out-rs', '@OUTPUT0@'] 99*61046927SAndroid Build Coastguard Worker ) 100*61046927SAndroid Build Coastguard Worker endif 101*61046927SAndroid Build Coastguard Worker 102*61046927SAndroid Build Coastguard Worker if cl.endswith('97') 103*61046927SAndroid Build Coastguard Worker cl_rs_generated += custom_target( 104*61046927SAndroid Build Coastguard Worker 'nvh_classes_' + cl + '_tex.rs', 105*61046927SAndroid Build Coastguard Worker input : ['struct_parser.py', 'nvidia/classes/'+cl+'tex.h'], 106*61046927SAndroid Build Coastguard Worker output : ['nvh_classes_'+cl+'_tex.rs'], 107*61046927SAndroid Build Coastguard Worker command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@', 108*61046927SAndroid Build Coastguard Worker '--out-rs', '@OUTPUT0@'] 109*61046927SAndroid Build Coastguard Worker ) 110*61046927SAndroid Build Coastguard Worker endif 111*61046927SAndroid Build Coastguard Worker 112*61046927SAndroid Build Coastguard Worker if fs.is_file(f'nvidia/classes/@[email protected]') 113*61046927SAndroid Build Coastguard Worker cl_rs_generated += custom_target( 114*61046927SAndroid Build Coastguard Worker input : ['struct_parser.py', f'nvidia/classes/@[email protected]'], 115*61046927SAndroid Build Coastguard Worker output : [f'nvh_classes_@cl@_sph.rs'], 116*61046927SAndroid Build Coastguard Worker command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@', 117*61046927SAndroid Build Coastguard Worker '--out-rs', '@OUTPUT0@'] 118*61046927SAndroid Build Coastguard Worker ) 119*61046927SAndroid Build Coastguard Worker endif 120*61046927SAndroid Build Coastguard Worker endforeach 121*61046927SAndroid Build Coastguard Worker 122*61046927SAndroid Build Coastguard Worker fs = import('fs') 123*61046927SAndroid Build Coastguard Worker foreach family_gen : hwref_gens 124*61046927SAndroid Build Coastguard Worker family = fs.parent(family_gen) 125*61046927SAndroid Build Coastguard Worker gen = fs.name(family_gen) 126*61046927SAndroid Build Coastguard Worker cl_rs_generated += rust.bindgen( 127*61046927SAndroid Build Coastguard Worker input : ['nvidia/hwref/'+family+'/'+gen+'/dev_mmu.h'], 128*61046927SAndroid Build Coastguard Worker output : 'nvh_hwref_'+gen+'_mmu.rs', 129*61046927SAndroid Build Coastguard Worker args : ['--allowlist-var', 'NV_MMU_.*'], 130*61046927SAndroid Build Coastguard Worker ) 131*61046927SAndroid Build Coastguard Worker endforeach 132*61046927SAndroid Build Coastguard Worker 133*61046927SAndroid Build Coastguard Worker _nvidia_headers_lib_rs = custom_target( 134*61046927SAndroid Build Coastguard Worker 'lib.rs', 135*61046927SAndroid Build Coastguard Worker input : ['lib_rs_gen.py'], 136*61046927SAndroid Build Coastguard Worker output : ['lib.rs'], 137*61046927SAndroid Build Coastguard Worker command : [prog_python, '@INPUT0@', '--out-rs', '@OUTPUT0@', 138*61046927SAndroid Build Coastguard Worker cl_rs_generated] 139*61046927SAndroid Build Coastguard Worker ) 140*61046927SAndroid Build Coastguard Worker 141*61046927SAndroid Build Coastguard Worker _nvidia_headers_rs = static_library( 142*61046927SAndroid Build Coastguard Worker 'nvidia_headers', 143*61046927SAndroid Build Coastguard Worker _nvidia_headers_lib_rs, 144*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility : 'hidden', 145*61046927SAndroid Build Coastguard Worker rust_abi : 'rust', 146*61046927SAndroid Build Coastguard Worker ) 147*61046927SAndroid Build Coastguard Worker 148*61046927SAndroid Build Coastguard Worker idep_nvidia_headers_rs = declare_dependency( 149*61046927SAndroid Build Coastguard Worker link_with : _nvidia_headers_rs, 150*61046927SAndroid Build Coastguard Worker ) 151*61046927SAndroid Build Coastguard Worker 152*61046927SAndroid Build Coastguard Worker _libnv_push_rs = static_library( 153*61046927SAndroid Build Coastguard Worker 'nv_push_rs', 154*61046927SAndroid Build Coastguard Worker files('nv_push_rs/lib.rs'), 155*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility: 'hidden', 156*61046927SAndroid Build Coastguard Worker rust_abi: 'rust', 157*61046927SAndroid Build Coastguard Worker dependencies: [idep_nvidia_headers_rs], 158*61046927SAndroid Build Coastguard Worker ) 159*61046927SAndroid Build Coastguard Worker 160*61046927SAndroid Build Coastguard Worker idep_nv_push_rs = declare_dependency( 161*61046927SAndroid Build Coastguard Worker link_with : _libnv_push_rs, 162*61046927SAndroid Build Coastguard Worker ) 163*61046927SAndroid Build Coastguard Workerendif 164