# ----------------------------------------------------
# Minimal Requirements
# ----------------------------------------------------
cmake_minimum_required(VERSION 3.21)


# ----------------------------------------------------
# Project Setup
# ----------------------------------------------------
cmake_policy(SET CMP0048 NEW)

project(
    "dcm"
    VERSION 2.3.3
    DESCRIPTION "dotcircle CMake modules"
    HOMEPAGE_URL "https://git.dotcircle.dev/dotcircle/cmake-modules"
)


# ----------------------------------------------------
# Project Extended Information
# ----------------------------------------------------
set(PROJECT_AUTHOR "Stijn Vermeiren")
set(PROJECT_AUTHOR_EMAIL "stijn@dotcircle.co")
set(PROJECT_MAINTAINER "${PROJECT_AUTHOR} <${PROJECT_AUTHOR_EMAIL}>")
set(PROJECT_COPYRIGHT "2021 ${PROJECT_AUTHOR}")


# ----------------------------------------------------
# Set CMake Module Include Paths
# ----------------------------------------------------
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/modules/")
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/find-modules/")


# ----------------------------------------------------
# Installation paths
# ----------------------------------------------------
set(SHARE_INSTALL_DIR share
    CACHE
    PATH
    "read-only architecture-independent data"
)

set(CMAKECONFIG_INSTALL_DIR       ${SHARE_INSTALL_DIR}/dcm/cmake/)

set(FIND_MODULES_INSTALL_DIR      ${SHARE_INSTALL_DIR}/dcm/find-modules/)
set(MODULES_INSTALL_DIR           ${SHARE_INSTALL_DIR}/dcm/modules/)
set(TOOLCHAIN_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/dcm/toolchain/)


# ----------------------------------------------------
# Install modules
# ----------------------------------------------------
file(GLOB installModuleFiles ${CMAKE_SOURCE_DIR}/modules/*[^~])
install(FILES ${installModuleFiles} DESTINATION ${MODULES_INSTALL_DIR})

file(GLOB installFindModuleFiles ${CMAKE_SOURCE_DIR}/find-modules/*.cmake ${CMAKE_SOURCE_DIR}/find-modules/*.py)
install(FILES ${installFindModuleFiles} DESTINATION ${FIND_MODULES_INSTALL_DIR})

file(GLOB installToolchainModuleFiles ${CMAKE_SOURCE_DIR}/toolchain/*[^~])
install(FILES ${installToolchainModuleFiles} DESTINATION ${TOOLCHAIN_MODULES_INSTALL_DIR})


# ----------------------------------------------------
# Config.cmake file
# ----------------------------------------------------
include(CMakePackageConfigHelpers)

configure_package_config_file(
    dcmConfig.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/dcmConfig.cmake
    INSTALL_DESTINATION
        ${CMAKECONFIG_INSTALL_DIR}
    PATH_VARS
        FIND_MODULES_INSTALL_DIR
        MODULES_INSTALL_DIR
)

write_basic_package_version_file(
    ${CMAKE_CURRENT_BINARY_DIR}/dcmConfigVersion.cmake
    VERSION
        "${PROJECT_VERSION}"
    COMPATIBILITY
        AnyNewerVersion
)

install(
    FILES
        ${CMAKE_CURRENT_BINARY_DIR}/dcmConfig.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/dcmConfigVersion.cmake
    DESTINATION
        ${CMAKECONFIG_INSTALL_DIR}
)


# ----------------------------------------------------
# Config.cmake file
# ----------------------------------------------------
set(CPACK_PACKAGE_NAME dotcircle-cmake-modules)
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
set(CPACK_SYSTEM_NAME "generic")
set(CPACK_GENERATOR "TGZ")
set(CPACK_SET_DESTDIR FALSE)

include(CPack)


# ----------------------------------------------------
# Feature summary
# ----------------------------------------------------
include(FeatureSummary)

feature_summary(
    FATAL_ON_MISSING_REQUIRED_PACKAGES
    WHAT ALL
)


# ----------------------------------------------------
# Feature summary
# ----------------------------------------------------

