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