add_library(LocalSendCore SHARED
    src/Constants.cpp
    src/Types.cpp
    src/Device.cpp
    src/DtoTypes.cpp
    src/MulticastDiscovery.cpp
    src/DiscoveryManager.cpp
    src/HttpServer.cpp
    src/HttpClient.cpp
    src/SessionManager.cpp
    src/SecurityContext.cpp
    src/Settings.cpp
    
    include/LocalSendCore/Constants.h
    include/LocalSendCore/Types.h
    include/LocalSendCore/Device.h
    include/LocalSendCore/DtoTypes.h
    include/LocalSendCore/MulticastDiscovery.h
    include/LocalSendCore/DiscoveryManager.h
    include/LocalSendCore/HttpServer.h
    include/LocalSendCore/HttpClient.h
    include/LocalSendCore/SessionManager.h
    include/LocalSendCore/SecurityContext.h
    include/LocalSendCore/Settings.h
)

target_include_directories(LocalSendCore PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
    $<INSTALL_INTERFACE:include>
)

target_link_libraries(LocalSendCore PUBLIC
    Qt6::Core
    Qt6::Network
)

if(TARGET Qt6::HttpServer)
    target_link_libraries(LocalSendCore PUBLIC Qt6::HttpServer)
    target_compile_definitions(LocalSendCore PUBLIC HAS_QTHTTPSERVER)
    message(STATUS "Qt6HttpServer found - HTTP server enabled")
else()
    message(WARNING "Qt6HttpServer not found - HTTP server disabled, file receiving will not work")
endif()

find_package(OpenSSL)
if(OpenSSL_FOUND)
    target_link_libraries(LocalSendCore PUBLIC OpenSSL::SSL OpenSSL::Crypto)
    target_compile_definitions(LocalSendCore PUBLIC USE_OPENSSL)
endif()

set_target_properties(LocalSendCore PROPERTIES
    VERSION ${PROJECT_VERSION}
    SOVERSION 1
    OUTPUT_NAME localsend-core
)
