CMakeLists.txt 1014 Bytes
Newer Older
Michael Yang's avatar
Michael Yang committed
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
cmake_minimum_required(VERSION 3.12)
project(ollama)

include(FetchContent)

FetchContent_Declare(
    "llama.cpp"
    GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git
    GIT_TAG        55dbb91
)

FetchContent_MakeAvailable(llama.cpp)

add_custom_target(
    ollama
    ALL
    DEPENDS
        ${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal
    COMMAND
        ${CMAKE_COMMAND} -E
        env
        CGO_CPPFLAGS='-I${llama.cpp_SOURCE_DIR}'
        CGO_LDFLAGS='-L${llama.cpp_BINARY_DIR} -lllama -lggml_static -lm -lstdc++'
        CGO_CXXFLAGS='-std=c++11'
        --
        go build .
    WORKING_DIRECTORY
        ${CMAKE_CURRENT_SOURCE_DIR}
)

add_custom_command(
    OUTPUT
        ${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal
    COMMAND
        ${CMAKE_COMMAND} -E
        copy_if_different
        ${llama.cpp_SOURCE_DIR}/ggml-metal.metal
        ${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal
    WORKING_DIRECTORY
        ${CMAKE_CURRENT_SOURCE_DIR}
)

add_dependencies(ollama llama ggml_static)