summaryrefslogtreecommitdiff
path: root/test/CMakeLists.txt
blob: ef3511bb57e1c0aac7038dd8f9f78a436f8ba82a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
if (EPOXY_BUILD_TESTS)

    if (EPOXY_BUILD_SHARED)
        set (TESTS_TARGET_NAME "${EPOXY_TARGET_NAME}_shared")
    else ()
        set (TESTS_TARGET_NAME "${EPOXY_TARGET_NAME}_static")
    endif ()

    if (EPOXY_SUPPORT_EGL)
        if (EGL_FOUND)
            set (EPOXY_BUILD_EGL_TESTS TRUE)
            set (EPOXY_EGL_TESTS_COMMON egl_common.c egl_common.h)
        else ()
            set (EPOXY_BUILD_EGL_TESTS FALSE)
            message (WARNING "EGL not found - EGL tests will not be built!")
        endif ()
    endif ()
    if (EPOXY_SUPPORT_GLX)
        set (EPOXY_GLX_TESTS_COMMON glx_common.c glx_common.h)
    endif ()
    if (EPOXY_SUPPORT_WGL)
        set (EPOXY_WGL_TESTS_COMMON wgl_common.c wgl_common.h)
    endif ()

    set (EPOXY_LINKAGE_TYPE_SHARED SHARED)
    set (EPOXY_LINKAGE_TYPE_STATIC STATIC)
    
    function (epoxy_add_test EPOXY_TEST_NAME EPOXY_TEST_CODE)
      # Additional optional arguments: "EPOXY_TEST_DEPS EPOXY_TEST_COMPILE_DEFS EPOXY_TEST_LINK_FLAGS"
      #                                "EPOXY_LINKAGE_TYPE"
      
        if (ARGC GREATER 2)
            set (EPOXY_TEST_DEPS "${ARGV2}")
        else ()
            set (EPOXY_TEST_DEPS "")
        endif ()
        if (ARGC GREATER 3)
            set (EPOXY_TEST_COMPILE_DEFS "${ARGV3}")
        else ()
            set (EPOXY_TEST_COMPILE_DEFS "")
        endif ()
        if (ARGC GREATER 4)
            set (EPOXY_TEST_LINK_FLAGS "${ARGV4}")
        else ()
            set (EPOXY_TEST_LINK_FLAGS "")
        endif ()
        if (ARGC GREATER 5)
            set (EPOXY_TEST_LINKAGE_TYPE "${ARGV5}")
        else ()
            set (EPOXY_TEST_LINKAGE_TYPE BOTH)
        endif ()
        
        if (EPOXY_BUILD_SHARED AND NOT EPOXY_TEST_LINKAGE_TYPE STREQUAL EPOXY_LINKAGE_TYPE_STATIC)
            set (EPOXY_TEST_TARGET_NAME "test_shared_${EPOXY_TEST_NAME}")
            add_executable (${EPOXY_TEST_TARGET_NAME} ${EPOXY_TEST_CODE})
            target_link_libraries (${EPOXY_TEST_TARGET_NAME} "${EPOXY_TARGET_NAME}_shared" ${EPOXY_TEST_DEPS})
            target_compile_definitions (${EPOXY_TEST_TARGET_NAME} PRIVATE
                                        ${EPOXY_TEST_COMPILE_DEFS})
            target_include_directories (${EPOXY_TEST_TARGET_NAME} PRIVATE ${EPOXY_INCLUDE_DIRS})
            set_target_properties (${EPOXY_TEST_TARGET_NAME} PROPERTIES
                                   LINK_FLAGS "${EPOXY_TEST_LINK_FLAGS}")
            add_test (NAME "${EPOXY_TEST_TARGET_NAME}"
                      COMMAND "${CMAKE_COMMAND}"
                          "-DEPOXY_TEST_CMD=$<TARGET_FILE:${EPOXY_TEST_TARGET_NAME}>"
                          "-DEPOXY_SHARED_LIB=$<TARGET_FILE:${EPOXY_TARGET_NAME}_shared>"
                          "-P" "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/epoxy_run_test_wrapper.cmake")
        endif ()
        
        if (EPOXY_BUILD_STATIC AND NOT EPOXY_TEST_LINKAGE_TYPE STREQUAL EPOXY_LINKAGE_TYPE_SHARED)
            set (EPOXY_TEST_TARGET_NAME "test_static_${EPOXY_TEST_NAME}")
            add_executable (${EPOXY_TEST_TARGET_NAME} ${EPOXY_TEST_CODE})
            target_link_libraries (${EPOXY_TEST_TARGET_NAME} "${EPOXY_TARGET_NAME}_static" ${EPOXY_TEST_DEPS})
            target_compile_definitions (${EPOXY_TEST_TARGET_NAME} PRIVATE
                                        ${EPOXY_TEST_COMPILE_DEFS} EPOXY_STATIC_LIB)
            target_include_directories (${EPOXY_TEST_TARGET_NAME} PRIVATE ${EPOXY_INCLUDE_DIRS})
            set_target_properties (${EPOXY_TEST_TARGET_NAME} PROPERTIES
                                   LINK_FLAGS "${EPOXY_TEST_LINK_FLAGS}")
            add_test (NAME "${EPOXY_TEST_TARGET_NAME}"
                      COMMAND "${CMAKE_COMMAND}"
                          "-DEPOXY_TEST_CMD=$<TARGET_FILE:${EPOXY_TEST_TARGET_NAME}>"
                          "-P" "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/epoxy_run_test_wrapper.cmake")
        endif ()
        
    endfunction ()

    if (EPOXY_BUILD_EGL_TESTS AND X11_FOUND)

        epoxy_add_test (egl_has_extension_nocontext "${EPOXY_EGL_TESTS_COMMON};egl_has_extension_nocontext.c"
                        "${X11_LIBRARIES}")
        epoxy_add_test (egl_gl "${EPOXY_EGL_TESTS_COMMON};egl_gl.c" "${X11_LIBRARIES}")
        if (GLESv1_FOUND)
            epoxy_add_test (egl_gles1_without_glx "${EPOXY_EGL_TESTS_COMMON};egl_without_glx.c" "${X11_LIBRARIES}"
                            "GLES_VERSION=1")
        endif ()
        if (GLESv2_FOUND)
            epoxy_add_test (egl_gles2_without_glx "${EPOXY_EGL_TESTS_COMMON};egl_without_glx.c" "${X11_LIBRARIES}"
                            "GLES_VERSION=2")
        endif ()
    endif()

    if (EPOXY_BUILD_EGL_TESTS AND EPOXY_SUPPORT_GLX AND NOT APPLE)
    
        #epoxy_add_test (egl_and_glx_different_pointers "${EPOXY_EGL_TESTS_COMMON};${EPOXY_GLX_TESTS_COMMON};egl_and_glx_different_pointers.c;dlwrap.c;dlwrap.h" "${X11_LIBRARIES}" "USE_EGL;USE_GLX" "-rdynamic")
        epoxy_add_test (egl_different_pointers
          "${EPOXY_EGL_TESTS_COMMON};${EPOXY_GLX_TESTS_COMMON};egl_and_glx_different_pointers.c;dlwrap.c;dlwrap.h"
          "${X11_LIBRARIES}" "USE_EGL" "-rdynamic")
        epoxy_add_test (glx_different_pointers
          "${EPOXY_EGL_TESTS_COMMON};${EPOXY_GLX_TESTS_COMMON};egl_and_glx_different_pointers.c;dlwrap.c;dlwrap.h"
          "${X11_LIBRARIES}" "USE_GLX" "-rdynamic")
    endif ()

    if (EPOXY_SUPPORT_GLX)
    
        if (NOT APPLE)
            epoxy_add_test (glx_alias_prefer_same_name
              "${EPOXY_GLX_TESTS_COMMON};glx_alias_prefer_same_name.c;dlwrap.c;dlwrap.h" "${X11_LIBRARIES}"
              "" "-rdynamic")
            if (GLESv2_FOUND)
                epoxy_add_test (test_glx_gles2
                  "${EPOXY_GLX_TESTS_COMMON};glx_gles2.c;dlwrap.c;dlwrap.h" "${X11_LIBRARIES}" "" "-rdynamic")
            endif ()
        endif ()
        
        epoxy_add_test (test_glx_beginend "${EPOXY_GLX_TESTS_COMMON};glx_beginend.c"
                        "${OPENGL_gl_LIBRARY};${X11_LIBRARIES}")
        epoxy_add_test (glx_public_api "${EPOXY_GLX_TESTS_COMMON};glx_public_api.c" "${X11_LIBRARIES}")
        epoxy_add_test (glx_public_api_core "${EPOXY_GLX_TESTS_COMMON};glx_public_api_core.c" "${X11_LIBRARIES}")
        epoxy_add_test (glx_getprocaddress_nocontext
          "${EPOXY_GLX_TESTS_COMMON};glx_glxgetprocaddress_nocontext.c" "${X11_LIBRARIES}")
        epoxy_add_test (glx_has_extension_nocontext "${EPOXY_GLX_TESTS_COMMON};glx_has_extension_nocontext.c"
                        "${X11_LIBRARIES}")

        epoxy_add_test (glx_shared_znow "${EPOXY_GLX_TESTS_COMMON};glx_static.c"
                        "${X11_LIBRARIES}" "" "-Wl,-z,now" SHARED)
        epoxy_add_test (glx_static "${EPOXY_GLX_TESTS_COMMON};glx_static.c"
                        "${X11_LIBRARIES}" "NEEDS_TO_BE_STATIC" "" STATIC)
    endif ()

	epoxy_add_test (headerguards headerguards.c)
	epoxy_add_test (miscdefines miscdefines.c)

    if (EPOXY_SUPPORT_WGL)
        epoxy_add_test (wgl_core_and_exts "${EPOXY_WGL_TESTS_COMMON};wgl_core_and_exts.c")
		epoxy_add_test (wgl_per_context_funcptrs "${EPOXY_WGL_TESTS_COMMON};wgl_per_context_funcptrs.c")
		epoxy_add_test (wgl_usefontbitmaps_ascii "${EPOXY_WGL_TESTS_COMMON};wgl_usefontbitmaps.c")
		epoxy_add_test (wgl_usefontbitmaps_unicode "${EPOXY_WGL_TESTS_COMMON};wgl_usefontbitmaps.c"
                                "" "_UNICODE;UNICODE")
	endif ()

endif ()