Skip to content

Commit ab269c4

Browse files
authored
Merge pull request #4 from jpgaribotti/QVAC-4552
QVAC-4552: Sync port with upstream version b5932
2 parents 4fb2556 + ce64880 commit ab269c4

File tree

9 files changed

+125
-65
lines changed

9 files changed

+125
-65
lines changed

CMakeLists.txt

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ endif()
213213
include(GNUInstallDirs)
214214
include(CMakePackageConfigHelpers)
215215

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

@@ -225,15 +225,46 @@ set_target_properties(llama
225225
PROPERTIES
226226
PUBLIC_HEADER "${LLAMA_PUBLIC_HEADERS}")
227227

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

230264
configure_package_config_file(
231-
${CMAKE_CURRENT_SOURCE_DIR}/cmake/llama-config.cmake.in
232-
${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake
233-
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llama
234-
PATH_VARS LLAMA_INCLUDE_INSTALL_DIR
235-
LLAMA_LIB_INSTALL_DIR
236-
LLAMA_BIN_INSTALL_DIR )
265+
${CMAKE_CURRENT_SOURCE_DIR}/cmake/llama-config.cmake.in
266+
${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake
267+
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/llama)
237268

238269
write_basic_package_version_file(
239270
${CMAKE_CURRENT_BINARY_DIR}/llama-version.cmake
@@ -242,7 +273,7 @@ write_basic_package_version_file(
242273

243274
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake
244275
${CMAKE_CURRENT_BINARY_DIR}/llama-version.cmake
245-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llama)
276+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/llama)
246277

247278
install(
248279
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
@@ -279,8 +279,15 @@ set_target_properties(ggml PROPERTIES PUBLIC_HEADER "${GGML_PUBLIC_HEADERS}")
279279
#if (GGML_METAL)
280280
# set_target_properties(ggml PROPERTIES RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/src/ggml-metal.metal")
281281
#endif()
282-
install(TARGETS ggml LIBRARY PUBLIC_HEADER)
283-
install(TARGETS ggml-base LIBRARY)
282+
install(
283+
TARGETS ggml ggml-base
284+
EXPORT ggml-targets)
285+
286+
install(
287+
EXPORT ggml-targets
288+
FILE ggml-targets.cmake
289+
NAMESPACE ggml::
290+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ggml)
284291

285292
if (GGML_STANDALONE)
286293
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ggml.pc.in
@@ -351,7 +358,7 @@ set(GGML_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of
351358
configure_package_config_file(
352359
${CMAKE_CURRENT_SOURCE_DIR}/cmake/ggml-config.cmake.in
353360
${CMAKE_CURRENT_BINARY_DIR}/ggml-config.cmake
354-
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ggml
361+
INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ggml
355362
PATH_VARS GGML_INCLUDE_INSTALL_DIR
356363
GGML_LIB_INSTALL_DIR
357364
GGML_BIN_INSTALL_DIR)
@@ -370,8 +377,7 @@ message(STATUS "ggml commit: ${GGML_BUILD_COMMIT}")
370377

371378
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ggml-config.cmake
372379
${CMAKE_CURRENT_BINARY_DIR}/ggml-version.cmake
373-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ggml)
374-
380+
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ggml)
375381
if (MSVC)
376382
set(MSVC_WARNING_FLAGS
377383
/wd4005 # Macro redefinition

ggml/cmake/ggml-config.cmake.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,13 @@ if (NOT GGML_SHARED_LIB)
8787
list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
8888
endif()
8989
endif()
90+
91+
if (GGML_OPENCL)
92+
find_package(PkgConfig REQUIRED)
93+
pkg_check_modules(OpenCL REQUIRED IMPORTED_TARGET OpenCL)
94+
list(APPEND GGML_OPENCL_INTERFACE_LINK_LIBRARIES PkgConfig::OpenCL)
95+
endif()
96+
9097
endif()
9198

9299
set(_ggml_all_targets "")

ggml/src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ function(ggml_add_backend_library backend)
231231
else()
232232
add_library(${backend} ${ARGN})
233233
target_link_libraries(ggml PUBLIC ${backend})
234-
install(TARGETS ${backend} LIBRARY)
234+
install(TARGETS ${backend} EXPORT ggml-targets)
235235
endif()
236236

237237
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)

tools/mtmd/CMakeLists.txt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@ add_library(mtmd
1515

1616
target_link_libraries (mtmd PUBLIC ggml llama)
1717
target_link_libraries (mtmd PRIVATE Threads::Threads)
18-
target_include_directories(mtmd PUBLIC .)
18+
target_include_directories(
19+
mtmd
20+
PUBLIC
21+
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
22+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
23+
)
1924
target_include_directories(mtmd PRIVATE ../..)
2025
target_include_directories(mtmd PRIVATE ../../vendor)
2126
target_compile_features (mtmd PRIVATE cxx_std_17)
@@ -35,8 +40,6 @@ set_target_properties(mtmd
3540
PROPERTIES
3641
PUBLIC_HEADER "${MTMD_PUBLIC_HEADERS}")
3742

38-
install(TARGETS mtmd LIBRARY PUBLIC_HEADER)
39-
4043
if (NOT MSVC)
4144
# for stb_image.h and miniaudio.h
4245
target_compile_options(mtmd PRIVATE -Wno-cast-qual)

0 commit comments

Comments
 (0)