11include (CheckCXXCompilerFlag)
22
3- unset (GGML_CDEF_PUBLIC)
4-
53add_compile_definitions (GGML_SCHED_MAX_COPIES=${GGML_SCHED_MAX_COPIES} )
64
75# enable libstdc++ assertions for debug builds
@@ -26,9 +24,6 @@ if (NOT MSVC)
2624 endif ()
2725endif ()
2826
29- unset (GGML_EXTRA_LIBS_PRIVATE)
30- unset (GGML_EXTRA_LIBS_PUBLIC)
31-
3227function (get_flags CCID CCVER)
3328 set (C_FLAGS "" )
3429 set (CXX_FLAGS "" )
@@ -222,6 +217,8 @@ add_library(ggml-base
222217 ggml-aarch64.c
223218 ggml-aarch64.h)
224219
220+ target_include_directories (ggml-base PRIVATE .)
221+
225222add_library (ggml
226223 ggml-backend-reg.cpp)
227224
@@ -232,6 +229,9 @@ function(ggml_add_backend backend)
232229 if (${backend_id} )
233230 string (TOLOWER "ggml-${backend} " backend_target)
234231 add_subdirectory (${backend_target} )
232+ # check again in case the backend disabled itself
233+ # note that this should NOT be the normal behavior, in case of errors the backend should fail the build
234+ # however, currently it is necessary for AMX, since it is enabled by default on llama.cpp
235235 if (${backend_id} )
236236 message (STATUS "Including ${backend} backend" )
237237 if (${BUILD_SHARED_LIBS} )
@@ -257,40 +257,28 @@ ggml_add_backend(RPC)
257257ggml_add_backend(SYCL)
258258ggml_add_backend(Vulkan)
259259
260- target_compile_definitions (ggml-base PUBLIC ${GGML_CDEF_PUBLIC} )
261- target_include_directories (ggml-base PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /../include > $<INSTALL_INTERFACE:include >)
262- target_compile_features (ggml-base PRIVATE c_std_11) # don't bump
260+ foreach (target ggml-base ggml)
261+ target_include_directories (${target} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /../include > $<INSTALL_INTERFACE:include >)
262+ target_compile_features (${target} PRIVATE c_std_11) # don't bump
263+ endforeach ()
263264
264- target_compile_definitions (ggml PUBLIC ${GGML_CDEF_PUBLIC} )
265- target_include_directories (ggml PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /../include > $<INSTALL_INTERFACE:include >)
266- target_compile_features (ggml PRIVATE c_std_11) # don't bump
267-
268- # this probably should be removed
269- target_include_directories (ggml-base PRIVATE . ${GGML_EXTRA_INCLUDES} )
270- target_link_directories (ggml-base PRIVATE ${GGML_EXTRA_LIBDIRS} )
271-
272- list (APPEND GGML_EXTRA_LIBS_PRIVATE Threads::Threads)
265+ target_link_libraries (ggml-base PRIVATE Threads::Threads)
273266
274267find_library (MATH_LIBRARY m)
275268if (MATH_LIBRARY)
276269 if (NOT WIN32 OR NOT DEFINED ENV{ONEAPI_ROOT})
277- list ( APPEND GGML_EXTRA_LIBS_PRIVATE m)
270+ target_link_libraries (ggml-base PRIVATE m)
278271 endif ()
279272endif ()
280273
281274if (CMAKE_SYSTEM_NAME MATCHES "Android" )
282- list ( APPEND GGML_EXTRA_LIBS_PRIVATE dl) # Must be linked explicitly
275+ target_link_libraries (ggml-base PRIVATE dl)
283276endif ()
284277
285- list (REMOVE_DUPLICATES GGML_EXTRA_LIBS_PRIVATE)
286- list (REMOVE_DUPLICATES GGML_EXTRA_LIBS_PUBLIC)
287- target_link_libraries (ggml PRIVATE ${GGML_EXTRA_LIBS_PRIVATE} PUBLIC ${GGML_EXTRA_LIBS_PUBLIC} )
288-
289278if (BUILD_SHARED_LIBS )
290- set_target_properties (ggml-base PROPERTIES POSITION_INDEPENDENT_CODE ON )
291- set_target_properties (ggml PROPERTIES POSITION_INDEPENDENT_CODE ON )
292- target_compile_definitions (ggml-base PRIVATE GGML_BUILD)
293- target_compile_definitions (ggml PRIVATE GGML_BUILD)
294- target_compile_definitions (ggml-base PUBLIC GGML_SHARED)
295- target_compile_definitions (ggml PUBLIC GGML_SHARED)
279+ foreach (target ggml-base ggml)
280+ set_target_properties (${target} PROPERTIES POSITION_INDEPENDENT_CODE ON )
281+ target_compile_definitions (${target} PRIVATE GGML_BUILD)
282+ target_compile_definitions (${target} PUBLIC GGML_SHARED)
283+ endforeach ()
296284endif ()
0 commit comments