dorne/Makefile

59 lines
1.3 KiB
Makefile

.DEFAULT_GOAL := all
include config.mk
# === BUILD ENVIRONMENT ===
BIN := bin
BUILD := build
LIB := lib
CLI := cli
CT := cursetree
# === MACRO DEFINITIONS ===
define objpath
$(addprefix $(BUILD)/,
$(addsuffix .o,
$(basename $(1))))
endef
define mkobj
$(foreach DEP, $?,
mkdir -p $(dir $(call objpath, $(DEP)))
$(CC) $(CFLAGS) $1 -o $(call objpath, $(DEP)) -c $(DEP))
$(LD) -r $(LDFLAGS) -o $@ $(call objpath, $?)
endef
# === BUILD TARGETS ===
all: $(BUILD) $(BIN) $(addprefix $(BIN)/,pw-test dorne)
$(BIN)/pw-test: $(addprefix $(LIB)/, main.c)
$(CC) $(CFLAGS) -o $(BUILD)/pw-test.o -c $^
$(CLD) $(CLDFLAGS) -lpipewire-0.3 -o $@ $(BUILD)/pw-test.o
$(BIN)/dorne: $(addprefix $(BUILD)/,dorne.o cursetree.o)
$(CLD) $(CLDFLAGS) -lncurses -o $@ $^
$(BUILD) $(BIN):
mkdir -p $@
$(BUILD)/dorne.o: $(addprefix $(CLI)/, main.c)
$(call mkobj,-Icursetree)
$(BUILD)/cursetree.o: $(addprefix $(CT)/, cursetree.c ncrswrap.c)
$(call mkobj,)
$(BUILD)/epty.o: $(addprefix $(CT)/, pty/child.c pty/epty.c pty/_pty.c)
$(call mkobj,)
# === 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