mesa/src/nouveau/headers/meson.build

145 lines
3.6 KiB
Meson

nv_classes = [
'cl902d',
'cl9039',
'cl906f',
'cl9097',
'cl90b5',
'cl90c0',
'cla0b5',
'cla097',
'cla297',
'clb097',
'clb0c0',
'clb197',
'clb1c0',
'clc097',
'clc1b5',
'cla0c0',
'clc0c0',
'clc397',
'clc3c0',
'clc597',
'clc5c0',
'clc697',
'clc6c0',
'clc797',
'clc7c0',
]
hwref_gens = [
'maxwell/gm107',
'pascal/gp100',
'hopper/gh100',
'turing/tu102',
]
cl_generated = []
foreach cl : nv_classes
cl_generated += custom_target(
cl + '.h',
input : ['class_parser.py', 'nvidia/classes/'+cl+'.h'],
output : ['nv_push_'+cl+'.h', 'nv_push_'+cl+'.c'],
command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@',
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@'],
)
endforeach
_libnvidia_headers = static_library(
'nvidia_headers_c',
['nv_push.c', cl_generated],
include_directories : ['.', 'nvidia/classes', inc_include, inc_src],
c_args : [no_override_init_args],
gnu_symbol_visibility : 'hidden',
)
idep_nvidia_headers = declare_dependency(
include_directories : include_directories('.', 'nvidia/classes'),
sources : cl_generated,
link_with : _libnvidia_headers,
)
executable(
'nv_push_dump',
'nv_push_dump.c',
dependencies : [ idep_mesautil, idep_nvidia_headers ],
build_by_default : with_tools.contains('nouveau'),
install : with_tools.contains('nouveau'),
)
# Only generate Rust bindings for NVK
if with_nouveau_vk
add_languages('rust', required: true)
rust = import('rust')
cl_rs_generated = []
foreach cl : nv_classes
cl_rs_generated += custom_target(
'nvh_classes_' + cl + '.rs',
input : ['class_parser.py', 'nvidia/classes/'+cl+'.h'],
output : ['nvh_classes_'+cl+'.rs'],
command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@',
'--out-rs', '@OUTPUT0@'],
)
fs = import('fs')
if cl.endswith('c0') and fs.is_file('nvidia/classes/'+cl+'qmd.h')
cl_rs_generated += custom_target(
'nvh_classes_' + cl + '_qmd.rs',
input : ['struct_parser.py', 'nvidia/classes/'+cl+'qmd.h'],
output : ['nvh_classes_'+cl+'_qmd.rs'],
command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@',
'--out-rs', '@OUTPUT0@']
)
endif
if cl.endswith('97')
cl_rs_generated += custom_target(
'nvh_classes_' + cl + '_tex.rs',
input : ['struct_parser.py', 'nvidia/classes/'+cl+'tex.h'],
output : ['nvh_classes_'+cl+'_tex.rs'],
command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@',
'--out-rs', '@OUTPUT0@']
)
endif
if fs.is_file(f'nvidia/classes/@cl@sph.h')
cl_rs_generated += custom_target(
input : ['struct_parser.py', f'nvidia/classes/@cl@sph.h'],
output : [f'nvh_classes_@cl@_sph.rs'],
command : [prog_python, '@INPUT0@', '--in-h', '@INPUT1@',
'--out-rs', '@OUTPUT0@']
)
endif
endforeach
fs = import('fs')
foreach family_gen : hwref_gens
family = fs.parent(family_gen)
gen = fs.name(family_gen)
cl_rs_generated += rust.bindgen(
input : ['nvidia/hwref/'+family+'/'+gen+'/dev_mmu.h'],
output : 'nvh_hwref_'+gen+'_mmu.rs',
args : ['--allowlist-var', 'NV_MMU_.*'],
)
endforeach
_nvidia_headers_lib_rs = custom_target(
'lib.rs',
input : ['lib_rs_gen.py'],
output : ['lib.rs'],
command : [prog_python, '@INPUT0@', '--out-rs', '@OUTPUT0@',
cl_rs_generated]
)
_nvidia_headers_rs = static_library(
'nvidia_headers',
_nvidia_headers_lib_rs,
gnu_symbol_visibility : 'hidden',
rust_abi : 'rust',
)
idep_nvidia_headers_rs = declare_dependency(
link_with : _nvidia_headers_rs,
)
endif