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)))) }