stabbish

:)
git clone https://git.sr.ht/~ashymad/stabbish
Log | Files | Refs | README | LICENSE

commit 44205c07bf99aac643e5cc740af808a60a59ce8f
parent 423d961699ca3e8a0c77d91ce8dd1476b1c6aac9
Author: Szymon Mikulicz <szymon.mikulicz@posteo.net>
Date:   Tue,  7 Jul 2026 12:51:07 +0200

Clean up Makefiles

Diffstat:
MMakefile | 40++++++++++++++++++++++++++++++----------
Dconfig.mk | 5-----
Mdeps/Makefile | 44++++++++++++++++++++------------------------
Msrc/Makefile | 16++++++----------
Mtest/Makefile | 14++++++++------
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.%