include(CMakePackageConfigHelpers)

include_directories(
    ${CMAKE_BINARY_DIR}
)

set(confplussrc
    conf.cpp
    backend.cpp
    exception.cpp
)

add_library(confplus STATIC ${confplussrc})

if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
    target_link_libraries(confplus PRIVATE kernel32.lib)
else()
    target_link_libraries(confplus PRIVATE dl)
endif()

target_include_directories(confplus
  PRIVATE
    ${PROJECT_SOURCE_DIR}/src
  PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
    $<INSTALL_INTERFACE:include>
)

install(TARGETS confplus DESTINATION ${CMAKE_INSTALL_LIBDIR} EXPORT confplusTargets)

install(FILES
    conf.h
    backend.h
    exception.h
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/confplus
)

set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/libconfplus)

configure_package_config_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/libconfplusConfig.cmake"
    "${CMAKE_BINARY_DIR}/libconfplusConfig.cmake"
    INSTALL_DESTINATION ${ConfigPackageLocation}
)

export(EXPORT confplusTargets
  FILE "${CMAKE_CURRENT_BINARY_DIR}/libnetplusTargets.cmake"
  NAMESPACE confplus::
)

include(CMakePackageConfigHelpers)
write_basic_package_version_file(
  "${CMAKE_CURRENT_BINARY_DIR}/libconfplusVersion.cmake"
  VERSION ${Upstream_VERSION}
  COMPATIBILITY AnyNewerVersion
)

install(EXPORT confplusTargets
  FILE
    libconfplusTargets.cmake
  NAMESPACE
    confplus::
  DESTINATION
    ${ConfigPackageLocation}
)

install(
  FILES
    "${CMAKE_CURRENT_BINARY_DIR}/libconfplusVersion.cmake"
    "${CMAKE_BINARY_DIR}/libconfplusConfig.cmake"
  DESTINATION
    ${ConfigPackageLocation}
  COMPONENT
    Devel
)

if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows")
    set(CPACK_GENERATOR WIX)
    set(CPACK_WIX_UPGRADE_GUID "1c4325b6-47c7-437f-ae28-3b05c61edbd1")
    set(CPACK_PACKAGE_NAME "libconfplus")
    set(CPACK_PACKAGE_VENDOR "tuxist.de")
    set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
    set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "libconfplus - A C++ ABSTRACT library")
    set(CPACK_PACKAGE_VERSION "1.0.0")
    set(CPACK_PACKAGE_VERSION_MAJOR "1")
    set(CPACK_PACKAGE_VERSION_MINOR "0")
    set(CPACK_PACKAGE_VERSION_PATCH "0")
    set(CPACK_PACKAGE_INSTALL_DIRECTORY "libconfplus")
    INCLUDE(CPack)
endif()
