cmake_minimum_required(VERSION 3.0)
set(CLIENT_VERSION 2.0.0)
set(LIBRARY_NAME onsclient4cpp)
set(PROJECT_NAME rocketmq-ons-cpp)
project(${PROJECT_NAME} VERSION ${CLIENT_VERSION}
        LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)

if (CONAN_LIBCXX STREQUAL "libstdc++11")
    message("-- Detect libstdc++11,Using -D_GLIBCXX_USE_CXX11_ABI=1")
    add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
elseif (CONAN_LIBCXX STREQUAL "libstdc++")
    message("-- Detect libstdc++, Using -D_GLIBCXX_USE_CXX11_ABI=0")
    add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
else ()
    message("-- As Default, Will not open Dual ABI.")
endif ()

include(CTest)

option(BUILD_TESTS "Build tests" ON)
option(BUILD_BENCHMARK "Build benchmark tests" OFF)
option(BUILD_DEMOS "Build demos" ON)

include_directories(graalvm_artifacts
        src/main/c/native
        src/main/c/include
        src/main/cpp/include
        src/main/cpp/sdk/extern
        src/main/cpp/sdk/common)

find_library(ROCKETMQ_CLIENT_CORE
        NAMES rocketmq_client_core
        HINTS ${CMAKE_SOURCE_DIR}/build)

if (${ROCKETMQ_CLIENT_CORE-NOTFOUNT})
    message("find_library for rocketmq_client_core failed")
endif ()

add_subdirectory(src/main/cpp)

if (BUILD_TESTS)
    enable_testing()
    add_subdirectory(3rd_party/google_test)
    add_subdirectory(src/test/cpp)
    add_subdirectory(src/test/c)
endif ()

if (BUILD_DEMOS)
    add_subdirectory(src/main/cpp/demos)
endif ()

if (BUILD_BENCHMARK)
    set(BENCHMARK_ENABLE_TESTING OFF)
    add_subdirectory(3rd_party/benchmark)
    add_subdirectory(src/main/cpp/benchmark)
endif ()

