1*706d0b42SXin Lidl_dep = cc.find_library('dl', required: false) 2*706d0b42SXin Lihas_dlvsym = cc.has_function('dlvsym', dependencies: dl_dep) 3*706d0b42SXin Li 4*706d0b42SXin Lihas_gles1 = gles1_dep.found() 5*706d0b42SXin Lihas_gles2 = gles2_dep.found() 6*706d0b42SXin Libuild_x11_tests = enable_x11 and x11_dep.found() 7*706d0b42SXin Li 8*706d0b42SXin Litest_cflags = common_cflags 9*706d0b42SXin Liif not has_dlvsym 10*706d0b42SXin Litest_cflags += [ 11*706d0b42SXin Li '-D_XOPEN_SOURCE', 12*706d0b42SXin Li '-D_POSIX_C_SOURCE=200809L', 13*706d0b42SXin Li] 14*706d0b42SXin Liendif 15*706d0b42SXin Li 16*706d0b42SXin Li# Unconditionally built tests 17*706d0b42SXin Litest('header_guards', 18*706d0b42SXin Li executable('header guards', 'headerguards.c', 19*706d0b42SXin Li c_args: common_cflags, 20*706d0b42SXin Li dependencies: libepoxy_dep, 21*706d0b42SXin Li include_directories: libepoxy_inc)) 22*706d0b42SXin Litest('misc_defines', 23*706d0b42SXin Li executable('misc defines', 'miscdefines.c', 24*706d0b42SXin Li c_args: common_cflags, 25*706d0b42SXin Li dependencies: libepoxy_dep, 26*706d0b42SXin Li include_directories: libepoxy_inc)) 27*706d0b42SXin Litest('khronos_typedefs', 28*706d0b42SXin Li executable('khronos typedefs', [ 29*706d0b42SXin Li 'khronos_typedefs.c', 30*706d0b42SXin Li 'khronos_typedefs.h', 31*706d0b42SXin Li 'khronos_typedefs_nonepoxy.c', 32*706d0b42SXin Li ], 33*706d0b42SXin Li c_args: common_cflags, 34*706d0b42SXin Li dependencies: libepoxy_dep, 35*706d0b42SXin Li include_directories: libepoxy_inc)) 36*706d0b42SXin Litest('gl_version', 37*706d0b42SXin Li executable('gl_version', 38*706d0b42SXin Li 'gl_version.c', 39*706d0b42SXin Li c_args: common_cflags, 40*706d0b42SXin Li dependencies: libepoxy_dep, 41*706d0b42SXin Li include_directories: libepoxy_inc)) 42*706d0b42SXin Li 43*706d0b42SXin Liif build_egl and build_x11_tests 44*706d0b42SXin Li egl_common_sources = [ 'egl_common.h', 'egl_common.c', ] 45*706d0b42SXin Li egl_common_lib = static_library('egl_common', 46*706d0b42SXin Li sources: egl_common_sources, 47*706d0b42SXin Li dependencies: libepoxy_dep, 48*706d0b42SXin Li include_directories: libepoxy_inc, 49*706d0b42SXin Li c_args: common_cflags, 50*706d0b42SXin Li install: false) 51*706d0b42SXin Li 52*706d0b42SXin Li egl_tests = [ 53*706d0b42SXin Li [ 'egl_has_extension_nocontext', [], [ 'egl_has_extension_nocontext.c' ], true, ], 54*706d0b42SXin Li [ 'egl_epoxy_api', [], [ 'egl_epoxy_api.c' ], true ], 55*706d0b42SXin Li [ 'egl_gles1_without_glx', [ '-DGLES_VERSION=1', ], [ 'egl_without_glx.c' ], has_gles1, ], 56*706d0b42SXin Li [ 'egl_gles2_without_glx', [ '-DGLES_VERSION=2', ], [ 'egl_without_glx.c' ], has_gles2, ], 57*706d0b42SXin Li ] 58*706d0b42SXin Li 59*706d0b42SXin Li if build_glx 60*706d0b42SXin Li egl_tests += [ 61*706d0b42SXin Li [ 'egl_gl', [], [ 'egl_gl.c' ], true, ], 62*706d0b42SXin Li ] 63*706d0b42SXin Li endif 64*706d0b42SXin Li 65*706d0b42SXin Li foreach test: egl_tests 66*706d0b42SXin Li test_name = test[0] 67*706d0b42SXin Li test_source = test[2] 68*706d0b42SXin Li test_args = test[1] 69*706d0b42SXin Li test_run = test[3] 70*706d0b42SXin Li 71*706d0b42SXin Li if test_run 72*706d0b42SXin Li test_bin = executable(test_name, test_source, 73*706d0b42SXin Li c_args: test_cflags + test_args, 74*706d0b42SXin Li include_directories: libepoxy_inc, 75*706d0b42SXin Li dependencies: [ libepoxy_dep, x11_dep, egl_dep, dl_dep ], 76*706d0b42SXin Li link_with: egl_common_lib, 77*706d0b42SXin Li link_args: '-rdynamic') 78*706d0b42SXin Li test(test_name, test_bin) 79*706d0b42SXin Li endif 80*706d0b42SXin Li endforeach 81*706d0b42SXin Liendif 82*706d0b42SXin Li 83*706d0b42SXin Liif build_glx and build_x11_tests 84*706d0b42SXin Li glx_common_sources = [ 'glx_common.h', 'glx_common.c', ] 85*706d0b42SXin Li glx_common_lib = static_library('glx_common', 86*706d0b42SXin Li sources: glx_common_sources, 87*706d0b42SXin Li dependencies: libepoxy_dep, 88*706d0b42SXin Li include_directories: libepoxy_inc, 89*706d0b42SXin Li c_args: common_cflags, 90*706d0b42SXin Li install: false) 91*706d0b42SXin Li 92*706d0b42SXin Li # glx_beginend links directly with the GL library, so we need to check it 93*706d0b42SXin Li # separately 94*706d0b42SXin Li test('glx_beginend', executable('glx_beginend', 'glx_beginend.c', 95*706d0b42SXin Li c_args: test_cflags, 96*706d0b42SXin Li include_directories: libepoxy_inc, 97*706d0b42SXin Li dependencies: [ libepoxy_dep, x11_dep, gl_dep, dl_dep ], 98*706d0b42SXin Li link_with: glx_common_lib)) 99*706d0b42SXin Li 100*706d0b42SXin Li glx_tests = [ 101*706d0b42SXin Li [ 'glx_public_api', [ 'glx_public_api.c' ], [], [], true ], 102*706d0b42SXin Li [ 'glx_public_api_core', [ 'glx_public_api_core.c' ], [], [], true ], 103*706d0b42SXin Li [ 'glx_glxgetprocaddress_nocontext', [ 'glx_glxgetprocaddress_nocontext.c' ], [], [], true ], 104*706d0b42SXin Li [ 'glx_has_extension_nocontext', [ 'glx_has_extension_nocontext.c' ], [], [], true ], 105*706d0b42SXin Li [ 'glx_static', [ 'glx_static.c' ], [ '-DNEEDS_TO_BE_STATIC'], [ '-static' ], libtype == 'static' ], 106*706d0b42SXin Li [ 'glx_shared_znow', [ 'glx_static.c', ], [], [ '-Wl,-z,now' ], has_znow ], 107*706d0b42SXin Li [ 'glx_alias_prefer_same_name', [ 'glx_alias_prefer_same_name.c', 'dlwrap.c', 'dlwrap.h' ], [], [ '-rdynamic' ], has_dlvsym ], 108*706d0b42SXin Li [ 'glx_gles2', [ 'glx_gles2.c', 'dlwrap.c', 'dlwrap.h' ], [], [ '-rdynamic' ], has_dlvsym ], 109*706d0b42SXin Li ] 110*706d0b42SXin Li 111*706d0b42SXin Li foreach test: glx_tests 112*706d0b42SXin Li test_name = test[0] 113*706d0b42SXin Li test_source = test[1] 114*706d0b42SXin Li test_c_args = test[2] 115*706d0b42SXin Li test_link_args = test[3] 116*706d0b42SXin Li test_run = test[4] 117*706d0b42SXin Li 118*706d0b42SXin Li if test_run 119*706d0b42SXin Li test_bin = executable(test_name, test_source, 120*706d0b42SXin Li c_args: test_cflags + test_c_args, 121*706d0b42SXin Li include_directories: libepoxy_inc, 122*706d0b42SXin Li dependencies: [ libepoxy_dep, x11_dep, dl_dep ], 123*706d0b42SXin Li link_with: glx_common_lib, 124*706d0b42SXin Li link_args: test_link_args) 125*706d0b42SXin Li test(test_name, test_bin) 126*706d0b42SXin Li endif 127*706d0b42SXin Li endforeach 128*706d0b42SXin Liendif 129*706d0b42SXin Li 130*706d0b42SXin Li# WGL 131*706d0b42SXin Liif build_wgl 132*706d0b42SXin Li wgl_common_sources = [ 'wgl_common.h', 'wgl_common.c', ] 133*706d0b42SXin Li wgl_common_lib = static_library('wgl_common', 134*706d0b42SXin Li sources: wgl_common_sources, 135*706d0b42SXin Li dependencies: libepoxy_dep, 136*706d0b42SXin Li include_directories: libepoxy_inc, 137*706d0b42SXin Li c_args: common_cflags, 138*706d0b42SXin Li install: false) 139*706d0b42SXin Li 140*706d0b42SXin Li wgl_tests = [ 141*706d0b42SXin Li [ 'wgl_core_and_exts', [ 'wgl_core_and_exts.c' ], [], ], 142*706d0b42SXin Li [ 'wgl_per_context_funcptrs', [ 'wgl_per_context_funcptrs.c' ], [], ], 143*706d0b42SXin Li [ 'wgl_usefontbitmaps', [ 'wgl_usefontbitmaps.c'], [], ], 144*706d0b42SXin Li [ 'wgl_usefontbitmaps_unicode', [ 'wgl_usefontbitmaps.c' ], [ '-DUNICODE' ], ], 145*706d0b42SXin Li ] 146*706d0b42SXin Li 147*706d0b42SXin Li foreach test: wgl_tests 148*706d0b42SXin Li test_name = test[0] 149*706d0b42SXin Li test_source = test[1] 150*706d0b42SXin Li test_c_args = test[2] 151*706d0b42SXin Li 152*706d0b42SXin Li test_bin = executable(test_name, test_source, 153*706d0b42SXin Li c_args: test_cflags + test_c_args, 154*706d0b42SXin Li include_directories: libepoxy_inc, 155*706d0b42SXin Li dependencies: [ libepoxy_dep ], 156*706d0b42SXin Li link_with: wgl_common_lib) 157*706d0b42SXin Li 158*706d0b42SXin Li test(test_name, test_bin) 159*706d0b42SXin Li endforeach 160*706d0b42SXin Liendif 161*706d0b42SXin Li 162*706d0b42SXin Li# Apple 163*706d0b42SXin Liif host_machine.system().contains('darwin') 164*706d0b42SXin Li opengl_dep = dependency('appleframeworks', modules: ['OpenGL', 'Carbon'], required: true) 165*706d0b42SXin Li 166*706d0b42SXin Li cgl_tests = [ 167*706d0b42SXin Li [ 'cgl_core', [ 'cgl_core.c' ] ], 168*706d0b42SXin Li [ 'cgl_epoxy_api', [ 'cgl_epoxy_api.c' ] ], 169*706d0b42SXin Li ] 170*706d0b42SXin Li 171*706d0b42SXin Li foreach t: cgl_tests 172*706d0b42SXin Li test_name = t[0] 173*706d0b42SXin Li test_sources = t[1] 174*706d0b42SXin Li 175*706d0b42SXin Li test(test_name, 176*706d0b42SXin Li executable( 177*706d0b42SXin Li test_name, test_sources, 178*706d0b42SXin Li c_args: test_cflags, 179*706d0b42SXin Li include_directories: libepoxy_inc, 180*706d0b42SXin Li dependencies: [ libepoxy_dep, opengl_dep ], 181*706d0b42SXin Li ), 182*706d0b42SXin Li ) 183*706d0b42SXin Li endforeach 184*706d0b42SXin Liendif 185