123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- cmake_minimum_required(VERSION 3.20)
- project(mcl LANGUAGES CXX)
- set(CMAKE_CXX_STANDARD 20)
- set(CMAKE_CXX_STANDARD_REQUIRED on)
- # Includes
- include(GNUInstallDirs)
- include(CMakePackageConfigHelpers)
- # Paths
- set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}/mcl
- CACHE PATH "Location of include files")
- set(LIBRARY_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}
- CACHE PATH "Location of library files")
- set(SYSCONFIG_INSTALL_DIR ${CMAKE_INSTALL_SYSCONFDIR}/mcl
- CACHE PATH "Location of system config files")
- # Headers
- add_library(interface INTERFACE)
- add_library(mcl::interface ALIAS interface)
- target_include_directories(interface INTERFACE
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/includes>
- $<INSTALL_INTERFACE:include>
- )
- # Assert
- add_library(mcl_assert STATIC src/assert.cpp)
- add_library(mcl::assert ALIAS mcl_assert)
- set_property(TARGET mcl_assert PROPERTY EXPORT_NAME assert)
- target_include_directories(mcl_assert PRIVATE
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/includes>
- $<INSTALL_INTERFACE:include>
- )
- # Memory
- add_library(mcl_memory STATIC
- src/memory/sys_resource.cpp
- src/memory/rallocator.cpp
- )
- add_library(mcl::memory ALIAS mcl_memory)
- set_property(TARGET mcl_memory PROPERTY EXPORT_NAME memory)
- target_include_directories(mcl_memory PRIVATE
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/includes>
- $<INSTALL_INTERFACE:include>
- )
- # Install
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/includes/mcl/
- DESTINATION ${INCLUDE_INSTALL_DIR}
- )
- install(TARGETS mcl_assert mcl_memory
- EXPORT mclTargets
- LIBRARY
- DESTINATION ${LIBRARY_INSTALL_DIR}
- )
- install(EXPORT mclTargets
- NAMESPACE mcl::
- FILE mclTargets.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/mcl/
- )
- # Testing
- option(ENABLE_TESTS OFF)
- if(ENABLE_TESTS)
- enable_testing()
- add_subdirectory(tests)
- endif()
- # Configure package
- configure_package_config_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/mclConfig.cmake
- INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/mcl
- PATH_VARS INCLUDE_INSTALL_DIR LIBRARY_INSTALL_DIR SYSCONFIG_INSTALL_DIR
- )
- write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/mclConfigVersion.cmake
- VERSION 0.6.0a4
- COMPATIBILITY SameMajorVersion
- )
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mclConfig.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/mclConfigVersion.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/mcl
- )
|