@@ -267,3 +267,74 @@ if (GGML_STANDALONE)
267
267
install (FILES ${CMAKE_CURRENT_BINARY_DIR} /ggml.pc
268
268
DESTINATION share/pkgconfig )
269
269
endif ()
270
+
271
+ #
272
+ # Create CMake package
273
+ #
274
+
275
+ # Generate version info based on git commit.
276
+
277
+ find_program (GIT_EXE NAMES git git.exe REQUIRED NO_CMAKE_FIND_ROOT_PATH )
278
+ execute_process (COMMAND ${GIT_EXE} rev-list --count HEAD
279
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
280
+ OUTPUT_VARIABLE GGML_BUILD_NUMBER
281
+ OUTPUT_STRIP_TRAILING_WHITESPACE
282
+ )
283
+
284
+ if (GGML_BUILD_NUMBER EQUAL 1 )
285
+ message (WARNING "GGML build version fixed at 1 likely due to a shallow clone." )
286
+ endif ()
287
+
288
+ execute_process (COMMAND ${GIT_EXE} rev-parse --short HEAD
289
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
290
+ OUTPUT_VARIABLE GGML_BUILD_COMMIT
291
+ OUTPUT_STRIP_TRAILING_WHITESPACE
292
+ )
293
+
294
+ # Capture variables prefixed with GGML_.
295
+
296
+ set (variable_set_statements
297
+ "
298
+ ####### Expanded from @GGML_VARIABLES_EXPANED@ by configure_package_config_file() #######
299
+ ####### Any changes to this file will be overwritten by the next CMake run #######
300
+
301
+ " )
302
+
303
+ set (GGML_SHARED_LIB ${BUILD_SHARED_LIBS} )
304
+
305
+ get_cmake_property (all_variables VARIABLES )
306
+ foreach (variable_name IN LISTS all_variables )
307
+ if (variable_name MATCHES "^GGML_" )
308
+ string (REPLACE ";" "\\ ;"
309
+ variable_value "${${variable_name} }" )
310
+
311
+ set (variable_set_statements
312
+ "${variable_set_statements} set(${variable_name} \" ${variable_value} \" )\n " )
313
+ endif ()
314
+ endforeach ()
315
+
316
+ set (GGML_VARIABLES_EXPANDED ${variable_set_statements} )
317
+
318
+ # Create the CMake package and set install location.
319
+
320
+ set (GGML_INSTALL_VERSION 0.0.${GGML_BUILD_NUMBER} )
321
+ set (GGML_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files" )
322
+ set (GGML_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files" )
323
+ set (GGML_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files" )
324
+
325
+ configure_package_config_file (
326
+ ${CMAKE_CURRENT_SOURCE_DIR} /cmake/ggml-config.cmake.in
327
+ ${CMAKE_CURRENT_BINARY_DIR} /ggml-config.cmake
328
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/ggml
329
+ PATH_VARS GGML_INCLUDE_INSTALL_DIR
330
+ GGML_LIB_INSTALL_DIR
331
+ GGML_BIN_INSTALL_DIR )
332
+
333
+ write_basic_package_version_file (
334
+ ${CMAKE_CURRENT_BINARY_DIR} /ggml-version.cmake
335
+ VERSION ${GGML_INSTALL_VERSION}
336
+ COMPATIBILITY SameMajorVersion )
337
+
338
+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /ggml-config.cmake
339
+ ${CMAKE_CURRENT_BINARY_DIR} /ggml-version.cmake
340
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/ggml )
0 commit comments