#
# Buildfile for standalone support
# m68000+en, m68010+ec and m68010+ex versions
#

#include ../../../buildprefix

ALL3= libVsa3.a
ALL10=  libVsa10.a
ALL10XLN = libVsa10x.a
ALL50=  libVsa50.a
ALLRAWIO= librawioemt.a librawio.a
ALL= $(ALL3) $(ALL10) $(ALL10XLN) $(ALL50) $(ALLRAWIO)

INCLUDES = -I. -I../mi -I../../libc/include/m68k -I../../libc/include/mi -I../../include

C68FLAGS= -O -v$(Xx)V -DMC68000 -DSTANDALONE $(INCLUDES)
C68FLAGS3= -DENET3MEG
C68FLAGS10= -DMC68010 -DENET10MEG
C68FLAGS10XLN= -DMC68010 -DENET10MEG -DEXCELAN
C68FLAGS50= -DMC68010 -DENET10MEG -DSUN50

OBJECTS= Vsasu.b flushfill.b context.b misc.b
OBJECTS3= enet3.b ikc3.b
OBJECTS10= enet10.b ikc10.b
OBJECTS10XLN= enet10x.b ikc10x.b
OBJECTS50= enet50.b ikc50.b
OBJECTSRAWIO= rawioemt.b rawio.b

# Makefile for libc/rawioemt (MC68000) and libc/rawio (MC68000/68010)

.SUFFIXES: .b .c .s

# how to make a .b file from a .c file
.c.b:
	cc68 $(C68FLAGS) -c $*.c

# how to make a .b file from a .s file
.s.b:
	cc68 $(C68FLAGS) -c $*.s

# compile everything that needs it

all: $(ALL)

librawioemt.a: rawioemt.b
	rm -f librawioemt.a
	ar cr librawioemt.a `lorder68 rawioemt.b | tsort`

librawio.a: rawio.b
	rm -f librawio.a
	ar cr librawio.a `lorder68 rawio.b | tsort`

# objects
#	Specific to 3Mb Ethernet version.
enet3.b: enet3.c
	cc68 $(C68FLAGS) $(C68FLAGS3) -c enet3.c
ikc3.b: ../mi/ikc.c
	cc68 $(C68FLAGS) $(C68FLAGS3) -c ../mi/ikc.c -o ikc3.b

#	Specific to 10Mb Ethernet version - MC68010 with 3Com board.
enet10.b: enet10.c
	cc68 $(C68FLAGS) $(C68FLAGS10) -c enet10.c
ikc10.b: ../mi/ikc.c
	cc68 $(C68FLAGS) $(C68FLAGS10) -c ../mi/ikc.c -o ikc10.b

#	Specific to 10Mb Ethernet version - MC68000 with Excelan board.
enet10x.b: enet10x.c
	cc68 $(C68FLAGS) $(C68FLAGS10XLN) -c enet10x.c
ikc10x.b: ../mi/ikc.c
	cc68 $(C68FLAGS) $(C68FLAGS10XLN) -c ../mi/ikc.c -o ikc10x.b

#	Specific to 10Mb Ethernet version - MC68010 with Sun 50 ethernet
enet50.b: enet50.c
	cc68 $(C68FLAGS) $(C68FLAGS50) -c enet50.c
ikc50.b: ../mi/ikc.c
	cc68 $(C68FLAGS) $(C68FLAGS50) -c ../mi/ikc.c -o ikc50.b

#	Binaries common to all versions.
Vsasu.b: Vsasu.c
	cc68 $(C68FLAGS) -c Vsasu.c

#	Machine independent binaries
flushfill.b: ../mi/flushfill.c
	cc68 $(C68FLAGS) -c ../mi/flushfill.c
context.b: ../mi/context.c
	cc68 $(C68FLAGS) -c ../mi/context.c
misc.b:	../mi/misc.c
	cc68 $(C68FLAGS) -c ../mi/misc.c

#	The "libraries"
libVsa3.a:	$(OBJECTS) $(OBJECTS3)
	ld68 -T 0 -r -o libVsa3.a $(OBJECTS) $(OBJECTS3)
libVsa10.a:	$(OBJECTS) $(OBJECTS10)
	ld68 -T 0 -r -o libVsa10.a $(OBJECTS) $(OBJECTS10)
libVsa10x.a:	$(OBJECTS) $(OBJECTS10XLN)
	ld68 -T 0 -r -o libVsa10x.a $(OBJECTS) $(OBJECTS10XLN)
libVsa50.a:	$(OBJECTS) $(OBJECTS50)
	ar cr libVsa50.a $(OBJECTS) $(OBJECTS50)

#	Samples of how to compile/load
test.b: ../mi/test.c
	cc68 $(C68FLAGS) -c ../mi/test.c

test10.68: test.b libVsa10.a librawio.a
	ld68 -v$(Xx)V -T 2000 -e Vsasu test.b -lVsa10 -lrawio -lV -o test10.68

test10.r: test10.68
	rev68 test10.68 test10.r

test3.68: test.b libVsa3.a
	ld68 -v$(Xx)V -T 1000 -e Vsasu test.b -lVsa3 -lV -lc -o test3.68

test3.r: test3.68
	rev68 test3.68 test3.r

test10x.68: test.b libVsa10x.a
	ld68 -v$(Xx)V -T 1000 -e Vsasu test.b -lVsa10x -lV -lc -lsun100graphics -o test10x.68

test10x.r: test10x.68
	rev68 test10x.68 test10x.r

# Standard buildfile entries
# Warning: removing *.s can cause some headaches: some .s files are
# temporary machine-generated files, and some are sources.
clean:
	rm -f *.o *.b *.s *.ls *.BAK *.CKP .emacs* .netupd* *.r \
		 *.68 *.d *.boot *.sym *.a

install: all
	$(NETINSTALL) "$(ALL)" $(VSYS)/lib/m68k

