find_package(PostgreSQL REQUIRED)
if(${POSTGRESQL_FOUND})
    add_library(pgsql SHARED pgsql/pgsql.cpp)

    target_include_directories(pgsql PRIVATE
       "${CMAKE_CURRENT_SOURCE_DIR}/../include"
    )

    add_definitions(-DPGSQL)

    target_link_libraries(pgsql PUBLIC dbpp PRIVATE PostgreSQL::pq)

    set_target_properties(pgsql PROPERTIES PREFIX "")

   install(
        TARGETS pgsql
        RUNTIME_DEPENDENCY_SET pgsqldep
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/dbpp NAMELINK_SKIP
        RUNTIME DESTINATION bin
    )
   
   if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows")
	message(INFO "$<TARGET_FILE_DIR:PostgreSQL::pq>")
	install(
            RUNTIME_DEPENDENCY_SET pgsqldep
            PRE_EXCLUDE_REGEXES "((api|ext)-ms-.*|.*azureattest.*|vcruntime.*|ucrtbase.*|msvcrt.*|wpaxholder.*)\\.dll"   
            POST_EXCLUDE_REGEXES [[.*(\\|/)system32(\\|/).*\.dll]]
            DIRECTORIES
                "$<TARGET_FILE_DIR:PostgreSQL::pq>"
            DESTINATION bin
        )
   endif()
endif()

find_package(SQLite3 )
if(SQLITE3_FOUND)

    add_library(sqlite SHARED sqlite/sqlite.cpp)

    target_include_directories(sqlite PRIVATE
        "${CMAKE_CURRENT_SOURCE_DIR}/../include"
        "${SQLite3_INCLUDE_DIRS}"
    )

    add_definitions(-DSQLITE)

    message(STATUS "SQLite3_LIBRARIES: ${SQLite3_LIBRARIES}")

    # KORREKTUR: Verwenden Sie den korrekten, kleingeschriebenen Target-Namen
    target_link_libraries(sqlite PUBLIC dbpp PRIVATE sqlite3::sqlite3)

    set_target_properties(sqlite PROPERTIES PREFIX "")

    # Installation des sqlite-Moduls

    install(TARGETS sqlite
        RUNTIME_DEPENDENCY_SET sqlitedep
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/dbpp NAMELINK_SKIP
        RUNTIME DESTINATION bin
    )

    # Windows-Installationslogik für Abhängigkeiten (korrekt)
    if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows")
        install(
            RUNTIME_DEPENDENCY_SET sqlitedep
            DIRECTORIES
                "$<TARGET_FILE_DIR:sqlite3::sqlite3>" # KORREKTUR: Kleingeschriebener Target-Name
            DESTINATION bin
            PRE_EXCLUDE_REGEXES   "((api|ext)-ms-.*|.*azureattest.*|vcruntime.*|ucrtbase.*|msvcrt.*|wpaxholder.*)\\.dll"
            POST_EXCLUDE_REGEXES [[.*(\\|/)system32(\\|/).*\.dll]]
        )
    endif()
endif()

find_package(MariaDB)
if(MariaDB_FOUND)

    add_library(mariadb SHARED mariadb/mariadb.cpp)

    target_include_directories(mariadb PRIVATE
        "${CMAKE_CURRENT_SOURCE_DIR}/../include"
        "${MariaDB_INCLUDE_DIRS}"
    )

    add_definitions(-DMARIADB)

    target_link_libraries(mariadb PUBLIC dbpp PRIVATE MariaDB::MariaDB)

    set_target_properties(mariadb PROPERTIES PREFIX "")

    install(TARGETS mariadb
        RUNTIME_DEPENDENCY_SET mariadbdep
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/dbpp NAMELINK_SKIP
        RUNTIME DESTINATION bin
    )

    if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows")
        install(
            RUNTIME_DEPENDENCY_SET mariadbdep
            DIRECTORIES
                "$<TARGET_FILE_DIR:MariaDB::MariaDB>"
            DESTINATION bin
            PRE_EXCLUDE_REGEXES   "((api|ext)-ms-.*|.*azureattest.*|vcruntime.*|ucrtbase.*|msvcrt.*|wpaxholder.*)\\.dll"
            POST_EXCLUDE_REGEXES [[.*(\\|/)system32(\\|/).*\.dll]]
        )
    endif()
endif()

