begin removing Makefile boilerplate

This commit is contained in:
Emile Clark-Boman 2025-09-09 19:42:41 +10:00
parent e599801f2e
commit a1e34376de
2 changed files with 19 additions and 15 deletions

View file

@ -19,28 +19,32 @@ $(addprefix $(LIB)/,$1)
endef endef
# === BUILD TARGETS === # === BUILD TARGETS ===
all: $(BUILD) $(BIN) $(call mkbin,pw-test graph sine) all: $(BUILD) $(BIN) $(call mkbin,pw-test graph sine shfx cli)
$(BIN)/pw-test: $(call mklib, main.c) $(BIN)/pw-test: $(call mklib, main.c)
$(CCOMPILER) $(CFLAGS) -o $(BUILD)/pw-test.o -c $^ $(CC) $(CFLAGS) -o $(BUILD)/pw-test.o -c $^
$(CLINKER) $(LDFLAGS) -o $@ $(BUILD)/pw-test.o $(CLD) $(CLDFLAGS) -o $@ $(BUILD)/pw-test.o
$(BIN)/graph: $(call mklib, graph.c) $(BIN)/shfx: shfx/main.c
$(CCOMPILER) $(CFLAGS) -o $(BUILD)/graph.o -c $^ $(CC) $(CFLAGS) -o $(BUILD)/shfx.o -c $^
$(CLINKER) $(LDFLAGS) -lncurses -o $@ $(BUILD)/graph.o $(CLD) $(CLDFLAGS) -lncurses -o $@ $(BUILD)/shfx.o
$(BIN)/sine: $(call mklib, sine.c) $(BIN)/cli: cli/main.c cli/mkpty.c
$(CCOMPILER) $(CFLAGS) -o $(BUILD)/sine.o -c $^ $(CLD) $(CLDFLAGS) -o $@ $(BUILD)/cli.o
$(CLINKER) $(LDFLAGS) -lncurses -o $@ $(BUILD)/sine.o
$(BUILD) $(BIN): $(BUILD) $(BIN):
mkdir -p $@ mkdir -p $@
$1/%.o: $1/%.c
$(foreach dep, $^,
$(CC) $(CFLAGS) -o "$(BUILD)/$(basename $(notdir dep)).o" -c $(dep))
$(LD) $(LDFLAGS) -o $@ $(addsuffix .o,$(basename $^))
# === DEVELOPMENT TARGETS === # === DEVELOPMENT TARGETS ===
.PHONY: debug run test .PHONY: debug run test
debug: debug:
$(MAKE) all \ $(MAKE) all \
CFLAGS="$(CFLAGS) $(CFLAGS_DBG)" \ CFLAGS="$(CFLAGS) $(CFLAGS_DBG)" \
LDFLAGS="$(LDFLAGS) $(LDFLAGS_DBG)" CLDFLAGS="$(CLDFLAGS) $(CLDFLAGS_DBG)"
run: debug run: debug
- command $(BIN)/pw-test - command $(BIN)/pw-test
test: clean run test: clean run

View file

@ -1,13 +1,13 @@
# === C Compiler Configuration === # === C Compiler Configuration ===
CC := gcc CC := gcc
# CCOMPILER = $$([ -x "$$(command -v bear)" ] && echo 'bear -- ') $(CC)
CCOMPILER = $(CC)
CFLAGS := -Wall -Wextra -std=gnu23 -O CFLAGS := -Wall -Wextra -std=gnu23 -O
CFLAGS_DBG := -g CFLAGS_DBG := -g
# === C Linker Configuration === # === C Linker Configuration ===
CLINKER = $(CC) LD := ld
LDFLAGS := -lpipewire-0.3 -lm -lc CLD = $(CC)
LDFLAGS :=
CLDFLAGS := -lpipewire-0.3 -lm -lc
LDFLAGS_DBG := -g LDFLAGS_DBG := -g
# # === Nix Mutations === # # === Nix Mutations ===