build: Add meson build

This patch adds the meson build system as alternative to the
autotools build system.

v2: Thanks to Alexandros for his comments that lead to the following changes:
    - Fix logic for platforms so that the ones selected by 'auto' don't
      fail if the dependencies are missing, but fail when explicitely
      requested
    - declare project version differently
    - set a minimun meson version
    - clean up some braces
    - reformat some code
    - squesh remaining separate patches

v3: require meson 0.46 (Gurchetan)

v4: set minimum gbm version to 18.0.0

v5: - fix gbm version requirement (Gurchetan)
    - don't duplicate glx files (Gurchetan)

Fixes: #129

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
macos/master
Gert Wollny 5 years ago committed by Gert Wollny
parent ecba12cdac
commit 17c2368f97
  1. 9
      config.h.meson
  2. 183
      meson.build
  3. 60
      meson_options.txt
  4. 133
      src/gallium/meson.build
  5. 102
      src/meson.build
  6. 33
      tests/fuzzer/meson.build
  7. 72
      tests/meson.build
  8. 60
      vtest/meson.build

@ -0,0 +1,9 @@
#mesondefine VERSION
#mesondefine HAVE_SYS_UIO_H
#mesondefine HAVE_PTHREAD
#mesondefine HAVE_EPOXY_EGL_H
#mesondefine HAVE_EPOXY_GLX_H
#mesondefine ENABLE_GBM_ALLOCATION
#mesondefine HAVE_FUNC_ATTRIBUTE_VISIBILITY
#mesondefine HAVE_EVENTFD_H
#mesondefine HAVE_DLFCN_H

@ -0,0 +1,183 @@
#############################################################################
#
# Copyright (C) 2019 Collabora Ltd
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
project(
'virglrenderer', 'c',
version: '0.8.1',
license : 'MIT',
meson_version : '>= 0.46',
default_options : ['buildtype=release', 'b_ndebug=if-release', 'c_std=gnu11']
)
binary_age = 1
revision = 4
interface_age = 0
cc = meson.get_compiler('c')
add_project_arguments('-DHAVE_CONFIG_H=1', language : 'c')
add_project_arguments('-D_GNU_SOURCE=1', language : 'c')
add_project_arguments('-Wall', language : 'c')
add_project_arguments('-Wextra', language : 'c')
warnings = [
'-Werror=implicit-function-declaration',
'-Werror=missing-prototypes',
'-Wmissing-prototypes',
'-Werror=int-to-pointer-cast'
]
foreach w : warnings
if cc.has_argument(w)
add_project_arguments(w, language : 'c')
endif
endforeach
prog_python = import('python').find_installation('python3')
libdrm_dep = dependency('libdrm', version : '>=2.4.50')
thread_dep = dependency('threads')
epoxy_dep = dependency('epoxy')
m_dep = cc.find_library('m')
conf_data = configuration_data()
conf_data.set('VERSION', '0.8.1')
if cc.has_header('sys/uio.h')
conf_data.set('HAVE_SYS_UIO_H', 1)
endif
if cc.has_header('dlfcn.h')
conf_data.set('HAVE_DLFCN_H', 1)
endif
if cc.has_header('pthread.h')
conf_data.set('HAVE_PTHREAD', 1)
endif
if cc.has_header('sys/eventfd.h')
conf_data.set('HAVE_EVENTFD_H', 1)
endif
debug_enabled = get_option('debug')
if debug_enabled
add_global_arguments('-DDEBUG=1', language : 'c')
endif
platforms = get_option('platforms')
require_egl = platforms.contains('egl')
require_glx = platforms.contains('glx')
auto_egl_glx = platforms.contains('auto')
with_egl = require_egl or auto_egl_glx
with_glx = require_glx or auto_egl_glx
have_egl = false
have_glx = false
if with_egl
if cc.has_header('epoxy/egl.h') and epoxy_dep.get_pkgconfig_variable('epoxy_has_egl') == '1'
gbm_dep = dependency('gbm', version: '>= 18.0.0', required: require_egl)
have_egl = gbm_dep.found()
conf_data.set('HAVE_EPOXY_EGL_H', 1)
else
assert(not require_egl,
'egl was explicitely requested but it is not supported by epoxy')
endif
endif
if with_glx
if cc.has_header('epoxy/glx.h') and epoxy_dep.get_pkgconfig_variable('epoxy_has_glx') == '1'
glx_dep = dependency('x11', required: require_glx)
have_glx = glx_dep.found()
conf_data.set('HAVE_EPOXY_GLX_H', 1)
else
assert(not require_glx,
'glx was explicitely requested but it is not supported by epoxy')
endif
endif
if cc.compiles('void __attribute__((hidden)) func() {}')
conf_data.set('HAVE_FUNC_ATTRIBUTE_VISIBILITY', 1)
endif
with_gbm_allocation = get_option('gbm_allocation')
if with_gbm_allocation
conf_data.set('ENABLE_GBM_ALLOCATION', 1)
endif
configure_file(input : 'config.h.meson',
output : 'config.h',
configuration : conf_data)
pkgconf_data = configuration_data()
pkgconf_data.set('PACKAGE_VERSION', meson.project_version())
pkgconf_data.set('prefix', get_option('prefix'))
pkgconf_data.set('exec_prefix', '${prefix}')
pkgconf_data.set('libdir', '${prefix}/' + get_option('libdir'))
pkgconf_data.set('includedir', '${prefix}/' + get_option('includedir'))
pkg_config = configure_file(input : 'virglrenderer.pc.in',
output : 'virglrenderer.pc',
configuration : pkgconf_data)
install_data(pkg_config,
install_dir: get_option('libdir') + '/pkgconfig')
inc_configuration = include_directories('.')
with_fuzzer = get_option('fuzzer')
with_tests = get_option('tests')
with_valgrind = get_option('valgrind')
subdir('src')
subdir('vtest')
if with_tests
subdir('tests')
endif
lines = [
'',
'prefix: ' + get_option('prefix'),
'libdir: ' + get_option('libdir'),
'',
'c_args: ' + (' ').join(get_option('c_args')),
'',
]
lines += 'egl: ' + (have_egl ? 'yes' : 'no')
lines += 'glx: ' + (have_glx ? 'yes' : 'no')
lines += ''
lines += 'gbm_alloc: ' + (with_gbm_allocation ? 'yes' : 'no' )
lines += ''
lines += 'debug: ' + (debug_enabled ? 'yes' : 'no' )
lines += 'tests: ' + (with_tests ? 'yes' : 'no' )
lines += 'fuzzer: ' + (with_fuzzer ? 'yes' : 'no' )
indent = ' '
summary = indent + ('\n' + indent).join(lines)
message('\n\nConfiguration summary:\n@0@\n'.format(summary))

