mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-06-11 20:26:42 +02:00
This commit updates the Makefile to use cmake instead of make to build whisper.cpp. The motivation for this change is that currently the make recipe test will fail with the following error: ```console $ make test Mkdir build Mkdir models Build whisper make[1]: Entering directory '/home/danbev/work/ai/whisper-work' make[1]: *** No rule to make target 'libwhisper.a'. Stop. make[1]: Leaving directory '/home/danbev/work/ai/whisper-work' make: *** [Makefile:33: whisper] Error 2 ```
72 lines
2.2 KiB
Makefile
72 lines
2.2 KiB
Makefile
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_go
|
|
MODELS_DIR := models
|
|
EXAMPLES_DIR := $(wildcard examples/*)
|
|
INCLUDE_PATH := $(abspath ../../include):$(abspath ../../ggml/include)
|
|
LIBRARY_PATH := $(abspath ../../${BUILD_DIR}/src:$(abspath ../../${BUILD_DIR}/ggml/src))
|
|
|
|
ifeq ($(GGML_CUDA),1)
|
|
LIBRARY_PATH := $(LIBRARY_PATH):$(CUDA_PATH)/targets/$(UNAME_M)-linux/lib/
|
|
BUILD_FLAGS := -ldflags "-extldflags '-lcudart -lcuda -lcublas'"
|
|
endif
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
EXT_LDFLAGS := -framework Foundation -framework Metal -framework MetalKit
|
|
endif
|
|
|
|
all: clean whisper examples
|
|
|
|
whisper: mkdir
|
|
cmake -S ../.. -B ../../${BUILD_DIR} \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DBUILD_SHARED_LIBS=OFF
|
|
cmake --build ../../${BUILD_DIR} --target whisper
|
|
|
|
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/...
|
|
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
|
|
@${BUILD_DIR}/go-model-download -out models ggml-small.en.bin
|
|
|
|
$(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 $@) ./$@
|
|
else
|
|
@C_INCLUDE_PATH=${INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} go build ${BUILD_FLAGS} -o ${BUILD_DIR}/$(notdir $@) ./$@
|
|
endif
|
|
|
|
mkdir:
|
|
@echo Mkdir ${BUILD_DIR}
|
|
@install -d ${BUILD_DIR}
|
|
@echo Mkdir ${MODELS_DIR}
|
|
@install -d ${MODELS_DIR}
|
|
|
|
modtidy:
|
|
@go mod tidy
|
|
|
|
clean:
|
|
@echo Clean
|
|
@rm -fr $(BUILD_DIR)
|
|
@go clean
|