mkimage-profiles/Makefile
Anton Midyukov 51b6f1afaf Makefile: cosmetic improvement for ARCH/BRANCH output
This should save a few repetitive lines during multi image build,
albeit the ideal result should only print out the BRANCH once
as it's invariant for the whole build process (no, you can't
just go ahead and echo it where it gets checked/defined
since that's not the recipe body).
Suggested by mike@
2024-09-05 12:46:12 +03:00

95 lines
2.2 KiB
Makefile

# umbrella mkimage-profiles makefile:
# iterate over multiple goals/arches,
# collect proceedings
ifeq (,$(CHECK))
ifeq (,$(DEBUG))
ifneq (,$(REPORT))
$(warning REPORT is disabled, DEBUG must be enabled for this)
endif
endif
endif
ifndef BRANCH
BRANCH := $(shell rpm --eval %_priority_distbranch | cut -d _ -f 1)
export BRANCH
endif
ifeq (,$(BRANCH))
override BRANCH=sisyphus
MAKEOVERRIDES += BRANCH=sisyphus
endif
# preferences
-include $(HOME)/.mkimage/profiles.mk
# for immediate assignment
ifeq (,$(ARCH))
ARCH := $(shell arch \
| sed 's/i686/i586/; s/armv7.*/armh/; s/armv.*/arm/')
endif
ifeq (,$(ARCHES))
ARCHES := $(ARCH)
endif
export ARCHES ARCH
export PATH := $(CURDIR)/bin:$(PATH)
# recursive make considered useful for m-p
MAKE += -r --no-print-directory
export DIRECT_TARGETS := help help/distro help/ve help/vm clean distclean check
.PHONY: $(DIRECT_TARGETS)
# these build nothing so no use of reports either
$(DIRECT_TARGETS):
@$(MAKE) -f main.mk REPORT= $@
export NUM_TARGETS := $(words $(MAKECMDGOALS))
# for pipefail
SHELL = /bin/bash
# don't even consider remaking a configuration file
.PHONY: $(HOME)/.mkimage/profiles.mk
# real targets need real work
%:
@n=1; \
set -o pipefail; \
say() { echo "$$@" >&2; }; \
if [ "$(NUM_TARGETS)" -gt 1 ]; then \
n="`echo $(MAKECMDGOALS) \
| tr '[[:space:]]' '\n' \
| grep -nx "$@" \
| cut -d: -f1`"; \
say "** goal: $@ [$$n/$(NUM_TARGETS)]"; \
else \
say "** goal: $@"; \
fi; \
for ARCH in $(ARCHES); do \
if [ -z "$(QUIET)" ]; then \
if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then \
say; \
fi; \
say "** BRANCH/ARCH: $(BRANCH)/$$ARCH"; \
fi; \
if [ -n "$(REPORT)" ] && [ -n "$(DEBUG)" ] && [ -z "$(CHECK)" ]; then \
REPORT_PATH=$$(mktemp --tmpdir mkimage-profiles.report.XXXXXXX); \
$(MAKE) -f main.mk ARCH=$$ARCH $@ | report-filter > $$REPORT_PATH || exit 1; \
$(MAKE) -f reports.mk ARCH=$$ARCH REPORT=$(REPORT) REPORT_PATH=$$REPORT_PATH; \
else \
$(MAKE) -f main.mk ARCH=$$ARCH $@ || exit 1; \
fi; \
if [ -n "$(AUTOCLEAN)" ]; then $(MAKE) distclean; fi; \
done; \
if [ "$$n" -lt "$(NUM_TARGETS)" ]; then say; fi
docs:
@$(MAKE) -C doc
docs-publish:
@$(MAKE) -C doc publish