#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

project(ignite-network)

set(TARGET ${PROJECT_NAME})

set(SOURCES
    async_client_pool_adapter.cpp
    error_handling_filter.cpp
    codec_data_filter.cpp
    length_prefix_codec.cpp
    network.cpp
    tcp_range.cpp
)

if (WIN32)
    list(APPEND SOURCES
        detail/win/sockets.cpp
        detail/win/utils.cpp
        detail/win/win_async_client.cpp
        detail/win/win_async_client_pool.cpp
        detail/win/win_async_connecting_thread.cpp
        detail/win/win_async_worker_thread.cpp
    )
else()
    list(APPEND SOURCES
        detail/linux/connecting_context.cpp
        detail/linux/linux_async_client.cpp
        detail/linux/linux_async_client_pool.cpp
        detail/linux/linux_async_worker_thread.cpp
        detail/linux/sockets.cpp
        detail/linux/utils.cpp
    )
endif()

add_library(${TARGET} OBJECT ${SOURCES})

target_link_libraries(${TARGET} ignite-common ignite-protocol)

if (WIN32)
    add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS)
    target_link_libraries(${TARGET} wsock32 ws2_32 iphlpapi crypt32)
endif()

set_target_properties(${TARGET} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION})
set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE 1)
