cmake_minimum_required(VERSION 3.28)

# define project metadata

    project(iue-modules LANGUAGES CXX C
                    DESCRIPTION "modules"
                    HOMEPAGE_URL "https://sgit.iue.tuwien.ac.at/360050/modules")

# setting required language standards

    set(CMAKE_CXX_STANDARD 20)
    set(CMAKE_CXX_STANDARD_REQUIRED True)
    set(CMAKE_CXX_EXTENSIONS OFF)

    set(CMAKE_C_STANDARD 11)
    set(CMAKE_C_STANDARD_REQUIRED True)
    set(CMAKE_C_EXTENSIONS OFF)

# misc settings

    # avoid ctest-dashboard spcific targets
    set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1)
    # generate a compile_commands.json
    set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
    # make all symbols visible on windows (which is default on unix)
    set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

# options

    option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
    option(BUILD_TESTING "enable testing with ctest" ON)

# external dependencies

    #find_package(OpenMP COMPONENTS C CXX REQUIRED)

# testing

    include(CTest)

# include modules in order of dependence

    add_subdirectory(iue-other)
    add_subdirectory(iue-io)
    add_subdirectory(iue-po)    
    add_subdirectory(iue-num)       
    add_subdirectory(iue-rnd)      
    add_subdirectory(iue-svg)     

# packaging for consuming an install-tree via find_package

    include(CMakePackageConfigHelpers)

    configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/iue-modules-config.in
                                  ${CMAKE_CURRENT_BINARY_DIR}/iue-modules-config.cmake
                                  INSTALL_DESTINATION "./"
    )
    
    install(FILES
            "${CMAKE_CURRENT_BINARY_DIR}/iue-modules-config.cmake"
            DESTINATION "./"
    )
