CC ?= gcc CFLAGS_COMMON := -std=c99 -Wall -Wextra -Wpedantic -O2 -g -D_POSIX_C_SOURCE=200809L CFLAGS := $(CFLAGS_COMMON) LDFLAGS := LIBS := -lpulse-simple -lpulse -lX11 -lXtst -lpthread GTK_CFLAGS := $(shell pkg-config --cflags gtk+-3.0 2>/dev/null) GTK_LIBS := $(shell pkg-config --libs gtk+-3.0 2>/dev/null) WITH_WHISPER ?= 0 WHISPER_DIR ?= ./vendor/whisper.cpp ifeq ($(WITH_WHISPER),1) CFLAGS += -DWITH_WHISPER=1 -isystem $(WHISPER_DIR)/include -isystem $(WHISPER_DIR)/ggml/include LDFLAGS += -L$(WHISPER_DIR)/build/src -L$(WHISPER_DIR)/build/ggml/src -Wl,-rpath,$(WHISPER_DIR)/build/src -Wl,-rpath,$(WHISPER_DIR)/build/ggml/src LIBS += -lwhisper -lggml endif SRC := \ ./src/main.c \ ./src/config.c \ ./src/hotkey.c \ ./src/audio.c \ ./src/transcribe.c \ ./src/typer.c OBJ := $(SRC:.c=.o) TARGET := ./voice_linux GUI_TARGET := ./voice_linux_gui .PHONY: all clean run run-gui cpu gpu all: $(TARGET) $(GUI_TARGET) $(TARGET): $(OBJ) $(CC) $(OBJ) -o $@ $(LDFLAGS) $(LIBS) ./src/%.o: ./src/%.c $(CC) $(CFLAGS) -c $< -o $@ $(GUI_TARGET): ./src/gui_main.c ./src/config.c ./src/audio.c ./src/transcribe.c ./src/typer.c $(CC) $(CFLAGS) $(GTK_CFLAGS) $^ -o $@ $(LDFLAGS) $(LIBS) $(GTK_LIBS) cpu: $(MAKE) clean $(MAKE) WITH_WHISPER=1 gpu: $(MAKE) clean $(MAKE) WITH_WHISPER=1 run: $(TARGET) ./voice_linux run-gui: $(GUI_TARGET) ./voice_linux_gui clean: rm -f $(OBJ) $(TARGET) $(GUI_TARGET)