#
# Author: Benjamin Sergeant
# Copyright (c) 2018 Machine Zone, Inc. All rights reserved.
#
cmake_minimum_required (VERSION 3.4.1)
project (ixwebsocket_unittest)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../third_party/sanitizers-cmake/cmake" ${CMAKE_MODULE_PATH})
find_package(Sanitizers)

set (CMAKE_CXX_STANDARD 14)

if (NOT WIN32)
  option(USE_TLS "Add TLS support" ON)
endif()

add_subdirectory(${PROJECT_SOURCE_DIR}/.. ixwebsocket)

include_directories(
  ${PROJECT_SOURCE_DIR}/Catch2/single_include
  ../third_party/msgpack11
)

# Shared sources
set (SOURCES 
  test_runner.cpp
  IXTest.cpp
  ../third_party/msgpack11/msgpack11.cpp

  IXDNSLookupTest.cpp
  IXSocketTest.cpp
)

# Some unittest don't work on windows yet
if (NOT WIN32)
  list(APPEND SOURCES 
    IXWebSocketServerTest.cpp
    IXWebSocketHeartBeatTest.cpp
    cmd_websocket_chat.cpp
    IXWebSocketTestConnectionDisconnection.cpp
  )
endif()

add_executable(ixwebsocket_unittest ${SOURCES})
add_sanitizers(ixwebsocket_unittest)

if (APPLE AND USE_TLS)
    target_link_libraries(ixwebsocket_unittest "-framework foundation" "-framework security")
endif()

target_link_libraries(ixwebsocket_unittest ixwebsocket)
install(TARGETS ixwebsocket_unittest DESTINATION bin)