commit 44205c07bf99aac643e5cc740af808a60a59ce8f
parent 423d961699ca3e8a0c77d91ce8dd1476b1c6aac9
Author: Szymon Mikulicz <szymon.mikulicz@posteo.net>
Date: Tue, 7 Jul 2026 12:51:07 +0200
Clean up Makefiles
Diffstat:
5 files changed, 64 insertions(+), 55 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,15 +1,35 @@
-.PHONY: src test deps clean_% clean
+BUSYBOX_VER=busybox-1.38.0
+TARGET=x86_64-linux-musl-native
-test: src
- @make -C $@
+MKFILE_DIR:=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
-src: deps
- @make -C $@
+MUSL_PATH=$(MKFILE_DIR)/deps/$(TARGET)/bin
+BUSYBOX_PATH=$(MKFILE_DIR)/deps/$(BUSYBOX_VER)
-deps:
- @make -C $@
+STABBISH=$(MKFILE_DIR)/src/stabbish
+BUSYBOX=$(BUSYBOX_PATH)/busybox
+CC=$(MUSL_PATH)/gcc
-clean: clean_src clean_test clean_deps
+MAKEFLAGS=--no-print-directory
+CFLAGS=-static
+NPROC=$(shell nproc)
-clean_%:
- @make -C $(patsubst clean_%,%,$@) clean
+export PATH:=$(MUSL_PATH):$(PATH)
+
+.PHONY: test clean.% clean.all
+
+test: FORCE
+ @$(MAKE) $(MAKEFLAGS) -C $(MKFILE_DIR)/test
+
+$(STABBISH): FORCE
+ @$(MAKE) $(MAKEFLAGS) -C $(MKFILE_DIR)/src
+
+$(CC) $(BUSYBOX): FORCE
+ @$(MAKE) $(MAKEFLAGS) -C $(MKFILE_DIR)/deps
+
+clean.all: clean.src clean.test clean.deps
+
+clean.%:
+ @$(MAKE) $(MAKEFLAGS) -C $(MKFILE_DIR)/$(patsubst clean.%,%,$@) clean
+
+FORCE: ;
diff --git a/config.mk b/config.mk
@@ -1,5 +0,0 @@
-BBOX_VER=1.38.0
-
-MKFILE_DIR:=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
-
-export PATH:=$(MKFILE_DIR)/deps/x86_64-linux-musl-native/bin:$(PATH)
diff --git a/deps/Makefile b/deps/Makefile
@@ -1,35 +1,31 @@
-.SUFFIXES:
-
-include ../config.mk
+include ../Makefile
-BBOX_MKFLAGS=HOSTCFLAGS+="-static" HOSTLDFLAGS+="-static" EXTRA_LDFLAGS="-static"
+BUSYBOX_MKFLAGS=HOSTCFLAGS+="-static" HOSTLDFLAGS+="-static" EXTRA_LDFLAGS="-static"
-DEP_MUSL=x86_64-linux-musl-native
-DEP_BBOX=busybox-$(BBOX_VER)
+.SUFFIXES:
+.PHONY: clean all
+.DEFAULT_GOAL := all
-BBOX=$(DEP_BBOX)/busybox
-MUSL_CC=$(DEP_MUSL)/bin/gcc
+all: $(BUSYBOX_VER)/busybox $(TARGET)/bin/gcc
-$(BBOX): $(DEP_BBOX)/.config | $(MUSL_CC)
+$(BUSYBOX_VER)/busybox: $(BUSYBOX_VER)/.config | $(TARGET)/bin/gcc
$(info $() MK $@)
- @make -j$$(nproc) -C $(DEP_BBOX) $(BBOX_MKFLAGS)
+ @$(MAKE) -j$(NPROC) -C $(<D) $(BUSYBOX_MKFLAGS)
-$(MUSL_CC):
- $(info $() DWNL $@)
- @curl -fSL 'https://musl.cc/x86_64-linux-musl-native.tgz' | tar xz
+$(TARGET)/bin/gcc:
+ $(info $() CURL $@)
+ @curl -fSL 'https://musl.cc/$(TARGET).tgz' | tar xz
-$(DEP_BBOX)/Config.in:
- $(info $() DWNL $@)
- @curl -fSL https://busybox.net/downloads/busybox-$(BBOX_VER).tar.bz2 | tar xj
+$(BUSYBOX_VER)/Config.in:
+ $(info $() CURL $@)
+ @curl -fSL https://busybox.net/downloads/$(BUSYBOX_VER).tar.bz2 | tar xj
-$(DEP_BBOX)/.config: busybox.config $(DEP_BBOX)/Config.in | $(MUSL_CC)
+$(BUSYBOX_VER)/.config: $(BUSYBOX_VER)/Config.in busybox.config | $(TARGET)/bin/gcc
$(info $() MK $@)
- @cp $< $@
- @yes "" | make -C $(DEP_BBOX) oldconfig $(BBOX_MKFLAGS)
+ @cp $(word 2, $^) $@
+ @yes "" | $(MAKE) -C $(<D) oldconfig $(BUSYBOX_MKFLAGS)
clean:
- $(info $() CLEAN $(DEP_BBOX))
- @make -C $(DEP_BBOX) clean
- @rm -f $(DEP_BBOX)/.config
-
-.PHONY: clean
+ $(info $() CLEAN $(shell basename $(shell pwd)))
+ @$(MAKE) -C $(BUSYBOX_VER) clean
+ @rm -f $(BUSYBOX_VER)/.config
diff --git a/src/Makefile b/src/Makefile
@@ -1,10 +1,8 @@
-.SUFFIXES:
-
-include ../config.mk
+include ../Makefile
-CC=gcc
-CFLAGS=-static
-BBOX=$(MKFILE_DIR)/deps/busybox-$(BBOX_VER)/busybox
+.SUFFIXES:
+.PHONY: clean
+.DEFAULT_GOAL := stabbish
stabbish: main.o busybox/busybox.inc.o
$(info $() LD $@)
@@ -24,12 +22,10 @@ main.o: main.c busybox/busybox.inc.h magic.h payload.h utils.h
@mkdir -p $(@D)
@sed 's@NAME@$(patsubst %.inc.s,%,$(@F))@g' $< > $@
-busybox/busybox.inc.o: busybox/busybox.inc.s $(BBOX)
+busybox/busybox.inc.o: busybox/busybox.inc.s $(BUSYBOX)
$(info $() ASM $@)
@cd $(dir $(word 2,$^)) && $(CC) $(CFLAGS) -c $(shell pwd)/$< -o $(shell pwd)/$@
clean:
- $(info $() CLEAN .)
+ $(info $() CLEAN $(shell basename $(shell pwd)))
@rm -rf main.o stabbish busybox
-
-.PHONY: test clean_test clean cleanall
diff --git a/test/Makefile b/test/Makefile
@@ -1,21 +1,23 @@
-.SUFFIXES:
-.SECONDARY:
+include ../Makefile
TESTS=$(patsubst %.test, test.%, $(wildcard *.test))
+.SUFFIXES:
+.SECONDARY:
+.PHONY: clean all test.%
+.DEFAULT_GOAL := all
+
all: $(TESTS)
test.%: %.stab
$(info $() TST $@)
@[ "$$($(<D)/$(<F) output)" = "$$($(<D)/$(<F) input)" ]
-%.stab: %.test ../src/stabbish
+%.stab: %.test $(STABBISH)
$(info $() GEN $@)
@echo '"$$@"' | cat $< - | sh -c '. ./$<; process' | cat $(word 2, $^) - > $@
@chmod +x $@
clean:
- $(info $() CLEAN test)
+ $(info $() CLEAN $(shell basename $(shell pwd)))
@rm -rf *.stab
-
-.PHONY: clean all test.%