Codebase list arch-test / dd0356ee-c4bb-434c-ae0e-316daf37f87f/main Makefile
dd0356ee-c4bb-434c-ae0e-316daf37f87f/main

Tree @dd0356ee-c4bb-434c-ae0e-316daf37f87f/main (Download .tar.gz)

Makefile @dd0356ee-c4bb-434c-ae0e-316daf37f87f/mainraw · history · blame

VERSION=$(shell git describe)
ARCHS=amd64 x32 i386 \
	win32 win64 \
	mips mipsel mipsn32 mipsn32el mips64 mips64el \
	illumos-amd64 \
	kfreebsd-amd64 kfreebsd-i386 \
	powerpc ppc64 ppc64el powerpcspe \
	s390x \
	arm64 arm64ilp32 \
	arm armel armhf \
	sh4 \
	m68k \
	sparc sparc64 \
	alpha \
	hppa \
	ia64 \
	riscv64 \

X86=x86_64-linux-gnu
MIPS=mips-linux-gnu
POWERPC=powerpc-linux-gnu
ARM=arm-linux-gnueabihf
SPARC=sparc64-linux-gnu
-include config
all: $(ARCHS:%=arch-test-%)

clean:
	rm -f *.o arch-test-* core *.core

distclean: clean
	rm -f config

DESTDIR=
PREFIX=/usr/local
install: all
	mkdir -p $(DESTDIR)$(PREFIX)/bin
	mkdir -p $(DESTDIR)$(PREFIX)/lib/arch-test/
	sed -e "s|^HELPERS.*|HELPERS=$(PREFIX)/lib/arch-test/|;s&..git describe.&$(VERSION)&" \
		<arch-test >$(DESTDIR)$(PREFIX)/bin/arch-test
	chmod a+x $(DESTDIR)$(PREFIX)/bin/arch-test
	for x in $(ARCHS); do cp -p arch-test-$$x \
		$(DESTDIR)$(PREFIX)/lib/arch-test/$$x;done
	mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1/
	install -p *.1 $(DESTDIR)$(PREFIX)/share/man/man1/
	install -p elf-arch $(DESTDIR)$(PREFIX)/bin/

arch-test-amd64: amd64.s
	$(X86)-as --64 $^ -o amd64.o
	$(X86)-ld -z noexecstack -melf_x86_64 -s amd64.o -o $@

arch-test-x32: x32.s
	$(X86)-as --x32 $^ -o x32.o
	$(X86)-ld -z noexecstack -melf32_x86_64 -s x32.o -o $@

arch-test-i386: i386.s
	$(X86)-as --32 $^ -o i386.o
	$(X86)-ld -z noexecstack -melf_i386 -s i386.o -o $@

arch-test-win32: win32.s
	i686-w64-mingw32-as $^ -o win32.o
	i686-w64-mingw32-ld -s win32.o -lkernel32 -o $@

arch-test-win64: win64.s
	x86_64-w64-mingw32-as $^ -o win64.o
	x86_64-w64-mingw32-ld -s win64.o -lkernel32 -o $@

arch-test-mips: mips.s
	$(MIPS)-as -32 -EB $^ -o mips.o
	$(MIPS)-ld -z noexecstack -melf32btsmip -s mips.o -o $@

arch-test-mipsel: mips.s
	$(MIPS)-as -32 -EL $^ -o mipsel.o
	$(MIPS)-ld -z noexecstack -melf32ltsmip -s mipsel.o -o $@

arch-test-mipsn32: mipsn32.s
	$(MIPS)-as -n32 -EB $^ -o mipsn32.o
	$(MIPS)-ld -z noexecstack -melf32btsmipn32 -s mipsn32.o -o $@

arch-test-mipsn32el: mipsn32.s
	$(MIPS)-as -n32 -EL $^ -o mipsn32el.o
	$(MIPS)-ld -z noexecstack -melf32ltsmipn32 -s mipsn32el.o -o $@

arch-test-mips64: mips64.s
	$(MIPS)-as -64 -EB $^ -o mips64.o
	$(MIPS)-ld -z noexecstack -melf64btsmip -s mips64.o -o $@

arch-test-mips64el: mips64.s
	$(MIPS)-as -64 -EL $^ -o mips64el.o
	$(MIPS)-ld -z noexecstack -melf64ltsmip -s mips64el.o -o $@

