@@ -27,31 +27,39 @@ MAKEFLAGS += -j$(CPUS)
2727# Compiler and flags
2828CC = gcc
2929CXX = g++
30- CFLAGS = -Wall -Wextra -Wno-unused-parameter -I$(SRC_DIR ) -I$(LLAMA_DIR ) /ggml/include -I$(LLAMA_DIR ) /include
31- LDFLAGS = -L./ $( BUILD_LLAMA ) /common -L./ $( BUILD_LLAMA ) /ggml/src -L./ $( BUILD_LLAMA ) /src -L./ $( BUILD_WHISPER ) /src -lcommon -lggml -lggml-cpu -lggml-base -lllama -lwhisper
30+ CFLAGS = -Wall -Wextra -Wno-unused-parameter -I$(SRC_DIR ) -I$(LLAMA_DIR ) /ggml/include -I$(LLAMA_DIR ) /include -I $( MINIAUDIO_DIR )
31+ LDFLAGS = $( LLAMA_LDFLAGS ) $( WHISPER_LDFLAGS ) $( MINIAUDIO_LDFLAGS )
3232LLAMA_OPTIONS = $(LLAMA ) -DLLAMA_CURL=OFF -DLLAMA_BUILD_EXAMPLES=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_TOOLS=OFF -DLLAMA_BUILD_SERVER=OFF
3333WHISPER_OPTIONS = $(WHISPER ) -DWHISPER_BUILD_EXAMPLES=OFF -DWHISPER_BUILD_TESTS=OFF -DWHISPER_BUILD_SERVER=OFF
3434
35+ # Module-specific linking flags
36+ LLAMA_LDFLAGS = -L./$(BUILD_LLAMA ) /common -L./$(BUILD_LLAMA ) /ggml/src -L./$(BUILD_LLAMA ) /src -lcommon -lggml -lggml-cpu -lggml-base -lllama
37+ WHISPER_LDFLAGS = -L./$(BUILD_WHISPER ) /src -lwhisper
38+ MINIAUDIO_LDFLAGS = -L./$(BUILD_MINIAUDIO ) -lminiaudio
39+
3540# Directories
3641SRC_DIR = src
3742DIST_DIR = dist
3843VPATH = $(SRC_DIR )
3944BUILD_DIR = build
4045LLAMA_DIR = modules/llama.cpp
4146WHISPER_DIR = modules/whisper.cpp
47+ MINIAUDIO_DIR = modules/miniaudio
4248BUILD_LLAMA = $(BUILD_DIR ) /llama.cpp
4349BUILD_WHISPER = $(BUILD_DIR ) /whisper.cpp
50+ BUILD_MINIAUDIO = $(BUILD_DIR ) /miniaudio
4451
4552# Files
4653SRC_FILES = $(wildcard $(SRC_DIR ) /* .c)
4754OBJ_FILES = $(patsubst % .c, $(BUILD_DIR ) /% .o, $(notdir $(SRC_FILES ) ) )
4855LLAMA_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
4956WHISPER_LIBS = $(BUILD_WHISPER ) /src/libwhisper.a
57+ MINIAUDIO_LIBS = $(BUILD_MINIAUDIO ) /libminiaudio.a
5058
5159# Platform-specific settings
5260ifeq ($(PLATFORM ) ,windows)
5361 TARGET := $(DIST_DIR ) /ai.dll
54- LDFLAGS = -L./$(BUILD_LLAMA ) /common -L./$(BUILD_LLAMA ) /ggml/src -L./$(BUILD_LLAMA ) /src -L./$(BUILD_WHISPER ) /src -l:libllama.a -l:libwhisper.a -l:libcommon.a -l:ggml.a -l:ggml-cpu.a -l:ggml-base.a -fopenmp -static-libgcc -static-libstdc++ -shared
62+ LDFLAGS = -L./$(BUILD_LLAMA ) /common -L./$(BUILD_LLAMA ) /ggml/src -L./$(BUILD_LLAMA ) /src -L./$(BUILD_WHISPER ) /src -L./ $( BUILD_MINIAUDIO ) - l:libllama.a -l:libwhisper.a -l:libminiaudio .a -l:libcommon.a -l:ggml.a -l:ggml-cpu.a -l:ggml-base.a -fopenmp -static-libgcc -static-libstdc++ -shared
5563 # Create .def file for Windows
5664 DEF_FILE := $(BUILD_DIR ) /ai.def
5765 STRIP = strip --strip-unneeded $@
@@ -110,6 +118,8 @@ else # linux
110118 # using -DGGML_CPU_ALL_VARIANTS=ON
111119 LDFLAGS := $(filter-out -lggml-cpu,$(LDFLAGS ) )
112120 LDFLAGS += -shared -L./$(BUILD_LLAMA ) /bin -Wl,-rpath,./$(BUILD_LLAMA ) /bin -Wl,-rpath,./$(BUILD_LLAMA ) /common -Wl,-rpath,./$(BUILD_LLAMA ) /ggml/src -Wl,-rpath,./$(BUILD_LLAMA ) /src -Wl,-rpath,./$(BUILD_WHISPER ) /src
121+ # Add miniaudio Linux-specific flags (as per miniaudio docs)
122+ MINIAUDIO_LDFLAGS += -lpthread -lm
113123 LLAMA_OPTIONS += -DBUILD_SHARED_LIBS=ON -DGGML_OPENMP=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
114124 WHISPER_OPTIONS += -DBUILD_SHARED_LIBS=ON -DGGML_OPENMP=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
115125 STRIP = strip --strip-unneeded $@
@@ -131,7 +141,7 @@ extension: $(TARGET)
131141all : $(TARGET )
132142
133143# Loadable library
134- $(TARGET ) : $(OBJ_FILES ) $(DEF_FILE ) $(LLAMA_LIBS ) $(WHISPER_LIBS )
144+ $(TARGET ) : $(OBJ_FILES ) $(DEF_FILE ) $(LLAMA_LIBS ) $(WHISPER_LIBS ) $( MINIAUDIO_LIBS )
135145 $(CXX ) $(OBJ_FILES ) $(DEF_FILE ) -o $@ $(LDFLAGS )
136146ifeq ($(PLATFORM ) ,windows)
137147 # Generate import library for Windows
@@ -158,8 +168,14 @@ build/whisper.cpp.stamp:
158168 cmake --build $(BUILD_WHISPER ) --config Release -- -j$(CPUS )
159169 touch $@
160170
171+ build/miniaudio.stamp :
172+ cmake -B $(BUILD_MINIAUDIO ) -DMINIAUDIO_BUILD_EXAMPLES=OFF -DMINIAUDIO_BUILD_TESTS=OFF $(MINIAUDIO_DIR )
173+ cmake --build $(BUILD_MINIAUDIO ) --config Release -- -j$(CPUS )
174+ touch $@
175+
161176$(LLAMA_LIBS ) : build/llama.cpp.stamp
162177$(WHISPER_LIBS ) : build/whisper.cpp.stamp
178+ $(MINIAUDIO_LIBS ) : build/miniaudio.stamp
163179
164180# Tools
165181version :
0 commit comments