cmake_minimum_required(VERSION 3.20) project(vectorail-gc VERSION 0.1.0 LANGUAGES CXX) include(GNUInstallDirs) include(CMakePackageConfigHelpers) option(VECTORAIL_GC_BUILD_TOOLS "Build format inspection tools" ON) if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) set(VECTORAIL_GC_INSTALL_DEFAULT ON) else() set(VECTORAIL_GC_INSTALL_DEFAULT OFF) endif() option(VECTORAIL_GC_INSTALL "Generate VectorailGC install rules" ${VECTORAIL_GC_INSTALL_DEFAULT}) if(NOT TARGET glm::glm) find_package(glm CONFIG REQUIRED) endif() add_library(vectorail-gc src/EventStream.cpp src/MtxArchive.cpp src/RvbLayout.cpp src/RvbScene.cpp src/StageCatalog.cpp src/StageDat.cpp src/StagePattern.cpp src/TumoModel.cpp ) add_library(Vectorail::GC ALIAS vectorail-gc) target_compile_features(vectorail-gc PUBLIC cxx_std_17) target_include_directories(vectorail-gc PUBLIC $ $ ) set_target_properties(vectorail-gc PROPERTIES EXPORT_NAME GC VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) add_library(vectorail-gc-effects src/GcTargetEffect.cpp) add_library(Vectorail::GCEffects ALIAS vectorail-gc-effects) target_compile_features(vectorail-gc-effects PUBLIC cxx_std_17) target_include_directories(vectorail-gc-effects PUBLIC $ $ ) target_link_libraries(vectorail-gc-effects PUBLIC glm::glm) set_target_properties(vectorail-gc-effects PROPERTIES EXPORT_NAME GCEffects VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) if(VECTORAIL_GC_BUILD_TOOLS) add_executable(vectorail-gc-stage-probe tools/stage_probe.cpp) target_link_libraries(vectorail-gc-stage-probe PRIVATE Vectorail::GC) add_executable(vectorail-gc-stage-ext-probe tools/stage_ext_probe.cpp) target_link_libraries(vectorail-gc-stage-ext-probe PRIVATE Vectorail::GC) add_executable(vectorail-gc-rvb-probe tools/rvb_probe.cpp) target_link_libraries(vectorail-gc-rvb-probe PRIVATE Vectorail::GC) add_executable(vectorail-gc-mtx-probe tools/mtx_probe.cpp) target_link_libraries(vectorail-gc-mtx-probe PRIVATE Vectorail::GC) add_executable(vectorail-gc-effect-probe tools/effect_probe.cpp) target_link_libraries(vectorail-gc-effect-probe PRIVATE Vectorail::GCEffects) endif() if(VECTORAIL_GC_INSTALL) install(TARGETS vectorail-gc vectorail-gc-effects EXPORT VectorailGCTargets 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 VectorailGCTargets FILE VectorailGCTargets.cmake NAMESPACE Vectorail:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailGC ) configure_package_config_file( cmake/VectorailGCConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/VectorailGCConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailGC ) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/VectorailGCConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/VectorailGCConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/VectorailGCConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailGC ) endif()