@@ -17,22 +17,22 @@ else()
17
17
endif ()
18
18
19
19
if (NOT CMAKE_BUILD_TYPE )
20
- set (
21
- CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build type" FORCE
22
- )
20
+ set (CMAKE_BUILD_TYPE
21
+ RelWithDebInfo
22
+ CACHE STRING "Build type" FORCE )
23
23
message (STATUS "Setting default build type to " ${CMAKE_BUILD_TYPE} )
24
24
endif (NOT CMAKE_BUILD_TYPE )
25
25
26
26
option (MLC_HIDE_PRIVATE_SYMBOLS "Hide private symbols" ON )
27
27
28
- if (MLC_LLM_INSTALL_STATIC_LIB)
28
+ if (MLC_LLM_INSTALL_STATIC_LIB)
29
29
set (BUILD_STATIC_RUNTIME ON )
30
30
endif ()
31
31
32
32
set (MLC_VISIBILITY_FLAG "" )
33
- if (MLC_HIDE_PRIVATE_SYMBOLS)
33
+ if (MLC_HIDE_PRIVATE_SYMBOLS)
34
34
set (HIDE_PRIVATE_SYMBOLS ON )
35
- if (NOT MSVC )
35
+ if (NOT MSVC )
36
36
set (MLC_VISIBILITY_FLAG "-fvisibility=hidden" )
37
37
endif ()
38
38
message (STATUS "Hide private symbols" )
@@ -54,13 +54,13 @@ set(USE_PROFILER OFF)
54
54
set (USE_GTEST OFF )
55
55
set (USE_LIBBACKTRACE OFF )
56
56
set (BUILD_DUMMY_LIBTVM ON )
57
- if (NOT DEFINED TVM_SOURCE_DIR)
57
+ if (NOT DEFINED TVM_SOURCE_DIR)
58
58
if (DEFINED ENV{TVM_SOURCE_DIR})
59
59
set (TVM_SOURCE_DIR "$ENV{TVM_SOURCE_DIR} " )
60
60
else ()
61
61
set (TVM_SOURCE_DIR 3rdparty/tvm)
62
62
endif (DEFINED ENV{TVM_SOURCE_DIR})
63
- endif (NOT DEFINED TVM_SOURCE_DIR)
63
+ endif (NOT DEFINED TVM_SOURCE_DIR)
64
64
message (STATUS "TVM_SOURCE_DIR: ${TVM_SOURCE_DIR} " )
65
65
add_subdirectory (${TVM_SOURCE_DIR} tvm EXCLUDE_FROM_ALL )
66
66
@@ -75,15 +75,13 @@ list(FILTER XGRAMMAR_SRCS EXCLUDE REGEX "${XGRAMMAR_PATH}/cpp/pybind/.*\\.cc")
75
75
list (APPEND MLC_LLM_SRCS ${XGRAMMAR_SRCS} )
76
76
add_library (mlc_llm_objs OBJECT ${MLC_LLM_SRCS} )
77
77
78
- set (
79
- MLC_LLM_INCLUDES
80
- ${TVM_SOURCE_DIR} /include
81
- ${TVM_SOURCE_DIR} /3rdparty/dlpack/include
82
- ${TVM_SOURCE_DIR} /3rdparty/dmlc-core/include
83
- ${TVM_SOURCE_DIR} /3rdparty/picojson
84
- )
78
+ set (MLC_LLM_INCLUDES
79
+ ${TVM_SOURCE_DIR} /include ${TVM_SOURCE_DIR} /3rdparty/dlpack/include
80
+ ${TVM_SOURCE_DIR} /3rdparty/dmlc-core/include
81
+ ${TVM_SOURCE_DIR} /3rdparty/picojson)
85
82
86
- set (MLC_LLM_COMPILE_DEFS ${MLC_LLM_COMPILE_DEFS} DMLC_USE_LOGGING_LIBRARY=<tvm/runtime/logging.h>)
83
+ set (MLC_LLM_COMPILE_DEFS ${MLC_LLM_COMPILE_DEFS}
84
+ DMLC_USE_LOGGING_LIBRARY=<tvm/runtime/logging.h>)
87
85
set (MLC_LLM_COMPILE_DEFS ${MLC_LLM_COMPILE_DEFS} __STDC_FORMAT_MACROS=1)
88
86
set (MLC_LLM_COMPILE_DEFS ${MLC_LLM_COMPILE_DEFS} PICOJSON_USE_INT64)
89
87
set (MLC_LLM_COMPILE_DEFS ${MLC_LLM_COMPILE_DEFS} XGRAMMAR_ENABLE_LOG_DEBUG=0)
@@ -97,41 +95,46 @@ target_include_directories(mlc_llm_objs PRIVATE ${XGRAMMAR_PATH}/include)
97
95
98
96
add_library (mlc_llm SHARED $<TARGET_OBJECTS:mlc_llm_objs>)
99
97
add_library (mlc_llm_static STATIC $<TARGET_OBJECTS:mlc_llm_objs>)
100
- add_dependencies (mlc_llm_static tokenizers_cpp sentencepiece-static tokenizers_c tvm_runtime)
98
+ add_dependencies (mlc_llm_static tokenizers_cpp sentencepiece-static
99
+ tokenizers_c tvm_runtime)
101
100
set_target_properties (mlc_llm_static PROPERTIES OUTPUT_NAME mlc_llm)
102
101
103
102
target_link_libraries (mlc_llm PUBLIC tvm_runtime)
104
103
target_link_libraries (mlc_llm PRIVATE tokenizers_cpp)
105
104
106
- find_library (
107
- FLASH_ATTN_LIBRARY flash_attn
108
- HINTS ${TVM_SOURCE_DIR} /*/3rdparty/libflash_attn/src
109
- )
105
+ find_library (FLASH_ATTN_LIBRARY flash_attn
106
+ HINTS ${TVM_SOURCE_DIR} /*/3rdparty/libflash_attn/src)
110
107
111
- if (FLASH_ATTN_LIBRARY STREQUAL "FLASH_ATTN_LIBRARY-NOTFOUND" )
112
- message (WARNING "Cannot find libflash_attn. The model must not have been built with --use-flash-attn-mqa option." )
113
- else ()
108
+ if (FLASH_ATTN_LIBRARY STREQUAL "FLASH_ATTN_LIBRARY-NOTFOUND" )
109
+ message (
110
+ WARNING
111
+ "Cannot find libflash_attn. The model must not have been built with --use-flash-attn-mqa option."
112
+ )
113
+ else ()
114
114
target_link_libraries (mlc_llm PUBLIC -Wl,--no -as-needed ${FLASH_ATTN_LIBRARY} )
115
115
endif ()
116
116
117
117
if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
118
- target_compile_definitions (mlc_llm PRIVATE "TVM_LOG_DEBUG" )
119
- target_compile_definitions (mlc_llm_objs PRIVATE "TVM_LOG_DEBUG" )
120
- target_compile_definitions (mlc_llm_static PRIVATE "TVM_LOG_DEBUG" )
118
+ target_compile_definitions (mlc_llm PRIVATE "TVM_LOG_DEBUG" )
119
+ target_compile_definitions (mlc_llm_objs PRIVATE "TVM_LOG_DEBUG" )
120
+ target_compile_definitions (mlc_llm_static PRIVATE "TVM_LOG_DEBUG" )
121
121
endif ()
122
122
123
- if (BUILD_CPP_TEST)
123
+ if (BUILD_CPP_TEST)
124
124
message (STATUS "Building cpp unittests" )
125
125
add_subdirectory (3rdparty/googletest)
126
- file (GLOB_RECURSE MLC_LLM_TEST_SRCS ${PROJECT_SOURCE_DIR} /tests/cpp/*unittest.cc)
126
+ file (GLOB_RECURSE MLC_LLM_TEST_SRCS
127
+ ${PROJECT_SOURCE_DIR} /tests/cpp/*unittest.cc)
127
128
add_executable (mlc_llm_cpp_tests ${MLC_LLM_TEST_SRCS} )
128
129
target_include_directories (mlc_llm_cpp_tests PRIVATE ${MLC_LLM_INCLUDES} )
129
- target_include_directories (mlc_llm_cpp_tests PRIVATE ${PROJECT_SOURCE_DIR} /cpp)
130
- target_include_directories (mlc_llm_cpp_tests PRIVATE ${gtest_SOURCE_DIR} /include ${gtest_SOURCE_DIR} )
130
+ target_include_directories (mlc_llm_cpp_tests
131
+ PRIVATE ${PROJECT_SOURCE_DIR} /cpp)
132
+ target_include_directories (
133
+ mlc_llm_cpp_tests PRIVATE ${gtest_SOURCE_DIR} /include ${gtest_SOURCE_DIR} )
131
134
target_link_libraries (mlc_llm_cpp_tests PUBLIC mlc_llm gtest gtest_main)
132
135
endif (BUILD_CPP_TEST)
133
136
134
- if (CMAKE_SYSTEM_NAME STREQUAL "Android" )
137
+ if (CMAKE_SYSTEM_NAME STREQUAL "Android" )
135
138
target_link_libraries (mlc_llm PRIVATE log )
136
139
target_link_libraries (tokenizers_cpp PRIVATE log )
137
140
endif ()
@@ -140,42 +143,43 @@ add_library(mlc_llm_module SHARED $<TARGET_OBJECTS:mlc_llm_objs>)
140
143
target_link_libraries (mlc_llm_module PUBLIC tvm)
141
144
target_link_libraries (mlc_llm_module PRIVATE tokenizers_cpp)
142
145
143
- set_property (TARGET mlc_llm_module APPEND PROPERTY LINK_OPTIONS "${MLC_VISIBILITY_FLAG} " )
144
- set_property (TARGET mlc_llm APPEND PROPERTY LINK_OPTIONS "${MLC_VISIBILITY_FLAG} " )
146
+ set_property (
147
+ TARGET mlc_llm_module
148
+ APPEND
149
+ PROPERTY LINK_OPTIONS "${MLC_VISIBILITY_FLAG} " )
150
+ set_property (
151
+ TARGET mlc_llm
152
+ APPEND
153
+ PROPERTY LINK_OPTIONS "${MLC_VISIBILITY_FLAG} " )
145
154
146
155
find_program (CARGO_EXECUTABLE cargo)
147
156
148
157
if (NOT CARGO_EXECUTABLE)
149
- message (FATAL_ERROR "Cargo is not found! Please install cargo." )
158
+ message (FATAL_ERROR "Cargo is not found! Please install cargo." )
150
159
endif ()
151
160
152
- # when this option is on,
153
- # we install all static lib deps into lib
154
- if (MLC_LLM_INSTALL_STATIC_LIB)
155
- install (TARGETS
156
- mlc_llm_static
157
- tokenizers_cpp
158
- sentencepiece-static
159
- tvm_runtime
160
- LIBRARY DESTINATION lib${LIB_SUFFIX}
161
- )
161
+ # when this option is on, we install all static lib deps into lib
162
+ if (MLC_LLM_INSTALL_STATIC_LIB)
163
+ install (TARGETS mlc_llm_static tokenizers_cpp sentencepiece-static tvm_runtime
164
+ LIBRARY DESTINATION lib${LIB_SUFFIX} )
162
165
# tokenizers need special handling as it builds from rust
163
166
if (MSVC )
164
167
install (FILES ${CMAKE_CURRENT_BINARY_DIR} /tokenizers/libtokenizers_c.lib
165
- DESTINATION lib${LIB_SUFFIX}
166
- )
168
+ DESTINATION lib${LIB_SUFFIX} )
167
169
else ()
168
170
install (FILES ${CMAKE_CURRENT_BINARY_DIR} /tokenizers/libtokenizers_c.a
169
- DESTINATION lib${LIB_SUFFIX}
170
- )
171
+ DESTINATION lib${LIB_SUFFIX} )
171
172
endif ()
172
173
else ()
173
- install (TARGETS tvm_runtime mlc_llm mlc_llm_module
174
- mlc_llm_static
175
- tokenizers_cpp
176
- sentencepiece-static
177
- RUNTIME_DEPENDENCY_SET tokenizers_c
174
+ install (
175
+ TARGETS tvm_runtime
176
+ mlc_llm
177
+ mlc_llm_module
178
+ mlc_llm_static
179
+ tokenizers_cpp
180
+ sentencepiece-static
181
+ RUNTIME_DEPENDENCY_SET
182
+ tokenizers_c
178
183
RUNTIME DESTINATION bin
179
- LIBRARY DESTINATION lib${LIB_SUFFIX}
180
- )
184
+ LIBRARY DESTINATION lib${LIB_SUFFIX} )
181
185
endif ()
0 commit comments