xref: /aosp_15_r20/external/mesa3d/src/util/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright © 2017 Intel Corporation
2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Worker# inc_util only depends inc_include, this folder and nothing else under src
5*61046927SAndroid Build Coastguard Worker# so we use include_directories('..') instead of inc_src to tell the fact
6*61046927SAndroid Build Coastguard Worker# util is self contained.
7*61046927SAndroid Build Coastguard Workerinc_util = [inc_include, include_directories('..')]
8*61046927SAndroid Build Coastguard Worker
9*61046927SAndroid Build Coastguard Workerif with_platform_android
10*61046927SAndroid Build Coastguard Workersubdir('u_gralloc')
11*61046927SAndroid Build Coastguard Workerendif
12*61046927SAndroid Build Coastguard Worker
13*61046927SAndroid Build Coastguard Workersubdir('blake3')
14*61046927SAndroid Build Coastguard Worker
15*61046927SAndroid Build Coastguard Workerfiles_mesa_util = files(
16*61046927SAndroid Build Coastguard Worker  'anon_file.h',
17*61046927SAndroid Build Coastguard Worker  'anon_file.c',
18*61046927SAndroid Build Coastguard Worker  'bigmath.h',
19*61046927SAndroid Build Coastguard Worker  'bitscan.c',
20*61046927SAndroid Build Coastguard Worker  'bitscan.h',
21*61046927SAndroid Build Coastguard Worker  'bitset.h',
22*61046927SAndroid Build Coastguard Worker  'blend.h',
23*61046927SAndroid Build Coastguard Worker  'blob.c',
24*61046927SAndroid Build Coastguard Worker  'blob.h',
25*61046927SAndroid Build Coastguard Worker  'box.h',
26*61046927SAndroid Build Coastguard Worker  'build_id.c',
27*61046927SAndroid Build Coastguard Worker  'build_id.h',
28*61046927SAndroid Build Coastguard Worker  'cnd_monotonic.c',
29*61046927SAndroid Build Coastguard Worker  'cnd_monotonic.h',
30*61046927SAndroid Build Coastguard Worker  'compiler.h',
31*61046927SAndroid Build Coastguard Worker  'compress.c',
32*61046927SAndroid Build Coastguard Worker  'compress.h',
33*61046927SAndroid Build Coastguard Worker  'thread_sched.c',
34*61046927SAndroid Build Coastguard Worker  'thread_sched.h',
35*61046927SAndroid Build Coastguard Worker  'crc32.c',
36*61046927SAndroid Build Coastguard Worker  'crc32.h',
37*61046927SAndroid Build Coastguard Worker  'dag.c',
38*61046927SAndroid Build Coastguard Worker  'disk_cache.c',
39*61046927SAndroid Build Coastguard Worker  'disk_cache.h',
40*61046927SAndroid Build Coastguard Worker  'disk_cache_os.c',
41*61046927SAndroid Build Coastguard Worker  'disk_cache_os.h',
42*61046927SAndroid Build Coastguard Worker  'double.c',
43*61046927SAndroid Build Coastguard Worker  'double.h',
44*61046927SAndroid Build Coastguard Worker  'enum_operators.h',
45*61046927SAndroid Build Coastguard Worker  'fast_idiv_by_const.c',
46*61046927SAndroid Build Coastguard Worker  'fast_idiv_by_const.h',
47*61046927SAndroid Build Coastguard Worker  'format_r11g11b10f.h',
48*61046927SAndroid Build Coastguard Worker  'format_rgb9e5.h',
49*61046927SAndroid Build Coastguard Worker  'format_srgb.h',
50*61046927SAndroid Build Coastguard Worker  'fossilize_db.c',
51*61046927SAndroid Build Coastguard Worker  'fossilize_db.h',
52*61046927SAndroid Build Coastguard Worker  'futex.c',
53*61046927SAndroid Build Coastguard Worker  'futex.h',
54*61046927SAndroid Build Coastguard Worker  'glheader.h',
55*61046927SAndroid Build Coastguard Worker  'half_float.c',
56*61046927SAndroid Build Coastguard Worker  'half_float.h',
57*61046927SAndroid Build Coastguard Worker  'hash_table.c',
58*61046927SAndroid Build Coastguard Worker  'hash_table.h',
59*61046927SAndroid Build Coastguard Worker  'helpers.c',
60*61046927SAndroid Build Coastguard Worker  'helpers.h',
61*61046927SAndroid Build Coastguard Worker  'hex.h',
62*61046927SAndroid Build Coastguard Worker  'u_idalloc.c',
63*61046927SAndroid Build Coastguard Worker  'u_idalloc.h',
64*61046927SAndroid Build Coastguard Worker  'list.h',
65*61046927SAndroid Build Coastguard Worker  'log.c',
66*61046927SAndroid Build Coastguard Worker  'macros.h',
67*61046927SAndroid Build Coastguard Worker  'memstream.c',
68*61046927SAndroid Build Coastguard Worker  'memstream.h',
69*61046927SAndroid Build Coastguard Worker  'mesa-sha1.c',
70*61046927SAndroid Build Coastguard Worker  'mesa-sha1.h',
71*61046927SAndroid Build Coastguard Worker  'mesa-blake3.c',
72*61046927SAndroid Build Coastguard Worker  'mesa-blake3.h',
73*61046927SAndroid Build Coastguard Worker  'os_time.c',
74*61046927SAndroid Build Coastguard Worker  'os_time.h',
75*61046927SAndroid Build Coastguard Worker  'os_file.c',
76*61046927SAndroid Build Coastguard Worker  'os_memory_fd.c',
77*61046927SAndroid Build Coastguard Worker  'os_misc.c',
78*61046927SAndroid Build Coastguard Worker  'os_misc.h',
79*61046927SAndroid Build Coastguard Worker  'os_socket.c',
80*61046927SAndroid Build Coastguard Worker  'os_socket.h',
81*61046927SAndroid Build Coastguard Worker  'ptralloc.h',
82*61046927SAndroid Build Coastguard Worker  'perf/u_trace.h',
83*61046927SAndroid Build Coastguard Worker  'perf/u_trace.c',
84*61046927SAndroid Build Coastguard Worker  'perf/u_trace_priv.h',
85*61046927SAndroid Build Coastguard Worker  'u_process.c',
86*61046927SAndroid Build Coastguard Worker  'u_process.h',
87*61046927SAndroid Build Coastguard Worker  'u_qsort.cpp',
88*61046927SAndroid Build Coastguard Worker  'u_qsort.h',
89*61046927SAndroid Build Coastguard Worker  'rwlock.c',
90*61046927SAndroid Build Coastguard Worker  'rwlock.h',
91*61046927SAndroid Build Coastguard Worker  'sha1/sha1.c',
92*61046927SAndroid Build Coastguard Worker  'sha1/sha1.h',
93*61046927SAndroid Build Coastguard Worker  'ralloc.c',
94*61046927SAndroid Build Coastguard Worker  'ralloc.h',
95*61046927SAndroid Build Coastguard Worker  'rand_xor.c',
96*61046927SAndroid Build Coastguard Worker  'rand_xor.h',
97*61046927SAndroid Build Coastguard Worker  'rb_tree.c',
98*61046927SAndroid Build Coastguard Worker  'rb_tree.h',
99*61046927SAndroid Build Coastguard Worker  'register_allocate.c',
100*61046927SAndroid Build Coastguard Worker  'register_allocate.h',
101*61046927SAndroid Build Coastguard Worker  'rgtc.c',
102*61046927SAndroid Build Coastguard Worker  'rgtc.h',
103*61046927SAndroid Build Coastguard Worker  'rounding.h',
104*61046927SAndroid Build Coastguard Worker  'set.c',
105*61046927SAndroid Build Coastguard Worker  'set.h',
106*61046927SAndroid Build Coastguard Worker  'simple_mtx.c',
107*61046927SAndroid Build Coastguard Worker  'simple_mtx.h',
108*61046927SAndroid Build Coastguard Worker  'slab.c',
109*61046927SAndroid Build Coastguard Worker  'slab.h',
110*61046927SAndroid Build Coastguard Worker  'softfloat.c',
111*61046927SAndroid Build Coastguard Worker  'softfloat.h',
112*61046927SAndroid Build Coastguard Worker  'sparse_array.c',
113*61046927SAndroid Build Coastguard Worker  'sparse_array.h',
114*61046927SAndroid Build Coastguard Worker  'string_buffer.c',
115*61046927SAndroid Build Coastguard Worker  'string_buffer.h',
116*61046927SAndroid Build Coastguard Worker  'strndup.h',
117*61046927SAndroid Build Coastguard Worker  'strtod.c',
118*61046927SAndroid Build Coastguard Worker  'strtod.h',
119*61046927SAndroid Build Coastguard Worker  'texcompress_astc_luts.cpp',
120*61046927SAndroid Build Coastguard Worker  'texcompress_astc_luts.h',
121*61046927SAndroid Build Coastguard Worker  'texcompress_astc_luts_wrap.cpp',
122*61046927SAndroid Build Coastguard Worker  'texcompress_astc_luts_wrap.h',
123*61046927SAndroid Build Coastguard Worker  'timespec.h',
124*61046927SAndroid Build Coastguard Worker  'u_atomic.c',
125*61046927SAndroid Build Coastguard Worker  'u_atomic.h',
126*61046927SAndroid Build Coastguard Worker  'u_call_once.c',
127*61046927SAndroid Build Coastguard Worker  'u_call_once.h',
128*61046927SAndroid Build Coastguard Worker  'u_dl.c',
129*61046927SAndroid Build Coastguard Worker  'u_dl.h',
130*61046927SAndroid Build Coastguard Worker  'u_dynarray.c',
131*61046927SAndroid Build Coastguard Worker  'u_dynarray.h',
132*61046927SAndroid Build Coastguard Worker  'u_endian.h',
133*61046927SAndroid Build Coastguard Worker  'u_hash_table.c',
134*61046927SAndroid Build Coastguard Worker  'u_hash_table.h',
135*61046927SAndroid Build Coastguard Worker  'u_pointer.h',
136*61046927SAndroid Build Coastguard Worker  'u_queue.c',
137*61046927SAndroid Build Coastguard Worker  'u_queue.h',
138*61046927SAndroid Build Coastguard Worker  'u_string.h',
139*61046927SAndroid Build Coastguard Worker  'u_thread.c',
140*61046927SAndroid Build Coastguard Worker  'u_thread.h',
141*61046927SAndroid Build Coastguard Worker  'u_vector.c',
142*61046927SAndroid Build Coastguard Worker  'u_vector.h',
143*61046927SAndroid Build Coastguard Worker  'u_math.c',
144*61046927SAndroid Build Coastguard Worker  'u_math.h',
145*61046927SAndroid Build Coastguard Worker  'u_memset.h',
146*61046927SAndroid Build Coastguard Worker  'u_mm.c',
147*61046927SAndroid Build Coastguard Worker  'u_mm.h',
148*61046927SAndroid Build Coastguard Worker  'u_pack_color.h',
149*61046927SAndroid Build Coastguard Worker  'u_debug.c',
150*61046927SAndroid Build Coastguard Worker  'u_debug.h',
151*61046927SAndroid Build Coastguard Worker  'u_debug_memory.c',
152*61046927SAndroid Build Coastguard Worker  'u_cpu_detect.c',
153*61046927SAndroid Build Coastguard Worker  'u_cpu_detect.h',
154*61046927SAndroid Build Coastguard Worker  'u_printf.c',
155*61046927SAndroid Build Coastguard Worker  'u_printf.h',
156*61046927SAndroid Build Coastguard Worker  'u_worklist.c',
157*61046927SAndroid Build Coastguard Worker  'u_worklist.h',
158*61046927SAndroid Build Coastguard Worker  'vl_vlc.h',
159*61046927SAndroid Build Coastguard Worker  'vl_rbsp.h',
160*61046927SAndroid Build Coastguard Worker  'vl_zscan_data.h',
161*61046927SAndroid Build Coastguard Worker  'vl_zscan_data.c',
162*61046927SAndroid Build Coastguard Worker  'vma.c',
163*61046927SAndroid Build Coastguard Worker  'vma.h',
164*61046927SAndroid Build Coastguard Worker  'xxhash.h',
165*61046927SAndroid Build Coastguard Worker  'mesa_cache_db.c',
166*61046927SAndroid Build Coastguard Worker  'mesa_cache_db.h',
167*61046927SAndroid Build Coastguard Worker  'mesa_cache_db_multipart.c',
168*61046927SAndroid Build Coastguard Worker  'mesa_cache_db_multipart.h',
169*61046927SAndroid Build Coastguard Worker)
170*61046927SAndroid Build Coastguard Worker
171*61046927SAndroid Build Coastguard Workerfiles_drirc = files('00-mesa-defaults.conf')
172*61046927SAndroid Build Coastguard Worker
173*61046927SAndroid Build Coastguard Workerif with_amd_vk
174*61046927SAndroid Build Coastguard Worker  files_drirc += files('00-radv-defaults.conf')
175*61046927SAndroid Build Coastguard Workerendif
176*61046927SAndroid Build Coastguard Worker
177*61046927SAndroid Build Coastguard Workerif with_tests
178*61046927SAndroid Build Coastguard Worker  prog_xmllint = find_program('xmllint', required : false, native : true)
179*61046927SAndroid Build Coastguard Worker  if prog_xmllint.found()
180*61046927SAndroid Build Coastguard Worker    test(
181*61046927SAndroid Build Coastguard Worker      'drirc xml validation',
182*61046927SAndroid Build Coastguard Worker      prog_xmllint,
183*61046927SAndroid Build Coastguard Worker      args : ['--noout', '--valid', files_drirc],
184*61046927SAndroid Build Coastguard Worker      suite : ['util'],
185*61046927SAndroid Build Coastguard Worker    )
186*61046927SAndroid Build Coastguard Worker  endif
187*61046927SAndroid Build Coastguard Workerendif
188*61046927SAndroid Build Coastguard Worker
189*61046927SAndroid Build Coastguard Workerfiles_xmlconfig = files(
190*61046927SAndroid Build Coastguard Worker  'xmlconfig.c',
191*61046927SAndroid Build Coastguard Worker  'xmlconfig.h',
192*61046927SAndroid Build Coastguard Worker)
193*61046927SAndroid Build Coastguard Worker
194*61046927SAndroid Build Coastguard Workerfiles_xmlconfig += custom_target(
195*61046927SAndroid Build Coastguard Worker  'driconf_static.h',
196*61046927SAndroid Build Coastguard Worker  input: ['driconf_static.py'] + files_drirc,
197*61046927SAndroid Build Coastguard Worker  output: 'driconf_static.h',
198*61046927SAndroid Build Coastguard Worker  command: [
199*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT@', '@OUTPUT@',
200*61046927SAndroid Build Coastguard Worker  ],
201*61046927SAndroid Build Coastguard Worker)
202*61046927SAndroid Build Coastguard Worker
203*61046927SAndroid Build Coastguard Workerformat_srgb = custom_target(
204*61046927SAndroid Build Coastguard Worker  'format_srgb',
205*61046927SAndroid Build Coastguard Worker  input : ['format_srgb.py'],
206*61046927SAndroid Build Coastguard Worker  output : 'format_srgb.c',
207*61046927SAndroid Build Coastguard Worker  command : [prog_python, '@INPUT0@'],
208*61046927SAndroid Build Coastguard Worker  capture : true,
209*61046927SAndroid Build Coastguard Worker)
210*61046927SAndroid Build Coastguard Worker
211*61046927SAndroid Build Coastguard Worker# subdir format provide files_mesa_format
212*61046927SAndroid Build Coastguard Workersubdir('format')
213*61046927SAndroid Build Coastguard Workerfiles_mesa_util += files_mesa_format
214*61046927SAndroid Build Coastguard Worker
215*61046927SAndroid Build Coastguard Workerdeps_for_libmesa_util = [
216*61046927SAndroid Build Coastguard Worker  dep_zlib,
217*61046927SAndroid Build Coastguard Worker  dep_clock,
218*61046927SAndroid Build Coastguard Worker  dep_thread,
219*61046927SAndroid Build Coastguard Worker  dep_atomic,
220*61046927SAndroid Build Coastguard Worker  dep_m,
221*61046927SAndroid Build Coastguard Worker  dep_valgrind,
222*61046927SAndroid Build Coastguard Worker  dep_zstd,
223*61046927SAndroid Build Coastguard Worker  dep_dl,
224*61046927SAndroid Build Coastguard Worker  dep_unwind,
225*61046927SAndroid Build Coastguard Worker  dep_futex,
226*61046927SAndroid Build Coastguard Worker  idep_blake3,
227*61046927SAndroid Build Coastguard Worker  idep_mesautilc11,
228*61046927SAndroid Build Coastguard Worker  idep_mesautilformat,
229*61046927SAndroid Build Coastguard Worker]
230*61046927SAndroid Build Coastguard Worker
231*61046927SAndroid Build Coastguard Workerif with_platform_android
232*61046927SAndroid Build Coastguard Worker  deps_for_libmesa_util += dep_android
233*61046927SAndroid Build Coastguard Worker  files_debug_stack = files('u_debug_stack_android.cpp')
234*61046927SAndroid Build Coastguard Workerelse
235*61046927SAndroid Build Coastguard Worker  files_debug_stack = files(
236*61046927SAndroid Build Coastguard Worker    'dbghelp.h',
237*61046927SAndroid Build Coastguard Worker    'u_debug_stack.c',
238*61046927SAndroid Build Coastguard Worker    'u_debug_symbol.c',
239*61046927SAndroid Build Coastguard Worker    'u_debug_symbol.h',
240*61046927SAndroid Build Coastguard Worker  )
241*61046927SAndroid Build Coastguard Workerendif
242*61046927SAndroid Build Coastguard Worker
243*61046927SAndroid Build Coastguard Workerif with_platform_haiku
244*61046927SAndroid Build Coastguard Worker  deps_for_libmesa_util += dep_network
245*61046927SAndroid Build Coastguard Workerendif
246*61046927SAndroid Build Coastguard Worker
247*61046927SAndroid Build Coastguard Workerif with_perfetto
248*61046927SAndroid Build Coastguard Worker  files_mesa_util += files(
249*61046927SAndroid Build Coastguard Worker    'perf/u_perfetto.cc',
250*61046927SAndroid Build Coastguard Worker    'perf/u_perfetto.h',
251*61046927SAndroid Build Coastguard Worker  )
252*61046927SAndroid Build Coastguard Worker  deps_for_libmesa_util += dep_perfetto
253*61046927SAndroid Build Coastguard Workerendif
254*61046927SAndroid Build Coastguard Worker
255*61046927SAndroid Build Coastguard Workerif with_gpuvis
256*61046927SAndroid Build Coastguard Worker  files_mesa_util += files(
257*61046927SAndroid Build Coastguard Worker    'perf/u_gpuvis.c',
258*61046927SAndroid Build Coastguard Worker    'perf/u_gpuvis.h',
259*61046927SAndroid Build Coastguard Worker    'perf/gpuvis_trace_utils.h',
260*61046927SAndroid Build Coastguard Worker  )
261*61046927SAndroid Build Coastguard Workerendif
262*61046927SAndroid Build Coastguard Worker
263*61046927SAndroid Build Coastguard Workeru_trace_py = files('perf/u_trace.py')
264*61046927SAndroid Build Coastguard Worker
265*61046927SAndroid Build Coastguard Workerlibmesa_util_sse41 = static_library(
266*61046927SAndroid Build Coastguard Worker  'mesa_util_sse41',
267*61046927SAndroid Build Coastguard Worker  files('streaming-load-memcpy.c'),
268*61046927SAndroid Build Coastguard Worker  c_args : [c_msvc_compat_args, sse41_args],
269*61046927SAndroid Build Coastguard Worker  include_directories : [inc_util],
270*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
271*61046927SAndroid Build Coastguard Worker)
272*61046927SAndroid Build Coastguard Worker
273*61046927SAndroid Build Coastguard Worker_libmesa_util = static_library(
274*61046927SAndroid Build Coastguard Worker  'mesa_util',
275*61046927SAndroid Build Coastguard Worker  [files_mesa_util, files_debug_stack, format_srgb],
276*61046927SAndroid Build Coastguard Worker  include_directories : [inc_util, include_directories('format')],
277*61046927SAndroid Build Coastguard Worker  dependencies : deps_for_libmesa_util,
278*61046927SAndroid Build Coastguard Worker  link_with: [libmesa_util_sse41],
279*61046927SAndroid Build Coastguard Worker  c_args : [c_msvc_compat_args],
280*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
281*61046927SAndroid Build Coastguard Worker  build_by_default : false
282*61046927SAndroid Build Coastguard Worker)
283*61046927SAndroid Build Coastguard Worker
284*61046927SAndroid Build Coastguard Workeridep_mesautil = declare_dependency(
285*61046927SAndroid Build Coastguard Worker  link_with : _libmesa_util,
286*61046927SAndroid Build Coastguard Worker  include_directories : [inc_util],
287*61046927SAndroid Build Coastguard Worker  dependencies : deps_for_libmesa_util,
288*61046927SAndroid Build Coastguard Worker)
289*61046927SAndroid Build Coastguard Worker
290*61046927SAndroid Build Coastguard Worker# Only install the drirc file if we build with support for parsing drirc files
291*61046927SAndroid Build Coastguard Workerif use_xmlconfig
292*61046927SAndroid Build Coastguard Worker   install_data(files_drirc, install_dir : join_paths(get_option('datadir'), 'drirc.d'), install_tag : 'runtime')
293*61046927SAndroid Build Coastguard Workerendif
294*61046927SAndroid Build Coastguard Worker
295*61046927SAndroid Build Coastguard Workerxmlconfig_deps = []
296*61046927SAndroid Build Coastguard Workerif use_xmlconfig
297*61046927SAndroid Build Coastguard Worker  xmlconfig_deps += dep_expat
298*61046927SAndroid Build Coastguard Workerendif
299*61046927SAndroid Build Coastguard Workerxmlconfig_deps += dep_regex
300*61046927SAndroid Build Coastguard Worker
301*61046927SAndroid Build Coastguard Workerc_xmlconfig_arg = '-DWITH_XMLCONFIG=@0@'.format(use_xmlconfig.to_int())
302*61046927SAndroid Build Coastguard Worker
303*61046927SAndroid Build Coastguard Worker_libxmlconfig = static_library(
304*61046927SAndroid Build Coastguard Worker  'xmlconfig',
305*61046927SAndroid Build Coastguard Worker  files_xmlconfig,
306*61046927SAndroid Build Coastguard Worker  dependencies : [idep_mesautil, dep_m, xmlconfig_deps],
307*61046927SAndroid Build Coastguard Worker  c_args : [
308*61046927SAndroid Build Coastguard Worker    c_msvc_compat_args,
309*61046927SAndroid Build Coastguard Worker    c_xmlconfig_arg,
310*61046927SAndroid Build Coastguard Worker    '-DSYSCONFDIR="@0@"'.format(
311*61046927SAndroid Build Coastguard Worker      join_paths(get_option('prefix'), get_option('sysconfdir'))
312*61046927SAndroid Build Coastguard Worker    ),
313*61046927SAndroid Build Coastguard Worker    '-DDATADIR="@0@"'.format(
314*61046927SAndroid Build Coastguard Worker      join_paths(get_option('prefix'), get_option('datadir'))
315*61046927SAndroid Build Coastguard Worker    ),
316*61046927SAndroid Build Coastguard Worker  ],
317*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
318*61046927SAndroid Build Coastguard Worker  build_by_default : false,
319*61046927SAndroid Build Coastguard Worker)
320*61046927SAndroid Build Coastguard Worker
321*61046927SAndroid Build Coastguard Workeridep_xmlconfig = declare_dependency(
322*61046927SAndroid Build Coastguard Worker  dependencies : xmlconfig_deps,
323*61046927SAndroid Build Coastguard Worker  link_with : _libxmlconfig,
324*61046927SAndroid Build Coastguard Worker)
325*61046927SAndroid Build Coastguard Worker
326*61046927SAndroid Build Coastguard Workerfiles_xxd = files('xxd.py')
327*61046927SAndroid Build Coastguard Workerglsl2spirv = files('glsl2spirv.py')
328*61046927SAndroid Build Coastguard Worker
329*61046927SAndroid Build Coastguard Workerdevenv.set('DRIRC_CONFIGDIR', meson.current_source_dir())
330*61046927SAndroid Build Coastguard Worker
331*61046927SAndroid Build Coastguard Worker_libparson = static_library(
332*61046927SAndroid Build Coastguard Worker  'parson',
333*61046927SAndroid Build Coastguard Worker  ['parson.c', 'parson.h'],
334*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
335*61046927SAndroid Build Coastguard Worker  build_by_default : false,
336*61046927SAndroid Build Coastguard Worker)
337*61046927SAndroid Build Coastguard Worker
338*61046927SAndroid Build Coastguard Workeridep_parson = declare_dependency(
339*61046927SAndroid Build Coastguard Worker  link_with :  _libparson,
340*61046927SAndroid Build Coastguard Worker)
341*61046927SAndroid Build Coastguard Worker
342*61046927SAndroid Build Coastguard Workerif with_tests
343*61046927SAndroid Build Coastguard Worker  # DRI_CONF macros use designated initializers (required for union
344*61046927SAndroid Build Coastguard Worker  # initializaiton), so we need c++2a since gtest forces us to use c++
345*61046927SAndroid Build Coastguard Worker  if host_machine.system() != 'windows' and cpp.has_argument('-std=c++2a')
346*61046927SAndroid Build Coastguard Worker    test('xmlconfig',
347*61046927SAndroid Build Coastguard Worker      executable('xmlconfig_test',
348*61046927SAndroid Build Coastguard Worker        files('tests/xmlconfig.cpp'),
349*61046927SAndroid Build Coastguard Worker        dependencies : [idep_mesautil, idep_xmlconfig, idep_gtest],
350*61046927SAndroid Build Coastguard Worker        override_options : ['cpp_std=c++2a'],
351*61046927SAndroid Build Coastguard Worker        cpp_args: ['-Wno-write-strings', c_xmlconfig_arg]
352*61046927SAndroid Build Coastguard Worker      ),
353*61046927SAndroid Build Coastguard Worker      suite : ['util'],
354*61046927SAndroid Build Coastguard Worker      env: ['HOME=' + join_paths(meson.current_source_dir(),
355*61046927SAndroid Build Coastguard Worker                                 'tests', 'drirc_home'),
356*61046927SAndroid Build Coastguard Worker            'DRIRC_CONFIGDIR=' + join_paths(meson.current_source_dir(),
357*61046927SAndroid Build Coastguard Worker                                            'tests', 'drirc_configdir')],
358*61046927SAndroid Build Coastguard Worker      protocol : 'gtest',
359*61046927SAndroid Build Coastguard Worker    )
360*61046927SAndroid Build Coastguard Worker  endif
361*61046927SAndroid Build Coastguard Worker
362*61046927SAndroid Build Coastguard Worker  files_util_tests = files(
363*61046927SAndroid Build Coastguard Worker    'tests/bitset_test.cpp',
364*61046927SAndroid Build Coastguard Worker    'tests/blob_test.cpp',
365*61046927SAndroid Build Coastguard Worker    'tests/dag_test.cpp',
366*61046927SAndroid Build Coastguard Worker    'tests/fast_idiv_by_const_test.cpp',
367*61046927SAndroid Build Coastguard Worker    'tests/fast_urem_by_const_test.cpp',
368*61046927SAndroid Build Coastguard Worker    'tests/gc_alloc_tests.cpp',
369*61046927SAndroid Build Coastguard Worker    'tests/half_float_test.cpp',
370*61046927SAndroid Build Coastguard Worker    'tests/int_min_max.cpp',
371*61046927SAndroid Build Coastguard Worker    'tests/linear_test.cpp',
372*61046927SAndroid Build Coastguard Worker    'tests/mesa-sha1_test.cpp',
373*61046927SAndroid Build Coastguard Worker    'tests/os_mman_test.cpp',
374*61046927SAndroid Build Coastguard Worker    'tests/perf/u_trace_test.cpp',
375*61046927SAndroid Build Coastguard Worker    'tests/rb_tree_test.cpp',
376*61046927SAndroid Build Coastguard Worker    'tests/register_allocate_test.cpp',
377*61046927SAndroid Build Coastguard Worker    'tests/roundeven_test.cpp',
378*61046927SAndroid Build Coastguard Worker    'tests/set_test.cpp',
379*61046927SAndroid Build Coastguard Worker    'tests/string_buffer_test.cpp',
380*61046927SAndroid Build Coastguard Worker    'tests/timespec_test.cpp',
381*61046927SAndroid Build Coastguard Worker    'tests/u_atomic_test.cpp',
382*61046927SAndroid Build Coastguard Worker    'tests/u_call_once_test.cpp',
383*61046927SAndroid Build Coastguard Worker    'tests/u_debug_stack_test.cpp',
384*61046927SAndroid Build Coastguard Worker    'tests/u_debug_test.cpp',
385*61046927SAndroid Build Coastguard Worker    'tests/u_printf_test.cpp',
386*61046927SAndroid Build Coastguard Worker    'tests/u_qsort_test.cpp',
387*61046927SAndroid Build Coastguard Worker    'tests/vector_test.cpp',
388*61046927SAndroid Build Coastguard Worker  )
389*61046927SAndroid Build Coastguard Worker
390*61046927SAndroid Build Coastguard Worker  # FIXME: this test cause a big timeout on MacOS
391*61046927SAndroid Build Coastguard Worker  if host_machine.system() != 'darwin'
392*61046927SAndroid Build Coastguard Worker    files_util_tests += files(
393*61046927SAndroid Build Coastguard Worker      'tests/sparse_array_test.cpp',
394*61046927SAndroid Build Coastguard Worker    )
395*61046927SAndroid Build Coastguard Worker  endif
396*61046927SAndroid Build Coastguard Worker
397*61046927SAndroid Build Coastguard Worker  if with_shader_cache
398*61046927SAndroid Build Coastguard Worker    files_util_tests += files(
399*61046927SAndroid Build Coastguard Worker      'tests/cache_test.cpp',
400*61046927SAndroid Build Coastguard Worker    )
401*61046927SAndroid Build Coastguard Worker  endif
402*61046927SAndroid Build Coastguard Worker
403*61046927SAndroid Build Coastguard Worker  test(
404*61046927SAndroid Build Coastguard Worker    'util_tests',
405*61046927SAndroid Build Coastguard Worker    executable(
406*61046927SAndroid Build Coastguard Worker      'util_tests',
407*61046927SAndroid Build Coastguard Worker      files_util_tests,
408*61046927SAndroid Build Coastguard Worker      dependencies : [idep_mesautil, idep_gtest],
409*61046927SAndroid Build Coastguard Worker    ),
410*61046927SAndroid Build Coastguard Worker    suite : ['util'],
411*61046927SAndroid Build Coastguard Worker    protocol : 'gtest',
412*61046927SAndroid Build Coastguard Worker    is_parallel : false,
413*61046927SAndroid Build Coastguard Worker    timeout : 180,
414*61046927SAndroid Build Coastguard Worker  )
415*61046927SAndroid Build Coastguard Worker
416*61046927SAndroid Build Coastguard Worker  process_test_exe = executable(
417*61046927SAndroid Build Coastguard Worker    'process_test',
418*61046927SAndroid Build Coastguard Worker    files('tests/process_test.c'),
419*61046927SAndroid Build Coastguard Worker    dependencies : idep_mesautil,
420*61046927SAndroid Build Coastguard Worker    c_args : [c_msvc_compat_args],
421*61046927SAndroid Build Coastguard Worker  )
422*61046927SAndroid Build Coastguard Worker  if (host_machine.system() == 'windows' and build_machine.system() != 'windows')
423*61046927SAndroid Build Coastguard Worker    # This conversion is only required on mingw crosscompilers, otherwise we hit at least one of these issues
424*61046927SAndroid Build Coastguard Worker    # https://gitlab.freedesktop.org/mesa/mesa/-/issues/2690
425*61046927SAndroid Build Coastguard Worker    # https://gitlab.freedesktop.org/mesa/mesa/-/issues/2788
426*61046927SAndroid Build Coastguard Worker    prog_winepath = find_program('winepath')
427*61046927SAndroid Build Coastguard Worker    process_test_exe_full_path = run_command(
428*61046927SAndroid Build Coastguard Worker      prog_winepath, '-w', process_test_exe.full_path(),
429*61046927SAndroid Build Coastguard Worker      check : true
430*61046927SAndroid Build Coastguard Worker    ).stdout().strip()
431*61046927SAndroid Build Coastguard Worker  else
432*61046927SAndroid Build Coastguard Worker    process_test_exe_full_path = process_test_exe.full_path()
433*61046927SAndroid Build Coastguard Worker  endif
434*61046927SAndroid Build Coastguard Worker
435*61046927SAndroid Build Coastguard Worker  test(
436*61046927SAndroid Build Coastguard Worker    'process',
437*61046927SAndroid Build Coastguard Worker    process_test_exe,
438*61046927SAndroid Build Coastguard Worker    suite : ['util'],
439*61046927SAndroid Build Coastguard Worker    env: ['BUILD_FULL_PATH='+process_test_exe_full_path]
440*61046927SAndroid Build Coastguard Worker  )
441*61046927SAndroid Build Coastguard Worker
442*61046927SAndroid Build Coastguard Worker  test(
443*61046927SAndroid Build Coastguard Worker    'process_with_overrides',
444*61046927SAndroid Build Coastguard Worker    process_test_exe,
445*61046927SAndroid Build Coastguard Worker    suite : ['util'],
446*61046927SAndroid Build Coastguard Worker    env: [
447*61046927SAndroid Build Coastguard Worker      'BUILD_FULL_PATH='+process_test_exe_full_path,
448*61046927SAndroid Build Coastguard Worker      'MESA_PROCESS_NAME=hello',
449*61046927SAndroid Build Coastguard Worker    ]
450*61046927SAndroid Build Coastguard Worker  )
451*61046927SAndroid Build Coastguard Worker
452*61046927SAndroid Build Coastguard Worker  subdir('tests/hash_table')
453*61046927SAndroid Build Coastguard Worker  subdir('tests/vma')
454*61046927SAndroid Build Coastguard Worker  subdir('tests/format')
455*61046927SAndroid Build Coastguard Workerendif
456