55 lines
1.2 KiB
Makefile
55 lines
1.2 KiB
Makefile
.DEFAULT_GOAL := all
|
|
|
|
include config.mk
|
|
|
|
# === BUILD ENVIRONMENT ===
|
|
BIN := bin
|
|
BUILD := build
|
|
LIB := lib
|
|
|
|
# Macro definitions
|
|
define mkbin
|
|
$(addprefix $(BIN)/,$1)
|
|
endef
|
|
define mkbuild
|
|
$(addprefix $(BUILD)/,$1)
|
|
endef
|
|
define mklib
|
|
$(addprefix $(LIB)/,$1)
|
|
endef
|
|
|
|
# === BUILD TARGETS ===
|
|
all: $(BUILD) $(BIN) $(call mkbin,pw-test graph sine shfx cli)
|
|
$(BIN)/pw-test: $(call mklib, main.c)
|
|
$(CC) $(CFLAGS) -o $(BUILD)/pw-test.o -c $^
|
|
$(CLD) $(CLDFLAGS) -o $@ $(BUILD)/pw-test.o
|
|
|
|
$(BIN)/shfx: shfx/main.c
|
|
$(CC) $(CFLAGS) -o $(BUILD)/shfx.o -c $^
|
|
$(CLD) $(CLDFLAGS) -lncurses -o $@ $(BUILD)/shfx.o
|
|
|
|
$(BIN)/cli: cli/main.c cli/mkpty.c
|
|
$(CLD) $(CLDFLAGS) -o $@ $(BUILD)/cli.o
|
|
|
|
$(BUILD) $(BIN):
|
|
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 ===
|
|
.PHONY: debug run test
|
|
debug:
|
|
$(MAKE) all \
|
|
CFLAGS="$(CFLAGS) $(CFLAGS_DBG)" \
|
|
CLDFLAGS="$(CLDFLAGS) $(CLDFLAGS_DBG)"
|
|
run: debug
|
|
- command $(BIN)/pw-test
|
|
test: clean run
|
|
|
|
# === UTILITY TARGETS ===
|
|
.PHONY: clean
|
|
clean:
|
|
- rm -rf $(BUILD) $(BIN) vgcore.* &>/dev/null
|