Added Corrade as a dependency and also Fetchscript

This commit is contained in:
2026-03-06 16:33:30 +02:00
parent 58c69e4aa5
commit ce9ea6752d
2 changed files with 82 additions and 7 deletions

View File

@@ -6,33 +6,92 @@
# obtain one at http://mozilla.org/MPL/2.0/. # obtain one at http://mozilla.org/MPL/2.0/.
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
cmake_policy(SET CMP0135 NEW)
project(Tourmaline VERSION 1) project(Tourmaline VERSION 1)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(CMAKE_BUILD_TYPE STREQUAL "Debug") if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address")
endif() endif()
include(GNUInstallDirs) include(GNUInstallDirs)
include(FetchContent)
# Original - https://github.com/novelrt/NovelRT/blob/c877c1e870d62df98935489e9682d93b009fb2fd/ThirdParty/CMakeLists.txt#L6
# Modified version by williamjcm
macro(external_dependency name)
FetchContent_Declare(${name}
${ARGN}
EXCLUDE_FROM_ALL
PREFIX "${CMAKE_CURRENT_BINARY_DIR}/${name}"
TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/${name}/tmp"
STAMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/${name}/stamp"
DOWNLOAD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${name}/dl"
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/${name}/src"
SUBBUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${name}/build"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${name}/bin"
INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/${name}/inst"
LOG_DIR "${CMAKE_CURRENT_BINARY_DIR}/${name}/log"
)
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}/cmake/${name}")
endmacro()
# Third Party Libraries
external_dependency(Corrade
URL https://github.com/mosra/corrade/archive/2b7251d8bd8833a12f0d9b8deffca7a290340d3c.zip
URL_HASH SHA256=77ed07d373792ce05a64b87c84e7d4687965d6040df4e17b6e9922ca1cbd88c8
)
foreach(dep
Corrade
)
message(STATUS "Fetching ${dep}...")
add_subdirectory(external/${dep})
endforeach()
# Building SO
add_library(${PROJECT_NAME} SHARED add_library(${PROJECT_NAME} SHARED
"source/Systems/ECS/Components.cpp" "source/Systems/ECS/Components.cpp"
"source/Systems/ECS/World.cpp" "source/Systems/ECS/World.cpp"
"source/Systems/Logging.cpp" "source/Systems/Logging.cpp"
"source/Systems/Random.cpp" "source/Systems/Random.cpp"
"source/Types/UUID.cpp") "source/Types/UUID.cpp"
)
# Actual linking
target_link_libraries(${PROJECT_NAME} PUBLIC
Corrade::Main
Corrade::Containers
Corrade::Utility
Corrade::PluginManager
)
# Module stuff
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
# Nothing to link right now FetchContent_GetProperties(Corrade SOURCE_DIR corrade_SOURCE_DIR)
target_link_libraries(${PROJECT_NAME}) FetchContent_GetProperties(Corrade BINARY_DIR corrade_BINARY_DIR)
install(
DIRECTORY
"${corrade_SOURCE_DIR}/src/Corrade/"
"${corrade_BINARY_DIR}/src/Corrade/"
DESTINATION "include/${PROJECT_NAME}External/Corrade"
FILES_MATCHING
PATTERN "*.h"
PATTERN "*.hpp"
)
target_include_directories(${PROJECT_NAME} target_include_directories(${PROJECT_NAME}
PUBLIC PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/headers> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/headers>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/>
$<BUILD_INTERFACE:${corrade_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:include/${PROJECT_NAME}> $<INSTALL_INTERFACE:include/${PROJECT_NAME}>
$<INSTALL_INTERFACE:include/${PROJECT_NAME}External>
) )
install( install(

16
external/Corrade/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,16 @@
include(FetchContent)
# Building options
set(CORRADE_BUILD_STATIC ON)
# Feature options
set(CORRADE_WITH_MAIN ON)
set(CORRADE_WITH_UTILITY ON)
set(CORRADE_WITH_PLUGINMANAGER ON)
set(CORRADE_WITH_INTERCONNECT OFF)
set(CORRADE_WITH_TESTSUITE OFF)
if(NOT CMAKE_CROSSCOMPILING)
set(CORRADE_WITH_RC ON)
endif()
FetchContent_MakeAvailable(Corrade)