Files
PixelDefense/engine/libs/flecs/test/CMakeLists.txt

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")