cmake_minimum_required(VERSION 3.14)
project(oatpp-authkit VERSION 0.3.6 LANGUAGES CXX)

# Header-only interface library — no compilation, just an include path and
# a CMake config package so consumers do:
#   find_package(oatpp-authkit REQUIRED)
#   target_link_libraries(app PRIVATE oatpp::authkit)
#
# Or FetchContent:
#   FetchContent_Declare(oatpp-authkit GIT_REPOSITORY ... GIT_TAG v0.1.0)
#   FetchContent_MakeAvailable(oatpp-authkit)

add_library(oatpp-authkit INTERFACE)
add_library(oatpp::authkit ALIAS oatpp-authkit)

target_include_directories(oatpp-authkit INTERFACE
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
    $<INSTALL_INTERFACE:include>
)
target_compile_features(oatpp-authkit INTERFACE cxx_std_17)

# Installation
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(TARGETS oatpp-authkit EXPORT oatpp-authkit-targets)
install(EXPORT oatpp-authkit-targets
        FILE oatpp-authkit-targets.cmake
        NAMESPACE oatpp::
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/oatpp-authkit)

write_basic_package_version_file(
    "${CMAKE_CURRENT_BINARY_DIR}/oatpp-authkit-config-version.cmake"
    VERSION ${PROJECT_VERSION}
    COMPATIBILITY SameMajorVersion)

configure_package_config_file(
    cmake/oatpp-authkit-config.cmake.in
    "${CMAKE_CURRENT_BINARY_DIR}/oatpp-authkit-config.cmake"
    INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/oatpp-authkit)

install(FILES
    "${CMAKE_CURRENT_BINARY_DIR}/oatpp-authkit-config.cmake"
    "${CMAKE_CURRENT_BINARY_DIR}/oatpp-authkit-config-version.cmake"
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/oatpp-authkit)

# ─── Tests ───────────────────────────────────────────────────────────────────
# Off by default so consumers pulling us in via FetchContent don't pay the
# cost. Enable with -DOATPP_AUTHKIT_BUILD_TESTS=ON.
option(OATPP_AUTHKIT_BUILD_TESTS "Build oatpp-authkit unit tests" OFF)
if(OATPP_AUTHKIT_BUILD_TESTS)
    enable_testing()
    add_subdirectory(test)
endif()
