DESCRIPTION := MIDP demo
VENDOR := jcomeau.com
MIDLET := Demo
APPNAME := $(shell echo $(MIDLET) | tr 'A-Z' 'a-z')
PACKAGE := $(shell grep '^package ' $(MIDLET).java | \
 tr ';' ' ' | awk '{print $$2}')
CLASSDIR := $(subst .,/,$(PACKAGE))
COMPILEDIR := $(shell echo $(CLASSDIR) | sed 's/[0-9a-z]\+/../g')
MIDPVERSION := 2.0
MIDPVER := $(subst .,,$(MIDPVERSION))
CLDCVERSION := 1.1
CLDCVER := $(subst .,,$(CLDCVERSION))
JAVAVER := 1.5.0_06
J2ME := /cygdrive/c/WTK22
J9 := /cygdrive/c/Program\ Files/IBM/WEME/571/PalmOS50/Tools/bin
PALMSDK := /cygdrive/c/Program\ Files/PalmSDK
T5SIM := $(PALMSDK)/Simulators/Tungsten_T5_Update_Simulator_Rel_Build_6
BOOTCLASSDIR := $(J2ME)/lib
MIDPCLASS := $(BOOTCLASSDIR)/midpapi$(MIDPVER).jar
CLDCCLASS := $(BOOTCLASSDIR)/cldcapi$(CLDCVER).jar
# add standard runtime jarfile so compiler can find NoClassDefFoundError
JRE := /cygdrive/c/Program\ Files/Java/jdk$(JAVAVER)/jre/lib/rt.jar
# if $(JRE) has comments it will cause an error;
# use jar x $(JRE) to extract it in /tmp/rt, and recreate it using 
# zip -r ../rt ., then rename it to /tmp/rt.jar
JRECLEAN := /tmp/rt.jar
BOOTCLASSPATH := $(MIDPCLASS):$(CLDCCLASS):$(JRECLEAN)
WINBOOTCLASSPATH := $(shell cygpath -pw $(BOOTCLASSPATH))
JAVAC := gcj -C --bootclasspath=$(BOOTCLASSPATH)
SOURCES := $(addprefix $(CLASSDIR)/, $(wildcard *.java))
EMULATOR := $(J2ME)/bin/emulator
export
classes: *.java
	mkdir -p tmp
	cd $(COMPILEDIR) && $(JAVAC) -d $(CLASSDIR)/tmp $(SOURCES)
	cd $(COMPILEDIR) && $(J2ME)/bin/preverify \
	 -classpath "$(WINBOOTCLASSPATH)" \
	 -d $(CLASSDIR) $(CLASSDIR)/tmp
	touch $@
test: $(APPNAME).jad
	cd $(COMPILEDIR) && \
	 $(EMULATOR) -Xdescriptor:$(CLASSDIR)/$(APPNAME).jad
checkenv:
	set
%: %.template
	template=$$(< $<) && \
	 eval "echo \"$$template\"" > $@
%.jad: %.jar MIDlet.jad.template
	JARSIZE=$$(wc -c "$<" | awk '{print $$1}') && \
	 JARNAME="$$(basename "$<")" && \
	 template=$$(< MIDlet.jad.template) && \
	 eval "echo \"$$template\"" > "$@"
$(APPNAME).jar: classes MANIFEST.MF
	jar cfm $(APPNAME).jar \
	 MANIFEST.MF $(CLASSDIR) \
	 # add any resources before this line
clean:
	rm -f *.jar *.jad classes MANIFEST.MF
	rm -rf tmp $(CLASSDIR)
%.test: $(APPNAME).jar
	@echo to change default args use: make ARGS=\"some new args\" $@
	java -classpath $(APPNAME).jar $(PACKAGE).$* "$$ARGS"
utils:
	$(J2ME)/bin/utils
ktoolbar:
	cp *.java $(J2ME)/apps/junio/src
	cp NoClassDefFoundError.java.wtk \
	 $(J2ME)/apps/junio/src/NoClassDefFoundError.java
	$(J2ME)/bin/ktoolbar
%.prc:	%.jad $(APPNAME)22x22.bmp $(APPNAME)15x9.bmp
	$(J9)/jartoprc \
	 -jad:$(APPNAME).jad \
	 -name:"$(DESCRIPTION)" \
	 -id:ICTX \
	 -lgicon:$(APPNAME)22x22.bmp \
	 -smicon:$(APPNAME)15x9.bmp \
	 -highRes \
	 ;
	mv -f "$(DESCRIPTION).prc" "$@"
deploy: $(APPNAME).prc
	scp $? www.jcomeau.com:www/www/products/testing/
	touch $@
t5sim:	$(APPNAME).prc
	$ cp -f $? $(T5SIM)/AutoLoad/
	cd $(T5SIM) && PalmSim.exe
t5errors:
	cat $(T5SIM)/j9stderr.txt
t5clean:
	rm $(T5SIM)/j9std*.txt
