@@ -7,56 +7,57 @@ set(CMAKE_C_STANDARD 11)
7
7
set (THREADS_PREFER_PTHREAD_FLAG ON )
8
8
find_package (Threads REQUIRED )
9
9
10
- if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE )
10
+ if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE )
11
11
set (CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE )
12
12
set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo" )
13
13
endif ()
14
14
15
- option (LLAMA_ALL_WARNINGS "llama: enable all compiler warnings" ON )
16
- option (LLAMA_ALL_WARNINGS_3RD_PARTY "llama: enable all compiler warnings in 3rd party libs" OFF )
15
+ option (LLAMA_ALL_WARNINGS "llama: enable all compiler warnings" ON )
16
+ option (LLAMA_ALL_WARNINGS_3RD_PARTY "llama: enable all compiler warnings in 3rd party libs" OFF )
17
17
18
- option (LLAMA_SANITIZE_THREAD "llama: enable thread sanitizer" OFF )
19
- option (LLAMA_SANITIZE_ADDRESS "llama: enable address sanitizer" OFF )
20
- option (LLAMA_SANITIZE_UNDEFINED "llama: enable undefined sanitizer" OFF )
18
+ option (LLAMA_SANITIZE_THREAD "llama: enable thread sanitizer" OFF )
19
+ option (LLAMA_SANITIZE_ADDRESS "llama: enable address sanitizer" OFF )
20
+ option (LLAMA_SANITIZE_UNDEFINED "llama: enable undefined sanitizer" OFF )
21
21
22
- if (APPLE )
23
- option (LLAMA_NO_ACCELERATE "llama: disable Accelerate framework" OFF )
24
- option (LLAMA_NO_AVX "llama: disable AVX" OFF )
25
- option (LLAMA_NO_AVX2 "llama: disable AVX2" OFF )
26
- option (LLAMA_NO_FMA "llama: disable FMA" OFF )
22
+ if (APPLE )
23
+ option (LLAMA_NO_ACCELERATE "llama: disable Accelerate framework" OFF )
24
+ option (LLAMA_NO_AVX "llama: disable AVX" OFF )
25
+ option (LLAMA_NO_AVX2 "llama: disable AVX2" OFF )
26
+ option (LLAMA_NO_FMA "llama: disable FMA" OFF )
27
27
endif ()
28
28
29
- if (NOT MSVC )
30
- if (LLAMA_SANITIZE_THREAD )
31
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread" )
29
+ if (NOT MSVC )
30
+ if (LLAMA_SANITIZE_THREAD )
31
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread" )
32
32
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread" )
33
33
endif ()
34
34
35
- if (LLAMA_SANITIZE_ADDRESS )
35
+ if (LLAMA_SANITIZE_ADDRESS )
36
36
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer" )
37
37
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer" )
38
38
endif ()
39
39
40
- if (LLAMA_SANITIZE_UNDEFINED )
40
+ if (LLAMA_SANITIZE_UNDEFINED )
41
41
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined" )
42
42
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined" )
43
43
endif ()
44
44
endif ()
45
45
46
- if (APPLE AND NOT LLAMA_NO_ACCELERATE )
46
+ if (APPLE AND NOT LLAMA_NO_ACCELERATE )
47
47
find_library (ACCELERATE_FRAMEWORK Accelerate )
48
- if (ACCELERATE_FRAMEWORK )
48
+
49
+ if (ACCELERATE_FRAMEWORK )
49
50
message (STATUS "Accelerate framework found" )
50
51
51
- set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${ACCELERATE_FRAMEWORK} )
52
+ set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${ACCELERATE_FRAMEWORK} )
52
53
set (LLAMA_EXTRA_FLAGS ${LLAMA_EXTRA_FLAGS} -DGGML_USE_ACCELERATE )
53
54
else ()
54
55
message (WARNING "Accelerate framework not found" )
55
56
endif ()
56
57
endif ()
57
58
58
- if (LLAMA_ALL_WARNINGS )
59
- if (NOT MSVC )
59
+ if (LLAMA_ALL_WARNINGS )
60
+ if (NOT MSVC )
60
61
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
61
62
-Wall \
62
63
-Wextra \
@@ -80,34 +81,38 @@ endif()
80
81
81
82
message (STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR} " )
82
83
83
- if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" )
84
+ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" )
84
85
message (STATUS "ARM detected" )
85
86
else ()
86
87
message (STATUS "x86 detected" )
87
- if (MSVC )
88
+
89
+ if (MSVC )
88
90
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2" )
89
91
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /arch:AVX2" )
90
92
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX2" )
91
93
else ()
92
94
if (NOT LLAMA_NO_AVX )
93
95
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx" )
94
96
endif ()
97
+
95
98
if (NOT LLAMA_NO_AVX2 )
96
99
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx2" )
97
100
endif ()
101
+
98
102
if (NOT LLAMA_NO_FMA )
99
103
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfma" )
100
104
endif ()
105
+
101
106
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mf16c" )
102
107
endif ()
103
108
endif ()
104
109
105
110
# if (LLAMA_PERF)
106
- # set(LLAMA_EXTRA_FLAGS ${LLAMA_EXTRA_FLAGS} -DGGML_PERF)
111
+ # set(LLAMA_EXTRA_FLAGS ${LLAMA_EXTRA_FLAGS} -DGGML_PERF)
107
112
# endif()
108
-
109
113
add_executable (llama
110
114
main.cpp
115
+ llama.cpp
111
116
utils.cpp
112
117
utils.h )
113
118
@@ -116,6 +121,9 @@ add_executable(quantize
116
121
utils.cpp
117
122
utils.h )
118
123
124
+ add_library (llamalib
125
+ llama.cpp )
126
+
119
127
add_library (ggml
120
128
ggml.c
121
129
ggml.h )
@@ -125,7 +133,10 @@ target_compile_definitions(llama PUBLIC ${LLAMA_EXTRA_FLAGS})
125
133
target_compile_definitions (quantize PUBLIC ${LLAMA_EXTRA_FLAGS} )
126
134
127
135
target_link_libraries (ggml PRIVATE ${LLAMA_EXTRA_LIBS} )
136
+ target_link_libraries (llamalib PRIVATE ggml ${LLAMA_EXTRA_LIBS} )
137
+
128
138
target_include_directories (ggml PUBLIC . )
129
- target_link_libraries (quantize PRIVATE ggml )
130
- target_link_libraries (llama PRIVATE ggml )
139
+
140
+ target_link_libraries (quantize PRIVATE ggml llamalib )
141
+ target_link_libraries (llama PRIVATE ggml llamalib )
131
142
target_link_libraries (ggml PRIVATE Threads::Threads )
0 commit comments