cmake_minimum_required (VERSION 3.22)

project(xlt_api_demo)

#FILE(GLOB_RECURSE SOURCES_ALL
#     ${CMAKE_CURRENT_SOURCE_DIR}/xlt_api_demo/*.cpp
#     ${CMAKE_CURRENT_SOURCE_DIR}/xlt_api_demo/*.h)

SET(OUTPUT_DIR ${PROJECT_SOURCE_DIR}/targets)
SET(XLIGHT_SDK_ROOT ${PROJECT_SOURCE_DIR}/..)
SET(XLIGHT_SDK_INC_DIR ${XLIGHT_SDK_ROOT}/include/xlt_api)
SET(XLIGHT_SDK_LIB_DIR ${XLIGHT_SDK_ROOT}/lib)

FUNCTION(INCLUDE_DIRECTORIES_RECUR base_path)
    INCLUDE_DIRECTORIES(${base_path})

    FILE(GLOB_RECURSE all_sub_dirs LIST_DIRECTORIES true "${base_path}/*")
    SET(include_dirs "")
    FOREACH(sub_dir ${all_sub_dirs})
        IF(IS_DIRECTORY "${sub_dir}")
            LIST(APPEND include_dirs "${sub_dir}")
        ENDIF()
    ENDFOREACH()

    INCLUDE_DIRECTORIES(${include_dirs})
ENDFUNCTION()

INCLUDE_DIRECTORIES_RECUR(${XLIGHT_SDK_INC_DIR})


SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIR}/lib)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_DIR}/lib)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIR}/bin)
SET(PLATFORM_TARGET x64)

SET(CMAKE_INSTALL_PREFIX ${OUTPUT_DIR})
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
SET(CMAKE_CXX_EXTENSIONS OFF)


FILE(GLOB_RECURSE TRADE_DEMO_SOURCES_ALL
     ${CMAKE_CURRENT_SOURCE_DIR}/xlt_trade_api_demo/*.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/xlt_trade_api_demo/*.h)

SET(BIN_TRADE_DEMO xlt_trade_api_demo)
ADD_EXECUTABLE(${BIN_TRADE_DEMO} ${TRADE_DEMO_SOURCES_ALL})
#TARGET_INCLUDE_DIRECTORIES(${BIN_TRADE_DEMO} PUBLIC ${XLIGHT_SDK_INC_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/xlt_trade_api_demo)
TARGET_LINK_DIRECTORIES(${BIN_TRADE_DEMO} PRIVATE ${XLIGHT_SDK_LIB_DIR})
TARGET_LINK_LIBRARIES(${BIN_TRADE_DEMO} PRIVATE xlt_api)

FILE(GLOB_RECURSE QUOTE_DEMO_SOURCES_ALL
        ${CMAKE_CURRENT_SOURCE_DIR}/xlt_quote_api_demo/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/xlt_quote_api_demo/*.h)

SET(BIN_QUOTE_DEMO xlt_quote_api_demo)
ADD_EXECUTABLE(${BIN_QUOTE_DEMO} ${QUOTE_DEMO_SOURCES_ALL})
#TARGET_INCLUDE_DIRECTORIES(${BIN_QUOTE_DEMO} PUBLIC ${XLIGHT_SDK_INC_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/xlt_quote_api_demo ${CMAKE_CURRENT_SOURCE_DIR}/xlt_quote_api_demo/quote_decoder)
TARGET_LINK_DIRECTORIES(${BIN_QUOTE_DEMO} PRIVATE ${XLIGHT_SDK_LIB_DIR})
TARGET_LINK_LIBRARIES(${BIN_QUOTE_DEMO} PRIVATE xlt_api)

FILE(GLOB_RECURSE PRIVILEGE_DEMO_SOURCES_ALL
        ${CMAKE_CURRENT_SOURCE_DIR}/xlt_privilege_api_demo/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/xlt_privilege_demo/*.h)

SET(BIN_PRIVILEGE_DEMO xlt_privilege_api_demo)
ADD_EXECUTABLE(${BIN_PRIVILEGE_DEMO} ${PRIVILEGE_DEMO_SOURCES_ALL})
#TARGET_INCLUDE_DIRECTORIES(${BIN_PRIVILEGE_DEMO} PUBLIC ${XLIGHT_SDK_INC_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/xlt_privilege_api_demo)
TARGET_LINK_DIRECTORIES(${BIN_PRIVILEGE_DEMO} PRIVATE ${XLIGHT_SDK_LIB_DIR})
TARGET_LINK_LIBRARIES(${BIN_PRIVILEGE_DEMO} PRIVATE xlt_api)


IF (CMAKE_BUILD_TYPE STREQUAL Debug)
    ADD_DEFINITIONS(-DDEBUG)
ELSE()
    ADD_DEFINITIONS(-DNDEBUG)
ENDIF()

IF (CMAKE_SYSTEM_NAME MATCHES "Linux")

    SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -ggdb -pthread")
    SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall -pthread")

    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")

    INSTALL(FILES ${XLIGHT_SDK_LIB_DIR}/libxlt_api.so DESTINATION bin)
ENDIF()


