CMakeLists.txt 1.18 KB
Newer Older
Jeffrey Morgan's avatar
Jeffrey Morgan committed
1
2
3
4
5
6
cmake_minimum_required(VERSION 3.10) 
include(FetchContent)

FetchContent_Declare(
    llama_cpp
    GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git
Jeffrey Morgan's avatar
Jeffrey Morgan committed
7
    GIT_TAG        55dbb91
Jeffrey Morgan's avatar
Jeffrey Morgan committed
8
9
10
11
)

FetchContent_MakeAvailable(llama_cpp)

Jeffrey Morgan's avatar
Jeffrey Morgan committed
12
13
14
15
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
    set(LLAMA_METAL ON)
    add_compile_definitions(GGML_USE_METAL)
endif()
Jeffrey Morgan's avatar
Jeffrey Morgan committed
16

Jeffrey Morgan's avatar
Jeffrey Morgan committed
17
project(binding)
Jeffrey Morgan's avatar
Jeffrey Morgan committed
18

Jeffrey Morgan's avatar
Jeffrey Morgan committed
19
add_library(binding ${CMAKE_CURRENT_SOURCE_DIR}/binding/binding.cpp ${llama_cpp_SOURCE_DIR}/examples/common.cpp)
Jeffrey Morgan's avatar
Jeffrey Morgan committed
20
21
22
23
24
target_compile_features(binding PRIVATE cxx_std_11)
target_include_directories(binding PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(binding PRIVATE ${llama_cpp_SOURCE_DIR})
target_include_directories(binding PRIVATE ${llama_cpp_SOURCE_DIR}/examples)
target_link_libraries(binding llama ggml_static)
Jeffrey Morgan's avatar
Jeffrey Morgan committed
25

26
configure_file(${llama_cpp_SOURCE_DIR}/ggml-metal.metal ${CMAKE_CURRENT_BINARY_DIR}/ggml-metal.metal COPYONLY)
Jeffrey Morgan's avatar
Jeffrey Morgan committed
27
28
add_custom_target(copy_libllama ALL COMMAND ${CMAKE_COMMAND} -E copy_if_different ${llama_cpp_BINARY_DIR}/libllama.a ${CMAKE_CURRENT_BINARY_DIR})
add_custom_target(copy_libggml_static ALL COMMAND ${CMAKE_COMMAND} -E copy_if_different ${llama_cpp_BINARY_DIR}/libggml_static.a ${CMAKE_CURRENT_BINARY_DIR})