etc/android.sh: Don't expect to find the NDK relative to an SDK path.
[mdw-cross] / Makefile
CommitLineData
1a141be6
MW
1### -*-makefile-*-
2
3.SECONDEXPANSION: #sorry
4all::
5
62d4726c
MW
6CROSSDIR := $(shell pwd)
7
a3c31732
MW
8FLAVOURS += linux-cross
9linux-cross_ARCHS = linux-armel linux-armhf linux-arm64
10linux-armel_ARCH = arm-linux-gnueabi
11linux-armhf_ARCH = arm-linux-gnueabihf
12linux-arm64_ARCH = aarch64-linux-gnu
13
14FLAVOURS += linux-native
15linux-native_ARCHS = linux-i386 linux-amd64
16linux-i386_ARCH = i686-linux-gnu
17linux-amd64_ARCH = x86_64-linux-gnu
18
19FLAVOURS += android-cross
20android-cross_ARCHS = android-arm android-arm64 android-x86 android-x86_64
21android-arm_ARCH = arm-linux-androideabi
22android-arm64_ARCH = aarch64-linux-android
23android-x86_ARCH = i686-linux-android
24android-x86_64_ARCH = x86_64-linux-android
1a141be6 25
f73a878f
MW
26CONFIG_VARS += FLAVOURS
27CONFIG_VARS += $(foreach f,$(FLAVOURS), $f_ARCHS)
28
1a141be6
MW
29V = 0
30v_tag = $(call v_tag_$V,$1)
31v_tag_0 = @printf " %-8s %s\n" "$1" "$@";
7f281ec3
MW
32V_AT = $(V_AT_$V)
33V_AT_0 = @
1a141be6 34
a3c31732
MW
35define define-setup
36SETUPS += etc/$2-setup.sh
37$2_FLAVOUR = $1
38endef
39$(foreach f,$(FLAVOURS), \
40 $(foreach a,$($f_ARCHS), \
41 $(eval $(call define-setup,$f,$a))))
42
1a141be6 43TARGETS += $(SETUPS)
a3c31732 44setup-flavour = $($1_FLAVOUR)
1a141be6 45
a3c31732 46$(SETUPS): etc/%-setup.sh: $$(call setup-flavour,$$*)-setup.sh.in Makefile
4c9cd6c2 47 $(V_AT)mkdir -p $(dir $@)
041e5988
MW
48 $(call v_tag,SED)sed 's/@arch@/$($*_ARCH)/g' $< >$@.new && \
49 mv $@.new $@
1a141be6 50
6cb0a33a 51SCRIPTS = mdw-cross crosstool cross-run
62d4726c
MW
52BINSCRIPTS = $(addprefix bin/,$(SCRIPTS))
53TARGETS += $(BINSCRIPTS)
54$(BINSCRIPTS): bin/%: src/%.in
55 $(V_AT)mkdir -p $(dir $@)
56 $(call v_tag,SED)sed 's\a@crossdir@\a$(CROSSDIR)\a' $< >$@.new && \
57 chmod +x $@.new && mv $@.new $@
58
f73a878f
MW
59fix = $(subst -,_,$1)
60quote = '$(subst ','\'',$1)'#'
61
62TARGETS += etc/config.sh
63etc/config.sh: Makefile
64 $(V_AT)mkdir -p $(dir $@)
65 $(call v_tag,GEN){ \
66 echo '### -*-sh-*- GENERATED by mdw-cross/Makefile'; \
67 $(foreach v,$(CONFIG_VARS), \
68 echo $(call fix,$v)=$(call quote,$(call quote,$($v)));) \
69 } >$@.new && mv $@.new $@
70
1a141be6
MW
71all:: $(TARGETS)
72
73CLEANFILES += $(TARGETS)
74clean::; rm -f $(CLEANFILES)
a3c31732 75
6cb0a33a
MW
76run-program = exec 8>&1 && rc=$$( exec 7>&1 && \
77 { exec 9>&1 && \
78 { ($1 9>&-; echo $$? >&7) | \
79 while IFS= read -r line; \
80 do printf >&9 "%-21s | %s\n" "$2" "$$line"; done; } 2>&1 | \
81 while IFS= read -r line; \
82 do printf >&9 "%-21s * %s\n" "$2" "$$line"; done; } | cat >&8 ) && \
83 exit $$rc
84
85run: $(addprefix run/,$(ARCHS))
86$(addprefix run/,$(ARCHS)): run/%:
87 @cd $(DIR) && \
88 $(call run-program,$(CROSSDIR)/bin/mdw-cross $* $(ARGS),$*)
89.PHONY: run $(addprefix run/,$(ARCHS))
90
91run-make: $(addprefix run-make/,$(ARCHS))
92$(addprefix run-make/,$(ARCHS)): run-make/%:
93 @+$(call run-program,$(CROSSDIR)/bin/mdw-cross $* $(MAKE) -C$(DIR) $(ARGS),$*)
94.PHONY: run-make $(addprefix run-make/,$(ARCHS))
95
a3c31732 96show:; : $(VAR)