cmake_minimum_required(VERSION 3.19.0)
project("MindIE-LLM")
set(CMAKE_CXX_STANDARD 17)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-source build is forbidden!\n"
"Please delete created:['CMakeFiles', 'CMakeCache.txt'] and create a new dir for build, such as: \n"
"mkdir build & cd build\n"
"cmake ..\n"
)
endif()
include(${PROJECT_SOURCE_DIR}/cmake/utils.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/default_config.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/compile_options.cmake)
ensure_aslr_level(2)
set(prometheus-cpp_DIR "${THIRD_PARTY_OUTPUT_DIR}/prometheus-cpp/lib/cmake/prometheus-cpp")
set(Boost_DIR "${THIRD_PARTY_OUTPUT_DIR}/boost/lib/cmake/Boost-1.87.0")
set(OPENSSL_ROOT_DIR "${THIRD_PARTY_OUTPUT_DIR}/openssl")
set(gRPC_DIR "${THIRD_PARTY_OUTPUT_DIR}/grpc/lib/cmake/grpc")
set(absl_DIR "${THIRD_PARTY_OUTPUT_DIR}/abseil-cpp/lib/cmake/absl")
set(ZLIB_ROOT "${THIRD_PARTY_OUTPUT_DIR}/zlib")
set(c-ares_DIR "${THIRD_PARTY_OUTPUT_DIR}/cares/lib/cmake/c-ares")
set(utf8_range_DIR "${THIRD_PARTY_OUTPUT_DIR}/protobuf/lib/cmake/utf8_range")
set(Protobuf_DIR "${THIRD_PARTY_OUTPUT_DIR}/protobuf/lib/cmake/protobuf")
set(re2_DIR "${THIRD_PARTY_OUTPUT_DIR}/re2/lib/cmake/re2")
find_package(ZLIB REQUIRED)
find_package(prometheus-cpp REQUIRED)
find_package(Boost REQUIRED COMPONENTS thread chrono)
find_package(absl REQUIRED CONFIG)
find_package(re2 REQUIRED CONFIG)
find_package(OpenSSL REQUIRED)
find_package(Protobuf REQUIRED CONFIG)
find_package(gRPC REQUIRED CONFIG)
find_pytorch(PYTORCH_INSTALL_PATH)
set(PYTORCH_EXTRA_LIB_SO "${PYTORCH_INSTALL_PATH}/../torch.libs")
find_package(Torch REQUIRED PATHS "${PYTORCH_INSTALL_PATH}/share/cmake/Torch")
execute_process(
COMMAND bash -c "python3 -m pybind11 --cmakedir"
OUTPUT_VARIABLE pybind11_cmake_dir
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(pybind11_DIR "${pybind11_cmake_dir}")
find_package(Python COMPONENTS Interpreter Development)
find_package(pybind11 CONFIG)
find_package(Threads REQUIRED)
include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/src/include/utils
${PROJECT_SOURCE_DIR}/src/utils/include
${PROJECT_SOURCE_DIR}/src/utils/log
${PROJECT_SOURCE_DIR}/mindie_llm/connector/cpp/
${PROJECT_SOURCE_DIR}/mindie_llm/text_generator/cpp/memory_bridge
${PROJECT_SOURCE_DIR}/mindie_llm/text_generator/cpp/sampler/cpu_logits_handler
${PROJECT_SOURCE_DIR}/mindie_llm/text_generator/cpp/sampler/cpu_logits_handler/log
${PROJECT_SOURCE_DIR}/src/include/llm_manager_v2
${PROJECT_SOURCE_DIR}/src/include
${PROJECT_SOURCE_DIR}/src/include/dataclass
${PROJECT_SOURCE_DIR}/src/include/config
${PROJECT_SOURCE_DIR}/src/llm_manager_v2/include/impl
${PROJECT_SOURCE_DIR}/src/llm_manager
${PROJECT_SOURCE_DIR}/src/config_manager
${PROJECT_SOURCE_DIR}/src/include/llm_manager
${PROJECT_SOURCE_DIR}/src/include/block_manager
${PROJECT_SOURCE_DIR}/src/include/scheduler
${PROJECT_SOURCE_DIR}/src/block_manager
${PROJECT_SOURCE_DIR}/src/scheduler
${PROJECT_SOURCE_DIR}/src/engine
${PROJECT_SOURCE_DIR}/src/executor
${PROJECT_SOURCE_DIR}/src/include/load_balance
${PROJECT_SOURCE_DIR}/src/server/infer_instances
${PROJECT_SOURCE_DIR}/src/server/common
${PROJECT_SOURCE_DIR}/src/include/request_response
${PROJECT_SOURCE_DIR}/proto
)
include_directories(SYSTEM
${THIRD_PARTY_OUTPUT_DIR}/abseil-cpp/include
${THIRD_PARTY_OUTPUT_DIR}/boost/include
${THIRD_PARTY_OUTPUT_DIR}/cares/include
${THIRD_PARTY_OUTPUT_DIR}/gloo
${THIRD_PARTY_OUTPUT_DIR}/grpc/include
${THIRD_PARTY_OUTPUT_DIR}/gtest/include
${THIRD_PARTY_OUTPUT_DIR}/http
${THIRD_PARTY_OUTPUT_DIR}/libboundscheck/include
${THIRD_PARTY_OUTPUT_DIR}/mockcpp/include
${THIRD_PARTY_OUTPUT_DIR}/nlohmannJson/include
${THIRD_PARTY_OUTPUT_DIR}/protobuf/include
${THIRD_PARTY_OUTPUT_DIR}/re2/include
${THIRD_PARTY_OUTPUT_DIR}/spdlog/include
${pybind11_INCLUDE_DIRS}
${TORCH_INCLUDE_DIRS}
${Python_INCLUDE_DIRS}
$ENV{ASCEND_HOME_PATH}
$ENV{ASCEND_HOME_PATH}/include
$ENV{ASCEND_HOME_PATH}/lib64
$ENV{ASCEND_HOME_PATH}/runtime/include
${PROJECT_SOURCE_DIR}/src/include/msServiceProfiler/include
)
link_directories(
$ENV{ASCEND_HOME_PATH}/lib64
${THIRD_PARTY_OUTPUT_DIR}/libboundscheck/lib
)
add_subdirectory(proto)
add_subdirectory(src)
if(DEFINED ENV{ASCEND_HOME_PATH})
message("Detected that 'CANN' is installed, starting to compile the module 'text_generator'.")
add_subdirectory(mindie_llm/text_generator/cpp)
add_subdirectory(mindie_llm/connector/cpp)
endif()
if(USE_PYTHONTEST_TEST OR USE_FUZZ_TEST OR DOMAIN_LAYERED_TEST)
add_subdirectory(tests)
endif()