dorne/Makefile

63 lines
1.4 KiB
Makefile
Raw Normal View History

2025-09-03 02:32:13 +10:00
.DEFAULT_GOAL := all
include config.mk
# === BUILD ENVIRONMENT ===
BIN := bin
BUILD := build
2025-09-10 01:23:38 +10:00
2025-09-03 02:32:13 +10:00
LIB := lib
2025-09-10 01:23:38 +10:00
CLI := cli
2025-09-03 14:57:16 +10:00
2025-09-10 01:23:38 +10:00
# === MACRO DEFINITIONS ===
define objpath
$(addprefix $(BUILD)/,
$(addsuffix .o,
$(basename $(1))))
2025-09-03 02:32:13 +10:00
endef
2025-09-10 01:23:38 +10:00
define mkobj
$(foreach DEP, $?,
mkdir -p $(dir $(call objpath, $(DEP)))
$(CC) $(CFLAGS) -o $(call objpath, $(DEP)) -c $(DEP))
$(LD) -r $(LDFLAGS) -o $@ $(call objpath, $?)
2025-09-03 02:32:13 +10:00
endef
2025-09-09 11:12:09 +10:00
# === BUILD TARGETS ===
2025-09-10 01:23:38 +10:00
all: $(BUILD) $(BIN) $(addprefix $(BIN)/,pw-test shfx dorne)
$(BIN)/pw-test: $(addprefix $(LIB)/, main.c)
2025-09-09 19:42:41 +10:00
$(CC) $(CFLAGS) -o $(BUILD)/pw-test.o -c $^
$(CLD) $(CLDFLAGS) -o $@ $(BUILD)/pw-test.o
2025-09-03 02:32:13 +10:00
2025-09-09 19:42:41 +10:00
$(BIN)/shfx: shfx/main.c
$(CC) $(CFLAGS) -o $(BUILD)/shfx.o -c $^
$(CLD) $(CLDFLAGS) -lncurses -o $@ $(BUILD)/shfx.o
2025-09-11 17:41:14 +10:00
$(BIN)/dorne: $(addprefix $(BUILD)/,dorne.o ilovecurses.o)
$(CLD) $(CLDFLAGS) -lncurses -o $@ $^
2025-09-03 14:57:16 +10:00
$(BUILD) $(BIN):
2025-09-03 02:32:13 +10:00
mkdir -p $@
2025-09-03 14:57:16 +10:00
2025-09-10 01:23:38 +10:00
$(BUILD)/dorne.o: $(addprefix $(CLI)/, main.c)
$(mkobj)
2025-09-11 17:41:14 +10:00
$(BUILD)/ilovecurses.o: $(addprefix $(CLI)/, tree.c curse.c)
$(mkobj)
$(BUILD)/epty.o: $(addprefix $(CLI)/, child.c epty.c _pty.c)
2025-09-10 01:23:38 +10:00
$(mkobj)
2025-09-09 19:42:41 +10:00
2025-09-09 11:12:09 +10:00
# === DEVELOPMENT TARGETS ===
.PHONY: debug run test
debug:
$(MAKE) all \
CFLAGS="$(CFLAGS) $(CFLAGS_DBG)" \
2025-09-09 19:42:41 +10:00
CLDFLAGS="$(CLDFLAGS) $(CLDFLAGS_DBG)"
2025-09-09 11:12:09 +10:00
run: debug
- command $(BIN)/pw-test
test: clean run
2025-09-03 14:56:29 +10:00
2025-09-09 11:12:09 +10:00
# === UTILITY TARGETS ===
2025-09-03 02:32:13 +10:00
.PHONY: clean
clean:
2025-09-09 11:21:30 +10:00
- rm -rf $(BUILD) $(BIN) vgcore.* &>/dev/null