@ -0,0 +1,60 @@
#############################################################################
#
# Copyright (C) 2019 Collabora Ltd
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
option(
'platforms',
type : 'array',
value : ['auto'],
choices : [
'egl', 'glx', 'auto'
],
description : 'Platforms support, set to auto to enable all.'
)
option(
'gbm_allocation',
type : 'boolean',
value : 'false',
description : 'enable support for gbm_allocations'
)
option(
'tests',
type : 'boolean',
value : 'false',
description : 'enable unit tests'
)
option(
'fuzzer',
type : 'boolean',
value : 'false',
description : 'enable unit tests'
)
option(
'valgrind',
type : 'boolean',
value : 'false',
description : 'enable running unit tests with valgrind'
)

@ -0,0 +1,133 @@
#############################################################################
#
# Copyright (C) 2019 Collabora Ltd
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
sources_libgallium = [
'include/c99_compat.h',
'include/no_extern_c.h',
'include/pipe/p_config.h',
'include/pipe/p_defines.h',
'include/pipe/p_context.h',
'include/pipe/p_state.h',
'include/pipe/p_format.h',
'include/pipe/p_shader_tokens.h',
'include/pipe/p_screen.h',
'include/pipe/p_compiler.h',
'include/pipe/p_video_enums.h',
'include/c11/threads_win32.h',
'include/c11/threads.h',
'include/c11/threads_posix.h',
'auxiliary/util/u_format.h',
'auxiliary/util/u_memory.h',
'auxiliary/util/u_rect.h',
'auxiliary/util/u_surface.h',
'auxiliary/util/u_math.h',
'auxiliary/util/rgtc.h',
'auxiliary/util/u_format.c',
'auxiliary/util/u_debug.h',
'auxiliary/util/u_inlines.h',
'auxiliary/util/u_texture.c',
'auxiliary/util/u_pointer.h',
'auxiliary/util/u_hash_table.c',
'auxiliary/util/u_debug_describe.h',
'auxiliary/util/u_dual_blend.h',
'auxiliary/util/u_texture.h',
'auxiliary/util/u_hash_table.h',
'auxiliary/util/u_box.h',
'auxiliary/util/u_debug.c',
'auxiliary/util/u_cpu_detect.c',
'auxiliary/util/u_pack_color.h',
'auxiliary/util/u_double_list.h',
'auxiliary/util/u_debug_refcnt.h',
'auxiliary/util/u_bitmask.c',
'auxiliary/util/u_cpu_detect.h',
'auxiliary/util/u_bitmask.h',
'auxiliary/util/u_format_s3tc.h',
'auxiliary/util/u_string.h',
'auxiliary/util/u_surface.c',
'auxiliary/util/u_math.c',
'auxiliary/util/u_half.h',
'auxiliary/util/u_prim.h',
'auxiliary/util/u_debug_describe.c',
'auxiliary/util/u_atomic.h',
'auxiliary/cso_cache/cso_hash.h',
'auxiliary/cso_cache/cso_cache.h',
'auxiliary/cso_cache/cso_cache.c',
'auxiliary/cso_cache/cso_hash.c',
'auxiliary/tgsi/tgsi_opcode_tmp.h',
'auxiliary/tgsi/tgsi_dump.c',
'auxiliary/tgsi/tgsi_ureg.c',
'auxiliary/tgsi/tgsi_build.c',
'auxiliary/tgsi/tgsi_build.h',
'auxiliary/tgsi/tgsi_util.h',
'auxiliary/tgsi/tgsi_iterate.h',
'auxiliary/tgsi/tgsi_scan.c',
'auxiliary/tgsi/tgsi_info.c',
'auxiliary/tgsi/tgsi_parse.h',
'auxiliary/tgsi/tgsi_text.h',
'auxiliary/tgsi/tgsi_strings.h',
'auxiliary/tgsi/tgsi_ureg.h',
'auxiliary/tgsi/tgsi_parse.c',
'auxiliary/tgsi/tgsi_transform.h',
'auxiliary/tgsi/tgsi_info.h',
'auxiliary/tgsi/tgsi_text.c',
'auxiliary/tgsi/tgsi_strings.c',
'auxiliary/tgsi/tgsi_sanity.c',
'auxiliary/tgsi/tgsi_scan.h',
'auxiliary/tgsi/tgsi_iterate.c',
'auxiliary/tgsi/tgsi_dump.h',
'auxiliary/tgsi/tgsi_util.c',
'auxiliary/tgsi/tgsi_sanity.h',
'auxiliary/tgsi/tgsi_transform.c',
'auxiliary/os/os_memory_aligned.h',
'auxiliary/os/os_thread.h',
'auxiliary/os/os_mman.h',
'auxiliary/os/os_misc.h',
'auxiliary/os/os_memory.h',
'auxiliary/os/os_memory_debug.h',
'auxiliary/os/os_memory_stdc.h',
'auxiliary/os/os_misc.c',
]
inc_gallium = include_directories('include', 'auxiliary', 'auxiliary/util')
u_format_table_c = custom_target(
'u_format_table.c',
input : ['auxiliary/util/u_format_table.py', 'auxiliary/util/u_format.csv'],
output : 'u_format_table.c',
command : [prog_python, '@INPUT@'],
depend_files : files('auxiliary/util/u_format_parse.py'),
capture : true,
)
libgallium = static_library(
'gallium',
[sources_libgallium, u_format_table_c],
include_directories : [
inc_gallium
],
)
gallium_dep = declare_dependency(
link_with: libgallium,
include_directories: inc_gallium
)

