CLASS_PATH = .:z80cpu/z80core.jar:h19-sim/H89plugin.jar:diablo630/Diablo630Embedded.jar

JAVAS = $(filter-out Cpnet%Server.java,$(wildcard *.java))
CLASSES = $(subst .java,.class,$(JAVAS))
SOURCE = v89.tgz
JARS = VirtualH89.jar CpnetSerialServer.jar CpnetSocketServer.jar
IMAGES = $(addsuffix .xz,$(filter-out test%,$(wildcard *.sasi)))
SHIPS = $(SOURCE) $(JARS)

all: h19-sim/H89plugin.jar z80cpu/z80core.jar diablo630/Diablo630Embedded.jar $(CLASSES)

%.class: %.java
	javac -cp $(CLASS_PATH) $?

%.xz: %
	xz -c $^ >$@

jar: $(JARS)

src: $(SOURCE)
# make -C z80cpu src
# make -C h19-sim src

dsk: $(IMAGES)

build: jar src dsk
	rm -rf temp2 temp

ship: dsk __FRC__
	rsync -Wuv LICENSE $(SHIPS) ../util/*.jar  h19-sim/h19-sim.tgz z80cpu/z80cpu.tgz \
		durgadas.com:/http/durgadas.com/sebhc/mms89
	rsync -Wuv $(IMAGES) durgadas.com:/http/durgadas.com/sebhc/mms89/images
	rsync -Wuv README.images.html durgadas.com:/http/durgadas.com/sebhc/mms89/images/README.html
	rsync -rWuv www/downloads/. durgadas.com:/http/durgadas.com/sebhc/mms89/.

www: __FRC__
	rsync -Wuv www/*.* durgadas.com:/http/durgadas.com/mms89/

VirtualH89.jar: all temp
	echo "Main-Class: VirtualH89" >Manifest.txt
	jar -cmf Manifest.txt VirtualH89.jar *.class \
		2716a_444_79.bin 2732a_444_84b_mms.bin \
		-C temp .

CpnetSerialServer.jar: all temp2 CpnetSerialServer.class
	echo "Main-Class: CpnetSerialServer" >Manifest3.txt
	jar -cfm CpnetSerialServer.jar Manifest3.txt \
		CpnetSerialServer*.class HostFileBdos*.class \
		NetworkServer.class CpnetServerConfig.class \
		ServerDispatch*.class \
		Diablo630Stream*.class -C temp2 .

CpnetSocketServer.jar: all temp2 CpnetSocketServer.class
	echo "Main-Class: CpnetSocketServer" >Manifest2.txt
	jar -cfm CpnetSocketServer.jar Manifest2.txt \
		CpnetSocketServer*.class HostFileBdos*.class \
		NetworkServer.class CpnetServerConfig.class \
		ServerDispatch*.class \
		Diablo630Stream*.class -C temp2 .

# NOTE: H89plugin.jar and Diablo630Embedded.jar both have SuffFile*.class,
# but currently identical versions.
temp: __FRC__
	mkdir -p temp
	rm -rf temp/*
	mkdir -p temp/docs
	./mkAbout >temp/docs/About.html
	cp www/*.html temp/docs/
	cp www/Z90.png www/z67ide.png temp/docs/
	cd temp; jar -xf ../z80cpu/z80core.jar
	rm -rf temp/META-INF
	cd temp; jar -xf ../h19-sim/H89plugin.jar
	rm -rf temp/META-INF
	cd temp; jar -xf ../diablo630/Diablo630Embedded.jar
	rm -rf temp/META-INF

temp2: __FRC__
	mkdir -p temp2
	rm -rf temp2/*
	cd temp2; jar -xf ../diablo630/Diablo630Embedded.jar
	rm -rf temp2/META-INF

h19-sim/H89plugin.jar:
	make -C h19-sim H89plugin.jar

z80cpu/z80core.jar:
	make -C z80cpu z80core.jar

diablo630/Diablo630Embedded.jar:
	make -C diablo630 Diablo630Embedded.jar

v89.tgz: __FRC__
	cd ..; tar -czf v89/v89.tgz v89/Makefile v89/mkAbout \
		v89/LICENSE v89/README v89/INSTALL \
		v89/*.java v89/www/*.* cpmsrc util/*.java periph/diablo630/*.java \
		util/Makefile periph/diablo630/Makefile \
		docs/*.pdf util/makehelp.c util/getdiskdef.c

__FRC__:
