xref: /aosp_15_r20/external/mesa3d/src/nouveau/headers/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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