@ -0,0 +1,102 @@
#############################################################################
#
# Copyright (C) 2019 Collabora Ltd
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
subdir('gallium')
virglrenderer_sources = [
'iov.c',
'virgl_hw.h',
'virgl_protocol.h',
'virglrenderer.c',
'virglrenderer.h',
'vrend_blitter.c',
'vrend_blitter.h',
'vrend_debug.c',
'vrend_debug.h',
'vrend_decode.c',
'vrend_formats.c',
'vrend_iov.h',
'vrend_object.c',
'vrend_object.h',
'vrend_renderer.c',
'vrend_renderer.h',
'vrend_shader.c',
'vrend_shader.h',
'vrend_strbuf.h',
'vrend_tweaks.c',
'vrend_tweaks.h'
]
virglrenderer_egl_sources = [
'virgl_gbm.c',
'virgl_gbm.h',
'virgl_egl_context.c',
'virgl_egl.h',
]
virglrenderer_glx_sources = [
'virgl_glx_context.c',
'virgl_glx.h',
]
virglrenderer_depends = [
gallium_dep,
epoxy_dep,
libdrm_dep,
thread_dep,
m_dep
]
if have_egl
virglrenderer_sources += virglrenderer_egl_sources
virglrenderer_depends += [gbm_dep]
endif
if have_glx
virglrenderer_sources += virglrenderer_glx_sources
virglrenderer_depends += [glx_dep]
endif
libvirglrenderer = shared_library(
'virglrenderer',
virglrenderer_sources,
include_directories: [inc_gallium, inc_configuration],
dependencies : virglrenderer_depends,
version : binary_age.to_string() + '.'
+ revision.to_string() + '.'
+ interface_age.to_string(),
install : true
)
libvirglrenderer_inc = [
inc_gallium,
inc_configuration,
include_directories('.')
]
libvirglrenderer_dep = declare_dependency(
link_with: libvirglrenderer,
include_directories: libvirglrenderer_inc
)
install_headers('virglrenderer.h', subdir : 'virgl')

