mirror of
https://gitea.windcorp.ru/Wind-Corporation/Progressia.git
synced 2025-04-21 16:30:46 +03:00
108 lines
3.2 KiB
CMake
108 lines
3.2 KiB
CMake
cmake_minimum_required(VERSION 3.12)
|
|
|
|
project(progressia)
|
|
set(VERSION "0.0.1")
|
|
|
|
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(BUILD_ID "Build ID. Set to \"dev\" unless building a release that you intend to publish" "dev")
|
|
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
|
|
desktop/graphics/vulkan_common.cpp
|
|
desktop/graphics/vulkan_frame.cpp
|
|
desktop/graphics/vulkan_image.cpp
|
|
desktop/graphics/vulkan_mgmt.cpp
|
|
desktop/graphics/vulkan_pick_device.cpp
|
|
desktop/graphics/vulkan_pipeline.cpp
|
|
desktop/graphics/vulkan_render_pass.cpp
|
|
desktop/graphics/vulkan_descriptor_set.cpp
|
|
desktop/graphics/vulkan_texture_descriptors.cpp
|
|
desktop/graphics/vulkan_adapter.cpp
|
|
desktop/graphics/vulkan_swap_chain.cpp
|
|
desktop/graphics/vulkan_physical_device.cpp
|
|
|
|
main/game.cpp
|
|
main/logging.cpp
|
|
|
|
main/rendering/image.cpp
|
|
|
|
main/stb_image.c
|
|
${generated}/embedded_resources/embedded_resources.cpp
|
|
)
|
|
|
|
# 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)
|
|
|
|
# Do Windows-specific tweaks for release builds
|
|
if (WIN32 AND DEFINED 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 -Wall -Wextra -Wpedantic -Werror)
|
|
endif()
|
|
|
|
# Pass configuration options
|
|
file(MAKE_DIRECTORY "${generated}/config")
|
|
configure_file(${PROJECT_SOURCE_DIR}/main/config.h.in
|
|
${generated}/config/config.h)
|
|
target_include_directories(progressia PRIVATE ${generated}/config)
|
|
|
|
# Libraries
|
|
|
|
# Use Vulkan
|
|
find_package(Vulkan 1.0 REQUIRED)
|
|
target_link_libraries(progressia Vulkan::Vulkan)
|
|
|
|
# Use GLFW3
|
|
find_package(glfw3 3.3.2 REQUIRED)
|
|
target_link_libraries(progressia glfw)
|
|
|
|
# Use GLM
|
|
find_package(glm REQUIRED) # glmConfig-version.cmake is broken
|
|
target_link_libraries(progressia glm::glm)
|
|
|
|
# Use STB
|
|
target_include_directories(progressia PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/stb/include)
|
|
|
|
# Use Boost
|
|
find_package(Boost 1.74 REQUIRED)
|
|
target_link_libraries(progressia Boost::headers)
|