# SPDX-FileCopyrightText: 2022 Jonah Brüchert <jbb@kaidan.im>
#
# SPDX-License-Identifier: BSD-2-Clause

# Different target names for Qt5 and Qt6 builds
set(FUTURESQL_TARGET futuresql${QT_MAJOR_VERSION})
set(FUTURESQL_NAME FutureSQL${QT_MAJOR_VERSION})

add_library(${FUTURESQL_TARGET}
    threadeddatabase.cpp
    threadeddatabase.h
    threadeddatabase_p.h
)

target_link_libraries(${FUTURESQL_TARGET} PUBLIC Qt::Core Qt::Sql)

add_library(FutureSQL${QT_MAJOR_VERSION}::FutureSQL ALIAS ${FUTURESQL_TARGET})

set(FUTURESQL_INSTALL_INCLUDEDIR "${KDE_INSTALL_INCLUDEDIR}/${FUTURESQL_NAME}")

target_include_directories(${FUTURESQL_TARGET}
    PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
    INTERFACE "$<INSTALL_INTERFACE:${FUTURESQL_INSTALL_INCLUDEDIR}>"
)

ecm_setup_version(
    PROJECT
    VARIABLE_PREFIX ${FUTURESQL_NAME}
    VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/futuresql_version.h"
    PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/${FUTURESQL_NAME}ConfigVersion.cmake"
)

set_target_properties(${FUTURESQL_TARGET}
    PROPERTIES
    EXPORT_NAME FutureSQL
    SOVERSION 0
)

ecm_generate_export_header(${FUTURESQL_TARGET}
    VERSION ${PROJECT_VERSION}
    BASE_NAME FutureSQL
)

install(TARGETS ${FUTURESQL_TARGET}
    EXPORT FutureSQLTargets
    RUNTIME DESTINATION ${KDE_INSTALL_BINDIR}
    LIBRARY DESTINATION ${KDE_INSTALL_LIBDIR}
    ARCHIVE DESTINATION ${KDE_INSTALL_LIBDIR}
    COMPONENT Devel
)

set(FutureSQL_HEADERS threadeddatabase.h)

ecm_generate_headers(FutureSQL_CAMEL_CASE_HEADERS
    HEADER_NAMES
    ThreadedDatabase

    REQUIRED_HEADERS
    ${FutureSQL_HEADERS}
)

set(FutureSQL_HEADERS ${FutureSQL_HEADERS} threadeddatabase_p.h ${CMAKE_CURRENT_BINARY_DIR}/futuresql_export.h)

set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/${FUTURESQL_NAME}")

configure_package_config_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/FutureSQLConfig.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/${FUTURESQL_NAME}Config.cmake"
    INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
    PATH_VARS  CMAKE_INSTALL_PREFIX
)

install(FILES ${FutureSQL_HEADERS}
        DESTINATION ${FUTURESQL_INSTALL_INCLUDEDIR}
        COMPONENT Devel)
install(FILES ${FutureSQL_CAMEL_CASE_HEADERS}
        DESTINATION ${FUTURESQL_INSTALL_INCLUDEDIR}
        COMPONENT Devel)

install(FILES
    "${CMAKE_CURRENT_BINARY_DIR}/${FUTURESQL_NAME}Config.cmake"
    "${CMAKE_CURRENT_BINARY_DIR}/${FUTURESQL_NAME}ConfigVersion.cmake"
    DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
    COMPONENT Devel
)

install(EXPORT FutureSQLTargets
    DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
    FILE FutureSQLTargets.cmake
    NAMESPACE FutureSQL${QT_MAJOR_VERSION}::
)
