75 lines
4.7 KiB
CMake
75 lines
4.7 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(Renderive_Scene_Taskflow LANGUAGES CXX)
|
|
set(RENDERIVE_TASKFLOW_ROOT "" CACHE PATH "Taskflow 4.1.0 root")
|
|
find_path(RENDERIVE_TASKFLOW_INCLUDE_DIR
|
|
NAMES taskflow/taskflow.hpp
|
|
PATHS
|
|
"${RENDERIVE_TASKFLOW_ROOT}"
|
|
"${RENDERIVE_TASKFLOW_ROOT}/include"
|
|
"${CMAKE_CURRENT_LIST_DIR}/third_party/taskflow"
|
|
"${CMAKE_CURRENT_LIST_DIR}/third_party/taskflow/include"
|
|
)
|
|
if (NOT RENDERIVE_TASKFLOW_INCLUDE_DIR)
|
|
set(RENDERIVE_TASKFLOW_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/tests/compat")
|
|
message(STATUS "Taskflow 4.1.0 not found; using the private dependency-graph compatibility layer")
|
|
endif ()
|
|
add_library(renderive_scene STATIC
|
|
"${CMAKE_CURRENT_LIST_DIR}/src/renderive/renderable/Renderable_Task_Graph.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/src/renderive/renderable/base/Renderable_Base.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/src/renderive/scene/base/Scene_Base.cpp"
|
|
)
|
|
target_include_directories(renderive_scene
|
|
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src>"
|
|
PRIVATE "${RENDERIVE_TASKFLOW_INCLUDE_DIR}"
|
|
)
|
|
target_compile_features(renderive_scene PUBLIC cxx_std_20)
|
|
find_package(Threads REQUIRED)
|
|
target_link_libraries(renderive_scene PRIVATE Threads::Threads)
|
|
set(renderive_test_sources
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/Concepts_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/node/Multiway_Node_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/observer/Observer_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/observer/time_source/Steady_Time_Source_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/property/Concepts_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/property/Property_Builder_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/base/property/Validated_Value_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/base/Frame_Control_Strategy_Base_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/concept/Concepts_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/strategy/flow/Flow_Refresh_Strategy_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/strategy/low_latency/Low_Latency_Strategy_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/frame_control/strategy/manual/Manual_Refresh_Strategy_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/real_time_data/base/Real_Time_Data_Base_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/real_time_data/Real_Time_Data_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/renderable/base/Renderable_Base_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/renderable/color/Color_Cache_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/renderable/concept/Renderable_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/renderable/Renderable_Task_Graph_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/base/Scene_Base_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene_Memory_Resource_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/concept/Scene_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene2D_Context_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene2D_Render_Order_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene3D_Context_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/scene/Scene_State_Observer_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/state/base/State_Strategy_Base_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/state/Concepts_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/state/Double_State_Strategy_Test.cpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/state/Triple_State_Strategy_Test.cpp"
|
|
)
|
|
add_executable(renderive_scene_app "tests/main.cpp")
|
|
target_link_libraries(renderive_scene_app PRIVATE renderive_scene)
|
|
include(CTest)
|
|
if (BUILD_TESTING)
|
|
find_package(GTest CONFIG QUIET)
|
|
if (NOT GTest_FOUND)
|
|
add_library(renderive_gtest_compat INTERFACE)
|
|
target_include_directories(renderive_gtest_compat INTERFACE "${CMAKE_CURRENT_LIST_DIR}/tests/compat")
|
|
add_library(GTest::gtest ALIAS renderive_gtest_compat)
|
|
message(STATUS "GTest not found; using the test-only compatibility runner")
|
|
endif ()
|
|
target_sources(renderive_scene_app PRIVATE ${renderive_test_sources})
|
|
target_compile_definitions(renderive_scene_app PRIVATE RENDERIVE_WITH_GTEST=1)
|
|
target_link_libraries(renderive_scene_app PRIVATE GTest::gtest)
|
|
add_test(NAME renderive_scene_tests COMMAND renderive_scene_app --gtest)
|
|
endif ()
|