simplify Makefile using macros
This commit is contained in:
parent
b2f204a2cb
commit
3f9b404012
1 changed files with 24 additions and 17 deletions
41
Makefile
41
Makefile
|
|
@ -5,22 +5,27 @@ include config.mk
|
|||
# === BUILD ENVIRONMENT ===
|
||||
BIN := bin
|
||||
BUILD := build
|
||||
LIB := lib
|
||||
|
||||
# Macro definitions
|
||||
define mkbin
|
||||
$(addprefix $(BIN)/,$1)
|
||||
LIB := lib
|
||||
CLI := cli
|
||||
|
||||
# === MACRO DEFINITIONS ===
|
||||
define objpath
|
||||
$(addprefix $(BUILD)/,
|
||||
$(addsuffix .o,
|
||||
$(basename $(1))))
|
||||
endef
|
||||
define mkbuild
|
||||
$(addprefix $(BUILD)/,$1)
|
||||
endef
|
||||
define mklib
|
||||
$(addprefix $(LIB)/,$1)
|
||||
define mkobj
|
||||
$(foreach DEP, $?,
|
||||
mkdir -p $(dir $(call objpath, $(DEP)))
|
||||
$(CC) $(CFLAGS) -o $(call objpath, $(DEP)) -c $(DEP))
|
||||
|
||||
$(LD) -r $(LDFLAGS) -o $@ $(call objpath, $?)
|
||||
endef
|
||||
|
||||
# === BUILD TARGETS ===
|
||||
all: $(BUILD) $(BIN) $(call mkbin,pw-test graph sine shfx cli)
|
||||
$(BIN)/pw-test: $(call mklib, main.c)
|
||||
all: $(BUILD) $(BIN) $(addprefix $(BIN)/,pw-test shfx dorne)
|
||||
$(BIN)/pw-test: $(addprefix $(LIB)/, main.c)
|
||||
$(CC) $(CFLAGS) -o $(BUILD)/pw-test.o -c $^
|
||||
$(CLD) $(CLDFLAGS) -o $@ $(BUILD)/pw-test.o
|
||||
|
||||
|
|
@ -28,16 +33,18 @@ $(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
|
||||
$(BIN)/dorne: $(addprefix $(BUILD)/,dorne.o epty.o)
|
||||
$(CLD) $(CLDFLAGS) -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 $^))
|
||||
$(BUILD)/dorne.o: $(addprefix $(CLI)/, main.c)
|
||||
$(mkobj)
|
||||
$(BUILD)/epty.o: $(addprefix $(CLI)/, epty.c _pty.c)
|
||||
$(mkobj)
|
||||
|
||||
# $1/%.o: $1/%.c
|
||||
|
||||
# === DEVELOPMENT TARGETS ===
|
||||
.PHONY: debug run test
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue