set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)

include(GenerateExportHeader)

set(libsmtpSrcs
  exception.cpp
  smtp.cpp
  smtpd.cpp
)

add_library(smtppp SHARED ${libsmtpSrcs})

target_compile_definitions(smtppp PUBLIC -DSHARED)

add_library(smtppp-static STATIC ${libsmtpSrcs})

generate_export_header(smtppp)

if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows")
  target_link_libraries(smtppp netplus::netplus)
  target_link_libraries(smtppp-static netplus::netplus-static)
else()
  target_link_libraries(smtppp netplus::netplus pthread)
  target_link_libraries(smtppp-static netplus::netplus-static pthread)
endif()

set_property(TARGET smtppp PROPERTY VERSION ${Upstream_VERSION})
set_property(TARGET smtppp PROPERTY SOVERSION 1)
set_property(TARGET smtppp PROPERTY INTERFACE_smtppp_MAJOR_VERSION 1)
set_property(TARGET smtppp APPEND PROPERTY COMPATIBLE_INTERFACE_STRING smtppp_MAJOR_VERSION)

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

install(TARGETS smtppp-static EXPORT smtpppTargets
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

install(FILES smtp.h
              smtpd.h
              exception.h
              "${CMAKE_BINARY_DIR}/config.h"
              "${CMAKE_CURRENT_BINARY_DIR}/smtppp_export.h"
        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/smtppp
        COMPONENT Devel
)

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

export(EXPORT smtpppTargets
  FILE "${CMAKE_CURRENT_BINARY_DIR}/smtppp/libsmtpppTargets.cmake"
  NAMESPACE smtppp::
)

configure_package_config_file(
  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/smtpppConfig.cmake"
  "${CMAKE_CURRENT_BINARY_DIR}/smtppp/libsmtpppConfig.cmake"
     INSTALL_DESTINATION ${ConfigPackageLocation}
  @ONLY
)

set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/libsmtppp)
install(EXPORT smtpppTargets
  FILE
    libsmtpppTargets.cmake
  NAMESPACE
    smtppp::
  DESTINATION
    ${ConfigPackageLocation}
)

install(
  FILES
    "${CMAKE_CURRENT_BINARY_DIR}/smtppp/libsmtpppConfig.cmake"
    "${CMAKE_CURRENT_BINARY_DIR}/smtppp/libsmtpppConfigVersion.cmake"
  DESTINATION
    ${ConfigPackageLocation}
)
