Files

110 lines
3.1 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(vectorail-core VERSION 0.1.0 LANGUAGES CXX)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
include(FetchContent)
find_package(OpenGL REQUIRED)
set(VECTORAIL_CORE_FETCHED_DEPENDENCIES OFF)
find_package(SDL3 CONFIG QUIET)
if(NOT TARGET SDL3::SDL3)
set(SDL_INSTALL OFF CACHE BOOL "" FORCE)
FetchContent_Declare(SDL3
GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
GIT_TAG main
)
FetchContent_MakeAvailable(SDL3)
set(VECTORAIL_CORE_FETCHED_DEPENDENCIES ON)
endif()
find_package(glm CONFIG QUIET)
if(NOT TARGET glm::glm)
FetchContent_Declare(glm
GIT_REPOSITORY https://github.com/g-truc/glm.git
GIT_TAG master
)
FetchContent_MakeAvailable(glm)
set(VECTORAIL_CORE_FETCHED_DEPENDENCIES ON)
endif()
FetchContent_Declare(stb
GIT_REPOSITORY https://github.com/nothings/stb.git
GIT_TAG 2c980bb59875b0d32144a71867fbdebb2f77cd20
)
FetchContent_MakeAvailable(stb)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR AND
NOT VECTORAIL_CORE_FETCHED_DEPENDENCIES)
set(VECTORAIL_CORE_INSTALL_DEFAULT ON)
else()
set(VECTORAIL_CORE_INSTALL_DEFAULT OFF)
endif()
option(VECTORAIL_CORE_INSTALL "Generate VectorailCore install rules"
${VECTORAIL_CORE_INSTALL_DEFAULT})
add_library(vectorail-core
src/DdsTexture.cpp
src/PngTexture.cpp
src/Shader.cpp
src/Spline.cpp
src/gl_loader.cpp
)
add_library(Vectorail::Core ALIAS vectorail-core)
target_compile_features(vectorail-core PUBLIC cxx_std_23)
target_include_directories(vectorail-core
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${stb_SOURCE_DIR}
)
target_link_libraries(vectorail-core
PUBLIC
SDL3::SDL3
OpenGL::GL
glm::glm
)
set_target_properties(vectorail-core PROPERTIES
EXPORT_NAME Core
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
)
if(VECTORAIL_CORE_INSTALL)
install(TARGETS vectorail-core
EXPORT VectorailCoreTargets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT VectorailCoreTargets
FILE VectorailCoreTargets.cmake
NAMESPACE Vectorail::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
configure_package_config_file(
cmake/VectorailCoreConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
endif()