gen_darwin.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. ARCH="x86_64"
  16. ;;
  17. "arm64")
  18. CMAKE_DEFS="-DCMAKE_SYSTEM_PROCESSOR=arm64 -DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_METAL=on ${CMAKE_DEFS}"
  19. ARCH="arm64"
  20. ;;
  21. *)
  22. echo "GOARCH must be set"
  23. echo "this script is meant to be run from within go generate"
  24. exit 1
  25. ;;
  26. esac
  27. git_module_setup
  28. apply_patches
  29. build
  30. install
  31. gcc -fPIC -g -shared -o ${BUILD_DIR}/lib/libext_server.so \
  32. -arch ${ARCH} \
  33. -Wl,-force_load ${BUILD_DIR}/lib/libext_server.a \
  34. ${BUILD_DIR}/lib/libcommon.a \
  35. ${BUILD_DIR}/lib/libllama.a \
  36. ${BUILD_DIR}/lib/libggml_static.a \
  37. -lpthread -ldl -lm -lc++ \
  38. -framework Accelerate \
  39. -framework Foundation \
  40. -framework Metal \
  41. -framework MetalKit \
  42. -framework MetalPerformanceShaders
  43. cleanup