Checkpoint 1: implement native subsystems and begin the gameplay manual
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
include(FetchContent)
|
||||
file(READ "${PROJECT_SOURCE_DIR}/dependencies.lock.json" FASET_DEPENDENCY_LOCK)
|
||||
|
||||
function(faset_dependency name)
|
||||
string(JSON url GET "${FASET_DEPENDENCY_LOCK}" dependencies ${name} url)
|
||||
string(JSON hash GET "${FASET_DEPENDENCY_LOCK}" dependencies ${name} sha256)
|
||||
string(JSON commit GET "${FASET_DEPENDENCY_LOCK}" dependencies ${name} commit)
|
||||
set(archive "${PROJECT_SOURCE_DIR}/.cache/downloads/${name}-${commit}.tar.gz")
|
||||
if(EXISTS "${archive}")
|
||||
set(url "${archive}")
|
||||
endif()
|
||||
FetchContent_Declare(${name} URL "${url}" URL_HASH "SHA256=${hash}" DOWNLOAD_EXTRACT_TIMESTAMP TRUE)
|
||||
FetchContent_MakeAvailable(${name})
|
||||
FetchContent_GetProperties(${name} SOURCE_DIR source)
|
||||
set(FASET_${name}_SOURCE_DIR "${source}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
set(JSON_BuildTests OFF CACHE BOOL "" FORCE)
|
||||
set(JSON_Install OFF CACHE BOOL "" FORCE)
|
||||
set(ENTT_BUILD_TESTING OFF CACHE BOOL "" FORCE)
|
||||
set(BOX2D_SAMPLES OFF CACHE BOOL "" FORCE)
|
||||
set(BOX2D_UNIT_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(BOX2D_BENCHMARKS OFF CACHE BOOL "" FORCE)
|
||||
set(BOX2D_AVX2 OFF CACHE BOOL "" FORCE)
|
||||
set(BOX3D_SAMPLES OFF CACHE BOOL "" FORCE)
|
||||
set(BOX3D_UNIT_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(BOX3D_BENCHMARKS OFF CACHE BOOL "" FORCE)
|
||||
set(BOX3D_BUILD_SHADERS OFF CACHE BOOL "" FORCE)
|
||||
faset_dependency(json)
|
||||
faset_dependency(entt)
|
||||
faset_dependency(box2d)
|
||||
faset_dependency(box3d)
|
||||
faset_dependency(cgltf)
|
||||
add_library(faset_cgltf INTERFACE)
|
||||
target_include_directories(faset_cgltf INTERFACE "${FASET_cgltf_SOURCE_DIR}")
|
||||
faset_dependency(stb)
|
||||
add_library(faset_stb INTERFACE)
|
||||
target_include_directories(faset_stb INTERFACE "${FASET_stb_SOURCE_DIR}")
|
||||
|
||||
# Keep the CRT compatible across Faset and physics libraries, including editor plugins.
|
||||
if(MSVC)
|
||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
set_property(TARGET box2d box3d PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
endif()
|
||||
|
||||
if(FASET_BUILD_RENDERER)
|
||||
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
|
||||
set(SDL_STATIC ON CACHE BOOL "" FORCE)
|
||||
set(SDL_TEST_LIBRARY OFF CACHE BOOL "" FORCE)
|
||||
set(SDL_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(SDL_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||
set(SDL_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
faset_dependency(sdl3)
|
||||
find_package(Vulkan 1.3 REQUIRED)
|
||||
endif()
|
||||
if(FASET_DEBUG_IMGUI)
|
||||
faset_dependency(imgui)
|
||||
add_library(faset_imgui STATIC
|
||||
"${FASET_imgui_SOURCE_DIR}/imgui.cpp" "${FASET_imgui_SOURCE_DIR}/imgui_draw.cpp"
|
||||
"${FASET_imgui_SOURCE_DIR}/imgui_tables.cpp" "${FASET_imgui_SOURCE_DIR}/imgui_widgets.cpp")
|
||||
target_include_directories(faset_imgui PUBLIC "${FASET_imgui_SOURCE_DIR}")
|
||||
endif()
|
||||
Reference in New Issue
Block a user