Add meson build system
Theres a couple of things that this meson build system does differently than autotools. It doesn't use a config.h file, it just puts #defines on the command line with -D. It also does all of the code generation in the generated folder, simply because it's simpler to do that. On my 2 core / 4 thread KBL system: autotools (no ccache): sh -c "./autogen.sh&& ./configure && make -j6 check" 44.74s user 6.70s system 145% cpu 35.269 total autotools (warm ccache): sh -c "./autogen.sh&& ./configure && make -j6 check" 32.86s user 4.22s system 129% cpu 28.580 total meson (no ccache): sh -c "meson build; ninja -C build test" 23.48s user 3.71s system 236% cpu 11.487 total meson (warm ccache) sh -c "meson build; ninja -C build test" 16.06s user 2.31s system 210% cpu 8.727 total
This commit is contained in:
parent
24fddd6eaa
commit
16dc32352d
|
@ -7,3 +7,7 @@ indent_style = space
|
||||||
[{Makefile.am,*.mk}]
|
[{Makefile.am,*.mk}]
|
||||||
indent_size = 8
|
indent_size = 8
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
|
|
||||||
|
[{meson.build,meson_options.txt}]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
inc_include = include_directories('.')
|
||||||
|
|
||||||
|
install_headers(
|
||||||
|
'glvnd/GLdispatchABI.h',
|
||||||
|
'glvnd/libglxabi.h',
|
||||||
|
'glvnd/libeglabi.h',
|
||||||
|
subdir : 'glvnd'
|
||||||
|
)
|
||||||
|
|
||||||
|
_headers = get_option('headers')
|
||||||
|
|
||||||
|
if _headers
|
||||||
|
install_headers(
|
||||||
|
'GL/gl.h',
|
||||||
|
'GL/glcorearb.h',
|
||||||
|
'GL/glext.h',
|
||||||
|
subdir : 'GL',
|
||||||
|
)
|
||||||
|
|
||||||
|
install_headers(
|
||||||
|
'KHR/khrplatform.h',
|
||||||
|
subdir : 'KHR',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if with_glx and _headers
|
||||||
|
install_headers(
|
||||||
|
'GL/glx.h',
|
||||||
|
'GL/glxext.h',
|
||||||
|
subdir : 'GL',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('gles1') and _headers
|
||||||
|
install_headers(
|
||||||
|
'GLES/egl.h',
|
||||||
|
'GLES/gl.h',
|
||||||
|
'GLES/glext.h',
|
||||||
|
'GLES/glplatform.h',
|
||||||
|
subdir : 'GLES'
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('gles2') and _headers
|
||||||
|
install_headers(
|
||||||
|
'GLES2/gl2ext.h',
|
||||||
|
'GLES2/gl2.h',
|
||||||
|
'GLES2/gl2platform.h',
|
||||||
|
subdir : 'GLES2',
|
||||||
|
)
|
||||||
|
install_headers(
|
||||||
|
'GLES3/gl31.h',
|
||||||
|
'GLES3/gl32.h',
|
||||||
|
'GLES3/gl3.h',
|
||||||
|
'GLES3/gl3ext.h',
|
||||||
|
'GLES3/gl3platform.h',
|
||||||
|
subdir : 'GLES3',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('egl') and _headers
|
||||||
|
install_headers(
|
||||||
|
'EGL/egl.h',
|
||||||
|
'EGL/eglext.h',
|
||||||
|
'EGL/eglplatform.h',
|
||||||
|
subdir : 'EGL',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
|
@ -0,0 +1,191 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
project(
|
||||||
|
'glvnd',
|
||||||
|
'c',
|
||||||
|
version : '1.3.0-devel',
|
||||||
|
meson_version : '>= 0.48',
|
||||||
|
default_options : ['c_std=gnu99']
|
||||||
|
)
|
||||||
|
|
||||||
|
dep_null = dependency('', required : false)
|
||||||
|
cc = meson.get_compiler('c')
|
||||||
|
prog_py = import('python').find_installation()
|
||||||
|
files_symbols_check = files('bin/symbols-check.py')
|
||||||
|
prog_nm = find_program('nm')
|
||||||
|
|
||||||
|
with_asm = get_option('asm')
|
||||||
|
use_asm = false
|
||||||
|
if not with_asm.disabled()
|
||||||
|
use_asm = true
|
||||||
|
if (host_machine.cpu_family() == 'x86' and
|
||||||
|
['gnu', 'freebsd', 'dragonfly', 'linux',
|
||||||
|
'netbsd'].contains(host_machine.system()))
|
||||||
|
add_project_arguments(
|
||||||
|
'-DUSE_X86_ASM',
|
||||||
|
'-DUSE_MMX_ASM',
|
||||||
|
'-DUSE_3DNOW_ASM',
|
||||||
|
'-DUSE_SSE_ASM',
|
||||||
|
language : 'c',
|
||||||
|
)
|
||||||
|
elif (host_machine.cpu_family() == 'x86_64' and
|
||||||
|
['freebsd', 'dragonfly', 'linux',
|
||||||
|
'netbsd'].contains(host_machine.system()))
|
||||||
|
add_project_arguments('-DUSE_X86_64_ASM', language : 'c')
|
||||||
|
elif host_machine.cpu_family() == 'arm'
|
||||||
|
add_project_arguments('-DUSE_ARMV7_ASM', language : 'c')
|
||||||
|
elif host_machine.cpu_family() == 'aarch64'
|
||||||
|
add_project_arguments('-DUSE_AARCH64_ASM', language : 'c')
|
||||||
|
elif host_machine.cpu_family() == 'ppc' and host_machine.endian() == 'little'
|
||||||
|
add_project_arguments('-DUSE_PPC64LE_ASM', language : 'c')
|
||||||
|
elif with_asm.enabled()
|
||||||
|
error('No ASM available for @0@ (@1@ endian)'.format(host_machine.system(), host_machine.endian()))
|
||||||
|
else
|
||||||
|
use_asm = false
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if use_asm
|
||||||
|
add_project_arguments('-DUSE_DISPATCH_ASM', language : 'c')
|
||||||
|
endif
|
||||||
|
|
||||||
|
dep_dl = cc.find_library('dl', required : false)
|
||||||
|
dep_m = cc.find_library('m', required : false)
|
||||||
|
dep_threads = dependency('threads')
|
||||||
|
dep_x11 = dependency('x11', required : get_option('x11'))
|
||||||
|
dep_x11_headers = dep_x11.partial_dependency(compile_args : true, includes : true)
|
||||||
|
if dep_x11.found()
|
||||||
|
add_project_arguments('-DUSE_X11', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
dep_xext = dep_null
|
||||||
|
dep_glproto = dep_null
|
||||||
|
with_glx = false
|
||||||
|
if get_option('glx').enabled() and not dep_x11.found()
|
||||||
|
error('Cannot build GLX support without X11.')
|
||||||
|
elif not get_option('glx').disabled() and dep_x11.found()
|
||||||
|
dep_xext = dependency('xext', required : get_option('glx'))
|
||||||
|
dep_glproto = dependency('glproto', required : get_option('glx'))
|
||||||
|
with_glx = true
|
||||||
|
endif
|
||||||
|
dep_glx = [dep_xext, dep_glproto]
|
||||||
|
|
||||||
|
if cc.compiles('typeof(int *);', name : 'typeof')
|
||||||
|
add_project_arguments('-DHAVE_TYPEOF', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
with_tls = get_option('tls')
|
||||||
|
have_tls = false
|
||||||
|
if not with_tls.disabled()
|
||||||
|
have_tls = cc.compiles(
|
||||||
|
'__thread int foo __attribute__((tls_model("initial-exec")));',
|
||||||
|
name : 'initial-exec TLS',
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if have_tls
|
||||||
|
add_project_arguments('-DGLDISPATCH_USE_TLS', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
gl_dispatch_type = 'pure_c'
|
||||||
|
if use_asm
|
||||||
|
if host_machine.cpu_family().startswith('x86')
|
||||||
|
gl_dispatch_type = '@0@_@1@'.format(
|
||||||
|
host_machine.cpu_family(),
|
||||||
|
have_tls ? 'tls' : 'tsd',
|
||||||
|
)
|
||||||
|
elif host_machine.cpu_family() == 'arm'
|
||||||
|
gl_dispatch_type = 'armv7_tsd'
|
||||||
|
elif host_machine.cpu_family() == 'aarch64'
|
||||||
|
gl_dispatch_type = 'aarch64_tsd'
|
||||||
|
elif host_machine.cpu_family() == 'ppc64' and host_machine.endian() == 'little'
|
||||||
|
gl_dispatch_type = 'ppc64le_@1@'.format(have_tls ? 'tls' : 'tsd')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
add_project_arguments('-DGLDISPATCH_TYPE_@0@'.format(gl_dispatch_type.to_upper()), language : ['c'])
|
||||||
|
|
||||||
|
if cc.has_function_attribute('constructor')
|
||||||
|
add_project_arguments('-DUSE_ATTRIBUTE_CONSTRUCTOR', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
if cc.compiles('''
|
||||||
|
#include <pthread.h>
|
||||||
|
void foo(void)
|
||||||
|
{
|
||||||
|
pthread_rwlock_t lock;
|
||||||
|
pthread_rwlock_init(&lock, NULL);
|
||||||
|
}''',
|
||||||
|
name : 'pthread rwlock')
|
||||||
|
add_project_arguments('-DHAVE_PTHREAD_RWLOCK', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
if cc.compiles('''
|
||||||
|
int foo(int volatile *val, int oldVal, int newVal)
|
||||||
|
{
|
||||||
|
return __sync_add_and_fetch(val, 1);
|
||||||
|
return __sync_lock_test_and_set(val, newVal);
|
||||||
|
return __sync_val_compare_and_swap(val, oldVal, newVal);
|
||||||
|
}''',
|
||||||
|
name : 'sync intrinsics')
|
||||||
|
add_project_arguments('-DHAVE_SYNC_INTRINSICS', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
if cc.has_function('mincore')
|
||||||
|
add_project_arguments('-DHAVE_MINCORE', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
if cc.has_header_symbol('dlfcn.h', 'RTLD_NOLOAD')
|
||||||
|
add_project_arguments('-DHAVE_RTLD_NOLOAD', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
if cc.has_member('struct dirent', 'd_type', prefix : '#include <dirent.h>')
|
||||||
|
add_project_arguments('-DHAVE_DIRENT_DTYPE', language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
_p = get_option('dispatch-page-size')
|
||||||
|
if _p != 0
|
||||||
|
add_project_arguments('-DGLDISPATCH_PAGE_SIZE=' + _p, language : ['c'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Set EGL_NO_X11 unconditionally, Libglvnd doesn't make any assumptions about
|
||||||
|
# native display or drawable types, so we don't need X11-specific typedefs for
|
||||||
|
# them
|
||||||
|
add_project_arguments('-DEGL_NO_X11', language : ['c'])
|
||||||
|
|
||||||
|
pkg = import('pkgconfig')
|
||||||
|
|
||||||
|
subdir('include')
|
||||||
|
subdir('src')
|
||||||
|
subdir('tests')
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
name : 'libglvnd',
|
||||||
|
description : 'Vendor-neutral OpenGL dispatch library vendor interface',
|
||||||
|
version : meson.project_version(),
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
option(
|
||||||
|
'asm',
|
||||||
|
type : 'feature',
|
||||||
|
description : 'Use ASM when compiling.'
|
||||||
|
)
|
||||||
|
option(
|
||||||
|
'x11',
|
||||||
|
type : 'feature',
|
||||||
|
description : 'Support the X11 window system.'
|
||||||
|
)
|
||||||
|
option(
|
||||||
|
'egl',
|
||||||
|
type : 'boolean',
|
||||||
|
value : true,
|
||||||
|
description : 'Support the EGL platform.'
|
||||||
|
)
|
||||||
|
option(
|
||||||
|
'glx',
|
||||||
|
type : 'feature',
|
||||||
|
description : 'Support the GLX platform.'
|
||||||
|
)
|
||||||
|
option(
|
||||||
|
'gles1',
|
||||||
|
type : 'boolean',
|
||||||
|
value : true,
|
||||||
|
description : 'Support OpenGL ES 1.x.'
|
||||||
|
)
|
||||||
|
option(
|
||||||
|
'gles2',
|
||||||
|
type : 'boolean',
|
||||||
|
value : true,
|
||||||
|
description : 'Support OpenGL ES 2.x and 3.x.'
|
||||||
|
)
|
||||||
|
option(
|
||||||
|
'tls',
|
||||||
|
type : 'feature',
|
||||||
|
description : 'Use Thread Local Storage.'
|
||||||
|
)
|
||||||
|
option(
|
||||||
|
'dispatch-page-size',
|
||||||
|
type : 'integer',
|
||||||
|
value : 0,
|
||||||
|
description : 'Page size to align static dispatch stubs.'
|
||||||
|
)
|
||||||
|
option(
|
||||||
|
'headers',
|
||||||
|
type : 'boolean',
|
||||||
|
value : true,
|
||||||
|
description : 'Install headers for enabled APIs.'
|
||||||
|
)
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
libegl_dispatch_stubs = static_library(
|
||||||
|
'egl_dispatch_stubs',
|
||||||
|
['egldispatchstubs.c', g_egldispatchstubs_c, g_egldispatchstubs_h],
|
||||||
|
include_directories : inc_include,
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
libEGL = shared_library(
|
||||||
|
'EGL',
|
||||||
|
[
|
||||||
|
'libegl.c',
|
||||||
|
'libeglcurrent.c',
|
||||||
|
'libeglmapping.c',
|
||||||
|
'libeglvendor.c',
|
||||||
|
'libeglerror.c',
|
||||||
|
],
|
||||||
|
c_args : [
|
||||||
|
'-DDEFAULT_EGL_VENDOR_CONFIG_DIRS="@0@/glvnd/egl_vendor.d:@1@/glvnd/egl_vendor.d"'.format(
|
||||||
|
join_paths(get_option('prefix'), get_option('sysconfdir')),
|
||||||
|
join_paths(get_option('prefix'), get_option('datadir'))),
|
||||||
|
],
|
||||||
|
include_directories : inc_include,
|
||||||
|
link_args : '-Wl,-Bsymbolic',
|
||||||
|
link_with : libegl_dispatch_stubs,
|
||||||
|
dependencies : [
|
||||||
|
dep_threads, dep_dl, dep_m, dep_x11_headers, idep_trace, idep_glvnd_pthread,
|
||||||
|
idep_utils_misc, idep_cjson, idep_winsys_dispatch, idep_gldispatch,
|
||||||
|
],
|
||||||
|
version : '1.1.0',
|
||||||
|
install : true,
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libEGL,
|
||||||
|
filebase : 'egl',
|
||||||
|
description : 'EGL library and headers',
|
||||||
|
version : '1.5',
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'EGL symbols check',
|
||||||
|
prog_py,
|
||||||
|
args : [
|
||||||
|
files_symbols_check,
|
||||||
|
'--nm', prog_nm.path(),
|
||||||
|
'--lib', libEGL,
|
||||||
|
'--symbols-file', files('egl.symbols'),
|
||||||
|
],
|
||||||
|
suite : ['egl', 'symbols'],
|
||||||
|
)
|
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
libGL = shared_library(
|
||||||
|
'GL',
|
||||||
|
['libgl.c', g_libglglxwrapper_c],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_args : '-Wl,-Bsymbolic',
|
||||||
|
dependencies : [
|
||||||
|
dep_dl, idep_gldispatch, idep_glapi_gl, idep_glx, idep_utils_misc,
|
||||||
|
],
|
||||||
|
version : '1.7.0',
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
install : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libGL,
|
||||||
|
filebase : 'gl',
|
||||||
|
description : 'Legacy OpenGL and GLX library and headers.',
|
||||||
|
version : '1.2',
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'GL symbols check',
|
||||||
|
prog_py,
|
||||||
|
args : [
|
||||||
|
files_symbols_check,
|
||||||
|
'--nm', prog_nm.path(),
|
||||||
|
'--lib', libGL,
|
||||||
|
'--symbols-file', files('gl.symbols'),
|
||||||
|
],
|
||||||
|
suite : ['symbols'],
|
||||||
|
)
|
|
@ -0,0 +1,56 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
libGLESv1 = shared_library(
|
||||||
|
'GLESv1_CM',
|
||||||
|
link_whole : libopengl_main,
|
||||||
|
dependencies : [
|
||||||
|
idep_gldispatch, idep_utils_misc, idep_glapi_glesv1,
|
||||||
|
],
|
||||||
|
version : '1.2.0',
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
install : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libGLESv1,
|
||||||
|
filebase : 'glesv1_cm',
|
||||||
|
description : 'OpenGL ES-CM v1 library and headers.',
|
||||||
|
version : '1.0',
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'GLESv1 symbols check',
|
||||||
|
prog_py,
|
||||||
|
args : [
|
||||||
|
files_symbols_check,
|
||||||
|
'--nm', prog_nm.path(),
|
||||||
|
'--lib', libGLESv1,
|
||||||
|
'--symbols-file', files('glesv1.symbols'),
|
||||||
|
],
|
||||||
|
suite : ['symbols'],
|
||||||
|
)
|
|
@ -0,0 +1,57 @@
|
||||||
|
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
libGLESv2 = shared_library(
|
||||||
|
'GLESv2',
|
||||||
|
link_whole : libopengl_main,
|
||||||
|
dependencies : [
|
||||||
|
idep_gldispatch, idep_utils_misc, idep_glapi_glesv2,
|
||||||
|
],
|
||||||
|
version : '2.1.0',
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
install : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libGLESv2,
|
||||||
|
filebase : 'glesv2',
|
||||||
|
description : 'OpenGL ES v2/v3 library and headers.',
|
||||||
|
version : '3.2',
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'GLESv2 symbols check',
|
||||||
|
prog_py,
|
||||||
|
args : [
|
||||||
|
files_symbols_check,
|
||||||
|
'--nm', prog_nm.path(),
|
||||||
|
'--lib', libGLESv2,
|
||||||
|
'--symbols-file', files('glesv2.symbols'),
|
||||||
|
],
|
||||||
|
suite : ['symbols'],
|
||||||
|
)
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
g_glx_dispatch_stub_list_h = custom_target(
|
||||||
|
'g_glx_dispatch_stub_list.h',
|
||||||
|
input : 'gen_glx_stubs.py',
|
||||||
|
output : 'g_glx_dispatch_stub_list.h',
|
||||||
|
command : [prog_py, '@INPUT@'],
|
||||||
|
capture : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
libGLX = shared_library(
|
||||||
|
'GLX',
|
||||||
|
[
|
||||||
|
'libglx.c',
|
||||||
|
'libglxmapping.c',
|
||||||
|
'libglxproto.c',
|
||||||
|
'glvnd_genentry.c',
|
||||||
|
g_glx_dispatch_stub_list_h,
|
||||||
|
],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_args : '-Wl,-Bsymbolic',
|
||||||
|
dependencies : [
|
||||||
|
dep_dl, dep_x11, dep_glx, idep_gldispatch, idep_trace,
|
||||||
|
idep_glvnd_pthread, idep_utils_misc,
|
||||||
|
idep_app_error_check, idep_winsys_dispatch,
|
||||||
|
],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
install : true,
|
||||||
|
version : '0.0.0',
|
||||||
|
)
|
||||||
|
|
||||||
|
inc_glx = include_directories('.')
|
||||||
|
|
||||||
|
idep_glx = declare_dependency(
|
||||||
|
link_with : libGLX,
|
||||||
|
include_directories : inc_glx,
|
||||||
|
)
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libGLX,
|
||||||
|
filebase : 'glx',
|
||||||
|
description : 'GLX library and headers.',
|
||||||
|
version : '1.4',
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'GLX symbols check',
|
||||||
|
prog_py,
|
||||||
|
args : [
|
||||||
|
files_symbols_check,
|
||||||
|
'--nm', prog_nm.path(),
|
||||||
|
'--lib', libGLX,
|
||||||
|
'--symbols-file', files('glx.symbols'),
|
||||||
|
],
|
||||||
|
suite : ['glx', 'symbols'],
|
||||||
|
)
|
|
@ -0,0 +1,58 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
subdir('vnd-glapi')
|
||||||
|
|
||||||
|
if have_tls
|
||||||
|
_ver_script = 'export_list_tls.ver'
|
||||||
|
else
|
||||||
|
_ver_script = 'export_list_tsd.ver'
|
||||||
|
endif
|
||||||
|
_ver_script = join_paths(meson.current_source_dir(), _ver_script)
|
||||||
|
|
||||||
|
libgldispatch = shared_library(
|
||||||
|
'GLdispatch',
|
||||||
|
['GLdispatch.c'],
|
||||||
|
include_directories : [include_directories('vnd-glapi'), inc_include],
|
||||||
|
link_args : ['-Wl,--version-script', _ver_script],
|
||||||
|
link_with : libglapi,
|
||||||
|
dependencies : [
|
||||||
|
idep_trace, idep_glvnd_pthread, idep_app_error_check, dep_dl,
|
||||||
|
],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
link_depends : [_ver_script],
|
||||||
|
install : true,
|
||||||
|
version : '0.0.0',
|
||||||
|
)
|
||||||
|
|
||||||
|
inc_dispatch = include_directories('.')
|
||||||
|
|
||||||
|
idep_gldispatch = declare_dependency(
|
||||||
|
link_with : libgldispatch,
|
||||||
|
include_directories : inc_dispatch,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
inc_vnd_glapi = include_directories('.')
|
||||||
|
|
||||||
|
_libglapi_sources = []
|
||||||
|
if have_tls
|
||||||
|
_libglapi_sources += 'u_current_tls.c'
|
||||||
|
else
|
||||||
|
_libglapi_sources += 'u_current_tsd.c'
|
||||||
|
endif
|
||||||
|
|
||||||
|
_entry_files = []
|
||||||
|
if gl_dispatch_type == 'pure_c'
|
||||||
|
_entry_files += 'entry_pure_c.c'
|
||||||
|
else
|
||||||
|
_entry_files += 'entry_common.c'
|
||||||
|
if gl_dispatch_type != 'arm_tsd'
|
||||||
|
_entry_files += 'entry_simple_asm.c'
|
||||||
|
endif
|
||||||
|
if gl_dispatch_type == 'x86_tls'
|
||||||
|
_entry_files += 'entry_x86_tls.c'
|
||||||
|
elif gl_dispatch_type == 'x86_tsd'
|
||||||
|
_entry_files += 'entry_x86_tsd.c'
|
||||||
|
elif gl_dispatch_type == 'x86_64_tls'
|
||||||
|
_entry_files += 'entry_x86_64_tls.c'
|
||||||
|
elif gl_dispatch_type == 'x86_64_tsd'
|
||||||
|
_entry_files += 'entry_x86_64_tsd.c'
|
||||||
|
elif gl_dispatch_type == 'arm_tsd'
|
||||||
|
_entry_files += 'entry_armv7_tsd.c'
|
||||||
|
elif gl_dispatch_type == 'aarch64_tsd'
|
||||||
|
_entry_files += 'entry_aarch64_tsd.c'
|
||||||
|
elif gl_dispatch_type == 'ppc64le_tls'
|
||||||
|
_entry_files += 'entry_aarch64_tls.c'
|
||||||
|
elif gl_dispatch_type == 'ppc64le_tsd'
|
||||||
|
_entry_files += 'entry_aarch64_tsd.c'
|
||||||
|
else
|
||||||
|
error('No matching ASM file for @0@'.format(gl_dispatch_type))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
libglapi = static_library(
|
||||||
|
'libglapi',
|
||||||
|
[
|
||||||
|
'mapi_glapi.c',
|
||||||
|
'stub.c',
|
||||||
|
'table.c',
|
||||||
|
_libglapi_sources,
|
||||||
|
glapi_mapi_tmp_h,
|
||||||
|
_entry_files,
|
||||||
|
],
|
||||||
|
c_args : ['-DMAPI_ABI_HEADER="@0@"'.format(glapi_mapi_tmp_h.full_path())],
|
||||||
|
include_directories : inc_include,
|
||||||
|
dependencies : idep_utils_misc,
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach g : ['gl', 'opengl', 'glesv1', 'glesv2']
|
||||||
|
name = 'glapi_' + g
|
||||||
|
header = get_variable('g_glapi_mapi_@0@_tmp_h'.format(g))
|
||||||
|
|
||||||
|
_lib = static_library(
|
||||||
|
name,
|
||||||
|
['stub.c', _entry_files, header],
|
||||||
|
c_args : [
|
||||||
|
'-DSTATIC_DISPATCH_ONLY',
|
||||||
|
'-DMAPI_ABI_HEADER="@0@"'.format(header.full_path()),
|
||||||
|
],
|
||||||
|
include_directories : [inc_include, inc_util],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
_dep = declare_dependency(
|
||||||
|
link_with : _lib,
|
||||||
|
include_directories : inc_vnd_glapi,
|
||||||
|
)
|
||||||
|
|
||||||
|
set_variable('idep_' + name, _dep)
|
||||||
|
endforeach
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
libopengl_main = static_library(
|
||||||
|
'opengl_main',
|
||||||
|
['libopengl.c'],
|
||||||
|
include_directories : [inc_util, inc_vnd_glapi, inc_include, inc_dispatch],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
libOpenGL = shared_library(
|
||||||
|
'OpenGL',
|
||||||
|
link_whole : libopengl_main,
|
||||||
|
dependencies : [idep_gldispatch, idep_glapi_opengl, idep_utils_misc],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
install : true,
|
||||||
|
version : '0.0.0',
|
||||||
|
)
|
||||||
|
|
||||||
|
pkg.generate(
|
||||||
|
libOpenGL,
|
||||||
|
filebase : 'opengl',
|
||||||
|
description : 'OpenGL (without GLX) library and headers.',
|
||||||
|
version : '4.5',
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'OpenGL symbols check',
|
||||||
|
prog_py,
|
||||||
|
args : [
|
||||||
|
files_symbols_check,
|
||||||
|
'--nm', prog_nm.path(),
|
||||||
|
'--lib', libOpenGL,
|
||||||
|
'--symbols-file', files('ogl.symbols'),
|
||||||
|
],
|
||||||
|
suite : ['symbols'],
|
||||||
|
)
|
|
@ -0,0 +1,74 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
|
||||||
|
foreach t : [['glapi_mapi_tmp.h', 'gldispatch'],
|
||||||
|
['g_glapi_mapi_gl_tmp.h', 'gl'],
|
||||||
|
['g_glapi_mapi_opengl_tmp.h', 'opengl'],
|
||||||
|
['g_glapi_mapi_glesv1_tmp.h', 'glesv1'],
|
||||||
|
['g_glapi_mapi_glesv2_tmp.h', 'glesv2']]
|
||||||
|
file = t[0]
|
||||||
|
target = t[1]
|
||||||
|
var = file.underscorify()
|
||||||
|
|
||||||
|
_t = custom_target(
|
||||||
|
file,
|
||||||
|
input : ['gen_gldispatch_mapi.py', 'xml/gl.xml', 'xml/gl_other.xml'],
|
||||||
|
output : file,
|
||||||
|
command : [prog_py, '@INPUT0@', target, '@INPUT1@', '@INPUT2@'],
|
||||||
|
depend_files : files('genCommon.py'),
|
||||||
|
capture : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
set_variable(var, _t)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
foreach target : ['header', 'source']
|
||||||
|
ext = target == 'header' ? 'h' : 'c'
|
||||||
|
_t = custom_target(
|
||||||
|
'g_egldispatchstubs.' + ext,
|
||||||
|
input : ['gen_egl_dispatch.py', 'eglFunctionList.py', 'xml/egl.xml'],
|
||||||
|
output : ['g_egldispatchstubs.' + ext],
|
||||||
|
command : [
|
||||||
|
prog_py, '@INPUT0@', target, '@INPUT1@', '@INPUT2@',
|
||||||
|
],
|
||||||
|
depend_files : files('genCommon.py'),
|
||||||
|
capture : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
set_variable('g_egldispatchstubs_' + ext, _t)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
g_libglglxwrapper_c = custom_target(
|
||||||
|
'g_libglglxwrapper.c',
|
||||||
|
input : ['gen_libgl_glxstubs.py', 'xml/glx.xml', 'xml/glx_other.xml'],
|
||||||
|
output : ['g_libglglxwrapper.c'],
|
||||||
|
command : [prog_py, '@INPUT@'],
|
||||||
|
depend_files : files('genCommon.py'),
|
||||||
|
capture : true,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
subdir('util')
|
||||||
|
subdir('generate')
|
||||||
|
subdir('GLdispatch')
|
||||||
|
subdir('OpenGL')
|
||||||
|
|
||||||
|
if get_option('egl')
|
||||||
|
subdir('EGL')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if with_glx
|
||||||
|
subdir('GLX')
|
||||||
|
subdir('GL')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('gles1')
|
||||||
|
subdir('GLESv1')
|
||||||
|
endif
|
||||||
|
if get_option('gles2')
|
||||||
|
subdir('GLESv2')
|
||||||
|
endif
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
inc_util = include_directories('.')
|
||||||
|
|
||||||
|
libglvnd_pthread = static_library(
|
||||||
|
'glvnd_pthread',
|
||||||
|
['glvnd_pthread.c'],
|
||||||
|
dependencies : dep_dl,
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
idep_glvnd_pthread = declare_dependency(
|
||||||
|
link_with : libglvnd_pthread,
|
||||||
|
include_directories : inc_util,
|
||||||
|
)
|
||||||
|
|
||||||
|
libapp_error_check = static_library(
|
||||||
|
'app_error_check',
|
||||||
|
['app_error_check.c'],
|
||||||
|
include_directories : inc_include,
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
idep_app_error_check = declare_dependency(
|
||||||
|
link_with : libapp_error_check,
|
||||||
|
include_directories : inc_util,
|
||||||
|
)
|
||||||
|
|
||||||
|
libutils_misc = static_library(
|
||||||
|
'utils_misc',
|
||||||
|
['utils_misc.c'],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
idep_utils_misc = declare_dependency(
|
||||||
|
link_with : libutils_misc,
|
||||||
|
include_directories : inc_util,
|
||||||
|
)
|
||||||
|
|
||||||
|
libtrace = static_library(
|
||||||
|
'trace',
|
||||||
|
['trace.c'],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
idep_trace = declare_dependency(
|
||||||
|
link_with : libtrace,
|
||||||
|
include_directories : inc_util,
|
||||||
|
)
|
||||||
|
|
||||||
|
inc_uthash = include_directories('uthash/src')
|
||||||
|
|
||||||
|
libwinsys_dispatch = static_library(
|
||||||
|
'winsys_dispatch',
|
||||||
|
['winsys_dispatch.c'],
|
||||||
|
include_directories : [inc_include, inc_uthash],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
idep_winsys_dispatch = declare_dependency(
|
||||||
|
link_with : libwinsys_dispatch,
|
||||||
|
include_directories : [inc_util, inc_uthash],
|
||||||
|
)
|
||||||
|
|
||||||
|
libcjson = static_library(
|
||||||
|
'cJSON',
|
||||||
|
['cJSON.c'],
|
||||||
|
gnu_symbol_visibility : 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
idep_cjson = declare_dependency(
|
||||||
|
link_with : libcjson,
|
||||||
|
include_directories : inc_util,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
libpatchentrypoints = static_library(
|
||||||
|
'patchentrypoints',
|
||||||
|
['patchentrypoints.c'],
|
||||||
|
include_directories : [inc_include, inc_util, inc_dispatch],
|
||||||
|
)
|
||||||
|
|
||||||
|
prog_cp = find_program('cp')
|
||||||
|
|
||||||
|
if with_glx
|
||||||
|
libGLX_dummy = shared_module(
|
||||||
|
'GLX_dummy',
|
||||||
|
['GLX_dummy.c'],
|
||||||
|
include_directories : [inc_dispatch, inc_glx, inc_include],
|
||||||
|
link_with: [libpatchentrypoints],
|
||||||
|
dependencies : [idep_trace, idep_utils_misc],
|
||||||
|
)
|
||||||
|
|
||||||
|
# The ICD loader expects to load a .so.0, but meson generates the .X.Y.Z
|
||||||
|
# links at install time, the build time directories only have the plain .so
|
||||||
|
# files, so we copy the .so to .so.0 so tests will work
|
||||||
|
custom_target(
|
||||||
|
'GLX_dummy.so.0',
|
||||||
|
input : [libGLX_dummy],
|
||||||
|
output : 'libGLX_dummy.so.0',
|
||||||
|
command : [prog_cp, '@INPUT@', '@OUTPUT@'],
|
||||||
|
build_by_default : true,
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('egl')
|
||||||
|
foreach v : ['0', '1']
|
||||||
|
_lib = shared_module(
|
||||||
|
'EGL_dummy' + v,
|
||||||
|
['EGL_dummy.c'],
|
||||||
|
c_args : ['-DDUMMY_VENDOR_NAME="dummy@0@"'.format(v)],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_with: [libpatchentrypoints],
|
||||||
|
dependencies : [idep_glvnd_pthread],
|
||||||
|
)
|
||||||
|
|
||||||
|
set_variable('libEGL_dummy' + v, _lib)
|
||||||
|
|
||||||
|
# see The comment in the with_glx block
|
||||||
|
custom_target(
|
||||||
|
'EGL_dummy@0@.so.0'.format(v),
|
||||||
|
input : _lib,
|
||||||
|
output : 'libEGL_dummy@0@.so.0'.format(v),
|
||||||
|
command : [prog_cp, '@INPUT@', '@OUTPUT@'],
|
||||||
|
build_by_default : true,
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
endif
|
||||||
|
|
||||||
|
dummy_build_dir = meson.current_build_dir()
|
||||||
|
|
|
@ -0,0 +1,214 @@
|
||||||
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# unaltered in all copies or substantial portions of the Materials.
|
||||||
|
# Any additions, deletions, or changes to the original source files
|
||||||
|
# must be clearly indicated in accompanying documentation.
|
||||||
|
|
||||||
|
# If only executable code is distributed, then the accompanying
|
||||||
|
# documentation must state that "this software is based in part on the
|
||||||
|
# work of the Khronos Group."
|
||||||
|
|
||||||
|
# THE MATERIALS ARE 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
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
subdir('dummy')
|
||||||
|
|
||||||
|
exe_gldispatch = executable(
|
||||||
|
'testgldispatch',
|
||||||
|
['testgldispatch.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_with : [libOpenGL, libpatchentrypoints],
|
||||||
|
dependencies : [idep_gldispatch, idep_utils_misc, dep_threads],
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach k : [['static', ['-s']],
|
||||||
|
['static thr', ['-s', '-t']],
|
||||||
|
['generated', ['-g']],
|
||||||
|
['generated end', ['-g', '-l']],
|
||||||
|
['generated thr', ['-g', '-t']],
|
||||||
|
['generated thr end', ['-g', '-t', '-l']],
|
||||||
|
['patched', ['-s', '-g', '-p']],
|
||||||
|
['patched end', ['-s', '-g', '-p', '-l']],
|
||||||
|
['patched thr', ['-s', '-g', '-p', '-t']],
|
||||||
|
['patched thr end', ['-s', '-g', '-p', '-t', '-l']]]
|
||||||
|
test(
|
||||||
|
'gldispatch ' + k[0],
|
||||||
|
exe_gldispatch,
|
||||||
|
args : k[1],
|
||||||
|
suite : ['gldispatch'],
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
test(
|
||||||
|
'testgldispatchthread',
|
||||||
|
executable(
|
||||||
|
'testgldispatchthread',
|
||||||
|
['testgldispatchthread.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
dependencies : [idep_gldispatch, dep_threads],
|
||||||
|
),
|
||||||
|
suite : ['gldispatch'],
|
||||||
|
)
|
||||||
|
|
||||||
|
_env_ld = 'LD_LIBRARY_PATH=@0@/'.format(dummy_build_dir)
|
||||||
|
|
||||||
|
if with_glx
|
||||||
|
env_glx = [
|
||||||
|
'__GLX_FORCE_VENDOR_LIBRARY_0=dummy',
|
||||||
|
_env_ld,
|
||||||
|
]
|
||||||
|
|
||||||
|
test(
|
||||||
|
'glxcreatecontext',
|
||||||
|
executable(
|
||||||
|
'glxcreatecontext',
|
||||||
|
['testglxcreatecontext.c', 'test_utils.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_with : libOpenGL,
|
||||||
|
dependencies : [idep_glx, dep_x11],
|
||||||
|
),
|
||||||
|
env : env_glx,
|
||||||
|
suite : ['glx'],
|
||||||
|
)
|
||||||
|
|
||||||
|
exe_glxmakecurrent = executable(
|
||||||
|
'glxmakecurrent',
|
||||||
|
['testglxmakecurrent.c', 'test_utils.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_with : [libOpenGL],
|
||||||
|
dependencies : [
|
||||||
|
dep_dl, dep_x11, idep_glvnd_pthread, idep_trace, idep_utils_misc,
|
||||||
|
idep_glx,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach t : [['basic', ['-t', '1', '-i', '1'], env_glx],
|
||||||
|
['loop', ['-t', '1', '-i', '250'], env_glx],
|
||||||
|
['threads', ['-t', '5', '-i', '20000'], [env_glx, 'LD_PRELOAD=libpthread.so.0']],
|
||||||
|
]
|
||||||
|
test(
|
||||||
|
'glxmakecurrent (@0@)'.format(t[0]),
|
||||||
|
exe_glxmakecurrent,
|
||||||
|
args : t[1],
|
||||||
|
env : t[2],
|
||||||
|
suite : ['glx'],
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
test(
|
||||||
|
'glxmakecurrent (oldlink)',
|
||||||
|
executable(
|
||||||
|
'glxmakecurrent_oldlink',
|
||||||
|
['testglxmakecurrent.c', 'test_utils.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_with : [libGL],
|
||||||
|
dependencies : [
|
||||||
|
dep_dl, dep_x11, idep_glvnd_pthread, idep_trace, idep_utils_misc,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
args : ['-t', '1', '-i', '1'],
|
||||||
|
env : env_glx,
|
||||||
|
suite : ['glx'],
|
||||||
|
)
|
||||||
|
|
||||||
|
exe_glxgetprocaddress = executable(
|
||||||
|
'glxgetprocaddress',
|
||||||
|
['testglxgetprocaddress.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
dependencies : [dep_x11, idep_glx, idep_gldispatch],
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'glxgetprocess',
|
||||||
|
exe_glxgetprocaddress,
|
||||||
|
env : env_glx,
|
||||||
|
suite : ['glx'],
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'glxgetprocess_genentry',
|
||||||
|
exe_glxgetprocaddress,
|
||||||
|
env : env_glx,
|
||||||
|
suite : ['glx'],
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'glxgetprocaddress_genentry',
|
||||||
|
executable(
|
||||||
|
'testglxgetprocaddress_genentry',
|
||||||
|
['testglxgetprocaddress_genentry.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
dependencies : [dep_x11, idep_glx],
|
||||||
|
),
|
||||||
|
env : env_glx,
|
||||||
|
suite : ['glx'],
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'glxgetclientstr',
|
||||||
|
executable(
|
||||||
|
'glxgetclientstr',
|
||||||
|
['testglxgetclientstr.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_with : libOpenGL,
|
||||||
|
dependencies : [dep_x11, idep_glx, idep_trace, idep_utils_misc],
|
||||||
|
),
|
||||||
|
env : env_glx,
|
||||||
|
suite : ['glx'],
|
||||||
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'glxgetqueryversion',
|
||||||
|
executable(
|
||||||
|
'glxqueryversion',
|
||||||
|
['testglxqueryversion.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_with : libOpenGL,
|
||||||
|
dependencies : [dep_x11, idep_glx],
|
||||||
|
),
|
||||||
|
env : env_glx,
|
||||||
|
suite : ['glx'],
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('egl')
|
||||||
|
env_egl = [
|
||||||
|
'__EGL_VENDOR_LIBRARY_DIRS=@0@'.format(join_paths(meson.current_source_dir(), 'json')),
|
||||||
|
_env_ld,
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach t : [['egldisplay', [], []],
|
||||||
|
['egldevice', [], []],
|
||||||
|
['eglgetprocaddress', [], []],
|
||||||
|
['eglmakecurrent', [libOpenGL], [idep_utils_misc]],
|
||||||
|
['eglerror', [libOpenGL], []],
|
||||||
|
['egldebug', [], []]]
|
||||||
|
test(
|
||||||
|
t[0],
|
||||||
|
executable(
|
||||||
|
t[0],
|
||||||
|
['test@0@.c'.format(t[0]), 'egl_test_utils.c'],
|
||||||
|
include_directories : [inc_include],
|
||||||
|
link_with : [libEGL, t[1]],
|
||||||
|
dependencies : [t[2]],
|
||||||
|
),
|
||||||
|
env : env_egl,
|
||||||
|
suite : ['egl'],
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
endif
|
||||||
|
|
Loading…
Reference in New Issue