@@ -28,25 +28,25 @@ MAKEFLAGS += -j$(CPUS)
2828CC = gcc
2929CXX = g++
3030CFLAGS = -Wall -Wextra -Wno-unused-parameter -I$(SRC_DIR ) -I$(LLAMA_DIR ) /ggml/include -I$(LLAMA_DIR ) /include
31- LDFLAGS = -L./$(BUILD_DIR ) /lib/ common -L./$(BUILD_DIR ) /lib/ ggml/src -L./$(BUILD_DIR ) /lib/ggml/ src/ggml-blas -L./$(BUILD_DIR ) /lib/ src -lcommon -lggml -lggml-blas -lggml- base -lggml-cpu -lllama
31+ LDFLAGS = -L./$(BUILD_LLAMA ) / common -L./$(BUILD_LLAMA ) / ggml/src -L./$(BUILD_LLAMA ) / src -L./$(BUILD_WHISPER ) / src -lcommon -lggml -lggml-base -lggml-cpu -lllama -lwhisper
3232LLAMA_OPTIONS = -DLLAMA_CURL=OFF -DLLAMA_BUILD_EXAMPLES=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_TOOLS=OFF -DLLAMA_BUILD_SERVER=OFF
33+ WHISPER_OPTIONS = -DWHISPER_BUILD_EXAMPLES=OFF -DWHISPER_BUILD_TESTS=OFF -DWHISPER_BUILD_SERVER=OFF
3334
3435# Directories
3536SRC_DIR = src
3637DIST_DIR = dist
3738VPATH = $(SRC_DIR )
3839BUILD_DIR = build
3940LLAMA_DIR = modules/llama.cpp
41+ WHISPER_DIR = modules/whisper.cpp
42+ BUILD_LLAMA = $(BUILD_DIR ) /llama.cpp
43+ BUILD_WHISPER = $(BUILD_DIR ) /whisper.cpp
4044
4145# Files
4246SRC_FILES = $(wildcard $(SRC_DIR ) /* .c)
4347OBJ_FILES = $(patsubst % .c, $(BUILD_DIR ) /% .o, $(notdir $(SRC_FILES ) ) )
44- LIBS = $(BUILD_DIR ) /lib/common/libcommon.a \
45- $(BUILD_DIR ) /lib/ggml/src/libggml.a \
46- $(BUILD_DIR ) /lib/ggml/src/ggml-blas/libggml-blas.a \
47- $(BUILD_DIR ) /lib/ggml/src/libggml-base.a \
48- $(BUILD_DIR ) /lib/ggml/src/libggml-cpu.a \
49- $(BUILD_DIR ) /lib/src/libllama.a
48+ LLAMA_LIBS = $(BUILD_LLAMA ) /common/libcommon.a $(BUILD_LLAMA ) /ggml/src/libggml.a $(BUILD_LLAMA ) /ggml/src/libggml-base.a $(BUILD_LLAMA ) /ggml/src/libggml-cpu.a $(BUILD_LLAMA ) /src/libllama.a
49+ WHISPER_LIBS = $(BUILD_WHISPER ) /src/libwhisper.a
5050
5151# Platform-specific settings
5252ifeq ($(PLATFORM ) ,windows)
@@ -56,10 +56,11 @@ ifeq ($(PLATFORM),windows)
5656 DEF_FILE := $(BUILD_DIR ) /ai.def
5757else ifeq ($(PLATFORM),macos)
5858 TARGET := $(DIST_DIR ) /ai.dylib
59- LIBS += $(BUILD_DIR ) /lib/ ggml/src/ggml-metal/libggml-metal.a
60- LDFLAGS += -arch x86_64 -arch arm64 -L./$(BUILD_DIR ) /lib/ ggml/src/ggml-metal -lggml-metal -framework Metal -framework Foundation -framework CoreFoundation -framework QuartzCore -framework Accelerate -dynamiclib -undefined dynamic_lookup
59+ LLAMA_LIBS += $(BUILD_LLAMA ) / ggml/src/ggml-metal/libggml-metal.a $( BUILD_LLAMA ) /ggml/src/ggml-blas/libggml-blas .a
60+ LDFLAGS += -arch x86_64 -arch arm64 -L./$(BUILD_LLAMA ) / ggml/src/ggml-metal -lggml-metal -L./ $( BUILD_LLAMA ) /ggml/src/ggml-blas -lggml-blas -framework Metal -framework Foundation -framework CoreFoundation -framework QuartzCore -framework Accelerate -dynamiclib -undefined dynamic_lookup
6161 CFLAGS += -arch x86_64 -arch arm64
6262 LLAMA_OPTIONS += -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
63+ WHISPER_OPTIONS += -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
6364else ifeq ($(PLATFORM),android)
6465 # Set ARCH to find Android NDK's Clang compiler, the user should set the ARCH
6566 ifeq ($(filter %,$(ARCH)),)
@@ -84,19 +85,24 @@ else ifeq ($(PLATFORM),android)
8485else ifeq ($(PLATFORM),ios)
8586 TARGET := $(DIST_DIR ) /ai.dylib
8687 SDK := -isysroot $(shell xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=14.0
87- LDFLAGS += -framework Accelerate -framework Metal -dynamiclib $(SDK )
88+ LLAMA_LIBS += $(BUILD_LLAMA ) /ggml/src/ggml-metal/libggml-metal.a $(BUILD_LLAMA ) /ggml/src/ggml-blas/libggml-blas.a
89+ LDFLAGS += -L./$(BUILD_LLAMA ) /ggml/src/ggml-metal -lggml-metal -L./$(BUILD_LLAMA ) /ggml/src/ggml-blas -lggml-blas -framework Accelerate -framework Metal -framework Foundation -dynamiclib $(SDK )
8890 CFLAGS += -arch arm64 $(SDK )
8991 LLAMA_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0
92+ WHISPER_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0
9093else ifeq ($(PLATFORM),isim)
9194 TARGET := $(DIST_DIR ) /ai.dylib
9295 SDK := -isysroot $(shell xcrun --sdk iphonesimulator --show-sdk-path) -miphonesimulator-version-min=14.0
93- LDFLAGS += -arch x86_64 -arch arm64 -framework Accelerate -framework Metal -dynamiclib $(SDK )
96+ LLAMA_LIBS += $(BUILD_LLAMA ) /ggml/src/ggml-metal/libggml-metal.a $(BUILD_LLAMA ) /ggml/src/ggml-blas/libggml-blas.a
97+ LDFLAGS += -arch x86_64 -arch arm64 -L./$(BUILD_LLAMA ) /ggml/src/ggml-metal -lggml-metal -L./$(BUILD_LLAMA ) /ggml/src/ggml-blas -lggml-blas -framework Accelerate -framework Metal -framework Foundation -dynamiclib $(SDK )
9498 CFLAGS += -arch x86_64 -arch arm64 $(SDK )
95- LLAMA_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
99+ LLAMA_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
100+ WHISPER_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
96101else # linux
97102 TARGET := $(DIST_DIR ) /ai.so
98103 LDFLAGS += -shared
99104 LLAMA_OPTIONS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON
105+ WHISPER_OPTIONS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON
100106endif
101107
102108# Windows .def file generation
@@ -115,7 +121,7 @@ extension: $(TARGET)
115121all : $(TARGET )
116122
117123# Loadable library
118- $(TARGET ) : $(OBJ_FILES ) $(DEF_FILE ) $(LIBS )
124+ $(TARGET ) : $(OBJ_FILES ) $(DEF_FILE ) $(LLAMA_LIBS ) $( WHISPER_LIBS )
119125 $(CXX ) $(OBJ_FILES ) $(DEF_FILE ) -o $@ $(LDFLAGS )
120126ifeq ($(PLATFORM ) ,windows)
121127 # Generate import library for Windows
@@ -130,12 +136,18 @@ test: $(TARGET)
130136 $(SQLITE3 ) " :memory:" -cmd " .bail on" " .load ./$<" " SELECT ai_version();"
131137
132138# Build all libraries at once using one CMake call
133- build/libs .stamp :
134- cmake -B $(BUILD_DIR ) /lib -DBUILD_SHARED_LIBS=OFF $(LLAMA_OPTIONS ) $(LLAMA_DIR )
135- cmake --build $(BUILD_DIR ) /lib --config Release -- -j$(CPUS )
139+ build/llama.cpp .stamp :
140+ cmake -B $(BUILD_LLAMA ) -DBUILD_SHARED_LIBS=OFF $(LLAMA_OPTIONS ) $(LLAMA_DIR )
141+ cmake --build $(BUILD_LLAMA ) --config Release -- -j$(CPUS )
136142 touch $@
137143
138- $(LIBS ) : build/libs.stamp
144+ build/whisper.cpp.stamp :
145+ cmake -B $(BUILD_WHISPER ) -DBUILD_SHARED_LIBS=OFF $(WHISPER_OPTIONS ) $(WHISPER_DIR )
146+ cmake --build $(BUILD_WHISPER ) --config Release -- -j$(CPUS )
147+ touch $@
148+
149+ $(LLAMA_LIBS ) : build/llama.cpp.stamp
150+ $(WHISPER_LIBS ) : build/whisper.cpp.stamp
139151
140152# Tools
141153version :
0 commit comments