if(POLICY CMP0144)
    cmake_policy(SET CMP0144 NEW)
endif()
include(FindThreads)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/absl.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/re2.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/zlib.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/libzmq.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/jemalloc.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/rocksdb.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/securec.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/tbb.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/nlohmann_json.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/openssl.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/libcurl.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/protobuf.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/grpc.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/etcdapi.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/iconv.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/xml2.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/pcre.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/cjson.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/external_libs/spdlog.cmake)

if (BUILD_PIPLN_H2D)
    if (NOT BUILD_WITH_URMA)
        message(FATAL_ERROR "BUILD_PIPLN_H2D should be enabled with BUILD_WITH_URMA")
    endif()
    include(${CMAKE_SOURCE_DIR}/cmake/external_libs/pipeline_rh2d.cmake)
endif()

if (BUILD_WITH_URMA)
    message(STATUS "Build with urma")
    set(URMA_OVER_UB "ON")
    include(${CMAKE_SOURCE_DIR}/cmake/external_libs/urma.cmake)
endif()
if (BUILD_WITH_RDMA)
    include(${CMAKE_SOURCE_DIR}/cmake/external_libs/ucx.cmake)
endif()

if (BUILD_JAVA_API)
    include(${CMAKE_SOURCE_DIR}/cmake/external_libs/jni.cmake)
endif()

if (WITH_TESTS)
    include(${CMAKE_SOURCE_DIR}/cmake/external_libs/gtest.cmake)
endif()

if (BUILD_PYTHON_API)
    include(${CMAKE_SOURCE_DIR}/cmake/external_libs/pybind11.cmake)
endif()

if (BUILD_HETERO)
    if (BUILD_HETERO_NPU)
        include(${CMAKE_SOURCE_DIR}/cmake/external_libs/ascend.cmake)
        include(${CMAKE_SOURCE_DIR}/cmake/external_libs/p2phccl.cmake)
    endif()
    if (BUILD_HETERO_GPU)
        include(${CMAKE_SOURCE_DIR}/cmake/external_libs/cuda.cmake)
    endif()
endif()