SET(TARGET_NAME nim_cpp_wrapper)

PROJECT(${TARGET_NAME})

IF (MSVC)
    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
ENDIF ()

INCLUDE_DIRECTORIES(
    ${PROJECT_SOURCE_DIR}
    ${PROJECT_SOURCE_DIR}/..
    ${PROJECT_SOURCE_DIR}/api
    ${PROJECT_SOURCE_DIR}/helper
)

FILE(GLOB_RECURSE NIM_CPP_SOURCE *.h *.cpp)
FILE(GLOB_RECURSE NIM_WIN_ONLY *_rts.* *_vchat.*)

IF (UNIX)
    LIST(REMOVE_ITEM NIM_CPP_SOURCE ${NIM_WIN_ONLY})
ENDIF()

ADD_LIBRARY(${TARGET_NAME} ${NIM_CPP_SOURCE})

IF(UNIX AND NOT APPLE)
    set(THREADS_PREFER_PTHREAD_FLAG ON)
    find_package(Threads REQUIRED)
    target_link_libraries(${TARGET_NAME} PRIVATE Threads::Threads)
ENDIF()

SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES FOLDER "cpp_wrappers")

IF (BUILD_SHARED_LIBS)
    ADD_DEFINITIONS(-DCPPWRAPPER_DLL -DNIM_SDK_CPPWRAPPER_EXPORTS)
    TARGET_LINK_LIBRARIES(${TARGET_NAME} PRIVATE nim_wrapper_util)
ENDIF ()
