# Sources et headers
file(GLOB_RECURSE CPPFASTISO_SOURCES UGraph.cpp)
file(GLOB_RECURSE CPPFASTISO_HEADERS fastiso.hpp UGraph.hpp ${CMAKE_SOURCE_DIR}/header/*.hpp)

# Création de la librairie statique
add_library(cppfastiso STATIC ${CPPFASTISO_SOURCES} ${CPPFASTISO_HEADERS})

# Dossiers d’inclusion
target_include_directories(cppfastiso
    PUBLIC
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
        $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/header>
        $<INSTALL_INTERFACE:include/cppfastiso>
)

# Dossiers de sortie séparés
set_target_properties(cppfastiso PROPERTIES
    ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE}
    LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE}
    RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE}
)

# Installation de la librairie et headers
install(TARGETS cppfastiso
    EXPORT cppfastisoTargets
    ARCHIVE DESTINATION lib
    LIBRARY DESTINATION lib
    RUNTIME DESTINATION bin
    INCLUDES DESTINATION include/cppfastiso
)

install(FILES fastiso.hpp UGraph.hpp DESTINATION include/cppfastiso)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/header/ DESTINATION include/cppfastiso)

# Export pour CMake find_package
install(EXPORT cppfastisoTargets
    FILE cppfastisoTargets.cmake
    NAMESPACE fastiso::
    DESTINATION lib/cmake/cppfastiso
)

include(CMakePackageConfigHelpers)
write_basic_package_version_file(
    "${CMAKE_CURRENT_BINARY_DIR}/cppfastisoConfigVersion.cmake"
    VERSION ${PROJECT_VERSION}
    COMPATIBILITY SameMajorVersion
)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cppfastisoConfig.cmake"
"include(\"\${CMAKE_CURRENT_LIST_DIR}/cppfastisoTargets.cmake\")")

install(FILES
    "${CMAKE_CURRENT_BINARY_DIR}/cppfastisoConfig.cmake"
    "${CMAKE_CURRENT_BINARY_DIR}/cppfastisoConfigVersion.cmake"
    DESTINATION lib/cmake/cppfastiso
)