Compare commits
2 Commits
beab60fcd2
...
ce9ea6752d
| Author | SHA1 | Date | |
|---|---|---|---|
| ce9ea6752d | |||
| 58c69e4aa5 |
@@ -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(
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ Tormaline Engine is a game engine created for C++23. [Source Code](https://git.t
|
|||||||
# Usability Status
|
# Usability Status
|
||||||
Tourmaline is by no means currently usable. The project is incredible volatile with constant changes and improvements. Please wait until a release is made.
|
Tourmaline is by no means currently usable. The project is incredible volatile with constant changes and improvements. Please wait until a release is made.
|
||||||
|
|
||||||
|
However if you cannot just help yourself you can compile a tourmaline demo by running
|
||||||
|
g++ program.cpp -std=c++23 -lTourmaline -I/usr/local/include/TourmalineExternal -o program
|
||||||
|
|
||||||
# 3rd Party Libraries Credits
|
# 3rd Party Libraries Credits
|
||||||
- [Corrade/Magnum](https://magnum.graphics/) - graphics middleware by Vladimír "Mosra" Vondruš.
|
- [Corrade/Magnum](https://magnum.graphics/) - graphics middleware by Vladimír "Mosra" Vondruš.
|
||||||
- [miniaudio](https://miniaud.io/) - audio playback and capture library by David "Mackron" Reid.
|
- [miniaudio](https://miniaud.io/) - audio playback and capture library by David "Mackron" Reid.
|
||||||
|
|||||||
16
external/Corrade/CMakeLists.txt
vendored
Normal file
16
external/Corrade/CMakeLists.txt
vendored
Normal 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)
|
||||||
Reference in New Issue
Block a user