diff --git a/llama/llama.go b/llama/llama.go index 88323ab0..90a51328 100644 --- a/llama/llama.go +++ b/llama/llama.go @@ -37,8 +37,6 @@ package llama #include "sampling_ext.h" bool llamaProgressCallback(float progress, void *user_data); -extern const char *ggml_metallib_start; -extern const char *ggml_metallib_end; */ import "C" import ( @@ -51,19 +49,6 @@ import ( "unsafe" ) -//go:embed ggml-common.h -var ggmlCommon string - -//go:embed ggml-metal.metal -var ggmlMetal string - -func init() { - metal := strings.ReplaceAll(ggmlMetal, `#include "ggml-common.h"`, ggmlCommon) - cMetal := C.CString(metal) - C.ggml_metallib_start = cMetal - C.ggml_metallib_end = (*C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(cMetal)) + uintptr(len(metal)))) -} - func BackendInit() { C.llama_backend_init() } diff --git a/llama/metal.c b/llama/llama_darwin.c similarity index 100% rename from llama/metal.c rename to llama/llama_darwin.c diff --git a/llama/llama_darwin.go b/llama/llama_darwin.go new file mode 100644 index 00000000..149d364a --- /dev/null +++ b/llama/llama_darwin.go @@ -0,0 +1,23 @@ +package llama + +// extern const char *ggml_metallib_start; +// extern const char *ggml_metallib_end; +import "C" +import ( + _ "embed" + "strings" + "unsafe" +) + +//go:embed ggml-common.h +var ggmlCommon string + +//go:embed ggml-metal.metal +var ggmlMetal string + +func init() { + metal := strings.ReplaceAll(ggmlMetal, `#include "ggml-common.h"`, ggmlCommon) + cMetal := C.CString(metal) + C.ggml_metallib_start = cMetal + C.ggml_metallib_end = (*C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(cMetal)) + uintptr(len(metal)))) +}