cmake_minimum_required(VERSION 3.10)

project(SwordfishBacktest)

message(STATUS "Compiler: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")

add_compile_options(
    -std=c++17
    -DLINUX
    -Wall
    -g
    -O0
)

if(WIN32 OR MINGW)
elseif(UNIX)
    if(ENABLEABI MATCHES 1)
        message("ENABLEABI")
        add_compile_options(
            -D_GLIBCXX_USE_CXX11_ABI=1
            -Wl,-rpath,${PROJECT_SOURCE_DIR}/lib/ABI1
        )
        set(LIB_PATH ${PROJECT_SOURCE_DIR}/lib/ABI1)
        set(CMAKE_INSTALL_RPATH "${PROJECT_SOURCE_DIR}/lib/ABI1;${LIB_PATH}")
    else()
        message("DISENABLEABI")
        add_compile_options(
            -D_GLIBCXX_USE_CXX11_ABI=0
            -Wl,-rpath,${PROJECT_SOURCE_DIR}/lib/ABI0
        )
        set(LIB_PATH ${PROJECT_SOURCE_DIR}/lib/ABI0)
        set(CMAKE_INSTALL_RPATH "${PROJECT_SOURCE_DIR}/lib/ABI0;${LIB_PATH}")
    endif()
endif()

add_definitions(-DLOCKFREE_SYMBASE)
include_directories(
    ${PROJECT_SOURCE_DIR}/include
    ${PROJECT_SOURCE_DIR}/include/swordfish
)
link_directories( ${LIB_PATH} )
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/bin/)

file(COPY "${PROJECT_SOURCE_DIR}/asset/dolphindb.lic" DESTINATION "${EXECUTABLE_OUTPUT_PATH}")
file(COPY "${PROJECT_SOURCE_DIR}/asset/dolphindb.dos" DESTINATION "${EXECUTABLE_OUTPUT_PATH}")
file(COPY "${PROJECT_SOURCE_DIR}/asset/dolphindb.cfg" DESTINATION "${EXECUTABLE_OUTPUT_PATH}")
file(COPY "${LIB_PATH}/MatchingEngineSimulator" DESTINATION "${EXECUTABLE_OUTPUT_PATH}/plugins/")
file(COPY "${LIB_PATH}/Backtest" DESTINATION "${EXECUTABLE_OUTPUT_PATH}/plugins/")

aux_source_directory(./src SRC_LIST )
add_executable(${CMAKE_PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${CMAKE_PROJECT_NAME}
    Swordfish
)
