File: CMakeLists.txt

package info (click to toggle)
libjjml-java 1.1.18-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,084 kB
  • sloc: java: 5,607; cpp: 1,767; sh: 106; makefile: 31
file content (118 lines) | stat: -rw-r--r-- 4,597 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#
# BUILD THIRD PARTY FROM SUBMODULES
#

if(GGML_BACKEND_DL)
set(BUILD_SHARED_LIBS ON)
endif()

set(TARGET_NATIVE_OUTPUT_GGML ${A2_OUTPUT}/lib/${TARGET_NATIVE_CATEGORY_PREFIX}/org.argeo.tp.ggml)
set(TARGET_NATIVE_OUTPUT_LLAMA ${TARGET_NATIVE_OUTPUT_GGML})

# All CPU variants backends take the default output directory
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $<1:${TARGET_NATIVE_OUTPUT_GGML}>)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY $<1:${TARGET_NATIVE_OUTPUT_GGML}>)

if(MINGW)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY $<1:${TARGET_NATIVE_OUTPUT_GGML}>)
elseif(MSVC)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY $<1:${TARGET_NATIVE_OUTPUT_GGML}>)
else()
endif()

if(NOT EXISTS ${GGML_LIBRARY})
	## multiple backends libraries
	if(NOT DEFINED GGML_BACKEND_DL AND NOT DEFINED GGML_NATIVE AND NOT DEFINED GGML_CPU_ALL_VARIANTS)
		set(GGML_BACKEND_DL ON)
		set(GGML_CPU_ALL_VARIANTS ON)
		set(GGML_NATIVE OFF)
		message(STATUS "Enabling GGML_BACKEND_DL with all CPU variants by default")
	endif()

	# build locally
	if(JJML_FORCE_BUILD_LLAMA_GGML)
	add_subdirectory(llama.cpp/ggml)
	else() # default
	add_subdirectory(ggml)
	endif()
	message(STATUS "Build ggml locally from submodule native/tp/ggml") 
endif()


if(NOT EXISTS "${llama_LIBRARY}")
	set(LLAMA_STANDALONE ON)
	add_subdirectory(llama.cpp) # build locally
	if(MINGW)
		set_target_properties(llama PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TARGET_NATIVE_OUTPUT_LLAMA})
		if(LLAMA_BUILD_TOOLS)
			set_target_properties(mtmd PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TARGET_NATIVE_OUTPUT_LLAMA})
		endif()
	elseif(MSVC)
		set_target_properties(llama PROPERTIES RUNTIME_OUTPUT_DIRECTORY $<1:${TARGET_NATIVE_OUTPUT_LLAMA}>)
		if(LLAMA_BUILD_TOOLS)
			set_target_properties(mtmd PROPERTIES RUNTIME_OUTPUT_DIRECTORY $<1:${TARGET_NATIVE_OUTPUT_LLAMA}>)
		endif()
	else()
		set_target_properties(llama PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${TARGET_NATIVE_OUTPUT_LLAMA})
		if(LLAMA_BUILD_TOOLS)
			set_target_properties(mtmd PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TARGET_NATIVE_OUTPUT_LLAMA})
		endif()
	endif()
	if(LLAMA_BUILD_TOOLS)
		set_target_properties(llama-cli PROPERTIES RUNTIME_OUTPUT_DIRECTORY $<1:${TARGET_NATIVE_OUTPUT_LLAMA}>)
		set_target_properties(llama-bench PROPERTIES RUNTIME_OUTPUT_DIRECTORY $<1:${TARGET_NATIVE_OUTPUT_LLAMA}>)
	endif()
	message(STATUS "Build llama.cpp locally from submodule native/tp/llama.cpp") 
endif()

# ggml and llama.cpp versions

# hack to retrieve GGML base version
# see https://stackoverflow.com/a/15519607
file(STRINGS ggml/CMakeLists.txt VersionSetter
     REGEX "^[ ]*set\\(GGML_VERSION_MAJOR")
string(REGEX REPLACE "(^[ ]*set\\(GGML_VERSION_MAJOR[ ]*)([^\\)]*)\\)" "\\2"
       GGML_VERSION_MAJOR ${VersionSetter})
file(STRINGS ggml/CMakeLists.txt VersionSetter
     REGEX "^[ ]*set\\(GGML_VERSION_MINOR")
string(REGEX REPLACE "(^[ ]*set\\(GGML_VERSION_MINOR[ ]*)([^\\)]*)\\)" "\\2"
       GGML_VERSION_MINOR ${VersionSetter})
file(STRINGS ggml/CMakeLists.txt VersionSetter
     REGEX "^[ ]*set\\(GGML_VERSION_PATCH")
string(REGEX REPLACE "(^[ ]*set\\(GGML_VERSION_PATCH[ ]*)([^\\)]*)\\)" "\\2"
       GGML_VERSION_PATCH ${VersionSetter})

if (Git_FOUND)
execute_process(COMMAND "${GIT_EXECUTABLE}" describe --exact-match --tags
 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ggml
 OUTPUT_VARIABLE JJML_GGML_TAG OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT JJML_GGML_TAG)
execute_process(COMMAND "${GIT_EXECUTABLE}" rev-list --count v${GGML_VERSION_MAJOR}.${GGML_VERSION_MINOR}.${GGML_VERSION_PATCH}..HEAD
 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ggml
 OUTPUT_VARIABLE JJML_GGML_COMMIT_COUNT OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
execute_process(COMMAND "${GIT_EXECUTABLE}" rev-list --count HEAD
 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/llama.cpp
 OUTPUT_VARIABLE JJML_LLAMA_COMMIT_COUNT OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()

if(NOT GGML_BUILD_NUMBER)
set(GGML_BUILD_NUMBER ${JJML_GGML_COMMIT_COUNT} CACHE INTERNAL GGML_BUILD_NUMBER)
endif()
if(NOT GGML_VERSION)
if (JJML_GGML_COMMIT_COUNT)
set(GGML_VERSION ${GGML_VERSION_MAJOR}.${GGML_VERSION_MINOR}.${GGML_VERSION_PATCH}.${JJML_GGML_COMMIT_COUNT} CACHE INTERNAL GGML_VERSION)
else()
set(GGML_VERSION ${GGML_VERSION_MAJOR}.${GGML_VERSION_MINOR}.${GGML_VERSION_PATCH} CACHE INTERNAL GGML_VERSION)
endif()
endif()

if(NOT LLAMA_BUILD_NUMBER)
set(LLAMA_BUILD_NUMBER ${JJML_LLAMA_COMMIT_COUNT} CACHE INTERNAL LLAMA_BUILD_NUMBER)
endif()
if(NOT LLAMA_VERSION)
set(LLAMA_VERSION 0.0.${JJML_LLAMA_COMMIT_COUNT} CACHE INTERNAL LLAMA_VERSION)
endif()

file(WRITE versions.mk "GGML_VERSION=${GGML_VERSION}\n")
file(APPEND versions.mk "LLAMA_VERSION=${LLAMA_VERSION}\n")