xref: /aosp_15_r20/external/libepoxy/test/meson.build (revision 706d0b42ae4182339789e08d473a0b312ecdc60f)
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