Commit | Line | Data |
---|---|---|
06297a93 MW |
1 | ### -*-makefile-*- |
2 | ||
3 | V = 0 | |
4 | vcond = $(call vcond_$V,$1,$2) | |
5 | vcond_0 = $1 | |
6 | vcond_1 = $2 | |
7 | V_AT = $(call vcond,@) | |
8 | vtag = \ | |
9 | $(call vcond,@printf " %-8s %s\n" "$1" "$(or $2,$@)";) | |
10 | ||
90c4eee3 | 11 | ARCH = |
06297a93 | 12 | |
90c4eee3 MW |
13 | CFLAGS = -O2 -g -Wall -Werror |
14 | ASFLAGS = $(CFLAGS) | |
06297a93 MW |
15 | LDFLAGS = |
16 | ||
90c4eee3 MW |
17 | ARCH += i386 |
18 | CC/i386 = gcc -m32 | |
19 | ||
20 | ARCH += amd64 | |
21 | CC/amd64 = gcc -m64 | |
22 | ||
23 | ARCH += armhf | |
24 | CC/armhf = arm-linux-gnueabihf-gcc | |
25 | ||
26 | ARCH += arm64 | |
27 | CC/arm64 = aarch64-linux-gnu-gcc | |
28 | ||
29 | define defarch.body | |
30 | AS/$1 = $$(CC/$1) | |
31 | LD/$1 = $$(CC/$1) | |
32 | %-$1.o: %.c | |
33 | $$(call vtag,CC/$1)$$(CC/$1) -c -o $$@ $$(CFLAGS) $$(CFLAGS/$1) $$< | |
34 | %-$1.o: %.S | |
35 | $$(call vtag,AS/$1)$$(AS/$1) -c -o $$@ $$(ASFLAGS) $$(ASFLAGS/$1) $$< | |
ee3f3a56 | 36 | all: xchg-$1 |
90c4eee3 MW |
37 | xchg-$1: xchg-$1.o main-$1.o |
38 | $$(call vtag,LD/$1)$$(LD/$1) -o $$@ $$^ | |
39 | endef | |
40 | defarch = $(eval $(call defarch.body,$1)) | |
41 | $(foreach a,$(ARCH), $(call defarch,$a)) | |
42 | ||
43 | clean::; rm -f $(foreach a,$(ARCH), xchg-$a) *.o |