X-Git-Url: https://git.distorted.org.uk/~mdw/mdw-cross/blobdiff_plain/041e59882b06d8004232cfe686bc90f8c642f7f3..ba791030970ff37d212c8e5e33791b0749d3ca5e:/Makefile diff --git a/Makefile b/Makefile index 055b40c..4505f83 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,8 @@ .SECONDEXPANSION: #sorry all:: +CROSSDIR := $(shell pwd) + FLAVOURS += linux-cross linux-cross_ARCHS = linux-armel linux-armhf linux-arm64 linux-armel_ARCH = arm-linux-gnueabi @@ -21,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" "$@"; @@ -43,9 +48,49 @@ $(SETUPS): etc/%-setup.sh: $$(call setup-flavour,$$*)-setup.sh.in Makefile $(call v_tag,SED)sed 's/@arch@/$($*_ARCH)/g' $< >$@.new && \ mv $@.new $@ +SCRIPTS = cross crosstool cross-run +BINSCRIPTS = $(addprefix bin/,$(SCRIPTS)) +TARGETS += $(BINSCRIPTS) +$(BINSCRIPTS): bin/%: src/%.in + $(V_AT)mkdir -p $(dir $@) + $(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)