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