@@ -9,12 +9,19 @@ if(NOT CMAKE_BUILD_TYPE)
99endif ()
1010
1111# set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/toolchains/aarch64-none-linux-gnu.toolchain.cmake)
12- cmake_minimum_required (VERSION 3.0 )
13- project (LLAMA-AX650 -CPP)
12+ cmake_minimum_required (VERSION 3.10 )
13+ project (AX-LLM -CPP)
1414
15- add_compile_options (-std=c++17 )
15+ if (NOT MSVC )
16+ add_compile_options (-std=c++17 )
17+ endif ()
1618set (CMAKE_CXX_STANDARD 17)
1719set (CMAKE_CXX_STANDARD_REQUIRED ON )
20+ set (CMAKE_CXX_EXTENSIONS OFF )
21+
22+ if (WIN32 )
23+ add_compile_definitions (NOMINMAX WIN32_LEAN_AND_MEAN )
24+ endif ()
1825
1926# ---------------------------------------------------------------------------
2027# 后端选项(可组合)
@@ -56,19 +63,39 @@ endif()
5663
5764# AXCL PCIe SDK(仅 BUILD_AXCL 时需要)
5865if (BUILD_AXCL)
66+ if (NOT AXCL_DIR AND DEFINED ENV{AXCL_DIR})
67+ set (AXCL_DIR "$ENV{AXCL_DIR} " )
68+ endif ()
69+
70+ if (WIN32 AND NOT AXCL_DIR)
71+ message (FATAL_ERROR "BUILD_AXCL on Windows requires -DAXCL_DIR=<AXCL SDK root>" )
72+ endif ()
73+
74+ set (AXCL_INCLUDE_DIRS "" )
75+ set (AXCL_LIBRARY_DIRS "" )
5976 if (NOT AXCL_DIR)
60- include_directories ( /usr/include/axcl/ )
61- link_directories ( /usr/lib/axcl/ )
77+ list ( APPEND AXCL_INCLUDE_DIRS /usr/include /axcl/)
78+ list ( APPEND AXCL_LIBRARY_DIRS /usr/lib/axcl/)
6279 else ()
63- include_directories (${AXCL_DIR} /include )
64- include_directories (${AXCL_DIR} /include/include )
65- include_directories (${AXCL_DIR} /include/axcl/ )
66- include_directories (${AXCL_DIR} /include/axcl/include )
67- link_directories (${AXCL_DIR} /lib )
68- link_directories (${AXCL_DIR} /lib/axcl )
80+ list (APPEND AXCL_INCLUDE_DIRS
81+ ${AXCL_DIR} /include
82+ ${AXCL_DIR} /include /include
83+ ${AXCL_DIR} /include /axcl/
84+ ${AXCL_DIR} /include /axcl/include
85+ )
86+ list (APPEND AXCL_LIBRARY_DIRS
87+ ${AXCL_DIR} /lib
88+ ${AXCL_DIR} /lib/axcl
89+ ${AXCL_DIR} /bin
90+ )
6991 message (STATUS "AXCL_DIR = ${AXCL_DIR} " )
7092 endif ()
93+ include_directories (${AXCL_INCLUDE_DIRS} )
94+ if (AXCL_LIBRARY_DIRS)
95+ link_directories (${AXCL_LIBRARY_DIRS} )
96+ endif ()
7197 find_package (OpenMP QUIET )
98+ find_package (Threads REQUIRED )
7299endif ()
73100
74101# ---------------------------------------------------------------------------
@@ -106,6 +133,7 @@ endif()
106133
107134set (OPENAI_API_BUILD_EXAMPLES OFF )
108135set (OPENAI_API_BUILD_TESTS OFF )
136+ set (OPENAI_API_BUILD_SERVER OFF )
109137add_subdirectory (third_party/openai-api.cpp )
110138
111139# ---------------------------------------------------------------------------
@@ -158,17 +186,30 @@ endif()
158186# AXCL PCIe 后端 → axllm
159187# ---------------------------------------------------------------------------
160188if (BUILD_AXCL)
161- set (AXCL_LINK_LIBS axcl_rt pthread tokenizer openai_api::server)
162-
163- # Prefer real versioned axcl_rt .so to avoid linker script extra deps
164- file (GLOB AXCL_RT_CAND "${AXCL_DIR} /lib/libaxcl_rt.so.*" "${AXCL_DIR} /lib/axcl/libaxcl_rt.so.*" )
165- if (AXCL_RT_CAND)
166- list (SORT AXCL_RT_CAND COMPARE NATURAL ORDER DESCENDING )
167- list (GET AXCL_RT_CAND 0 AXCL_RT_REAL)
168- add_library (axcl_rt_real SHARED IMPORTED )
169- set_target_properties (axcl_rt_real PROPERTIES IMPORTED_LOCATION "${AXCL_RT_REAL} " )
170- set (AXCL_LINK_LIBS axcl_rt_real pthread tokenizer openai_api::server)
171- endif ()
189+ set (AXCL_LINK_LIBS tokenizer openai_api::server Threads::Threads)
190+
191+ if (WIN32 )
192+ find_library (AXCL_RT_LIBRARY
193+ NAMES axcl_rt libaxcl_rt
194+ PATHS ${AXCL_LIBRARY_DIRS}
195+ )
196+ if (NOT AXCL_RT_LIBRARY)
197+ message (FATAL_ERROR "Failed to locate AXCL runtime library (axcl_rt) under AXCL_DIR=${AXCL_DIR} " )
198+ endif ()
199+ list (PREPEND AXCL_LINK_LIBS ${AXCL_RT_LIBRARY} )
200+ else ()
201+ set (AXCL_LINK_LIBS axcl_rt ${AXCL_LINK_LIBS} )
202+
203+ # Prefer real versioned axcl_rt .so to avoid linker script extra deps
204+ file (GLOB AXCL_RT_CAND "${AXCL_DIR} /lib/libaxcl_rt.so.*" "${AXCL_DIR} /lib/axcl/libaxcl_rt.so.*" )
205+ if (AXCL_RT_CAND)
206+ list (SORT AXCL_RT_CAND COMPARE NATURAL ORDER DESCENDING )
207+ list (GET AXCL_RT_CAND 0 AXCL_RT_REAL)
208+ add_library (axcl_rt_real SHARED IMPORTED )
209+ set_target_properties (axcl_rt_real PROPERTIES IMPORTED_LOCATION "${AXCL_RT_REAL} " )
210+ set (AXCL_LINK_LIBS axcl_rt_real tokenizer openai_api::server Threads::Threads)
211+ endif ()
212+ endif ()
172213
173214 if (OpenMP_CXX_FOUND)
174215 list (APPEND AXCL_LINK_LIBS OpenMP::OpenMP_CXX)
@@ -179,10 +220,9 @@ endif()
179220 src/runner/ax_model_runner/ax_model_runner_axcl.cpp
180221 src/runner/utils/axcl_manager.cpp
181222 )
182- target_include_directories (axllm PRIVATE ${AXCL_DIR} /include )
223+ target_include_directories (axllm PRIVATE ${AXCL_INCLUDE_DIRS} )
183224 target_compile_definitions (axllm PRIVATE USE_AXCL )
184225 target_link_libraries (axllm
185- -L${AXCL_DIR}/lib
186226 ${AXCL_LINK_LIBS}
187227 ${AXLLM_VISION_LIBS}
188228 )
@@ -192,17 +232,18 @@ endif()
192232 src/runner/ax_model_runner/ax_model_runner_axcl.cpp
193233 src/runner/utils/axcl_manager.cpp
194234 )
195- target_include_directories (llm_smoke PRIVATE ${AXCL_DIR} /include )
235+ target_include_directories (llm_smoke PRIVATE ${AXCL_INCLUDE_DIRS} )
196236 target_compile_definitions (llm_smoke PRIVATE USE_AXCL )
197237 target_link_libraries (llm_smoke
198- -L${AXCL_DIR}/lib
199238 ${AXCL_LINK_LIBS}
200239 ${AXLLM_VISION_LIBS}
201240 )
202- set_target_properties (axllm PROPERTIES LINK_FLAGS "-Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs" )
203- install (TARGETS axllm DESTINATION bin)
204- set_target_properties (llm_smoke PROPERTIES LINK_FLAGS "-Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs" )
205- install (TARGETS llm_smoke DESTINATION bin)
241+ if (NOT WIN32 )
242+ set_target_properties (axllm PROPERTIES LINK_FLAGS "-Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs" )
243+ set_target_properties (llm_smoke PROPERTIES LINK_FLAGS "-Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs" )
244+ endif ()
245+ install (TARGETS axllm DESTINATION bin)
246+ install (TARGETS llm_smoke DESTINATION bin)
206247endif ()
207248
208249install (DIRECTORY ${CMAKE_SOURCE_DIR} /scripts/ DESTINATION bin/scripts)
0 commit comments