.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