xref: /aosp_15_r20/external/virglrenderer/meson.build (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1*bbecb9d1SAndroid Build Coastguard Worker#############################################################################
2*bbecb9d1SAndroid Build Coastguard Worker#
3*bbecb9d1SAndroid Build Coastguard Worker# Copyright (C) 2019 Collabora Ltd
4*bbecb9d1SAndroid Build Coastguard Worker#
5*bbecb9d1SAndroid Build Coastguard Worker# Permission is hereby granted, free of charge, to any person obtaining a
6*bbecb9d1SAndroid Build Coastguard Worker# copy of this software and associated documentation files (the "Software"),
7*bbecb9d1SAndroid Build Coastguard Worker# to deal in the Software without restriction, including without limitation
8*bbecb9d1SAndroid Build Coastguard Worker# the rights to use, copy, modify, merge, publish, distribute, sublicense,
9*bbecb9d1SAndroid Build Coastguard Worker# and/or sell copies of the Software, and to permit persons to whom the
10*bbecb9d1SAndroid Build Coastguard Worker# Software is furnished to do so, subject to the following conditions:
11*bbecb9d1SAndroid Build Coastguard Worker#
12*bbecb9d1SAndroid Build Coastguard Worker# The above copyright notice and this permission notice shall be included
13*bbecb9d1SAndroid Build Coastguard Worker# in all copies or substantial portions of the Software.
14*bbecb9d1SAndroid Build Coastguard Worker#
15*bbecb9d1SAndroid Build Coastguard Worker# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16*bbecb9d1SAndroid Build Coastguard Worker# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*bbecb9d1SAndroid Build Coastguard Worker# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*bbecb9d1SAndroid Build Coastguard Worker# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
19*bbecb9d1SAndroid Build Coastguard Worker# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20*bbecb9d1SAndroid Build Coastguard Worker# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21*bbecb9d1SAndroid Build Coastguard Worker# OTHER DEALINGS IN THE SOFTWARE.
22*bbecb9d1SAndroid Build Coastguard Worker#
23*bbecb9d1SAndroid Build Coastguard Worker
24*bbecb9d1SAndroid Build Coastguard Workerproject(
25*bbecb9d1SAndroid Build Coastguard Worker   'virglrenderer', 'c',
26*bbecb9d1SAndroid Build Coastguard Worker   version: '0.10.4',
27*bbecb9d1SAndroid Build Coastguard Worker   license : 'MIT',
28*bbecb9d1SAndroid Build Coastguard Worker   meson_version : '>= 0.53',
29*bbecb9d1SAndroid Build Coastguard Worker   default_options : ['buildtype=release', 'b_ndebug=if-release',
30*bbecb9d1SAndroid Build Coastguard Worker                      'warning_level=3', 'c_std=gnu11']
31*bbecb9d1SAndroid Build Coastguard Worker)
32*bbecb9d1SAndroid Build Coastguard Worker
33*bbecb9d1SAndroid Build Coastguard Worker# To change only before doing a release:
34*bbecb9d1SAndroid Build Coastguard Worker#
35*bbecb9d1SAndroid Build Coastguard Worker# 1. Incrememnt the revision
36*bbecb9d1SAndroid Build Coastguard Worker# 2. If the interface was changed in an compatible way increment the
37*bbecb9d1SAndroid Build Coastguard Worker#    interface age
38*bbecb9d1SAndroid Build Coastguard Worker# 3. If the ABI has changed in an incompatible way increment the binary_age
39*bbecb9d1SAndroid Build Coastguard Worker#    and set revision and interface_age to zero
40*bbecb9d1SAndroid Build Coastguard Workerbinary_age    = 1
41*bbecb9d1SAndroid Build Coastguard Workerinterface_age = 7
42*bbecb9d1SAndroid Build Coastguard Workerrevision      = 7
43*bbecb9d1SAndroid Build Coastguard Worker
44*bbecb9d1SAndroid Build Coastguard Workercc = meson.get_compiler('c')
45*bbecb9d1SAndroid Build Coastguard Worker
46*bbecb9d1SAndroid Build Coastguard Workerif cc.get_id() == 'gcc' and cc.version().version_compare('< 4.1')
47*bbecb9d1SAndroid Build Coastguard Worker  error('When using GCC, version 4.1 or later is required.')
48*bbecb9d1SAndroid Build Coastguard Workerendif
49*bbecb9d1SAndroid Build Coastguard Worker
50*bbecb9d1SAndroid Build Coastguard Workerwarnings = [
51*bbecb9d1SAndroid Build Coastguard Worker   '-Werror=implicit-function-declaration',
52*bbecb9d1SAndroid Build Coastguard Worker   '-Werror=missing-prototypes',
53*bbecb9d1SAndroid Build Coastguard Worker   '-Wmissing-prototypes',
54*bbecb9d1SAndroid Build Coastguard Worker   '-Werror=incompatible-pointer-types',
55*bbecb9d1SAndroid Build Coastguard Worker   '-Werror=int-to-pointer-cast',
56*bbecb9d1SAndroid Build Coastguard Worker   '-Wno-overlength-strings',
57*bbecb9d1SAndroid Build Coastguard Worker]
58*bbecb9d1SAndroid Build Coastguard Worker
59*bbecb9d1SAndroid Build Coastguard Workeradd_project_arguments(cc.get_supported_arguments(warnings), language : 'c')
60*bbecb9d1SAndroid Build Coastguard Worker
61*bbecb9d1SAndroid Build Coastguard Workerflags = [
62*bbecb9d1SAndroid Build Coastguard Worker   '-fvisibility=hidden',
63*bbecb9d1SAndroid Build Coastguard Worker]
64*bbecb9d1SAndroid Build Coastguard Worker
65*bbecb9d1SAndroid Build Coastguard Workeradd_project_arguments(cc.get_supported_arguments(flags), language : 'c')
66*bbecb9d1SAndroid Build Coastguard Worker
67*bbecb9d1SAndroid Build Coastguard Workerprog_python = import('python').find_installation('python3')
68*bbecb9d1SAndroid Build Coastguard Worker
69*bbecb9d1SAndroid Build Coastguard Workerlibdrm_dep = dependency('libdrm', version : '>=2.4.50')
70*bbecb9d1SAndroid Build Coastguard Workerthread_dep = dependency('threads')
71*bbecb9d1SAndroid Build Coastguard Workerepoxy_dep = dependency('epoxy', version: '>= 1.5.4')
72*bbecb9d1SAndroid Build Coastguard Workerm_dep = cc.find_library('m', required : false)
73*bbecb9d1SAndroid Build Coastguard Worker
74*bbecb9d1SAndroid Build Coastguard Workerconf_data = configuration_data()
75*bbecb9d1SAndroid Build Coastguard Workerconf_data.set('VERSION', meson.project_version())
76*bbecb9d1SAndroid Build Coastguard Workerconf_data.set('_GNU_SOURCE', 1)
77*bbecb9d1SAndroid Build Coastguard Workerconf_data.set('VIRGL_RENDERER_UNSTABLE_APIS', 1)
78*bbecb9d1SAndroid Build Coastguard Worker
79*bbecb9d1SAndroid Build Coastguard Workerwith_tracing = get_option('tracing')
80*bbecb9d1SAndroid Build Coastguard Worker
81*bbecb9d1SAndroid Build Coastguard Workerif with_tracing != 'none'
82*bbecb9d1SAndroid Build Coastguard Worker   if not cc.compiles('void f(void* v){} int main () { void *dummy __attribute__((cleanup (f))) = 0;}')
83*bbecb9d1SAndroid Build Coastguard Worker      error('Tracing requires compiler support for __attribute__((cleanup))')
84*bbecb9d1SAndroid Build Coastguard Worker   endif
85*bbecb9d1SAndroid Build Coastguard Workerendif
86*bbecb9d1SAndroid Build Coastguard Worker
87*bbecb9d1SAndroid Build Coastguard Workerif with_tracing == 'percetto'
88*bbecb9d1SAndroid Build Coastguard Worker   # percetto uses C++ internally, so we need to link with C++.
89*bbecb9d1SAndroid Build Coastguard Worker   # TODO: remove -lstdc++ when percetto is a shared library.
90*bbecb9d1SAndroid Build Coastguard Worker   add_project_link_arguments('-lstdc++', language : 'c')
91*bbecb9d1SAndroid Build Coastguard Worker   percetto_dep = dependency('percetto', version : '>=0.0.8')
92*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('ENABLE_TRACING', 'TRACE_WITH_PERCETTO')
93*bbecb9d1SAndroid Build Coastguard Workerendif
94*bbecb9d1SAndroid Build Coastguard Worker
95*bbecb9d1SAndroid Build Coastguard Workerif with_tracing == 'perfetto'
96*bbecb9d1SAndroid Build Coastguard Worker   vperfetto_min_dep = dependency('vperfetto_min')
97*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('ENABLE_TRACING', 'TRACE_WITH_PERFETTO')
98*bbecb9d1SAndroid Build Coastguard Workerendif
99*bbecb9d1SAndroid Build Coastguard Worker
100*bbecb9d1SAndroid Build Coastguard Workerif with_tracing == 'stderr'
101*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('ENABLE_TRACING', 'TRACE_WITH_STDERR')
102*bbecb9d1SAndroid Build Coastguard Workerendif
103*bbecb9d1SAndroid Build Coastguard Worker
104*bbecb9d1SAndroid Build Coastguard Workerif cc.has_header('sys/uio.h')
105*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('HAVE_SYS_UIO_H', 1)
106*bbecb9d1SAndroid Build Coastguard Workerendif
107*bbecb9d1SAndroid Build Coastguard Worker
108*bbecb9d1SAndroid Build Coastguard Workerif cc.has_header('dlfcn.h')
109*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('HAVE_DLFCN_H', 1)
110*bbecb9d1SAndroid Build Coastguard Workerendif
111*bbecb9d1SAndroid Build Coastguard Worker
112*bbecb9d1SAndroid Build Coastguard Workerif thread_dep.found() and host_machine.system() != 'windows'
113*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('HAVE_PTHREAD', 1)
114*bbecb9d1SAndroid Build Coastguard Worker  if host_machine.system() != 'netbsd' and cc.has_function(
115*bbecb9d1SAndroid Build Coastguard Worker      'pthread_setaffinity_np',
116*bbecb9d1SAndroid Build Coastguard Worker      dependencies : thread_dep,
117*bbecb9d1SAndroid Build Coastguard Worker      prefix : '#include <pthread.h>',
118*bbecb9d1SAndroid Build Coastguard Worker      args : '-D_GNU_SOURCE')
119*bbecb9d1SAndroid Build Coastguard Worker    conf_data.set('HAVE_PTHREAD_SETAFFINITY', 1)
120*bbecb9d1SAndroid Build Coastguard Worker  endif
121*bbecb9d1SAndroid Build Coastguard Workerendif
122*bbecb9d1SAndroid Build Coastguard Worker
123*bbecb9d1SAndroid Build Coastguard Workerif cc.has_header('sys/eventfd.h')
124*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('HAVE_EVENTFD_H', 1)
125*bbecb9d1SAndroid Build Coastguard Workerendif
126*bbecb9d1SAndroid Build Coastguard Worker
127*bbecb9d1SAndroid Build Coastguard Workerif cc.has_header('sys/select.h')
128*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('HAVE_SYS_SELECT_H', 1)
129*bbecb9d1SAndroid Build Coastguard Workerendif
130*bbecb9d1SAndroid Build Coastguard Worker
131*bbecb9d1SAndroid Build Coastguard Workerforeach b : ['bswap32', 'bswap64', 'clz', 'clzll', 'expect', 'ffs', 'ffsll',
132*bbecb9d1SAndroid Build Coastguard Worker             'popcount', 'popcountll', 'types_compatible_p', 'unreachable']
133*bbecb9d1SAndroid Build Coastguard Worker  if cc.has_function(b)
134*bbecb9d1SAndroid Build Coastguard Worker    conf_data.set('HAVE___BUILTIN_@0@'.format(b.to_upper()), 1)
135*bbecb9d1SAndroid Build Coastguard Worker  endif
136*bbecb9d1SAndroid Build Coastguard Workerendforeach
137*bbecb9d1SAndroid Build Coastguard Worker
138*bbecb9d1SAndroid Build Coastguard Workersupported_function_attributes = cc.get_supported_function_attributes([
139*bbecb9d1SAndroid Build Coastguard Worker  'const', 'flatten', 'format', 'malloc', 'noreturn', 'packed', 'pure',
140*bbecb9d1SAndroid Build Coastguard Worker  'returns_nonnull', 'unused', 'warn_unused_result', 'weak',
141*bbecb9d1SAndroid Build Coastguard Worker])
142*bbecb9d1SAndroid Build Coastguard Workerforeach a : supported_function_attributes
143*bbecb9d1SAndroid Build Coastguard Worker    conf_data.set('HAVE_FUNC_ATTRIBUTE_@0@'.format(a.to_upper()), 1)
144*bbecb9d1SAndroid Build Coastguard Workerendforeach
145*bbecb9d1SAndroid Build Coastguard Worker
146*bbecb9d1SAndroid Build Coastguard Workerforeach f : ['memfd_create', 'strtok_r', 'timespec_get']
147*bbecb9d1SAndroid Build Coastguard Worker  if cc.has_function(f)
148*bbecb9d1SAndroid Build Coastguard Worker    conf_data.set('HAVE_@0@'.format(f.to_upper()), 1)
149*bbecb9d1SAndroid Build Coastguard Worker  endif
150*bbecb9d1SAndroid Build Coastguard Workerendforeach
151*bbecb9d1SAndroid Build Coastguard Worker
152*bbecb9d1SAndroid Build Coastguard Workerif host_machine.endian() == 'little'
153*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('UTIL_ARCH_LITTLE_ENDIAN', 1)
154*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('UTIL_ARCH_BIG_ENDIAN', 0)
155*bbecb9d1SAndroid Build Coastguard Workerelif host_machine.endian() == 'big'
156*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('UTIL_ARCH_LITTLE_ENDIAN', 0)
157*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('UTIL_ARCH_BIG_ENDIAN', 1)
158*bbecb9d1SAndroid Build Coastguard Workerelse
159*bbecb9d1SAndroid Build Coastguard Worker  error('It wasn\'t possible to figure out the endianess of the machine')
160*bbecb9d1SAndroid Build Coastguard Workerendif
161*bbecb9d1SAndroid Build Coastguard Worker
162*bbecb9d1SAndroid Build Coastguard Workerpipe_arch = host_machine.cpu_family()
163*bbecb9d1SAndroid Build Coastguard Worker
164*bbecb9d1SAndroid Build Coastguard Workerif pipe_arch == 'x86'
165*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('PIPE_ARCH_X86', true)
166*bbecb9d1SAndroid Build Coastguard Workerelif pipe_arch == 'x86_64'
167*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('PIPE_ARCH_X86_64', true)
168*bbecb9d1SAndroid Build Coastguard Workerelif pipe_arch == 'ppc'
169*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('PIPE_ARCH_PPC', true)
170*bbecb9d1SAndroid Build Coastguard Workerelif pipe_arch == 'ppc64'
171*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('PIPE_ARCH_PPC_64', true)
172*bbecb9d1SAndroid Build Coastguard Workerelif pipe_arch == 's390x'
173*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('PIPE_ARCH_S390', true)
174*bbecb9d1SAndroid Build Coastguard Workerelif pipe_arch == 'arm'
175*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('PIPE_ARCH_ARM', true)
176*bbecb9d1SAndroid Build Coastguard Workerelif pipe_arch == 'aarch64'
177*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('PIPE_ARCH_AARCH64', true)
178*bbecb9d1SAndroid Build Coastguard Workerelse
179*bbecb9d1SAndroid Build Coastguard Worker  warning('Arch used is not supported')
180*bbecb9d1SAndroid Build Coastguard Workerendif
181*bbecb9d1SAndroid Build Coastguard Worker
182*bbecb9d1SAndroid Build Coastguard Workerif get_option('buildtype') == 'debug'
183*bbecb9d1SAndroid Build Coastguard Worker   add_global_arguments('-DDEBUG=1', language : 'c')
184*bbecb9d1SAndroid Build Coastguard Workerendif
185*bbecb9d1SAndroid Build Coastguard Worker
186*bbecb9d1SAndroid Build Coastguard Workerplatforms = get_option('platforms')
187*bbecb9d1SAndroid Build Coastguard Worker
188*bbecb9d1SAndroid Build Coastguard Workerrequire_egl = platforms.contains('egl')
189*bbecb9d1SAndroid Build Coastguard Workerrequire_glx = platforms.contains('glx')
190*bbecb9d1SAndroid Build Coastguard Workerauto_egl_glx = platforms.contains('auto')
191*bbecb9d1SAndroid Build Coastguard Worker
192*bbecb9d1SAndroid Build Coastguard Workerwith_egl = require_egl or auto_egl_glx
193*bbecb9d1SAndroid Build Coastguard Workerwith_glx = require_glx or auto_egl_glx
194*bbecb9d1SAndroid Build Coastguard Worker
195*bbecb9d1SAndroid Build Coastguard Workerhave_egl = false
196*bbecb9d1SAndroid Build Coastguard Workerhave_glx = false
197*bbecb9d1SAndroid Build Coastguard Worker
198*bbecb9d1SAndroid Build Coastguard Workerwith_minigbm_allocation = get_option('minigbm_allocation')
199*bbecb9d1SAndroid Build Coastguard Workerif with_minigbm_allocation
200*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('ENABLE_MINIGBM_ALLOCATION', 1)
201*bbecb9d1SAndroid Build Coastguard Worker   _gbm_ver = '18.0.0'
202*bbecb9d1SAndroid Build Coastguard Workerelse
203*bbecb9d1SAndroid Build Coastguard Worker   _gbm_ver = '0.0.0'
204*bbecb9d1SAndroid Build Coastguard Workerendif
205*bbecb9d1SAndroid Build Coastguard Worker
206*bbecb9d1SAndroid Build Coastguard Workerif with_egl
207*bbecb9d1SAndroid Build Coastguard Worker   if cc.has_header('epoxy/egl.h', dependencies: epoxy_dep) and epoxy_dep.get_pkgconfig_variable('epoxy_has_egl') == '1'
208*bbecb9d1SAndroid Build Coastguard Worker      have_egl = true
209*bbecb9d1SAndroid Build Coastguard Worker      if (have_egl)
210*bbecb9d1SAndroid Build Coastguard Worker         conf_data.set('HAVE_EPOXY_EGL_H', 1)
211*bbecb9d1SAndroid Build Coastguard Worker      else
212*bbecb9d1SAndroid Build Coastguard Worker         assert(not require_egl,
213*bbecb9d1SAndroid Build Coastguard Worker                'egl was explicitely requested which requires gbm, and this is not available')
214*bbecb9d1SAndroid Build Coastguard Worker      endif
215*bbecb9d1SAndroid Build Coastguard Worker   else
216*bbecb9d1SAndroid Build Coastguard Worker      assert(not require_egl,
217*bbecb9d1SAndroid Build Coastguard Worker             'egl was explicitely requested but it is not supported by epoxy')
218*bbecb9d1SAndroid Build Coastguard Worker   endif
219*bbecb9d1SAndroid Build Coastguard Workerendif
220*bbecb9d1SAndroid Build Coastguard Worker
221*bbecb9d1SAndroid Build Coastguard Workerif with_glx
222*bbecb9d1SAndroid Build Coastguard Worker   if cc.has_header('epoxy/glx.h', dependencies: epoxy_dep) and epoxy_dep.get_pkgconfig_variable('epoxy_has_glx') == '1'
223*bbecb9d1SAndroid Build Coastguard Worker      glx_dep = dependency('x11', required: require_glx)
224*bbecb9d1SAndroid Build Coastguard Worker      have_glx = glx_dep.found()
225*bbecb9d1SAndroid Build Coastguard Worker      conf_data.set('HAVE_EPOXY_GLX_H', 1)
226*bbecb9d1SAndroid Build Coastguard Worker   else
227*bbecb9d1SAndroid Build Coastguard Worker      assert(not require_glx,
228*bbecb9d1SAndroid Build Coastguard Worker             'glx was explicitely requested but it is not supported by epoxy')
229*bbecb9d1SAndroid Build Coastguard Worker   endif
230*bbecb9d1SAndroid Build Coastguard Workerendif
231*bbecb9d1SAndroid Build Coastguard Worker
232*bbecb9d1SAndroid Build Coastguard Workerwith_venus = get_option('venus-experimental')
233*bbecb9d1SAndroid Build Coastguard Workerwith_venus_validate = get_option('venus-validate')
234*bbecb9d1SAndroid Build Coastguard Workerif with_venus
235*bbecb9d1SAndroid Build Coastguard Worker   venus_dep = dependency('vulkan')
236*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('ENABLE_VENUS', 1)
237*bbecb9d1SAndroid Build Coastguard Worker
238*bbecb9d1SAndroid Build Coastguard Worker   if with_venus_validate
239*bbecb9d1SAndroid Build Coastguard Worker      conf_data.set('ENABLE_VENUS_VALIDATE', 1)
240*bbecb9d1SAndroid Build Coastguard Worker   endif
241*bbecb9d1SAndroid Build Coastguard Workerendif
242*bbecb9d1SAndroid Build Coastguard Worker
243*bbecb9d1SAndroid Build Coastguard Workerhave_vla = not cc.has_header_symbol('stdlib.h', '__STDC_NO_VLA__')
244*bbecb9d1SAndroid Build Coastguard Worker
245*bbecb9d1SAndroid Build Coastguard Worker# drm/msm support requires the compiler to support VLA:
246*bbecb9d1SAndroid Build Coastguard Workerwith_drm_msm = have_vla and get_option('drm-msm-experimental')
247*bbecb9d1SAndroid Build Coastguard Workerif with_drm_msm
248*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('ENABLE_DRM', 1)
249*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('ENABLE_DRM_MSM', 1)
250*bbecb9d1SAndroid Build Coastguard Workerendif
251*bbecb9d1SAndroid Build Coastguard Workerwith_drm = with_drm_msm
252*bbecb9d1SAndroid Build Coastguard Worker
253*bbecb9d1SAndroid Build Coastguard Workerwith_check_gl_errors = get_option('check-gl-errors')
254*bbecb9d1SAndroid Build Coastguard Workerif with_check_gl_errors
255*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('CHECK_GL_ERRORS', 1)
256*bbecb9d1SAndroid Build Coastguard Workerendif
257*bbecb9d1SAndroid Build Coastguard Worker
258*bbecb9d1SAndroid Build Coastguard Workerwith_render_server = get_option('render-server')
259*bbecb9d1SAndroid Build Coastguard Workerwith_render_server_worker = get_option('render-server-worker')
260*bbecb9d1SAndroid Build Coastguard Workerrender_server_install_dir = get_option('prefix') / get_option('libexecdir')
261*bbecb9d1SAndroid Build Coastguard Workerif with_render_server
262*bbecb9d1SAndroid Build Coastguard Worker   if not with_venus
263*bbecb9d1SAndroid Build Coastguard Worker      error('render server makes no sense without venus currently')
264*bbecb9d1SAndroid Build Coastguard Worker   endif
265*bbecb9d1SAndroid Build Coastguard Worker
266*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('ENABLE_RENDER_SERVER', 1)
267*bbecb9d1SAndroid Build Coastguard Worker   conf_data.set('RENDER_SERVER_EXEC_PATH',
268*bbecb9d1SAndroid Build Coastguard Worker                 '"' + render_server_install_dir / 'virgl_render_server' + '"')
269*bbecb9d1SAndroid Build Coastguard Worker
270*bbecb9d1SAndroid Build Coastguard Worker   if with_render_server_worker == 'process'
271*bbecb9d1SAndroid Build Coastguard Worker      conf_data.set('ENABLE_RENDER_SERVER_WORKER_PROCESS', 1)
272*bbecb9d1SAndroid Build Coastguard Worker   elif with_render_server_worker == 'thread'
273*bbecb9d1SAndroid Build Coastguard Worker      conf_data.set('ENABLE_RENDER_SERVER_WORKER_THREAD', 1)
274*bbecb9d1SAndroid Build Coastguard Worker   elif with_render_server_worker == 'minijail'
275*bbecb9d1SAndroid Build Coastguard Worker      conf_data.set('ENABLE_RENDER_SERVER_WORKER_MINIJAIL', 1)
276*bbecb9d1SAndroid Build Coastguard Worker      minijail_dep = dependency('libminijail')
277*bbecb9d1SAndroid Build Coastguard Worker   else
278*bbecb9d1SAndroid Build Coastguard Worker     error('unknown render server worker ' + with_render_server_worker)
279*bbecb9d1SAndroid Build Coastguard Worker   endif
280*bbecb9d1SAndroid Build Coastguard Workerendif
281*bbecb9d1SAndroid Build Coastguard Worker
282*bbecb9d1SAndroid Build Coastguard Workerwith_video = get_option('video')
283*bbecb9d1SAndroid Build Coastguard Workerif with_video
284*bbecb9d1SAndroid Build Coastguard Worker  conf_data.set('ENABLE_VIDEO', 1)
285*bbecb9d1SAndroid Build Coastguard Worker  libva_dep = dependency('libva')
286*bbecb9d1SAndroid Build Coastguard Worker  libvadrm_dep = dependency('libva-drm')
287*bbecb9d1SAndroid Build Coastguard Workerendif
288*bbecb9d1SAndroid Build Coastguard Worker
289*bbecb9d1SAndroid Build Coastguard Workerconfigure_file(input : 'config.h.meson',
290*bbecb9d1SAndroid Build Coastguard Worker               output : 'config.h',
291*bbecb9d1SAndroid Build Coastguard Worker               configuration : conf_data)
292*bbecb9d1SAndroid Build Coastguard Worker
293*bbecb9d1SAndroid Build Coastguard Workeradd_project_arguments('-imacros', meson.build_root() / 'config.h', language : 'c')
294*bbecb9d1SAndroid Build Coastguard Workeradd_project_arguments('-DHAVE_CONFIG_H=1', language : 'c')
295*bbecb9d1SAndroid Build Coastguard Worker
296*bbecb9d1SAndroid Build Coastguard Workerinc_configuration = include_directories(['.', 'src'])
297*bbecb9d1SAndroid Build Coastguard Worker
298*bbecb9d1SAndroid Build Coastguard Workerwith_fuzzer = get_option('fuzzer')
299*bbecb9d1SAndroid Build Coastguard Workerwith_tests = get_option('tests')
300*bbecb9d1SAndroid Build Coastguard Workerwith_valgrind = get_option('valgrind')
301*bbecb9d1SAndroid Build Coastguard Worker
302*bbecb9d1SAndroid Build Coastguard Workersubdir('src')
303*bbecb9d1SAndroid Build Coastguard Workersubdir('vtest')
304*bbecb9d1SAndroid Build Coastguard Worker
305*bbecb9d1SAndroid Build Coastguard Workerif with_render_server
306*bbecb9d1SAndroid Build Coastguard Workersubdir('server')
307*bbecb9d1SAndroid Build Coastguard Workerendif
308*bbecb9d1SAndroid Build Coastguard Worker
309*bbecb9d1SAndroid Build Coastguard Workerif with_tests
310*bbecb9d1SAndroid Build Coastguard Worker   assert(have_egl, 'Tests require EGL, but it is not available')
311*bbecb9d1SAndroid Build Coastguard Worker   subdir('tests')
312*bbecb9d1SAndroid Build Coastguard Workerendif
313*bbecb9d1SAndroid Build Coastguard Worker
314*bbecb9d1SAndroid Build Coastguard Workersummary({'prefix': get_option('prefix'),
315*bbecb9d1SAndroid Build Coastguard Worker        'libdir': get_option('libdir'),
316*bbecb9d1SAndroid Build Coastguard Worker        }, section: 'Directories')
317*bbecb9d1SAndroid Build Coastguard Workersummary({'c_args': (' ').join(get_option('c_args')),
318*bbecb9d1SAndroid Build Coastguard Worker        'egl': have_egl,
319*bbecb9d1SAndroid Build Coastguard Worker        'glx': have_glx,
320*bbecb9d1SAndroid Build Coastguard Worker        'minigbm_alloc': with_minigbm_allocation,
321*bbecb9d1SAndroid Build Coastguard Worker        'venus': with_venus,
322*bbecb9d1SAndroid Build Coastguard Worker        'drm-msm': with_drm_msm,
323*bbecb9d1SAndroid Build Coastguard Worker        'render server': with_render_server,
324*bbecb9d1SAndroid Build Coastguard Worker        'render server worker': with_render_server ? with_render_server_worker : 'none',
325*bbecb9d1SAndroid Build Coastguard Worker        'video': with_video,
326*bbecb9d1SAndroid Build Coastguard Worker        'tests': with_tests,
327*bbecb9d1SAndroid Build Coastguard Worker        'fuzzer': with_fuzzer,
328*bbecb9d1SAndroid Build Coastguard Worker        'tracing': with_tracing,
329*bbecb9d1SAndroid Build Coastguard Worker        }, section: 'Configuration')
330