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=$" "-DEPOXY_SHARED_LIB=$" "-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=$" "-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 (GLES_V1_FOUND) epoxy_add_test (egl_gles1_without_glx "${EPOXY_EGL_TESTS_COMMON};egl_without_glx.c" "${X11_LIBRARIES}" "GLES_VERSION=1") endif () if (GLES_V2_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 (GLES_V2_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 ()