Files
project_6_89d52222/upstream_ref/xllm/xllm/CMakeLists.txt

134 lines
3.4 KiB
CMake
Raw Normal View History

include(cc_binary)
include(cc_shared_library)
include_directories(.)
# Generate build-time version header from version.txt.
file(READ "${CMAKE_SOURCE_DIR}/version.txt" XLLM_BUILD_VERSION_RAW)
string(STRIP "${XLLM_BUILD_VERSION_RAW}" XLLM_BUILD_VERSION)
if(XLLM_BUILD_VERSION MATCHES "^v(.+)$")
set(XLLM_BUILD_VERSION "${CMAKE_MATCH_1}")
endif()
if(XLLM_BUILD_VERSION STREQUAL "")
set(XLLM_BUILD_VERSION "unknown")
endif()
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/core/common")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/core/common/xllm_build_info.h"
"#pragma once\n\n#define XLLM_BUILD_VERSION \"${XLLM_BUILD_VERSION}\"\n")
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
# Set warning-as-error for xllm code (third-party headers are marked as SYSTEM)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
add_compile_options(
$<$<COMPILE_LANGUAGE:CXX>:-Werror>
$<$<COMPILE_LANGUAGE:C>:-Werror>
)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(
$<$<COMPILE_LANGUAGE:CXX>:-Wno-macro-redefined>
$<$<COMPILE_LANGUAGE:C>:-Wno-macro-redefined>
)
endif()
endif()
option(GENERATE_SO "Enable compile to generate .so" OFF)
add_subdirectory(api_service)
add_subdirectory(core)
add_subdirectory(function_call)
add_subdirectory(models)
add_subdirectory(parser)
add_subdirectory(processors)
add_subdirectory(proto)
add_subdirectory(pybind)
add_subdirectory(server)
if(GENERATE_SO)
message(STATUS "build libxllm.so and install")
cc_shared_library(
NAME
xllm
HDRS
c_api/llm.h
c_api/rec.h
c_api/default.h
c_api/types.h
c_api/internal/helper.h
SRCS
c_api/internal/llm.cpp
c_api/internal/rec.cpp
c_api/internal/helper.cpp
DEPS
:flags
:master
absl::strings
Boost::serialization
gflags::gflags
glog::glog
Folly::folly
nlohmann_json::nlohmann_json
)
else()
message(STATUS "build xllm binary and install")
cc_binary(
NAME
xllm
SRCS
xllm.cpp
DEPS
:flags
:xllm_server
:master
absl::strings
Boost::serialization
gflags::gflags
glog::glog
Folly::folly
nlohmann_json::nlohmann_json
)
endif()
# link brpc
target_link_libraries(xllm PRIVATE glog::glog brpc leveldb::leveldb protobuf::libprotobuf ${OpenCV_LIBS})
add_dependencies(xllm brpc-static)
if(USE_NPU)
set(COMMON_LIBS torch_npu torch_python Python::Python ascendcl atb_customize hccl c_sec nnopbase ms_tools_ext)
elseif(USE_MLU)
set(COMMON_LIBS Python::Python)
endif()
if(USE_MSPTI)
list(APPEND COMMON_LIBS mspti)
endif()
target_link_libraries(xllm PUBLIC ${COMMON_LIBS})
if (USE_MUSA)
target_link_libraries(xllm PUBLIC atomic musa_python torch_cpu c10)
endif()
# install xllm
install(TARGETS xllm RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
# Install all dependencies for xllm
install(CODE [[
file(GET_RUNTIME_DEPENDENCIES
RESOLVED_DEPENDENCIES_VAR DEPENDENCIES
UNRESOLVED_DEPENDENCIES_VAR UNRESOLVED_DEPENDENCIES
EXECUTABLES $<TARGET_FILE:xllm>)
file(INSTALL
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib"
FILES ${DEPENDENCIES}
FOLLOW_SYMLINK_CHAIN)
# This should not be possible, but error out when a dependency cannot
# be resolved.
list(LENGTH UNRESOLVED_DEPENDENCIES UNRESOLVED_LENGTH)
if(${UNRESOLVED_LENGTH} GREATER 0)
message(FATAL_ERROR "Unresolved dependencies: ${UNRESOLVED_DEPENDENCIES}")
endif()
]])