Files
Seele/CMakeLists.txt
T

190 lines
5.2 KiB
CMake
Raw Normal View History

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-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)
set(CMAKE_COMPILE_WARNING_AS_ERROR OFF)
2022-11-29 16:34:42 +01:00
set(CMAKE_INSTALL_MESSAGE LAZY)
2022-11-17 16:47:42 +01:00
set(BUILD_SHARED_LIBS OFF)
2021-11-05 00:01:12 +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)
set(BOOST_ROOT ${EXTERNAL_ROOT}/boost)
2020-06-02 11:46:18 +02:00
set(SLANG_ROOT ${EXTERNAL_ROOT}/slang)
set(GLM_ROOT ${EXTERNAL_ROOT}/glm)
set(GLFW_ROOT ${EXTERNAL_ROOT}/glfw)
2022-11-22 22:11:37 +01:00
set(CRCPP_ROOT ${EXTERNAL_ROOT}/crcpp)
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)
2022-11-29 16:34:42 +01:00
set(ODEINT_ROOT ${EXTERNAL_ROOT}/odeint)
set(THREADPOOL_ROOT ${EXTERNAL_ROOT}/thread-pool)
2022-11-22 22:11:37 +01:00
set(ZLIB_ROOT ${EXTERNAL_ROOT}/zlib)
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)
2022-04-30 20:35:25 +02:00
project (Seele)
include(cmake/Superbuild.cmake)
2020-02-05 20:58:58 +01:00
2022-11-22 22:11:37 +01:00
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE})
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
2022-11-22 22:11:37 +01:00
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/bin/Release)
2021-11-18 12:48:21 +01:00
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)
2022-11-22 22:11:37 +01:00
set(Boost_LIB_PREFIX lib)
2021-11-19 15:08:56 +01:00
endif()
2021-11-18 12:48:21 +01:00
2020-02-05 20:58:58 +01:00
find_package(Vulkan REQUIRED)
2020-03-17 02:41:33 +01:00
if(WIN32)
2022-11-22 22:11:37 +01: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)
2022-11-22 22:11:37 +01:00
add_compile_definitions(ENABLE_VALIDATION)
add_compile_definitions(SEELE_DEBUG)
2020-10-14 01:49:43 +02:00
endif()
2022-11-17 16:47:42 +01:00
add_library(Engine STATIC "")
2023-01-29 18:58:59 +01:00
2022-11-22 22:11:37 +01:00
target_compile_definitions(Engine PRIVATE GLFW_WINDOWS)
target_include_directories(Engine PRIVATE src/Engine)
2022-04-30 20:35:25 +02:00
target_link_libraries(Engine PUBLIC Vulkan::Vulkan)
target_link_libraries(Engine PUBLIC EnTT::EnTT)
target_link_libraries(Engine PUBLIC glfw)
2022-11-22 22:11:37 +01:00
target_link_libraries(Engine PUBLIC glm)
2022-04-30 20:35:25 +02:00
target_link_libraries(Engine PUBLIC freetype)
target_link_libraries(Engine PUBLIC slang)
target_link_libraries(Engine PUBLIC assimp)
target_link_libraries(Engine PUBLIC ktx)
target_link_libraries(Engine PUBLIC stb)
target_link_libraries(Engine PUBLIC nlohmann_json::nlohmann_json)
target_link_libraries(Engine PUBLIC dp::thread-pool)
2022-11-22 22:11:37 +01:00
target_link_libraries(Engine PUBLIC crcpp)
2022-11-29 16:34:42 +01:00
target_link_libraries(Engine PUBLIC odeint)
2023-01-29 18:58:59 +01:00
target_link_libraries(Engine PUBLIC zlib)
2021-10-13 15:20:30 +02:00
if(UNIX)
2023-01-29 18:58:59 +01:00
target_link_libraries(Engine PUBLIC Threads::Threads)
target_link_libraries(Engine PUBLIC dl)
2021-10-13 15:20:30 +02:00
endif()
2022-11-22 22:11:37 +01:00
2023-01-29 18:58:59 +01:00
add_executable(Editor "")
target_link_libraries(Editor PRIVATE Engine)
target_include_directories(Editor PRIVATE src/Editor)
target_compile_definitions(Editor PRIVATE EDITOR)
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>
2022-11-22 22:11:37 +01:00
<thread>)
2020-04-12 15:47:19 +02:00
if(MSVC)
2022-11-22 22:11:37 +01:00
set(_CRT_SECURE_NO_WARNINGS)
target_compile_options(Engine PUBLIC /Zi /MP14 /W4 /DEBUG "/WX-")
2022-11-29 16:34:42 +01:00
target_sources(Engine INTERFACE
2023-01-29 18:58:59 +01:00
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Seele.natvis>
2022-11-29 16:34:42 +01:00
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/Seele.natvis>
)
install(FILES
Seele.natvis
DESTINATION .)
2020-04-12 15:47:19 +02:00
else()
2022-11-22 22:11:37 +01:00
target_compile_options(Engine PUBLIC -g -Wall -Wextra -Wno-delete-incomplete -pedantic -fcoroutines)
2020-04-12 15:47:19 +02:00
endif()
add_subdirectory(src/)
2022-11-29 16:34:42 +01:00
#add_executable(Seele_unit_tests "")
#add_subdirectory(test/)
2022-02-24 22:38:26 +01:00
add_custom_target(SeeleEngine ALL
2022-11-22 22:11:37 +01:00
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/res $<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
2022-11-22 22:11:37 +01:00
install(
2023-01-29 18:58:59 +01:00
TARGETS
Editor
2022-11-22 22:11:37 +01:00
Engine
EnTT
glfw
glm
freetype
assimp
ktx
stb
crcpp
nlohmann_json
ThreadPool
zlib
2022-11-29 16:34:42 +01:00
slang
slang-glslang
slang-llvm
2022-11-22 22:11:37 +01:00
zlibstatic
2022-11-29 16:34:42 +01:00
IrrXML
odeint
2022-11-22 22:11:37 +01:00
EXPORT
EngineTargets
FILE_SET HEADERS
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
export(EXPORT EngineTargets
FILE "${CMAKE_BINARY_DIR}/EngineTargets.cmake"
NAMESPACE Seele::)
include(CMakePackageConfigHelpers)
configure_package_config_file(cmake/EngineConfig.cmake.in
"SeeleConfig.cmake"
INSTALL_DESTINATION ${CMAKE_BINARY_DIR})
install(EXPORT EngineTargets
FILE
EngineTargets.cmake
NAMESPACE
Seele::
DESTINATION
${CMAKE_INSTALL_PREFIX}
)
install(
FILES
${CMAKE_BINARY_DIR}/SeeleConfig.cmake
DESTINATION
${CMAKE_INSTALL_PREFIX}
)
2023-01-21 18:43:21 +01:00
install(
DIRECTORY
${CMAKE_SOURCE_DIR}/res
DESTINATION
${CMAKE_INSTALL_PREFIX}
)