@ -0,0 +1,33 @@
#############################################################################
#
# Copyright (C) 2019 Collabora Ltd
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
assert(cc.has_argument('-fsanitize=fuzzer'),
'Fuzzer enabled but compiler does not support "-fsanitize=fuzzer"')
virgl_fuzzer = executable(
'virgl_fuzzer',
'virgl_fuzzer.c',
c_args : [ '-fsanitize=address', '-fsanitize=fuzzer' ],
link_args : [ '-fsanitize=address', '-fsanitize=fuzzer' ],
dependencies : [libvirglrenderer_dep, epoxy_dep]
)

@ -0,0 +1,72 @@
#############################################################################
#
# Copyright (C) 2019 Collabora Ltd
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
check_dep = dependency('check')
libvrtest_sources = [
'testvirgl.c',
'testvirgl.h',
'testvirgl_encode.c',
'testvirgl_encode.h',
]
libvrtest = library(
'vrtest',
libvrtest_sources,
dependencies : [
libvirglrenderer_dep,
gallium_dep,
check_dep
]
)
tests = [
['test_virgl_init', 'test_virgl_init.c'],
['test_virgl_resource', 'test_virgl_resource.c'],
['test_virgl_transfer', 'test_virgl_transfer.c'],
['test_virgl_cmd', 'test_virgl_cmd.c'],
['test_virgl_strbuf', 'test_virgl_strbuf.c']
]
foreach t : tests
test_virgl = executable(t[0], t[1], link_with: libvrtest,
dependencies : [libvirglrenderer_dep, check_dep])
test(t[0], test_virgl)
endforeach
if with_valgrind
valgrind = find_program('valgrind')
surpression_path = join_paths(meson.current_source_dir(), 'valgrind.suppressions')
args = ['--leak-check=full', '--quiet', '--error-exitcode=3',
'--suppressions='+ surpression_path]
foreach t : tests
test('valgrind-' + t[0],
valgrind,
args : args + [join_paths(meson.current_build_dir(), t[0])],
timeout : 1800)
endforeach
endif
if with_fuzzer
subdir('fuzzer')
endif

@ -0,0 +1,60 @@
#############################################################################
#
# Copyright (C) 2019 Collabora Ltd
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
virgl_test_server_sources = [
'util.c',
'util.h',
'vtest_shm.c',
'vtest_shm.h',
'vtest_server.c',
'vtest_renderer.c',
'vtest_protocol.h',
'vtest.h'
]
virgl_test_server = executable(
'virgl_test_server',
virgl_test_server_sources,
dependencies : libvirglrenderer_dep,
install : true
)
if with_fuzzer
assert(cc.has_argument('-fsanitize=fuzzer'),
'Fuzzer enabled but compiler does not support "-fsanitize=fuzzer"')
vtest_obj = virgl_test_server.extract_objects(['util.c',
'vtest_shm.c',
'vtest_renderer.c'
])
vtest_fuzzer = executable(
'vtest_fuzzer',
'vtest_fuzzer.c',
c_args : [ '-fsanitize=address', '-fsanitize=fuzzer' ],
link_args : [ '-fsanitize=address', '-fsanitize=fuzzer' ],
objects : vtest_obj,
dependencies : libvirglrenderer_dep
)
endif
Loading…
Cancel
Save