Properly link flecs library
This commit is contained in:
89
engine/libs/flecs/test/CMakeLists.txt
Normal file
89
engine/libs/flecs/test/CMakeLists.txt
Normal file
@@ -0,0 +1,89 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user