mirror of
https://gitea.windcorp.ru/Wind-Corporation/Progressia.git
synced 2025-12-15 22:58:36 +03:00
TMP / refactor cmake
This commit is contained in:
@@ -1,10 +1,20 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
cmake_minimum_required(VERSION 3.12)
|
||||
|
||||
project(progressia)
|
||||
set(VERSION "0.0.1")
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/tools/cmake")
|
||||
include(embed)
|
||||
set(tools ${PROJECT_SOURCE_DIR}/tools)
|
||||
set(generated ${PROJECT_BINARY_DIR}/generated)
|
||||
file(MAKE_DIRECTORY "${generated}")
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/tools/")
|
||||
include(embed/embed)
|
||||
include(glslc)
|
||||
|
||||
# Options
|
||||
option(VULKAN_ERROR_CHECKING "Enable Vulkan validation layers to detect Vulkan API usage errors at runtime")
|
||||
|
||||
# Source files
|
||||
add_executable(progressia
|
||||
desktop/main.cpp
|
||||
desktop/graphics/glfw_mgmt.cpp
|
||||
@@ -27,40 +37,56 @@ add_executable(progressia
|
||||
main/rendering/image.cpp
|
||||
|
||||
main/stb_image.c
|
||||
${generated}/embedded_resources.cpp
|
||||
${generated}/embedded_resources/embedded_resources.cpp
|
||||
)
|
||||
|
||||
target_include_directories(progressia PRIVATE ${generated})
|
||||
|
||||
# Do Windows-specific tweaks
|
||||
if (WIN32)
|
||||
set_target_properties(progressia PROPERTIES WIN32_EXECUTABLE true)
|
||||
target_link_options(progressia PRIVATE -static-libstdc++ -static-libgcc)
|
||||
endif()
|
||||
# Embedded resources
|
||||
target_glsl_shaders(progressia
|
||||
desktop/graphics/shaders/shader.frag
|
||||
desktop/graphics/shaders/shader.vert)
|
||||
compile_glsl(progressia)
|
||||
compile_embeds(progressia)
|
||||
target_include_directories(progressia PRIVATE ${generated}/embedded_resources)
|
||||
|
||||
# Compilation settings
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR
|
||||
CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
set(gcc_like_compiler TRUE)
|
||||
else()
|
||||
set(gcc_like_compiler FALSE)
|
||||
endif()
|
||||
|
||||
set_property(TARGET progressia PROPERTY CXX_STANDARD 17)
|
||||
set_property(TARGET progressia PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||
target_compile_options(progressia PRIVATE -Wall)
|
||||
|
||||
# Do Windows-specific tweaks for release builds
|
||||
if (WIN32 AND DEFINED ENV{PROGRESSIA_BUILD_ID})
|
||||
set_target_properties(progressia PROPERTIES WIN32_EXECUTABLE true)
|
||||
|
||||
if (gcc_like_compiler)
|
||||
target_link_options(progressia PRIVATE -static-libstdc++ -static-libgcc)
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
target_link_options(progressia PRIVATE /entry:mainCRTStartup)
|
||||
message(WARNING "Release builds with MSVC are not supported")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Extra options for gcc -- we're using this for extra static analisys for now
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
target_compile_options(progressia PRIVATE -Wextra -Wpedantic -Werror)
|
||||
if (gcc_like_compiler)
|
||||
target_compile_options(progressia PRIVATE -Wall -Wextra -Wpedantic -Werror)
|
||||
endif()
|
||||
|
||||
# Version information
|
||||
if (NOT DEFINED BUILD_ID)
|
||||
set(BUILD_ID "dev")
|
||||
endif()
|
||||
|
||||
set(VERSION "0.0.1")
|
||||
|
||||
# Debug options
|
||||
option(VULKAN_ERROR_CHECKING "Enable Vulkan validation layers to detect Vulkan API usage errors at runtime")
|
||||
|
||||
# Pass configuration options
|
||||
if (DEFINED ENV{PROGRESSIA_BUILD_ID})
|
||||
set(BUILD_ID ENV{PROGRESSIA_BUILD_ID})
|
||||
else()
|
||||
set(BUILD_ID "dev")
|
||||
endif()
|
||||
file(MAKE_DIRECTORY "${generated}/config")
|
||||
configure_file(${PROJECT_SOURCE_DIR}/main/config.h.in
|
||||
${PROJECT_BINARY_DIR}/config.h)
|
||||
${generated}/config/config.h)
|
||||
target_include_directories(progressia PRIVATE ${generated}/config)
|
||||
|
||||
# Libraries
|
||||
|
||||
|
||||
Reference in New Issue
Block a user