Skip to content

Commit 042b51a

Browse files
committed
Applied port patches
1 parent 28b5f19 commit 042b51a

File tree

8 files changed

+109
-62
lines changed

8 files changed

+109
-62
lines changed

CMakeLists.txt

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ endif()
215215
include(GNUInstallDirs)
216216
include(CMakePackageConfigHelpers)
217217

218-
set(LLAMA_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files")
218+
set(LLAMA_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}/llama CACHE PATH "Location of header files")
219219
set(LLAMA_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files")
220220
set(LLAMA_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files")
221221

@@ -227,15 +227,36 @@ set_target_properties(llama
227227
PROPERTIES
228228
PUBLIC_HEADER "${LLAMA_PUBLIC_HEADERS}")
229229

230-
install(TARGETS llama LIBRARY PUBLIC_HEADER)
230+
install(
231+
TARGETS llama
232+
EXPORT llama-targets
233+
PUBLIC_HEADER
234+
DESTINATION ${LLAMA_INCLUDE_INSTALL_DIR})
235+
236+
if (LLAMA_BUILD_COMMON)
237+
238+
install(
239+
TARGETS common build_info
240+
EXPORT llama-targets
241+
PUBLIC_HEADER
242+
DESTINATION ${LLAMA_INCLUDE_INSTALL_DIR}/common)
243+
244+
endif()
245+
246+
install(
247+
EXPORT llama-targets
248+
FILE llama-targets.cmake
249+
NAMESPACE llama::
250+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/llama)
251+
252+
install(
253+
FILES ${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake
254+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/llama)
231255

232256
configure_package_config_file(
233-
${CMAKE_CURRENT_SOURCE_DIR}/cmake/llama-config.cmake.in
234-
${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake
235-
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llama
236-
PATH_VARS LLAMA_INCLUDE_INSTALL_DIR
237-
LLAMA_LIB_INSTALL_DIR
238-
LLAMA_BIN_INSTALL_DIR )
257+
${CMAKE_CURRENT_SOURCE_DIR}/cmake/llama-config.cmake.in
258+
${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake
259+
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/llama)
239260

240261
write_basic_package_version_file(
241262
${CMAKE_CURRENT_BINARY_DIR}/llama-version.cmake
@@ -244,7 +265,7 @@ write_basic_package_version_file(
244265

245266
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake
246267
${CMAKE_CURRENT_BINARY_DIR}/llama-version.cmake
247-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llama)
268+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/llama)
248269

249270
install(
250271
FILES convert_hf_to_gguf.py

cmake/llama-config.cmake.in

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,9 @@ set(LLAMA_SHARED_LIB @BUILD_SHARED_LIBS@)
55

66
@PACKAGE_INIT@
77

8-
set_and_check(LLAMA_INCLUDE_DIR "@PACKAGE_LLAMA_INCLUDE_INSTALL_DIR@")
9-
set_and_check(LLAMA_LIB_DIR "@PACKAGE_LLAMA_LIB_INSTALL_DIR@")
10-
set_and_check(LLAMA_BIN_DIR "@PACKAGE_LLAMA_BIN_INSTALL_DIR@")
8+
include(CMakeFindDependencyMacro)
9+
find_dependency(ggml CONFIG REQUIRED)
1110

12-
find_package(ggml REQUIRED HINTS ${LLAMA_LIB_DIR}/cmake)
11+
include("${CMAKE_CURRENT_LIST_DIR}/llama-targets.cmake")
1312

14-
find_library(llama_LIBRARY llama
15-
REQUIRED
16-
HINTS ${LLAMA_LIB_DIR}
17-
NO_CMAKE_FIND_ROOT_PATH
18-
)
19-
20-
add_library(llama UNKNOWN IMPORTED)
21-
set_target_properties(llama
22-
PROPERTIES
23-
INTERFACE_INCLUDE_DIRECTORIES "${LLAMA_INCLUDE_DIR}"
24-
INTERFACE_LINK_LIBRARIES "ggml::ggml;ggml::ggml-base;"
25-
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
26-
IMPORTED_LOCATION "${llama_LIBRARY}"
27-
INTERFACE_COMPILE_FEATURES c_std_90
28-
POSITION_INDEPENDENT_CODE ON)
29-
30-
check_required_components(Llama)
13+
check_required_components(llama)

common/CMakeLists.txt

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,34 +44,43 @@ endif()
4444

4545
set(TARGET common)
4646

47+
set(${TARGET}_HEADERS
48+
arg.h
49+
base64.hpp
50+
chat-parser.h
51+
chat.h
52+
common.h
53+
console.h
54+
json-partial.h
55+
json-schema-to-grammar.h
56+
log.h
57+
ngram-cache.h
58+
regex-partial.h
59+
sampling.h
60+
speculative.h
61+
)
62+
63+
list(TRANSFORM ${TARGET}_HEADERS PREPEND ${CMAKE_SOURCE_DIR}/common/)
64+
4765
add_library(${TARGET} STATIC
4866
arg.cpp
49-
arg.h
50-
base64.hpp
5167
chat-parser.cpp
52-
chat-parser.h
5368
chat.cpp
54-
chat.h
5569
common.cpp
56-
common.h
5770
console.cpp
58-
console.h
5971
json-partial.cpp
60-
json-partial.h
6172
json-schema-to-grammar.cpp
6273
llguidance.cpp
6374
log.cpp
64-
log.h
6575
ngram-cache.cpp
66-
ngram-cache.h
6776
regex-partial.cpp
68-
regex-partial.h
6977
sampling.cpp
70-
sampling.h
7178
speculative.cpp
72-
speculative.h
79+
${${TARGET}_HEADERS}
7380
)
7481

82+
set_target_properties(${TARGET} PROPERTIES PUBLIC_HEADER "${${TARGET}_HEADERS}")
83+
7584
if (BUILD_SHARED_LIBS)
7685
set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON)
7786
endif()
@@ -133,7 +142,12 @@ if (LLAMA_LLGUIDANCE)
133142
set(LLAMA_COMMON_EXTRA_LIBS ${LLAMA_COMMON_EXTRA_LIBS} llguidance ${LLGUIDANCE_PLATFORM_LIBS})
134143
endif ()
135144

136-
target_include_directories(${TARGET} PUBLIC . ../vendor)
145+
target_include_directories(
146+
${TARGET}
147+
PUBLIC
148+
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/common$<SEMICOLON>${CMAKE_SOURCE_DIR}/vendor>
149+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
150+
137151
target_compile_features (${TARGET} PUBLIC cxx_std_17)
138152
target_link_libraries (${TARGET} PRIVATE ${LLAMA_COMMON_EXTRA_LIBS} PUBLIC llama Threads::Threads)
139153

ggml/CMakeLists.txt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,15 @@ set_target_properties(ggml PROPERTIES PUBLIC_HEADER "${GGML_PUBLIC_HEADERS}")
285285
#if (GGML_METAL)
286286
# set_target_properties(ggml PROPERTIES RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/src/ggml-metal.metal")
287287
#endif()
288-
install(TARGETS ggml LIBRARY PUBLIC_HEADER)
289-
install(TARGETS ggml-base LIBRARY)
288+
install(
289+
TARGETS ggml ggml-base
290+
EXPORT ggml-targets)
291+
292+
install(
293+
EXPORT ggml-targets
294+
FILE ggml-targets.cmake
295+
NAMESPACE ggml::
296+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ggml)
290297

291298
if (GGML_STANDALONE)
292299
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ggml.pc.in
@@ -357,7 +364,7 @@ set(GGML_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of
357364
configure_package_config_file(
358365
${CMAKE_CURRENT_SOURCE_DIR}/cmake/ggml-config.cmake.in
359366
${CMAKE_CURRENT_BINARY_DIR}/ggml-config.cmake
360-
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ggml
367+
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ggml
361368
PATH_VARS GGML_INCLUDE_INSTALL_DIR
362369
GGML_LIB_INSTALL_DIR
363370
GGML_BIN_INSTALL_DIR)
@@ -376,8 +383,7 @@ message(STATUS "ggml commit: ${GGML_BUILD_COMMIT}")
376383

377384
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ggml-config.cmake
378385
${CMAKE_CURRENT_BINARY_DIR}/ggml-version.cmake
379-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ggml)
380-
386+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ggml)
381387
if (MSVC)
382388
set(MSVC_WARNING_FLAGS
383389
/wd4005 # Macro redefinition

ggml/cmake/ggml-config.cmake.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,13 @@ if (NOT GGML_SHARED_LIB)
9595
list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
9696
endif()
9797
endif()
98+
99+
if (GGML_OPENCL)
100+
find_package(PkgConfig REQUIRED)
101+
pkg_check_modules(OpenCL REQUIRED IMPORTED_TARGET OpenCL)
102+
list(APPEND GGML_OPENCL_INTERFACE_LINK_LIBRARIES PkgConfig::OpenCL)
103+
endif()
104+
98105
endif()
99106

100107
set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@")

ggml/src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ function(ggml_add_backend_library backend)
242242
else()
243243
add_library(${backend} ${ARGN})
244244
target_link_libraries(ggml PUBLIC ${backend})
245-
install(TARGETS ${backend} LIBRARY)
245+
install(TARGETS ${backend} EXPORT ggml-targets)
246246
endif()
247247

248248
target_link_libraries(${backend} PRIVATE ggml-base)

ggml/src/ggml-vulkan/CMakeLists.txt

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ cmake_policy(SET CMP0114 NEW)
33

44
find_package(Vulkan COMPONENTS glslc REQUIRED)
55

6+
# Add options to disable cooperative matrix support
7+
option(GGML_VULKAN_DISABLE_COOPMAT "Disable VK_KHR_cooperative_matrix support" OFF)
8+
option(GGML_VULKAN_DISABLE_COOPMAT2 "Disable VK_NV_cooperative_matrix2 support" OFF)
9+
610
function(detect_host_compiler)
711
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
812
find_program(HOST_C_COMPILER NAMES cl gcc clang NO_CMAKE_FIND_ROOT_PATH)
@@ -52,17 +56,25 @@ if (Vulkan_FOUND)
5256
set(VULKAN_SHADER_GEN_CMAKE_ARGS "")
5357

5458
# Test all shader extensions
55-
test_shader_extension_support(
56-
"GL_KHR_cooperative_matrix"
57-
"${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat_support.comp"
58-
"GGML_VULKAN_COOPMAT_GLSLC_SUPPORT"
59-
)
59+
if (NOT GGML_VULKAN_DISABLE_COOPMAT)
60+
test_shader_extension_support(
61+
"GL_KHR_cooperative_matrix"
62+
"${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat_support.comp"
63+
"GGML_VULKAN_COOPMAT_GLSLC_SUPPORT"
64+
)
65+
else()
66+
message(STATUS "VK_KHR_cooperative_matrix support disabled by GGML_VULKAN_DISABLE_COOPMAT")
67+
endif()
6068

61-
test_shader_extension_support(
62-
"GL_NV_cooperative_matrix2"
63-
"${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat2_support.comp"
64-
"GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT"
65-
)
69+
if (NOT GGML_VULKAN_DISABLE_COOPMAT2)
70+
test_shader_extension_support(
71+
"GL_NV_cooperative_matrix2"
72+
"${CMAKE_CURRENT_SOURCE_DIR}/vulkan-shaders/test_coopmat2_support.comp"
73+
"GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT"
74+
)
75+
else()
76+
message(STATUS "VK_NV_cooperative_matrix2 support disabled by GGML_VULKAN_DISABLE_COOPMAT2")
77+
endif()
6678

6779
test_shader_extension_support(
6880
"GL_EXT_integer_dot_product"
@@ -78,6 +90,7 @@ if (Vulkan_FOUND)
7890

7991
target_link_libraries(ggml-vulkan PRIVATE Vulkan::Vulkan)
8092
target_include_directories(ggml-vulkan PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
93+
target_include_directories(ggml-vulkan PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/vulkan_cpp_wrapper/include")
8194

8295
# Workaround to the "can't dereference invalidated vector iterator" bug in clang-cl debug build
8396
# Posssibly relevant: https://stackoverflow.com/questions/74748276/visual-studio-no-displays-the-correct-length-of-stdvector

src/CMakeLists.txt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ llama_add_compile_flags()
77
# llama
88

99
add_library(llama
10-
../include/llama.h
1110
llama.cpp
1211
llama-adapter.cpp
1312
llama-arch.cpp
@@ -34,11 +33,15 @@ add_library(llama
3433
llama-vocab.cpp
3534
unicode-data.cpp
3635
unicode.cpp
37-
unicode.h
3836
)
3937

4038
target_include_directories(llama PRIVATE .)
41-
target_include_directories(llama PUBLIC ../include)
39+
target_include_directories(
40+
llama
41+
PUBLIC
42+
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
43+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/llama>)
44+
4245
target_compile_features (llama PRIVATE cxx_std_17) # don't bump
4346

4447
target_link_libraries(llama PUBLIC ggml)

0 commit comments

Comments
 (0)