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 : vacall-i386.S vacall-m68k.s vacall-mips.s vacall-sparc.S vacall-alpha.s vacall-hppa.s vacall-arm.s vacall-rs6000.s vacall-m88k.s vacall-convex.s vacall.man

vacall-i386.S : vacall-i386.c vacall.h.in
	$(GCC) $(GCCFLAGS) -D__i386__ -b i486-linux -S vacall-i386.c -o vacall-i386.s
	(cat underscore.h ; sed -e 's/_\([v_][A-Za-z_:]*\)/C(\1)/' -e '/\.align.*,0x90$$/d' -e '/^#APP$$/d' -e '/^#NO_APP$$/d' vacall-i386.s) > vacall-i386.S
	$(RM) vacall-i386.s

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

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

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

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

vacall-hppa.s : vacall-hppa.c vacall.h.in
	$(GCC) $(GCCFLAGS) -D__hppa__ -b hppa1.0-hpux -S vacall-hppa.c -o vacall-hppa.s

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

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

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

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

vacall.man : vacall.3
	$(ROFF_MAN) vacall.3 > vacall.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 vacall.h.in
	$(LN) vacall.h.in vacall.h
	$(GCC) $(GCCFLAGS) -I/usr/include -D__i386__ -b i486-linux -S tests.c -o tests-i386.s
	$(RM) vacall.h

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

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

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

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

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

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

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

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

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

