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 $ $ 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()