X-Git-Url: https://git.distorted.org.uk/~mdw/mdw-cross/blobdiff_plain/62d4726c61ceb2fd00f74cf55a4e8466e5a3830b..f96afdc7a1599a53e59b22059b0d9e9edda4e950:/Makefile diff --git a/Makefile b/Makefile index 1411e61..4505f83 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,9 @@ android-arm64_ARCH = aarch64-linux-android android-x86_ARCH = i686-linux-android android-x86_64_ARCH = x86_64-linux-android +CONFIG_VARS += FLAVOURS +CONFIG_VARS += $(foreach f,$(FLAVOURS), $f_ARCHS) + V = 0 v_tag = $(call v_tag_$V,$1) v_tag_0 = @printf " %-8s %s\n" "$1" "$@"; @@ -45,7 +48,7 @@ $(SETUPS): etc/%-setup.sh: $$(call setup-flavour,$$*)-setup.sh.in Makefile $(call v_tag,SED)sed 's/@arch@/$($*_ARCH)/g' $< >$@.new && \ mv $@.new $@ -SCRIPTS = mdw-cross crosstool +SCRIPTS = cross crosstool cross-run BINSCRIPTS = $(addprefix bin/,$(SCRIPTS)) TARGETS += $(BINSCRIPTS) $(BINSCRIPTS): bin/%: src/%.in @@ -53,9 +56,41 @@ $(BINSCRIPTS): bin/%: src/%.in $(call v_tag,SED)sed 's@crossdir@$(CROSSDIR)' $< >$@.new && \ chmod +x $@.new && mv $@.new $@ +fix = $(subst -,_,$1) +quote = '$(subst ','\'',$1)'#' + +TARGETS += etc/config.sh +etc/config.sh: Makefile + $(V_AT)mkdir -p $(dir $@) + $(call v_tag,GEN){ \ + echo '### -*-sh-*- GENERATED by CROSS/Makefile'; \ + $(foreach v,$(CONFIG_VARS), \ + echo $(call fix,$v)=$(call quote,$(call quote,$($v)));) \ + } >$@.new && mv $@.new $@ + all:: $(TARGETS) CLEANFILES += $(TARGETS) clean::; rm -f $(CLEANFILES) +run-program = exec 8>&1 && rc=$$( exec 7>&1 && \ + { exec 9>&1 && \ + { ($1 9>&-; echo $$? >&7) | \ + while IFS= read -r line; \ + do printf >&9 "%-21s | %s\n" "$2" "$$line"; done; } 2>&1 | \ + while IFS= read -r line; \ + do printf >&9 "%-21s * %s\n" "$2" "$$line"; done; } | cat >&8 ) && \ + exit $$rc + +run: $(addprefix run/,$(ARCHS)) +$(addprefix run/,$(ARCHS)): run/%: + @cd $(DIR) && \ + $(call run-program,$(CROSSDIR)/bin/cross $* $(ARGS),$*) +.PHONY: run $(addprefix run/,$(ARCHS)) + +run-make: $(addprefix run-make/,$(ARCHS)) +$(addprefix run-make/,$(ARCHS)): run-make/%: + @+$(call run-program,$(CROSSDIR)/bin/cross $* $(MAKE) -C$(DIR) $(ARGS),$*) +.PHONY: run-make $(addprefix run-make/,$(ARCHS)) + show:; : $(VAR)