HOST = i486-linux
CPU = i386
GCC = gcc
GCCFLAGS = -O2 -fomit-frame-pointer
LN = ln -s
RM = rm -f
SED = sed
ROFF_MAN = groff -Tascii -mandoc

all : avcall-i386.S avcall-m68k.s avcall-m68k-amiga.s avcall-mips.s avcall-sparc.S avcall-alpha.s avcall-hppa.s avcall-arm.s avcall-rs6000.s avcall-m88k.s avcall-convex.s avcall.man

avcall-i386.S : avcall-i386.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__i386__ -fno-omit-frame-pointer -b i486-linux -S avcall-i386.c -o avcall-i386.s
	(cat underscore.h ; sed -e 's/_\(_[A-Za-z_:]*\)/C(\1)/' -e '/\.align.*,0x90$$/d' avcall-i386.s) > avcall-i386.S
	$(RM) avcall-i386.s

avcall-m68k.s : avcall-m68k.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__m68k__ -b m68k-sun -S avcall-m68k.c -o avcall-m68k.s

avcall-m68k-amiga.s : avcall-m68k-amiga.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__m68k__ -b m68k-sun -m68000 -DAMIGA -S avcall-m68k-amiga.c -o avcall-m68k-amiga-temp.s
	avcall-m68k-amiga-swap < avcall-m68k-amiga-temp.s > avcall-m68k-amiga.s
	$(RM) avcall-m68k-amiga-temp.s

avcall-mips.s : avcall-mips.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__mips__ -b mips-sgi -S avcall-mips.c -o avcall-mips.s

avcall-sparc.S : avcall-sparc.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__sparc__ -b sparc-sun -S avcall-sparc.c -o avcall-sparc.s
	(cat underscore.h ; sed -e 's/_\(_[A-Za-z_:]*\)/C(\1)/' avcall-sparc.s) > avcall-sparc.S
	$(RM) avcall-sparc.s

avcall-alpha.s : avcall-alpha.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__alpha__ -b alpha-dec-osf -S avcall-alpha.c -o avcall-alpha.s

avcall-hppa.s : avcall-hppa.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__hppa__ -b hppa1.0-hpux -S avcall-hppa.c -o avcall-hppa-temp.s
	$(SED) -e 's/120/1060/g' < avcall-hppa-temp.s > avcall-hppa.s
	$(RM) avcall-hppa-temp.s

avcall-arm.s : avcall-arm.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__arm__ -b arm-acorn-riscix -S avcall-arm.c -o avcall-arm.s

avcall-rs6000.s : avcall-rs6000.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__rs6000__ -b rs6000 -S avcall-rs6000.c -o avcall-rs6000.s

avcall-m88k.s : avcall-m88k.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__m88k__ -b m88k-dgux -S avcall-m88k.c -o avcall-m88k.s

avcall-convex.s : avcall-convex.c avcall.h.in
	$(GCC) $(GCCFLAGS) -D__convex__ -b convex-c2 -S avcall-convex.c -o avcall-convex.s

avcall.man : avcall.3
	$(ROFF_MAN) avcall.3 > avcall.man


tests : tests-i386.s tests-m68k.s tests-mips.s tests-sparc.s tests-alpha.s tests-hppa.s tests-arm.s tests-rs6000.s tests-m88k.s tests-convex.s
	true

tests-i386.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__i386__ -b i486-linux -S tests.c -o tests-i386.s
	$(RM) avcall.h

tests-m68k.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__m68k__ -b m68k-sun -S tests.c -o tests-m68k.s
	$(RM) avcall.h

tests-mips.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__mips__ -b mips-sgi -S tests.c -o tests-mips.s
	$(RM) avcall.h

tests-sparc.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__sparc__ -b sparc-sun -S tests.c -o tests-sparc.s
	$(RM) avcall.h

tests-alpha.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__alpha__ -b alpha-dec-osf -S tests.c -o tests-alpha.s
	$(RM) avcall.h

tests-hppa.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__hppa__ -b hppa1.0-hpux -S tests.c -o tests-hppa.s
	$(RM) avcall.h

tests-arm.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__arm__ -b arm-acorn-riscix -S tests.c -o tests-arm.s
	$(RM) avcall.h

tests-rs6000.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__rs6000__ -b rs6000 -S tests.c -o tests-rs6000.s
	$(RM) avcall.h

tests-m88k.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__m88k__ -b m88k-dgux -S tests.c -o tests-m88k.s
	$(RM) avcall.h

tests-convex.s : tests.c avcall.h.in
	$(LN) avcall.h.in avcall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__convex__ -b convex-c2 -S tests.c -o tests-convex.s
	$(RM) avcall.h

