Files
Renderive/Kernel/CMakeLists.txt
T
2026-08-10 15:47:51 +08:00

87 lines
5.4 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")
set(_renderive_builtin_taskflow_dir "${CMAKE_CURRENT_LIST_DIR}/src/renderive/compat")
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 "${_renderive_builtin_taskflow_dir}")
endif ()
get_filename_component(_renderive_taskflow_include_dir_real "${RENDERIVE_TASKFLOW_INCLUDE_DIR}" REALPATH)
get_filename_component(_renderive_builtin_taskflow_dir_real "${_renderive_builtin_taskflow_dir}" REALPATH)
set(RENDERIVE_TASKFLOW_MOCK OFF)
if (_renderive_taskflow_include_dir_real STREQUAL _renderive_builtin_taskflow_dir_real)
set(RENDERIVE_TASKFLOW_MOCK ON)
message(STATUS "Using the built-in dependency-graph executor")
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)
if (RENDERIVE_TASKFLOW_MOCK)
target_compile_definitions(renderive_scene PRIVATE RENDERIVE_TASKFLOW_MOCK=1)
endif ()
find_package(Threads REQUIRED)
target_link_libraries(renderive_scene PRIVATE Threads::Threads)
include(CTest)
if (BUILD_TESTING)
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"
"${CMAKE_CURRENT_LIST_DIR}/tests/renderive/threading/Threading_Contract_Test.cpp"
)
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 ()
add_executable(renderive_scene_tests "${CMAKE_CURRENT_LIST_DIR}/tests/main.cpp" ${renderive_test_sources})
if (RENDERIVE_TASKFLOW_MOCK)
target_compile_definitions(renderive_scene_tests PRIVATE RENDERIVE_TASKFLOW_MOCK=1)
endif ()
target_link_libraries(renderive_scene_tests PRIVATE renderive_scene GTest::gtest)
add_test(NAME renderive_scene_tests COMMAND renderive_scene_tests)
endif ()