gen_darwin.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/bin/bash
  2. # This script is intended to run inside the go generate
  3. # working directory must be ./llm/generate/
  4. # TODO - add hardening to detect missing tools (cmake, etc.)
  5. set -ex
  6. set -o pipefail
  7. echo "Starting darwin generate script"
  8. source $(dirname $0)/gen_common.sh
  9. init_vars
  10. CMAKE_DEFS="-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_SYSTEM_NAME=Darwin -DLLAMA_ACCELERATE=on ${CMAKE_DEFS}"
  11. BUILD_DIR="${LLAMACPP_DIR}/build/darwin/metal"
  12. case "${GOARCH}" in
  13. "amd64")
  14. CMAKE_DEFS="-DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL=off -DLLAMA_NATIVE=off -DLLAMA_AVX=on -DLLAMA_AVX2=off -DLLAMA_AVX512=off -DLLAMA_FMA=off -DLLAMA_F16C=off ${CMAKE_DEFS}"
  15. ;;
  16. "arm64")
  17. CMAKE_DEFS="-DCMAKE_SYSTEM_PROCESSOR=arm64 -DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_METAL=on ${CMAKE_DEFS}"
  18. ;;
  19. *)
  20. echo "GOARCH must be set"
  21. echo "this script is meant to be run from within go generate"
  22. exit 1
  23. ;;
  24. esac
  25. git_module_setup
  26. apply_patches
  27. build
  28. install
  29. gcc -fPIC -g -shared -o ${BUILD_DIR}/lib/libext_server.so \
  30. -Wl,-force_load ${BUILD_DIR}/lib/libext_server.a \
  31. ${BUILD_DIR}/lib/libcommon.a \
  32. ${BUILD_DIR}/lib/libllama.a \
  33. ${BUILD_DIR}/lib/libggml_static.a \
  34. -lpthread -ldl -lm -lc++ \
  35. -framework Accelerate \
  36. -framework Foundation \
  37. -framework Metal \
  38. -framework MetalKit \
  39. -framework MetalPerformanceShaders
  40. cleanup