90 lines
2.6 KiB
CMake
90 lines
2.6 KiB
CMake
project(flecs_tests LANGUAGES C CXX)
|
|
|
|
if(NOT BAKE_DIRECTORY)
|
|
set(BAKE_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/bake")
|
|
else()
|
|
set(BAKE_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/../${BAKE_DIRECTORY}")
|
|
endif()
|
|
|
|
if(NOT IS_DIRECTORY "${BAKE_DIRECTORY}")
|
|
message(FATAL_ERROR "The CMake tests require a bake repository "
|
|
"at '${BAKE_DIRECTORY}'.")
|
|
endif()
|
|
|
|
macro(add_flecs_test DIRECTORY)
|
|
get_filename_component(TEST_NAME_WE ${DIRECTORY} NAME_WE)
|
|
|
|
file(
|
|
GLOB_RECURSE TEST_SOURCES CONFIGURE_DEPENDS
|
|
LIST_DIRECTORIES false
|
|
"${DIRECTORY}/*.cpp" "${DIRECTORY}/*.c" "${DIRECTORY}/*.h")
|
|
|
|
foreach(CURRENT_FLECS_TARGET IN LISTS FLECS_TARGETS)
|
|
set(TEST_NAME "test_${TEST_NAME_WE}_${CURRENT_FLECS_TARGET}")
|
|
set(CTEST_NAME "flecs_${TEST_NAME_WE}_test_${CURRENT_FLECS_TARGET}")
|
|
|
|
message(STATUS "Adding test ${TEST_NAME}")
|
|
|
|
add_executable("${TEST_NAME}" ${TEST_SOURCES})
|
|
|
|
target_link_libraries("${TEST_NAME}" PUBLIC bake_base
|
|
${CURRENT_FLECS_TARGET})
|
|
|
|
if(IS_DIRECTORY "${DIRECTORY}/include")
|
|
target_include_directories(${TEST_NAME} PUBLIC "${DIRECTORY}/include")
|
|
endif()
|
|
|
|
set_target_properties(
|
|
${TEST_NAME}
|
|
PROPERTIES VS_DEBUGGER_COMMAND_ARGUMENTS "-j 1"
|
|
VS_DEBUGGER_ENVIRONMENT
|
|
"BAKE_TEST_INPLACE=1\nBAKE_VERBOSITY=OK")
|
|
|
|
add_test(NAME ${CTEST_NAME} COMMAND $<TARGET_FILE:${TEST_NAME}>)
|
|
|
|
endforeach()
|
|
endmacro()
|
|
|
|
# Polyfill for bake
|
|
file(
|
|
GLOB_RECURSE BAKE_SOURCES CONFIGURE_DEPENDS
|
|
LIST_DIRECTORIES false
|
|
"${BAKE_DIRECTORY}/src/*.c"
|
|
"${BAKE_DIRECTORY}/src/*.h"
|
|
"${BAKE_DIRECTORY}/drivers/test/src/*.c"
|
|
"${BAKE_DIRECTORY}/drivers/test/src/*.h"
|
|
"${BAKE_DIRECTORY}/util/src/*.c"
|
|
"${BAKE_DIRECTORY}/util/src/*.h")
|
|
|
|
if(WIN32)
|
|
list(FILTER BAKE_SOURCES EXCLUDE REGEX "src/posix")
|
|
else()
|
|
list(FILTER BAKE_SOURCES EXCLUDE REGEX "src/win")
|
|
endif()
|
|
|
|
message(STATUS ${BAKE_DIRECTORY})
|
|
|
|
add_library(bake_base SHARED ${BAKE_SOURCES})
|
|
|
|
target_include_directories(
|
|
bake_base PUBLIC "${BAKE_DIRECTORY}/include" "${BAKE_DIRECTORY}/util/include"
|
|
"${BAKE_DIRECTORY}/drivers/test/include")
|
|
|
|
target_compile_definitions(
|
|
bake_base
|
|
PUBLIC __BAKE__=1
|
|
PRIVATE bake_test_EXPORTS=1 UT_IMPL=1
|
|
_XOPEN_SOURCE=600)
|
|
|
|
if(WIN32)
|
|
target_link_libraries(bake_base PUBLIC Dbghelp Shlwapi Ws2_32)
|
|
endif()
|
|
if(UNIX AND NOT APPLE)
|
|
target_link_libraries(bake_base PUBLIC m)
|
|
endif()
|
|
|
|
add_flecs_test("${CMAKE_CURRENT_LIST_DIR}/addons")
|
|
add_flecs_test("${CMAKE_CURRENT_LIST_DIR}/api")
|
|
add_flecs_test("${CMAKE_CURRENT_LIST_DIR}/collections")
|
|
add_flecs_test("${CMAKE_CURRENT_LIST_DIR}/cpp_api")
|