chiark / gitweb /
Makefile, bin/ -> src/: Substitute scripts rather than chasing symlinks.
[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
MW
25
26V = 0
27v_tag = $(call v_tag_$V,$1)
28v_tag_0 = @printf " %-8s %s\n" "$1" "$@";
7f281ec3
MW
29V_AT = $(V_AT_$V)
30V_AT_0 = @
1a141be6 31
a3c31732
MW
32define define-setup
33SETUPS += etc/$2-setup.sh
34$2_FLAVOUR = $1
35endef
36$(foreach f,$(FLAVOURS), \
37 $(foreach a,$($f_ARCHS), \
38 $(eval $(call define-setup,$f,$a))))
39
1a141be6 40TARGETS += $(SETUPS)
a3c31732 41setup-flavour = $($1_FLAVOUR)
1a141be6 42
a3c31732 43$(SETUPS): etc/%-setup.sh: $$(call setup-flavour,$$*)-setup.sh.in Makefile
4c9cd6c2 44 $(V_AT)mkdir -p $(dir $@)
041e5988
MW
45 $(call v_tag,SED)sed 's/@arch@/$($*_ARCH)/g' $< >$@.new && \
46 mv $@.new $@
1a141be6 47
62d4726c
MW
48SCRIPTS = mdw-cross crosstool
49BINSCRIPTS = $(addprefix bin/,$(SCRIPTS))
50TARGETS += $(BINSCRIPTS)
51$(BINSCRIPTS): bin/%: src/%.in
52 $(V_AT)mkdir -p $(dir $@)
53 $(call v_tag,SED)sed 's\a@crossdir@\a$(CROSSDIR)\a' $< >$@.new && \
54 chmod +x $@.new && mv $@.new $@
55
1a141be6
MW
56all:: $(TARGETS)
57
58CLEANFILES += $(TARGETS)
59clean::; rm -f $(CLEANFILES)
a3c31732
MW
60
61show:; : $(VAR)