cmake_minimum_required(VERSION 3.28)
project(iovi_space_network LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Исходники и заголовки
set(HEADERS
        include/iovi_space/network/server_socket/ServerSocketListener.h
        include/iovi_space/network/server_socket/ServerSocketWrapper.h
        include/iovi_space/network/server_socket/ServerSocket.h
)

set(SOURCES
        src/ServerSocketWrapper.cpp
        src/ServerSocket.cpp
)

# Создаём статическую библиотеку
add_library(iovi_space_network STATIC ${SOURCES} ${HEADERS})

# Публичные заголовки для подключения извне
target_include_directories(iovi_space_network
        PUBLIC
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
        $<INSTALL_INTERFACE:include>
)

# Линковка системных библиотек для сокетов
if(WIN32)
    target_link_libraries(iovi_space_network PRIVATE ws2_32)
    target_compile_definitions(iovi_space_network PRIVATE _WINSOCK_DEPRECATED_NO_WARNINGS)
elseif(UNIX AND NOT APPLE)
    target_link_libraries(iovi_space_network PRIVATE pthread)
endif()
