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