arch-test-illumos-amd64: solaris-amd64.s
	$(X86)-as --64 $^ -o illumos-amd64.o
	$(X86)-ld -z noexecstack -melf_x86_64 -s illumos-amd64.o -o $@

# same ABI as Solaris, save for branding.
arch-test-kfreebsd-amd64: solaris-amd64.s
	$(X86)-as --64 $^ -o kfreebsd-amd64.o
	$(X86)-ld -z noexecstack -melf_x86_64 -s kfreebsd-amd64.o -o $@
	# FreeBSD relies on "branding" of ELF files.
	printf '\t'|dd of=$@ bs=1 count=1 seek=7 conv=notrunc

arch-test-kfreebsd-i386: kfreebsd-i386.s
	$(X86)-as --32 $^ -o kfreebsd-i386.o
	$(X86)-ld -z noexecstack -melf_i386 -s kfreebsd-i386.o -o $@
	# FreeBSD relies on "branding" of ELF files.
	printf '\t'|dd of=$@ bs=1 count=1 seek=7 conv=notrunc

arch-test-powerpc: powerpc.s
	$(POWERPC)-as -a32 $^ -o powerpc.o
	$(POWERPC)-ld -z noexecstack -melf32ppc -s powerpc.o -o $@

arch-test-ppc64: ppc64.s
	$(POWERPC)-as -a64 $^ -o ppc64.o
	$(POWERPC)-ld -z noexecstack -melf64ppc -s ppc64.o -o $@

arch-test-ppc64el: ppc64el.s
	powerpc64le-linux-gnu-as -mpower8 $^ -o ppc64el.o
	powerpc64le-linux-gnu-ld -z noexecstack -s ppc64el.o -o $@

arch-test-powerpcspe: powerpcspe.s
	$(POWERPC)-as -a32 -me500 $^ -o powerpcspe.o
	$(POWERPC)-ld -z noexecstack -melf32ppc -s powerpcspe.o -o $@

arch-test-s390x: s390x.s
	s390x-linux-gnu-as $^ -o s390x.o
	s390x-linux-gnu-ld -z noexecstack -s s390x.o -o $@

arch-test-arm64: arm64.s
	aarch64-linux-gnu-as $^ -o arm64.o
	aarch64-linux-gnu-ld -z noexecstack -s arm64.o -o $@

arch-test-arm64ilp32: arm64.s
	aarch64-linux-gnu-as -mabi=ilp32 $^ -o arm64ilp32.o
	aarch64-linux-gnu-ld -z noexecstack -maarch64linux32 -s arm64ilp32.o -o $@

arch-test-arm: arm.oabi.s
	$(ARM)-as $^ -o arm.o
	$(ARM)-ld -z noexecstack -s arm.o -o $@

arch-test-armel: armel.s
	$(ARM)-as $^ -o armel.o
	$(ARM)-ld -z noexecstack -s armel.o -o $@

arch-test-armhf: armhf.s
	$(ARM)-as $^ -o armhf.o
	$(ARM)-ld -z noexecstack -s armhf.o -o $@

arch-test-sh4: sh4.s
	sh4-linux-gnu-as $^ -o sh4.o
	sh4-linux-gnu-ld -z noexecstack -s sh4.o -o $@

arch-test-m68k: m68k.s
	m68k-linux-gnu-as $^ -o m68k.o
	m68k-linux-gnu-ld -z noexecstack -s m68k.o -o $@

arch-test-sparc64: sparc64.s
	$(SPARC)-as --64 $^ -o sparc64.o
	$(SPARC)-ld -z noexecstack -melf64_sparc -s sparc64.o -o $@

arch-test-sparc: sparc.s
	$(SPARC)-as --32 $^ -o sparc.o
	$(SPARC)-ld -z noexecstack -melf32_sparc -s sparc.o -o $@

arch-test-alpha: alpha.s
	alpha-linux-gnu-as $^ -o alpha.o
	alpha-linux-gnu-ld -z noexecstack -s alpha.o -o $@

arch-test-hppa: hppa.s
	hppa-linux-gnu-as $^ -o hppa.o
	hppa-linux-gnu-ld -z noexecstack -s hppa.o -o $@

arch-test-ia64: ia64.s
	ia64-linux-gnu-as $^ -o ia64.o
	ia64-linux-gnu-ld -z noexecstack -s ia64.o -o $@

arch-test-riscv64: riscv64.s
	riscv64-linux-gnu-as $^ -o riscv64.o
	riscv64-linux-gnu-ld -z noexecstack -s riscv64.o -o $@