xref: /aosp_15_r20/external/mesa3d/src/gallium/frontends/rusticl/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright ©
2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Workerfs = import('fs')
5*61046927SAndroid Build Coastguard Worker
6*61046927SAndroid Build Coastguard Workerlibmesa_rust_util_files = files(
7*61046927SAndroid Build Coastguard Worker  'util/lib.rs',
8*61046927SAndroid Build Coastguard Worker  'util/assert.rs',
9*61046927SAndroid Build Coastguard Worker  'util/bitset.rs',
10*61046927SAndroid Build Coastguard Worker  'util/feature.rs',
11*61046927SAndroid Build Coastguard Worker  'util/properties.rs',
12*61046927SAndroid Build Coastguard Worker  'util/ptr.rs',
13*61046927SAndroid Build Coastguard Worker  'util/string.rs',
14*61046927SAndroid Build Coastguard Worker)
15*61046927SAndroid Build Coastguard Worker
16*61046927SAndroid Build Coastguard Workerlibmesa_rust_files = files(
17*61046927SAndroid Build Coastguard Worker  'mesa/lib.rs',
18*61046927SAndroid Build Coastguard Worker  'mesa/compiler.rs',
19*61046927SAndroid Build Coastguard Worker  'mesa/compiler/clc.rs',
20*61046927SAndroid Build Coastguard Worker  'mesa/compiler/clc/spirv.rs',
21*61046927SAndroid Build Coastguard Worker  'mesa/compiler/nir.rs',
22*61046927SAndroid Build Coastguard Worker  'mesa/pipe.rs',
23*61046927SAndroid Build Coastguard Worker  'mesa/pipe/context.rs',
24*61046927SAndroid Build Coastguard Worker  'mesa/pipe/device.rs',
25*61046927SAndroid Build Coastguard Worker  'mesa/pipe/fence.rs',
26*61046927SAndroid Build Coastguard Worker  'mesa/pipe/screen.rs',
27*61046927SAndroid Build Coastguard Worker  'mesa/pipe/transfer.rs',
28*61046927SAndroid Build Coastguard Worker)
29*61046927SAndroid Build Coastguard Worker
30*61046927SAndroid Build Coastguard Workerrusticl_proc_macros_files = files(
31*61046927SAndroid Build Coastguard Worker  'proc/lib.rs',
32*61046927SAndroid Build Coastguard Worker)
33*61046927SAndroid Build Coastguard Worker
34*61046927SAndroid Build Coastguard Workerrusticl_files = files(
35*61046927SAndroid Build Coastguard Worker  'lib.rs',
36*61046927SAndroid Build Coastguard Worker  'api.rs',
37*61046927SAndroid Build Coastguard Worker  'api/context.rs',
38*61046927SAndroid Build Coastguard Worker  'api/device.rs',
39*61046927SAndroid Build Coastguard Worker  'api/event.rs',
40*61046927SAndroid Build Coastguard Worker  'api/icd.rs',
41*61046927SAndroid Build Coastguard Worker  'api/kernel.rs',
42*61046927SAndroid Build Coastguard Worker  'api/memory.rs',
43*61046927SAndroid Build Coastguard Worker  'api/platform.rs',
44*61046927SAndroid Build Coastguard Worker  'api/program.rs',
45*61046927SAndroid Build Coastguard Worker  'api/queue.rs',
46*61046927SAndroid Build Coastguard Worker  'api/types.rs',
47*61046927SAndroid Build Coastguard Worker  'api/util.rs',
48*61046927SAndroid Build Coastguard Worker  'core.rs',
49*61046927SAndroid Build Coastguard Worker  'core/context.rs',
50*61046927SAndroid Build Coastguard Worker  'core/device.rs',
51*61046927SAndroid Build Coastguard Worker  'core/format.rs',
52*61046927SAndroid Build Coastguard Worker  'core/kernel.rs',
53*61046927SAndroid Build Coastguard Worker  'core/memory.rs',
54*61046927SAndroid Build Coastguard Worker  'core/platform.rs',
55*61046927SAndroid Build Coastguard Worker  'core/program.rs',
56*61046927SAndroid Build Coastguard Worker  'core/queue.rs',
57*61046927SAndroid Build Coastguard Worker  'core/util.rs',
58*61046927SAndroid Build Coastguard Worker  'core/version.rs',
59*61046927SAndroid Build Coastguard Worker  'core/gl.rs',
60*61046927SAndroid Build Coastguard Worker)
61*61046927SAndroid Build Coastguard Worker
62*61046927SAndroid Build Coastguard Workerrusticl_args = [
63*61046927SAndroid Build Coastguard Worker  # we want unsafe blocks inside unsafe functions
64*61046927SAndroid Build Coastguard Worker  '-Dunsafe_op_in_unsafe_fn',
65*61046927SAndroid Build Coastguard Worker  # we error on all clippy warnings unless they are disabled
66*61046927SAndroid Build Coastguard Worker  '-Dclippy::all',
67*61046927SAndroid Build Coastguard Worker  # we want to add asserts in control flow
68*61046927SAndroid Build Coastguard Worker  '-Aclippy::assertions_on_constants',
69*61046927SAndroid Build Coastguard Worker  # warns on Arc<_> as keys
70*61046927SAndroid Build Coastguard Worker  '-Aclippy::mutable_key_type',
71*61046927SAndroid Build Coastguard Worker  '-Aclippy::not_unsafe_ptr_arg_deref',
72*61046927SAndroid Build Coastguard Worker  # dunno, kind of looks nicier being explicit
73*61046927SAndroid Build Coastguard Worker  '-Aclippy::redundant_field_names',
74*61046927SAndroid Build Coastguard Worker  '-Aclippy::too_many_arguments',
75*61046927SAndroid Build Coastguard Worker  '-Aclippy::type_complexity',
76*61046927SAndroid Build Coastguard Worker]
77*61046927SAndroid Build Coastguard Worker
78*61046927SAndroid Build Coastguard Workerif with_platform_x11
79*61046927SAndroid Build Coastguard Worker  rusticl_args += [
80*61046927SAndroid Build Coastguard Worker    '--cfg', 'glx',
81*61046927SAndroid Build Coastguard Worker  ]
82*61046927SAndroid Build Coastguard Workerendif
83*61046927SAndroid Build Coastguard Worker
84*61046927SAndroid Build Coastguard Workerrusticl_gen_args = [
85*61046927SAndroid Build Coastguard Worker  # can't do anything about it anyway
86*61046927SAndroid Build Coastguard Worker  '-Aclippy::all',
87*61046927SAndroid Build Coastguard Worker  '-Aimproper_ctypes',
88*61046927SAndroid Build Coastguard Worker  # Some bindgen versions assume `unsafe_op_in_unsafe_fn`
89*61046927SAndroid Build Coastguard Worker  '-Aunused_unsafe',
90*61046927SAndroid Build Coastguard Worker  '-Anon_camel_case_types',
91*61046927SAndroid Build Coastguard Worker  '-Anon_snake_case',
92*61046927SAndroid Build Coastguard Worker  '-Anon_upper_case_globals',
93*61046927SAndroid Build Coastguard Worker]
94*61046927SAndroid Build Coastguard Worker
95*61046927SAndroid Build Coastguard Workerrusticl_bindgen_args = [
96*61046927SAndroid Build Coastguard Worker  '--no-convert-floats',
97*61046927SAndroid Build Coastguard Worker  '--use-array-pointers-in-arguments',
98*61046927SAndroid Build Coastguard Worker  '--default-enum-style', 'rust',
99*61046927SAndroid Build Coastguard Worker  '--with-derive-partialeq',
100*61046927SAndroid Build Coastguard Worker  '--with-derive-eq',
101*61046927SAndroid Build Coastguard Worker  '--with-derive-partialord',
102*61046927SAndroid Build Coastguard Worker  '--with-derive-ord',
103*61046927SAndroid Build Coastguard Worker  '--with-derive-hash',
104*61046927SAndroid Build Coastguard Worker  '--with-derive-default',
105*61046927SAndroid Build Coastguard Worker  '--anon-fields-prefix', 'anon_',
106*61046927SAndroid Build Coastguard Worker]
107*61046927SAndroid Build Coastguard Worker
108*61046927SAndroid Build Coastguard Workerrusticl_bindgen_c_args = [
109*61046927SAndroid Build Coastguard Worker  '-fno-builtin-malloc',
110*61046927SAndroid Build Coastguard Worker]
111*61046927SAndroid Build Coastguard Worker
112*61046927SAndroid Build Coastguard Workercl_c_args = [
113*61046927SAndroid Build Coastguard Worker  '-DCL_USE_DEPRECATED_OPENCL_1_0_APIS',
114*61046927SAndroid Build Coastguard Worker  '-DCL_USE_DEPRECATED_OPENCL_1_1_APIS',
115*61046927SAndroid Build Coastguard Worker  '-DCL_USE_DEPRECATED_OPENCL_1_2_APIS',
116*61046927SAndroid Build Coastguard Worker  '-DCL_USE_DEPRECATED_OPENCL_2_0_APIS',
117*61046927SAndroid Build Coastguard Worker  '-DCL_USE_DEPRECATED_OPENCL_2_1_APIS',
118*61046927SAndroid Build Coastguard Worker  '-DCL_USE_DEPRECATED_OPENCL_2_2_APIS',
119*61046927SAndroid Build Coastguard Worker  '-DCL_TARGET_OPENCL_VERSION=300',
120*61046927SAndroid Build Coastguard Worker]
121*61046927SAndroid Build Coastguard Worker
122*61046927SAndroid Build Coastguard Workerrusticl_opencl_bindings_rs = rust.bindgen(
123*61046927SAndroid Build Coastguard Worker  input : [
124*61046927SAndroid Build Coastguard Worker    'rusticl_opencl_bindings.h',
125*61046927SAndroid Build Coastguard Worker    opencl_headers,
126*61046927SAndroid Build Coastguard Worker  ],
127*61046927SAndroid Build Coastguard Worker  output : 'rusticl_opencl_bindings.rs',
128*61046927SAndroid Build Coastguard Worker  include_directories : [
129*61046927SAndroid Build Coastguard Worker    inc_include,
130*61046927SAndroid Build Coastguard Worker  ],
131*61046927SAndroid Build Coastguard Worker  dependencies : [
132*61046927SAndroid Build Coastguard Worker    dep_x11,
133*61046927SAndroid Build Coastguard Worker  ],
134*61046927SAndroid Build Coastguard Worker  c_args : [
135*61046927SAndroid Build Coastguard Worker    rusticl_bindgen_c_args,
136*61046927SAndroid Build Coastguard Worker    pre_args,
137*61046927SAndroid Build Coastguard Worker    cl_c_args,
138*61046927SAndroid Build Coastguard Worker  ],
139*61046927SAndroid Build Coastguard Worker  args : [
140*61046927SAndroid Build Coastguard Worker    rusticl_bindgen_args,
141*61046927SAndroid Build Coastguard Worker    '--disable-header-comment',
142*61046927SAndroid Build Coastguard Worker    '--ignore-functions',
143*61046927SAndroid Build Coastguard Worker    # needed because bindgen adds *mut void fields...
144*61046927SAndroid Build Coastguard Worker    '--raw-line', 'unsafe impl std::marker::Sync for _cl_icd_dispatch {}',
145*61046927SAndroid Build Coastguard Worker    # _cl_image_desc contains a pointer to _cl_mem
146*61046927SAndroid Build Coastguard Worker    '--raw-line', 'unsafe impl std::marker::Send for _cl_image_desc {}',
147*61046927SAndroid Build Coastguard Worker    '--raw-line', 'unsafe impl std::marker::Sync for _cl_image_desc {}',
148*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'cl_.*',
149*61046927SAndroid Build Coastguard Worker    '--blocklist-type', '(__)?cl_.*[2348(16)]',
150*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'cl.*_fn',
151*61046927SAndroid Build Coastguard Worker    '--allowlist-var', 'CL_.*',
152*61046927SAndroid Build Coastguard Worker    # needed for gl_sharing extension
153*61046927SAndroid Build Coastguard Worker    '--allowlist-var', 'GL_.*',
154*61046927SAndroid Build Coastguard Worker    '--allowlist-var', 'MESA_GLINTEROP_.*',
155*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'PFNEGLGETPROCADDRESSPROC',
156*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'PFNGLXGETPROCADDRESSPROC',
157*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'PFNMESAGLINTEROP.*',
158*61046927SAndroid Build Coastguard Worker    # some info types need to be strongly typed so we can implement various get_infos
159*61046927SAndroid Build Coastguard Worker    '--new-type-alias-deref', 'cl_(mem|image|pipe|gl_texture)_info',
160*61046927SAndroid Build Coastguard Worker    '--new-type-alias-deref', 'cl_kernel_(arg|work_group)_info',
161*61046927SAndroid Build Coastguard Worker    '--new-type-alias-deref', 'cl_(event|profiling)_info',
162*61046927SAndroid Build Coastguard Worker    # turn gl interop enums into constfields so we can compare with rust types
163*61046927SAndroid Build Coastguard Worker    '--constified-enum', 'MESA_GLINTEROP_.*',
164*61046927SAndroid Build Coastguard Worker  ],
165*61046927SAndroid Build Coastguard Worker)
166*61046927SAndroid Build Coastguard Worker
167*61046927SAndroid Build Coastguard Workerrusticl_opencl_gen = static_library(
168*61046927SAndroid Build Coastguard Worker  'rusticl_opencl_gen',
169*61046927SAndroid Build Coastguard Worker  rusticl_opencl_bindings_rs,
170*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
171*61046927SAndroid Build Coastguard Worker  rust_abi : 'rust',
172*61046927SAndroid Build Coastguard Worker  rust_args : [
173*61046927SAndroid Build Coastguard Worker    rusticl_gen_args,
174*61046927SAndroid Build Coastguard Worker  ],
175*61046927SAndroid Build Coastguard Worker)
176*61046927SAndroid Build Coastguard Worker
177*61046927SAndroid Build Coastguard Workerrusticl_llvm_bindings_rs = rust.bindgen(
178*61046927SAndroid Build Coastguard Worker  input : 'rusticl_llvm_bindings.hpp',
179*61046927SAndroid Build Coastguard Worker  output : 'rusticl_llvm_bindings.rs',
180*61046927SAndroid Build Coastguard Worker  c_args : [
181*61046927SAndroid Build Coastguard Worker    rusticl_bindgen_c_args,
182*61046927SAndroid Build Coastguard Worker    pre_args,
183*61046927SAndroid Build Coastguard Worker  ],
184*61046927SAndroid Build Coastguard Worker  dependencies : [
185*61046927SAndroid Build Coastguard Worker    dep_clang,
186*61046927SAndroid Build Coastguard Worker    dep_llvm,
187*61046927SAndroid Build Coastguard Worker    dep_llvmspirvlib,
188*61046927SAndroid Build Coastguard Worker  ],
189*61046927SAndroid Build Coastguard Worker  args : [
190*61046927SAndroid Build Coastguard Worker    # we want to limit what to generate bindings for
191*61046927SAndroid Build Coastguard Worker    '--generate', 'constructors,functions,types',
192*61046927SAndroid Build Coastguard Worker    # and all types will be opaque
193*61046927SAndroid Build Coastguard Worker    '--opaque-type', '.*',
194*61046927SAndroid Build Coastguard Worker    # LLVM/Clang/Translator stuff, only used for build-id
195*61046927SAndroid Build Coastguard Worker    # also only use functions from very basic header files, otherwise bindgen might crash :')
196*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'clang::getClangFullVersion',
197*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'llvm::LLVMContext::LLVMContext',
198*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'llvm::writeSpirv',
199*61046927SAndroid Build Coastguard Worker  ],
200*61046927SAndroid Build Coastguard Worker)
201*61046927SAndroid Build Coastguard Worker
202*61046927SAndroid Build Coastguard Workerrusticl_llvm_gen = static_library(
203*61046927SAndroid Build Coastguard Worker  'rusticl_llvm_gen',
204*61046927SAndroid Build Coastguard Worker  rusticl_llvm_bindings_rs,
205*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
206*61046927SAndroid Build Coastguard Worker  rust_abi : 'rust',
207*61046927SAndroid Build Coastguard Worker  rust_args : [
208*61046927SAndroid Build Coastguard Worker    rusticl_gen_args,
209*61046927SAndroid Build Coastguard Worker  ],
210*61046927SAndroid Build Coastguard Worker)
211*61046927SAndroid Build Coastguard Worker
212*61046927SAndroid Build Coastguard Workerrusticl_libc_bindings_rs = rust.bindgen(
213*61046927SAndroid Build Coastguard Worker  input : 'rusticl_libc_bindings.h',
214*61046927SAndroid Build Coastguard Worker  output : 'rusticl_libc_bindings.rs',
215*61046927SAndroid Build Coastguard Worker  dependencies: [
216*61046927SAndroid Build Coastguard Worker    dep_valgrind,
217*61046927SAndroid Build Coastguard Worker  ],
218*61046927SAndroid Build Coastguard Worker  c_args : [
219*61046927SAndroid Build Coastguard Worker    rusticl_bindgen_c_args,
220*61046927SAndroid Build Coastguard Worker    pre_args,
221*61046927SAndroid Build Coastguard Worker  ],
222*61046927SAndroid Build Coastguard Worker  args : [
223*61046927SAndroid Build Coastguard Worker    rusticl_bindgen_args,
224*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'close',
225*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'dlsym',
226*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'free',
227*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'malloc',
228*61046927SAndroid Build Coastguard Worker  ]
229*61046927SAndroid Build Coastguard Worker)
230*61046927SAndroid Build Coastguard Worker
231*61046927SAndroid Build Coastguard Worker_idep_mesa_bindings = declare_dependency(
232*61046927SAndroid Build Coastguard Worker  sources : spirv_info,
233*61046927SAndroid Build Coastguard Worker)
234*61046927SAndroid Build Coastguard Worker
235*61046927SAndroid Build Coastguard Workerrusticl_mesa_bindings = rust.bindgen(
236*61046927SAndroid Build Coastguard Worker  input : 'rusticl_mesa_bindings.h',
237*61046927SAndroid Build Coastguard Worker  output : 'rusticl_mesa_bindings.rs',
238*61046927SAndroid Build Coastguard Worker  output_inline_wrapper : 'rusticl_mesa_bindings.c',
239*61046927SAndroid Build Coastguard Worker  include_directories : [
240*61046927SAndroid Build Coastguard Worker    inc_gallium,
241*61046927SAndroid Build Coastguard Worker    inc_gallium_aux,
242*61046927SAndroid Build Coastguard Worker    inc_include,
243*61046927SAndroid Build Coastguard Worker    inc_src,
244*61046927SAndroid Build Coastguard Worker  ],
245*61046927SAndroid Build Coastguard Worker  dependencies: [
246*61046927SAndroid Build Coastguard Worker    _idep_mesa_bindings,
247*61046927SAndroid Build Coastguard Worker    idep_nir_headers,
248*61046927SAndroid Build Coastguard Worker    dep_valgrind,
249*61046927SAndroid Build Coastguard Worker  ],
250*61046927SAndroid Build Coastguard Worker  c_args : [
251*61046927SAndroid Build Coastguard Worker    rusticl_bindgen_c_args,
252*61046927SAndroid Build Coastguard Worker    pre_args,
253*61046927SAndroid Build Coastguard Worker  ],
254*61046927SAndroid Build Coastguard Worker  args : [
255*61046927SAndroid Build Coastguard Worker    rusticl_bindgen_args,
256*61046927SAndroid Build Coastguard Worker    # mesa utils
257*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'blob_.*',
258*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'disk_cache_.*',
259*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'float_controls',
260*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'mesa_.*',
261*61046927SAndroid Build Coastguard Worker    '--allowlist-var',          'OS_.*',
262*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'rz?alloc_.*',
263*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'SHA1.*',
264*61046927SAndroid Build Coastguard Worker    '--allowlist-var',          'SHA1_.*',
265*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'u_.*',
266*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'util_format_.*',
267*61046927SAndroid Build Coastguard Worker
268*61046927SAndroid Build Coastguard Worker    # CL API
269*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'cl_sampler_.*_mode',
270*61046927SAndroid Build Coastguard Worker    '--constified-enum-module', 'cl_sampler_.*_mode',
271*61046927SAndroid Build Coastguard Worker
272*61046927SAndroid Build Coastguard Worker    # clc
273*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'clc_.*',
274*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'clc_kernel_arg_access_qualifier',
275*61046927SAndroid Build Coastguard Worker    '--bitfield-enum',          'clc_kernel_arg_access_qualifier',
276*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'clc_kernel_arg_type_qualifier',
277*61046927SAndroid Build Coastguard Worker    '--bitfield-enum',          'clc_kernel_arg_type_qualifier',
278*61046927SAndroid Build Coastguard Worker
279*61046927SAndroid Build Coastguard Worker    # gl
280*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'gl_access_qualifier',
281*61046927SAndroid Build Coastguard Worker    '--bitfield-enum',          'gl_access_qualifier',
282*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'glsl_.*',
283*61046927SAndroid Build Coastguard Worker
284*61046927SAndroid Build Coastguard Worker    # nir and spirv
285*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'nir_.*',
286*61046927SAndroid Build Coastguard Worker    '--allowlist-var',          'nir_debug',
287*61046927SAndroid Build Coastguard Worker    '--allowlist-var',          'NIR_DEBUG_.*',
288*61046927SAndroid Build Coastguard Worker    '--bitfield-enum',          'nir_lower_int64_options',
289*61046927SAndroid Build Coastguard Worker    '--bitfield-enum',          'nir_opt_if_options',
290*61046927SAndroid Build Coastguard Worker    '--bitfield-enum',          'nir_variable_mode',
291*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'should_.*_nir',
292*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'spirv_.*',
293*61046927SAndroid Build Coastguard Worker
294*61046927SAndroid Build Coastguard Worker    # gallium
295*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'pipe_.*',
296*61046927SAndroid Build Coastguard Worker    '--allowlist-var',          'PIPE_.*',
297*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'pipe_endian',
298*61046927SAndroid Build Coastguard Worker    '--bitfield-enum',          'pipe_map_flags',
299*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'pipe_query_type',
300*61046927SAndroid Build Coastguard Worker    '--constified-enum-module', 'pipe_query_type',
301*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'pipe_resource_usage',
302*61046927SAndroid Build Coastguard Worker    '--bitfield-enum',          'pipe_resource_usage',
303*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'pipe_tex_filter',
304*61046927SAndroid Build Coastguard Worker    '--constified-enum-module', 'pipe_tex_filter',
305*61046927SAndroid Build Coastguard Worker    '--allowlist-type',         'pipe_tex_wrap',
306*61046927SAndroid Build Coastguard Worker    '--constified-enum-module', 'pipe_tex_wrap',
307*61046927SAndroid Build Coastguard Worker
308*61046927SAndroid Build Coastguard Worker    # rusticl C functions
309*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'rusticl_.*',
310*61046927SAndroid Build Coastguard Worker    '--allowlist-function',     'std(err|out)_ptr',
311*61046927SAndroid Build Coastguard Worker
312*61046927SAndroid Build Coastguard Worker    # winsys
313*61046927SAndroid Build Coastguard Worker    '--allowlist-var',          'WINSYS_HANDLE_TYPE_.*',
314*61046927SAndroid Build Coastguard Worker  ],
315*61046927SAndroid Build Coastguard Worker)
316*61046927SAndroid Build Coastguard Worker
317*61046927SAndroid Build Coastguard Workerrusticl_c = static_library(
318*61046927SAndroid Build Coastguard Worker  'rusticl_c',
319*61046927SAndroid Build Coastguard Worker  [
320*61046927SAndroid Build Coastguard Worker    'rusticl_nir.c',
321*61046927SAndroid Build Coastguard Worker    'rusticl_nir.h',
322*61046927SAndroid Build Coastguard Worker    'rusticl_system_bindings.c',
323*61046927SAndroid Build Coastguard Worker    'rusticl_system_bindings.h',
324*61046927SAndroid Build Coastguard Worker    rusticl_mesa_bindings[1],
325*61046927SAndroid Build Coastguard Worker    'rusticl_mesa_bindings.h',
326*61046927SAndroid Build Coastguard Worker    sha1_h,
327*61046927SAndroid Build Coastguard Worker  ],
328*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
329*61046927SAndroid Build Coastguard Worker  include_directories : [
330*61046927SAndroid Build Coastguard Worker    fs.relative_to(meson.project_build_root(), meson.current_source_dir()),
331*61046927SAndroid Build Coastguard Worker    inc_gallium,
332*61046927SAndroid Build Coastguard Worker    inc_gallium_aux,
333*61046927SAndroid Build Coastguard Worker    inc_include,
334*61046927SAndroid Build Coastguard Worker    inc_nir,
335*61046927SAndroid Build Coastguard Worker    inc_src,
336*61046927SAndroid Build Coastguard Worker  ],
337*61046927SAndroid Build Coastguard Worker  c_args : [
338*61046927SAndroid Build Coastguard Worker    pre_args,
339*61046927SAndroid Build Coastguard Worker    cl_c_args,
340*61046927SAndroid Build Coastguard Worker    cc.get_supported_arguments('-Wno-missing-prototypes'),
341*61046927SAndroid Build Coastguard Worker  ],
342*61046927SAndroid Build Coastguard Worker  dependencies: [
343*61046927SAndroid Build Coastguard Worker    idep_nir_headers,
344*61046927SAndroid Build Coastguard Worker    dep_valgrind,
345*61046927SAndroid Build Coastguard Worker  ],
346*61046927SAndroid Build Coastguard Worker)
347*61046927SAndroid Build Coastguard Worker
348*61046927SAndroid Build Coastguard Workeridep_rusticl_gen = declare_dependency(
349*61046927SAndroid Build Coastguard Worker  sources: [
350*61046927SAndroid Build Coastguard Worker    rusticl_opencl_bindings_rs,
351*61046927SAndroid Build Coastguard Worker  ],
352*61046927SAndroid Build Coastguard Worker)
353*61046927SAndroid Build Coastguard Worker
354*61046927SAndroid Build Coastguard Workerlibmesa_rust_gen = static_library(
355*61046927SAndroid Build Coastguard Worker  'mesa_rust_gen',
356*61046927SAndroid Build Coastguard Worker  rusticl_mesa_bindings[0],
357*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
358*61046927SAndroid Build Coastguard Worker  link_with: [
359*61046927SAndroid Build Coastguard Worker    libgallium,
360*61046927SAndroid Build Coastguard Worker  ],
361*61046927SAndroid Build Coastguard Worker  dependencies: [
362*61046927SAndroid Build Coastguard Worker    idep_mesaclc,
363*61046927SAndroid Build Coastguard Worker  ],
364*61046927SAndroid Build Coastguard Worker  rust_abi : 'rust',
365*61046927SAndroid Build Coastguard Worker  rust_args : [
366*61046927SAndroid Build Coastguard Worker    rusticl_gen_args,
367*61046927SAndroid Build Coastguard Worker  ],
368*61046927SAndroid Build Coastguard Worker)
369*61046927SAndroid Build Coastguard Worker
370*61046927SAndroid Build Coastguard Workerlibc_rust_gen = static_library(
371*61046927SAndroid Build Coastguard Worker  'libc_rust_gen',
372*61046927SAndroid Build Coastguard Worker  rusticl_libc_bindings_rs,
373*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
374*61046927SAndroid Build Coastguard Worker  rust_abi : 'rust',
375*61046927SAndroid Build Coastguard Worker  rust_args : [
376*61046927SAndroid Build Coastguard Worker    rusticl_gen_args,
377*61046927SAndroid Build Coastguard Worker  ],
378*61046927SAndroid Build Coastguard Worker)
379*61046927SAndroid Build Coastguard Worker
380*61046927SAndroid Build Coastguard Workerlibmesa_rust_util = static_library(
381*61046927SAndroid Build Coastguard Worker  'mesa_rust_util',
382*61046927SAndroid Build Coastguard Worker  [libmesa_rust_util_files],
383*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
384*61046927SAndroid Build Coastguard Worker  rust_abi : 'rust',
385*61046927SAndroid Build Coastguard Worker  rust_args : [
386*61046927SAndroid Build Coastguard Worker    rusticl_args,
387*61046927SAndroid Build Coastguard Worker  ],
388*61046927SAndroid Build Coastguard Worker)
389*61046927SAndroid Build Coastguard Worker
390*61046927SAndroid Build Coastguard Workerlibmesa_rust = static_library(
391*61046927SAndroid Build Coastguard Worker  'mesa_rust',
392*61046927SAndroid Build Coastguard Worker  [libmesa_rust_files],
393*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
394*61046927SAndroid Build Coastguard Worker  rust_abi : 'rust',
395*61046927SAndroid Build Coastguard Worker  rust_args : [
396*61046927SAndroid Build Coastguard Worker    rusticl_args,
397*61046927SAndroid Build Coastguard Worker  ],
398*61046927SAndroid Build Coastguard Worker  link_with : [
399*61046927SAndroid Build Coastguard Worker    libc_rust_gen,
400*61046927SAndroid Build Coastguard Worker    libmesa_rust_gen,
401*61046927SAndroid Build Coastguard Worker    libmesa_rust_util,
402*61046927SAndroid Build Coastguard Worker    rusticl_c,
403*61046927SAndroid Build Coastguard Worker  ]
404*61046927SAndroid Build Coastguard Worker)
405*61046927SAndroid Build Coastguard Worker
406*61046927SAndroid Build Coastguard Workerrusticl_proc_macros = rust.proc_macro(
407*61046927SAndroid Build Coastguard Worker  'rusticl_proc_macros',
408*61046927SAndroid Build Coastguard Worker  [rusticl_proc_macros_files],
409*61046927SAndroid Build Coastguard Worker  rust_args : [
410*61046927SAndroid Build Coastguard Worker    rusticl_args,
411*61046927SAndroid Build Coastguard Worker  ],
412*61046927SAndroid Build Coastguard Worker)
413*61046927SAndroid Build Coastguard Worker
414*61046927SAndroid Build Coastguard Workerlibrusticl = static_library(
415*61046927SAndroid Build Coastguard Worker  'rusticl',
416*61046927SAndroid Build Coastguard Worker  [rusticl_files],
417*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
418*61046927SAndroid Build Coastguard Worker  rust_abi : 'c',
419*61046927SAndroid Build Coastguard Worker  rust_args : [
420*61046927SAndroid Build Coastguard Worker    rusticl_args,
421*61046927SAndroid Build Coastguard Worker  ],
422*61046927SAndroid Build Coastguard Worker  link_with : [
423*61046927SAndroid Build Coastguard Worker    libc_rust_gen,
424*61046927SAndroid Build Coastguard Worker    libmesa_rust,
425*61046927SAndroid Build Coastguard Worker    libmesa_rust_gen,
426*61046927SAndroid Build Coastguard Worker    libmesa_rust_util,
427*61046927SAndroid Build Coastguard Worker    rusticl_llvm_gen,
428*61046927SAndroid Build Coastguard Worker    rusticl_opencl_gen,
429*61046927SAndroid Build Coastguard Worker    rusticl_proc_macros,
430*61046927SAndroid Build Coastguard Worker  ],
431*61046927SAndroid Build Coastguard Worker  dependencies : [
432*61046927SAndroid Build Coastguard Worker    idep_rusticl_gen,
433*61046927SAndroid Build Coastguard Worker  ],
434*61046927SAndroid Build Coastguard Worker)
435