From cbd284d258899ea6e3ebc8496d8ccdae7f7a430b Mon Sep 17 00:00:00 2001 From: Gleicon Moraes Date: Mon, 20 Nov 2023 20:23:06 -0300 Subject: [PATCH 1/4] Fixed Makefile for MacOS ARM 64 based on https://github.com/ggerganov/whisper.cpp/issues/1344 + proper ggml-metal env var setting --- bindings/go/Makefile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/bindings/go/Makefile b/bindings/go/Makefile index 74118262b60..7728f4c7f60 100644 --- a/bindings/go/Makefile +++ b/bindings/go/Makefile @@ -1,8 +1,10 @@ +GGML_METAL_PATH_RESOURCES := $(abspath ../..) BUILD_DIR := build MODELS_DIR := models EXAMPLES_DIR := $(wildcard examples/*) INCLUDE_PATH := $(abspath ../..) LIBRARY_PATH := $(abspath ../..) +EXT_LDFLAGS := -framework Foundation -framework Metal -framework MetalKit all: clean whisper examples @@ -11,9 +13,9 @@ whisper: mkdir @${MAKE} -C ../.. libwhisper.a test: model-small whisper modtidy - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v . - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v ./pkg/whisper/... - + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v . + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v ./pkg/whisper/... + examples: $(EXAMPLES_DIR) model-small: mkdir examples/go-model-download @@ -21,7 +23,8 @@ model-small: mkdir examples/go-model-download $(EXAMPLES_DIR): mkdir whisper modtidy @echo Build example $(notdir $@) - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go build ${BUILD_FLAGS} -o ${BUILD_DIR}/$(notdir $@) ./$@ + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go build ${BUILD_FLAGS} -ldflags "-extldflags '$(EXT_LDFLAGS)'" -o ${BUILD_DIR}/$(notdir $@) ./$@ + mkdir: @echo Mkdir ${BUILD_DIR} From 7b1d125445670f8fcf301f907e6d2c765f4a7934 Mon Sep 17 00:00:00 2001 From: Gleicon Moraes Date: Wed, 22 Nov 2023 09:39:35 -0300 Subject: [PATCH 2/4] conditional to fix broken non-macos compilation --- bindings/go/Makefile | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/bindings/go/Makefile b/bindings/go/Makefile index 7728f4c7f60..2b386443b2f 100644 --- a/bindings/go/Makefile +++ b/bindings/go/Makefile @@ -1,10 +1,26 @@ +ifndef UNAME_S +UNAME_S := $(shell uname -s) +endif + +ifndef UNAME_P +UNAME_P := $(shell uname -p) +endif + +ifndef UNAME_M +UNAME_M := $(shell uname -m) +endif + + GGML_METAL_PATH_RESOURCES := $(abspath ../..) BUILD_DIR := build MODELS_DIR := models EXAMPLES_DIR := $(wildcard examples/*) INCLUDE_PATH := $(abspath ../..) LIBRARY_PATH := $(abspath ../..) -EXT_LDFLAGS := -framework Foundation -framework Metal -framework MetalKit + +ifeq ($(UNAME_S),Darwin) + EXT_LDFLAGS := -framework Foundation -framework Metal -framework MetalKit +endif all: clean whisper examples @@ -13,9 +29,14 @@ whisper: mkdir @${MAKE} -C ../.. libwhisper.a test: model-small whisper modtidy - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v . - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v ./pkg/whisper/... - +ifeq ($(UNAME_S),Darwin) + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v . + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v ./pkg/whisper/... +else + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v . + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v ./pkg/whisper/... +endif + examples: $(EXAMPLES_DIR) model-small: mkdir examples/go-model-download @@ -23,8 +44,11 @@ model-small: mkdir examples/go-model-download $(EXAMPLES_DIR): mkdir whisper modtidy @echo Build example $(notdir $@) - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go build ${BUILD_FLAGS} -ldflags "-extldflags '$(EXT_LDFLAGS)'" -o ${BUILD_DIR}/$(notdir $@) ./$@ - +ifeq ($(UNAME_S),Darwin) + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go build ${BUILD_FLAGS} -ldflags "-extldflags '$(EXT_LDFLAGS)'" -o ${BUILD_DIR}/$(notdir $@) ./$@ +else + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go build ${BUILD_FLAGS} -o ${BUILD_DIR}/$(notdir $@) ./$@ +endif mkdir: @echo Mkdir ${BUILD_DIR} From 29e40cb8995ad2092adc82f4bfbfa81f8d875642 Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Wed, 22 Nov 2023 17:32:09 +0200 Subject: [PATCH 3/4] spaces -> tab --- bindings/go/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/go/Makefile b/bindings/go/Makefile index 2b386443b2f..a39c0a4c5b7 100644 --- a/bindings/go/Makefile +++ b/bindings/go/Makefile @@ -31,7 +31,7 @@ whisper: mkdir test: model-small whisper modtidy ifeq ($(UNAME_S),Darwin) @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v . - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v ./pkg/whisper/... + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v ./pkg/whisper/... else @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v . @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v ./pkg/whisper/... From 8d1c8819d6bafbdef8b1d43f60b9dadb1ccad551 Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Wed, 22 Nov 2023 17:33:09 +0200 Subject: [PATCH 4/4] make : fix whitespaces --- bindings/go/Makefile | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/bindings/go/Makefile b/bindings/go/Makefile index a39c0a4c5b7..4f3a416a3ff 100644 --- a/bindings/go/Makefile +++ b/bindings/go/Makefile @@ -10,7 +10,6 @@ ifndef UNAME_M UNAME_M := $(shell uname -m) endif - GGML_METAL_PATH_RESOURCES := $(abspath ../..) BUILD_DIR := build MODELS_DIR := models @@ -30,11 +29,11 @@ whisper: mkdir test: model-small whisper modtidy ifeq ($(UNAME_S),Darwin) - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v . - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v ./pkg/whisper/... + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v . + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go test -ldflags "-extldflags '$(EXT_LDFLAGS)'" -v ./pkg/whisper/... else - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v . - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v ./pkg/whisper/... + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v . + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go test -v ./pkg/whisper/... endif examples: $(EXAMPLES_DIR) @@ -45,9 +44,9 @@ model-small: mkdir examples/go-model-download $(EXAMPLES_DIR): mkdir whisper modtidy @echo Build example $(notdir $@) ifeq ($(UNAME_S),Darwin) - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go build ${BUILD_FLAGS} -ldflags "-extldflags '$(EXT_LDFLAGS)'" -o ${BUILD_DIR}/$(notdir $@) ./$@ + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} GGML_METAL_PATH_RESOURCES=${GGML_METAL_PATH_RESOURCES} go build ${BUILD_FLAGS} -ldflags "-extldflags '$(EXT_LDFLAGS)'" -o ${BUILD_DIR}/$(notdir $@) ./$@ else - @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go build ${BUILD_FLAGS} -o ${BUILD_DIR}/$(notdir $@) ./$@ + @C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go build ${BUILD_FLAGS} -o ${BUILD_DIR}/$(notdir $@) ./$@ endif mkdir: