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