Makefile 1.14 KB
Newer Older
1
# umbrella mkimage-profiles makefile:
2 3
# iterate over multiple goals/arches,
# collect proceedings
4

5
# for immediate assignment
6 7 8 9 10
ifndef ARCHES
ifdef ARCH
ARCHES := $(ARCH)
else
ARCHES := $(shell arch | sed 's/i686/i586/')
11
endif
12
endif
13 14
export ARCHES

15 16 17 18 19 20
# supervise target tracing; leave stderr alone
ifdef REPORT
export REPORT_PATH := $(shell mktemp --tmpdir mkimage-profiles.report.XXXXXXX)
POSTPROC := | bin/report-filter > $(REPORT_PATH)
endif

21
# recursive make considered useful for m-p
22
MAKE += -r --no-print-directory
23 24 25 26 27 28 29

.PHONY: clean distclean help
clean distclean help:
	@$(MAKE) -f main.mk $@

export NUM_TARGETS := $(words $(MAKECMDGOALS))

30
# real targets need real work
31 32
%:
	@n=1; \
33
	say() { echo "$$@" >&2; }; \
34 35 36 37 38
	if [ "$(NUM_TARGETS)" -gt 1 ]; then \
		n="`echo $(MAKECMDGOALS) \
		| tr '[[:space:]]' '\n' \
		| grep -nx "$@" \
		| cut -d: -f1`"; \
39
		say "** goal: $@ [$$n/$(NUM_TARGETS)]"; \
40 41
	fi; \
	for ARCH in $(ARCHES); do \
42 43 44 45
		if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then say; fi; \
		say "** ARCH: $$ARCH" >&2; \
		$(MAKE) -f main.mk ARCH=$$ARCH $@ $(POSTPROC); \
		$(MAKE) -f reports.mk ARCH=$$ARCH; \
46
	done; \
47
	if [ "$$n" -lt "$(NUM_TARGETS)" ]; then say; fi