cmake_minimum_required(VERSION 3.10)
project(curtle VERSION 0.2.1 LANGUAGES C)

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)

add_library(curtle STATIC src/vector.c)
add_library(curtle::curtle ALIAS curtle)

target_include_directories(curtle
        PUBLIC
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
        $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

target_link_libraries(curtle PUBLIC m)

install(TARGETS curtle
        EXPORT curtleTargets
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
        INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

install(
        DIRECTORY include/
        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

install(EXPORT curtleTargets
        FILE curtleTargets.cmake
        NAMESPACE curtle::
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/curtle
)

write_basic_package_version_file(
        ${CMAKE_CURRENT_BINARY_DIR}/curtleConfigVersion.cmake
        VERSION ${PROJECT_VERSION}
        COMPATIBILITY SameMajorVersion
)

configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
        "${CMAKE_CURRENT_BINARY_DIR}/curtleConfig.cmake"
        INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/curtle
)

install(FILES
        "${CMAKE_CURRENT_BINARY_DIR}/curtleConfig.cmake"
        "${CMAKE_CURRENT_BINARY_DIR}/curtleConfigVersion.cmake"
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/curtle
)

if(${PROJECT_IS_TOP_LEVEL})
    enable_testing()
    add_subdirectory(tests)
endif()