CMakeLists.txt 1014 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. cmake_minimum_required(VERSION 3.12)
  2. project(ollama)
  3. include(FetchContent)
  4. FetchContent_Declare(
  5. "llama.cpp"
  6. GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git
  7. GIT_TAG 55dbb91
  8. )
  9. FetchContent_MakeAvailable(llama.cpp)
  10. add_custom_target(
  11. ollama
  12. ALL
  13. DEPENDS
  14. ${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal
  15. COMMAND
  16. ${CMAKE_COMMAND} -E
  17. env
  18. CGO_CPPFLAGS='-I${llama.cpp_SOURCE_DIR}'
  19. CGO_LDFLAGS='-L${llama.cpp_BINARY_DIR} -lllama -lggml_static -lm -lstdc++'
  20. CGO_CXXFLAGS='-std=c++11'
  21. --
  22. go build .
  23. WORKING_DIRECTORY
  24. ${CMAKE_CURRENT_SOURCE_DIR}
  25. )
  26. add_custom_command(
  27. OUTPUT
  28. ${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal
  29. COMMAND
  30. ${CMAKE_COMMAND} -E
  31. copy_if_different
  32. ${llama.cpp_SOURCE_DIR}/ggml-metal.metal
  33. ${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal
  34. WORKING_DIRECTORY
  35. ${CMAKE_CURRENT_SOURCE_DIR}
  36. )
  37. add_dependencies(ollama llama ggml_static)