2022-04-30 20:35:25 +02:00
|
|
|
cmake_minimum_required(VERSION 3.7...3.23)
|
2020-02-05 20:58:58 +01:00
|
|
|
|
2022-04-30 20:35:25 +02:00
|
|
|
if(${CMAKE_VERSION} VERSION_LESS 3.12)
|
|
|
|
|
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
|
|
|
|
|
endif()
|
2021-03-31 12:18:16 +02:00
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
2020-02-25 00:44:40 +01:00
|
|
|
|
2020-02-05 20:58:58 +01:00
|
|
|
# Handle superbuild first
|
|
|
|
|
option (USE_SUPERBUILD "Whether or not a superbuild should be invoked" ON)
|
|
|
|
|
|
2021-11-05 00:01:12 +01:00
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
2022-11-15 12:19:11 +01:00
|
|
|
set(CMAKE_COMPILE_WARNING_AS_ERROR OFF)
|
2021-11-05 00:01:12 +01:00
|
|
|
|
2020-02-25 00:44:40 +01:00
|
|
|
set(ENGINE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/src/Engine)
|
|
|
|
|
set(EXTERNAL_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/external)
|
2020-06-02 11:46:18 +02:00
|
|
|
set(ASSIMP_ROOT ${EXTERNAL_ROOT}/assimp)
|
2020-02-25 00:44:40 +01:00
|
|
|
set(BOOST_ROOT ${EXTERNAL_ROOT}/boost)
|
2020-06-02 11:46:18 +02:00
|
|
|
set(SLANG_ROOT ${EXTERNAL_ROOT}/slang)
|
2020-02-25 00:44:40 +01:00
|
|
|
set(GLM_ROOT ${EXTERNAL_ROOT}/glm)
|
|
|
|
|
set(GLFW_ROOT ${EXTERNAL_ROOT}/glfw)
|
2020-05-05 01:51:13 +02:00
|
|
|
set(JSON_ROOT ${EXTERNAL_ROOT}/json)
|
2021-08-21 18:02:53 +02:00
|
|
|
set(KTX_ROOT ${EXTERNAL_ROOT}/ktx)
|
2020-06-02 11:46:18 +02:00
|
|
|
set(STB_ROOT ${EXTERNAL_ROOT}/stb)
|
2022-04-13 13:01:35 +02:00
|
|
|
set(TTFPARSER_ROOT ${EXTERNAL_ROOT}/ttf-parser)
|
2022-04-15 11:19:30 +02:00
|
|
|
set(FREETYPE_ROOT ${EXTERNAL_ROOT}/freetype)
|
2020-10-03 11:00:10 +02:00
|
|
|
set(SPIRV_ROOT ${EXTERNAL_ROOT}/SPIRV-Cross)
|
2022-04-28 19:24:44 +02:00
|
|
|
set(ENTT_ROOT ${EXTERNAL_ROOT}/entt)
|
2021-06-04 18:27:49 +02:00
|
|
|
set(NSAM_ROOT ${EXTERNAL_ROOT}/aftermath)
|
2022-11-15 12:19:11 +01:00
|
|
|
set(THREADPOOL_ROOT ${EXTERNAL_ROOT}/thread-pool)
|
2020-06-02 11:46:18 +02:00
|
|
|
|
|
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/)
|
2021-12-02 13:00:03 +01:00
|
|
|
set(Boost_NO_WARN_NEW_VERSIONS 1)
|
2020-02-25 00:44:40 +01:00
|
|
|
|
2022-04-30 20:35:25 +02:00
|
|
|
project (Seele)
|
|
|
|
|
|
|
|
|
|
include(cmake/Superbuild.cmake)
|
2020-02-05 20:58:58 +01:00
|
|
|
|
2021-11-18 12:48:21 +01:00
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE})
|
|
|
|
|
#Workaround for vs, because it places artifacts into an additional subfolder
|
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug)
|
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/bin/Release)
|
|
|
|
|
|
2021-11-19 15:08:56 +01:00
|
|
|
set(Boost_USE_STATIC_LIBS OFF)
|
|
|
|
|
if(WIN32)
|
|
|
|
|
set(Boost_LIB_PREFIX lib)
|
|
|
|
|
endif()
|
2021-11-18 12:48:21 +01:00
|
|
|
|
2020-02-05 20:58:58 +01:00
|
|
|
find_package(Vulkan REQUIRED)
|
|
|
|
|
find_package(Boost REQUIRED COMPONENTS serialization)
|
|
|
|
|
|
2020-03-17 02:41:33 +01:00
|
|
|
if(WIN32)
|
2022-04-13 13:01:35 +02:00
|
|
|
add_compile_definitions(USE_EXTENSIONS)
|
2020-03-17 02:41:33 +01:00
|
|
|
endif()
|
2020-10-14 01:49:43 +02:00
|
|
|
if(CMAKE_DEBUG_POSTFIX)
|
|
|
|
|
add_compile_definitions(ENABLE_VALIDATION)
|
2022-02-14 16:29:26 +01:00
|
|
|
add_compile_definitions(SEELE_DEBUG)
|
2020-10-14 01:49:43 +02:00
|
|
|
endif()
|
2022-11-15 12:19:11 +01:00
|
|
|
|
|
|
|
|
add_library(Engine SHARED "")
|
2022-09-24 21:06:25 +02:00
|
|
|
add_executable(Editor "")
|
2022-04-30 20:35:25 +02:00
|
|
|
target_compile_definitions(Engine PUBLIC GLFW_WINDOWS)
|
|
|
|
|
target_include_directories(Engine PUBLIC src/Engine)
|
|
|
|
|
target_link_libraries(Engine PUBLIC Vulkan::Vulkan)
|
|
|
|
|
target_link_libraries(Engine PUBLIC Boost::headers)
|
|
|
|
|
target_link_libraries(Engine PUBLIC Boost::serialization)
|
|
|
|
|
target_link_libraries(Engine PUBLIC EnTT::EnTT)
|
|
|
|
|
target_link_libraries(Engine PUBLIC glfw)
|
|
|
|
|
target_link_libraries(Engine PUBLIC glm::glm)
|
|
|
|
|
target_link_libraries(Engine PUBLIC freetype)
|
|
|
|
|
target_link_libraries(Engine PUBLIC slang)
|
|
|
|
|
target_link_libraries(Engine PUBLIC assimp)
|
|
|
|
|
target_link_libraries(Engine PUBLIC nsam)
|
|
|
|
|
target_link_libraries(Engine PUBLIC ktx)
|
|
|
|
|
target_link_libraries(Engine PUBLIC stb)
|
|
|
|
|
target_link_libraries(Engine PUBLIC nlohmann_json::nlohmann_json)
|
2022-11-15 12:19:11 +01:00
|
|
|
target_link_libraries(Engine PUBLIC dp::thread-pool)
|
2021-10-13 15:20:30 +02:00
|
|
|
if(UNIX)
|
2022-11-15 12:19:11 +01:00
|
|
|
target_link_libraries(Engine Threads::Threads)
|
|
|
|
|
target_link_libraries(Engine dl)
|
2021-10-13 15:20:30 +02:00
|
|
|
endif()
|
2022-02-24 22:38:26 +01:00
|
|
|
target_precompile_headers(Engine
|
2022-09-24 21:06:25 +02:00
|
|
|
PUBLIC
|
2021-04-01 16:40:14 +02:00
|
|
|
<assert.h>
|
|
|
|
|
<atomic>
|
|
|
|
|
<condition_variable>
|
|
|
|
|
<coroutine>
|
|
|
|
|
<cstring>
|
|
|
|
|
<filesystem>
|
|
|
|
|
<functional>
|
|
|
|
|
<fstream>
|
|
|
|
|
<iostream>
|
|
|
|
|
<memory>
|
|
|
|
|
<mutex>
|
|
|
|
|
<string>
|
|
|
|
|
<thread>
|
2022-11-15 12:19:11 +01:00
|
|
|
<boost/serialization/serialization.hpp>)
|
|
|
|
|
|
2020-04-12 15:47:19 +02:00
|
|
|
if(MSVC)
|
2020-06-02 11:46:18 +02:00
|
|
|
set(_CRT_SECURE_NO_WARNINGS)
|
2022-11-15 12:19:11 +01:00
|
|
|
target_compile_options(Engine PUBLIC /Zi /MP /W4 /DEBUG "/WX-")
|
2020-04-12 15:47:19 +02:00
|
|
|
else()
|
2022-09-24 21:06:25 +02:00
|
|
|
target_compile_options(Engine PUBLIC -g -Wall -Wextra -Wno-delete-incomplete -pedantic -fcoroutines)
|
2020-04-12 15:47:19 +02:00
|
|
|
endif()
|
|
|
|
|
|
2022-11-15 12:19:11 +01:00
|
|
|
target_link_libraries(Editor PUBLIC Engine)
|
|
|
|
|
|
|
|
|
|
add_subdirectory(src/)
|
|
|
|
|
|
2020-06-02 11:46:18 +02:00
|
|
|
add_executable(Seele_unit_tests "")
|
2020-02-25 00:44:40 +01:00
|
|
|
add_subdirectory(test/)
|
|
|
|
|
|
2022-02-24 22:38:26 +01:00
|
|
|
add_custom_target(SeeleEngine ALL
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/res $<TARGET_FILE_DIR:Engine>
|
2022-04-30 20:35:25 +02:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_RUNTIME_DLLS:Engine> $<TARGET_FILE_DIR:Engine>
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:slang,SLANG_BINARY> $<TARGET_FILE_DIR:Engine>
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:slang,GLSLANG_BINARY> $<TARGET_FILE_DIR:Engine>
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:nsam,NSAM_BINARY> $<TARGET_FILE_DIR:Engine>
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PROPERTY:nsam,LLVM_BINARY> $<TARGET_FILE_DIR:Engine>
|
|
|
|
|
COMMAND_EXPAND_LISTS
|
2022-09-24 21:06:25 +02:00
|
|
|
DEPENDS Editor slang-build)
|
2021-10-19 23:04:38 +02:00
|
|
|
|