JRE = C:/java/jdk/jre
WTK = C:/java/sesdk/PC_Emulation/WTK2

JAVAC = javac -source 1.2 -d .
#JAVAC = gcj -C -d .
JAR = jar
JAVADOC = javadoc
PP = cpp -C -P -I..
PERL = perl
XASM = xasm -q
RM = rm -f
RMR = rm -rf
ME_CLASSES = ${WTK}/lib/cldcapi11.jar;${WTK}/lib/midpapi20.jar;${WTK}/lib/jsr75.jar
PREVERIFY = ${WTK}/bin/preverify1.1
ME_EMU = ${WTK}/bin/emulatorw -gui

COMMON_C = ../asap.c ../acpu.c ../apokeysnd.c
COMMON_H = ../asap.h ../asap_internal.h
PLAYERS_OBX = net/sf/asap/cmc.obx net/sf/asap/mpt.obx net/sf/asap/rmt4.obx net/sf/asap/rmt8.obx net/sf/asap/tmc.obx net/sf/asap/tm2.obx

all: asap2wav.jar asap_applet.jar asap_midlet.jad

asap2wav.jar: asap2wav.MF ASAP2WAV.class net/sf/asap/ASAP.class ${PLAYERS_OBX}
	${JAR} cfm $@ asap2wav.MF ASAP2WAV.class net/sf/asap

ASAP2WAV.class: ASAP2WAV.java net/sf/asap/ASAP.class ${PLAYERS_OBX}
	${JAVAC} -classpath . ASAP2WAV.java

asap_applet.jar: ASAPApplet.class net/sf/asap/ASAP.class \
	net/sf/asap/ASAP_ModuleInfo.class net/sf/asap/ASAP_State.class net/sf/asap/PokeyState.class ${PLAYERS_OBX}
	${JAR} cf $@ ASAPApplet.class net/sf/asap

ASAPApplet.class: ASAPApplet.java net/sf/asap/ASAP.class
	${JAVAC} -classpath "${JRE}/lib/plugin.jar;." ASAPApplet.java

emu: asap_midlet.jad
	${ME_EMU} -Xdescriptor:asap_midlet.jad

asap_midlet.jad: asap_midlet.jar asap_midlet.MF
	${PERL} mf2jad.pl asap_midlet

asap_midlet.jar: asap_midlet.MF preverified/ASAPMIDlet.class ${PLAYERS_OBX}
	${JAR} cfm $@ asap_midlet.MF -C preverified . ${PLAYERS_OBX}

preverified/ASAPMIDlet.class: ASAPMIDlet.class net/sf/asap/ASAP.class net/sf/asap/ASAP_ModuleInfo.class
	${PREVERIFY} -classpath "${ME_CLASSES};." -d preverified ASAPMIDlet FileList ASAPInputStream net.sf.asap.ASAP net.sf.asap.ASAP_ModuleInfo net.sf.asap.ASAP_State net.sf.asap.PokeyState

ASAPMIDlet.class: ASAPMIDlet.java net/sf/asap/ASAP.class
	${JAVAC} -classpath . -bootclasspath "${ME_CLASSES}" ASAPMIDlet.java

net/sf/asap/ASAP.class: ASAP.java net/sf/asap/ASAP_ModuleInfo.class
	${JAVAC} -classpath . ASAP.java

ASAP.java: ASAP.ppjava ${COMMON_C} ${COMMON_H}
	${PP} ASAP.ppjava > ASAP.java

net/sf/asap/ASAP_ModuleInfo.class: ASAP_ModuleInfo.java
	${JAVAC} -classpath . ASAP_ModuleInfo.java

net/sf/asap/cmc.obx: ../players/cmc.asx
	${XASM} -o $@ ../players/cmc.asx

net/sf/asap/mpt.obx: ../players/mpt.asx
	${XASM} -o $@ ../players/mpt.asx

net/sf/asap/rmt4.obx: ../players/rmt.asx
	${XASM} -d STEREOMODE=0 -o $@ ../players/rmt.asx

net/sf/asap/rmt8.obx: ../players/rmt.asx
	${XASM} -d STEREOMODE=1 -o $@ ../players/rmt.asx

net/sf/asap/tmc.obx: ../players/tmc.asx
	${XASM} -o $@ ../players/tmc.asx

net/sf/asap/tm2.obx: ../players/tm2.asx
	${XASM} -o $@ ../players/tm2.asx

doc: ASAP.java ASAP_ModuleInfo.java
	${JAVADOC} -d doc ASAP.java ASAP_ModuleInfo.java

clean:
	${RM} asap2wav.jar asap_applet.jar asap_midlet.jar asap_midlet.jad *.class ASAP.java
	${RMR} net preverified doc
