MNN/transformers/llm/engine/CMakeLists.txt

114 lines
4.2 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.6)
project(llm)
2025-02-12 11:14:19 +08:00
option(LLM_SUPPORT_VISION "Llm model support vision input." OFF)
option(LLM_SUPPORT_AUDIO "Llm model support audio input." OFF)
2025-01-17 21:36:14 +08:00
option(BUILD_MLS "Build PC Commandline." OFF)
2025-02-24 11:44:27 +08:00
set(LLM_DEPS ${MNN_DEPS})
2024-12-19 16:20:00 +08:00
if (LLM_SUPPORT_VISION AND MNN_BUILD_OPENCV)
2025-02-24 11:44:27 +08:00
add_definitions(-DLLM_SUPPORT_VISION)
list(APPEND LLM_DEPS MNNOpenCV)
include_directories(${CMAKE_CURRENT_LIST_DIR}/../../../tools/cv/include/)
endif()
2024-12-19 16:20:00 +08:00
if (LLM_SUPPORT_AUDIO AND MNN_BUILD_AUDIO)
2025-02-24 11:44:27 +08:00
list(APPEND LLM_DEPS MNNAudio)
include_directories(${CMAKE_CURRENT_LIST_DIR}/../../../tools/audio/include/)
2024-12-19 16:20:00 +08:00
endif()
2023-10-18 10:31:02 +08:00
# include dir
include_directories(${CMAKE_CURRENT_LIST_DIR}/include/)
# source files
FILE(GLOB SRCS ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp)
2024-08-24 15:46:21 +08:00
if (MNN_SEP_BUILD)
if (MNN_BUILD_SHARED_LIBS)
# compile dynamic so, support Linux/Mac
add_library(llm SHARED ${SRCS})
set_target_properties(llm PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
2025-02-24 11:44:27 +08:00
target_link_libraries(llm ${LLM_DEPS})
2024-07-04 11:53:45 +08:00
else()
2024-08-24 15:46:21 +08:00
add_library(llm STATIC ${SRCS})
2024-07-04 11:53:45 +08:00
endif()
2025-02-24 11:44:27 +08:00
list(APPEND LLM_DEPS llm)
2024-08-24 15:46:21 +08:00
else()
add_library(llm OBJECT ${SRCS})
add_definitions(-DMNN_LLM_ENABLED=1)
list(APPEND MNN_TARGETS llm)
list(APPEND MNN_OBJECTS_TO_LINK $<TARGET_OBJECTS:llm>)
2023-10-18 10:31:02 +08:00
endif()
2024-12-19 16:20:00 +08:00
if (LLM_SUPPORT_VISION AND MNN_BUILD_OPENCV)
target_compile_definitions(llm PRIVATE LLM_SUPPORT_VISION)
endif()
if (LLM_SUPPORT_AUDIO AND MNN_BUILD_AUDIO)
target_compile_definitions(llm PRIVATE LLM_SUPPORT_AUDIO)
endif()
2025-02-24 11:44:27 +08:00
add_executable(llm_demo ${CMAKE_CURRENT_LIST_DIR}/demo/llm_demo.cpp)
add_executable(embedding_demo ${CMAKE_CURRENT_LIST_DIR}/demo/embedding_demo.cpp)
add_executable(rollback_demo ${CMAKE_CURRENT_LIST_DIR}/demo/rollback_demo.cpp)
target_link_libraries(llm_demo ${LLM_DEPS})
target_link_libraries(embedding_demo ${LLM_DEPS})
target_link_libraries(rollback_demo ${LLM_DEPS})
2025-01-17 21:36:14 +08:00
if (BUILD_MLS)
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0" CACHE STRING "Minimum macOS version" FORCE)
2025-01-17 21:36:14 +08:00
add_executable(mls
${CMAKE_CURRENT_LIST_DIR}/app/mls.cpp
${CMAKE_CURRENT_LIST_DIR}/app/remote_model_downloader.cpp
${CMAKE_CURRENT_LIST_DIR}/app/file_utils.cpp
${CMAKE_CURRENT_LIST_DIR}/app/llm_benchmark.cpp
${CMAKE_CURRENT_LIST_DIR}/app/hf_api_client.cpp
${CMAKE_CURRENT_LIST_DIR}/app/mls_server.cpp
)
# set(OPENSSL_ROOT_DIR "C:/Program Files/OpenSSL-Win64")
# set(OPENSSL_INCLUDE_DIR "C:/Program Files/OpenSSL-Win64/include")
# set(OPENSSL_CRYPTO_LIBRARY "C:/Program Files/OpenSSL-Win64/lib/VC/x64/MD/libcrypto.lib")
# set(OPENSSL_LIBRARIES "C:/Program Files/OpenSSL-Win64/lib//VC/x64/MD/libssl.lib;C:/Program Files/OpenSSL-Win64/lib/VC/x64/MD/libcrypto.lib")
# Set OpenSSL_FOUND based on the presence of include directory and libraries
set(OPENSSL_USE_STATIC_LIBS TRUE)
2025-01-17 21:36:14 +08:00
message(STATUS "OPENSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR} OPENSSL_LIBRARIES:${OPENSSL_LIBRARIES}")
if(OPENSSL_LIBRARIES AND OPENSSL_INCLUDE_DIR)
set(OpenSSL_FOUND TRUE)
else()
set(OpenSSL_FOUND FALSE)
endif()
# Check if OPENSSL_LIBRARIES is not set to find OpenSSL
if(NOT OpenSSL_FOUND)
find_package(OpenSSL REQUIRED)
endif()
# Check if OpenSSL is found
if(OpenSSL_FOUND)
message(STATUS "OpenSSL found: ${OPENSSL_INCLUDE_DIR} ${OPENSSL_LIBRARIES}")
2025-02-24 11:44:27 +08:00
2025-01-17 21:36:14 +08:00
# Use the OpenSSL include directory
target_include_directories(mls PRIVATE ${OPENSSL_INCLUDE_DIR})
# Link to OpenSSL libraries
target_link_libraries(mls PRIVATE ${OPENSSL_LIBRARIES})
2025-01-17 21:36:14 +08:00
# If on Apple platform, link with Security framework
if(APPLE)
find_library(SECURITY_FRAMEWORK Security)
if(SECURITY_FRAMEWORK)
target_link_libraries(mls PRIVATE ${SECURITY_FRAMEWORK})
2025-01-17 21:36:14 +08:00
else()
message(FATAL_ERROR "Could not find Security framework")
endif()
endif()
else()
message(FATAL_ERROR "OpenSSL not found. Please install OpenSSL and set paths.")
endif()
target_include_directories(mls PRIVATE ${MNN_INCLUDES})
2025-01-17 21:36:14 +08:00
set_property(TARGET mls PROPERTY CXX_STANDARD 17)
set_property(TARGET mls PROPERTY CXX_STANDARD_REQUIRED ON)
# target_compile_options(mls PRIVATE -std=c++17)
target_link_libraries(mls PRIVATE ${LLM_DEPS})
2025-01-17 21:36:14 +08:00
target_compile_definitions(mls PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
2025-02-12 11:14:19 +08:00
endif()