darwin.go 531 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package main
  2. import (
  3. "embed"
  4. "io"
  5. "os"
  6. "path/filepath"
  7. )
  8. //go:embed ggml-metal.metal
  9. var fs embed.FS
  10. func init() {
  11. exec, err := os.Executable()
  12. if err != nil {
  13. return
  14. }
  15. exec, err = filepath.EvalSymlinks(exec)
  16. if err != nil {
  17. return
  18. }
  19. dst, err := os.Create(filepath.Join(filepath.Dir(exec), "ggml-metal.metal"))
  20. if err != nil {
  21. return
  22. }
  23. defer dst.Close()
  24. src, err := fs.Open("ggml-metal.metal")
  25. if err != nil {
  26. return
  27. }
  28. defer src.Close()
  29. if _, err := io.Copy(dst, src); err != nil {
  30. return
  31. }
  32. }