X-Git-Url: https://git.distorted.org.uk/~mdw/xchg-rax-rax/blobdiff_plain/06297a937874bfd892c0c85ace29fb26a4a0ddc0..02d696c4631ade1cee5b4257d785e32d2d123b17:/Makefile diff --git a/Makefile b/Makefile index ca069ff..5488b34 100644 --- a/Makefile +++ b/Makefile @@ -8,23 +8,36 @@ V_AT = $(call vcond,@) vtag = \ $(call vcond,@printf " %-8s %s\n" "$1" "$(or $2,$@)";) -CC = gcc -m64 -CFLAGS = -O2 -g -Wall -Werror - -AS = gcc -m64 -ASFLAGS = -O2 -g +ARCH = -LD = gcc -m64 +CFLAGS = -O2 -g -Wall -Werror +ASFLAGS = $(CFLAGS) LDFLAGS = -%.o: %.c - $(call vtag,CC)$(CC) -c -o $@ $(CFLAGS) $< - -%.o: %.S - $(call vtag,AS)$(AS) -c -o $@ $(ASFLAGS) $< - -all:: xchg -xchg: xchg.o main.o - $(call vtag,LD)$(LD) -o $@ $^ - -clean::; rm -f xchg *.o +ARCH += i386 +CC/i386 = gcc -m32 + +ARCH += amd64 +CC/amd64 = gcc -m64 + +ARCH += armhf +CC/armhf = arm-linux-gnueabihf-gcc + +ARCH += arm64 +CC/arm64 = aarch64-linux-gnu-gcc + +define defarch.body +AS/$1 = $$(CC/$1) +LD/$1 = $$(CC/$1) +%-$1.o: %.c + $$(call vtag,CC/$1)$$(CC/$1) -c -o $$@ $$(CFLAGS) $$(CFLAGS/$1) $$< +%-$1.o: %.S + $$(call vtag,AS/$1)$$(AS/$1) -c -o $$@ $$(ASFLAGS) $$(ASFLAGS/$1) $$< +all:: xchg-$1 +xchg-$1: xchg-$1.o main-$1.o + $$(call vtag,LD/$1)$$(LD/$1) -o $$@ $$^ +endef +defarch = $(eval $(call defarch.body,$1)) +$(foreach a,$(ARCH), $(call defarch,$a)) + +clean::; rm -f $(foreach a,$(ARCH), xchg-$a) *.o