# PSYCServer uses urls without tilde.. wrong!
#UNI = psyc://localhost/lynx
# the standard way, according to http://psyc.pages.de/storage
UNI = `cat ~/.psyc/me`
# testing with a local muve.. muve on localhost has buggy UNI checking
#UNI = psyc://localhost/~lynx
#UNI = psyc://`psycip`/~lynX

.SUFFIXES: .pava .java .class

INDENT_BACKUP_SUFFIX = .noIndent
INDENT_OPTIONS = -cjc

# my "java" no longer checks recursively for all classes to be up to date, so
# here's a quick manual hack for dependencies
DEP = lava/net/mmp/MMPTCPDispatcher.class lava/net/mmp/MMPUDPDispatcher.class lava/net/mmp/MMPOutput.class
#DEP = ""

.java.class:
	CLASSPATH=../swing.jar:. javac $*.java

default: $(DEP) Psychedelic.class
	CLASSPATH=../swing.jar:. java Psychedelic $(UNI)

server: $(DEP) PSYCServer.class PSYCPlace.class PSYCUser.class
	CLASSPATH=../swing.jar:. java PSYCServer $(UNI)

.methods.new:
	bin/rmeth lava/* chat/* *.java | sort >$@

all: classes docs

classes: clean_class
	javac *.java

docs: doc

doc: clean_docs
	find lava chat -name \*.java -print | sed -e 's%^\(.*\)/[^/]*$$%\1%' | \
		sort -u | sed -e 's%/%.%g' | xargs javadoc -d docs
	cp docs-template/PSYCLibUsage.html docs/index.html

clean: clean_docs clean_class clean_archive

clean_docs:
	rm -f docs/*.html

clean_class:
	find . -name \*.class -print | xargs rm -f

clean_archive:
	rm -f psyc.tar psyc.tar.gz psycdist.tar.gz

archive: tar

tar: clean
	tar cvf psyc.tar [MP]* server.config psycmailnotify.pl lava chat docs docs-template swing.jar
	gzip psyc.tar

distarchive: disttar

dist: ../psyc.zip
	(cd ..;tar cvf jaPSYC.tar jaPSYC;gzip -9 jaPSYC.tar)

# find . -name \*.class -print | xargs jar -cfv0 ../psyc.jar
../psyc.jar: Psychedelic.class
	-rm -r ../psyc
	bin/wrapup
	(cd ../psyc;jar -cfv ../psyc.jar *)

../psyc.zip: ../psyc.jar
	zip -9j ../psyc.zip ../psyc.jar ../psyc/Psychedelic.class README.txt

public: ../psyc.zip
	scp ../psyc.zip psyc.pages.de:pages/psyc/download

disttar:
	# classes docs clean_archive
	tar cvf ../jaPSYC.tar PSYCProxy*.java PSYCBiff*.java PSYCBiff*.html
	tar uvf ../jaPSYC.tar PSYCProxy*.class PSYCBiff*.class
	tar uvf ../jaPSYC.tar PSYCBiff*.pics Psychedel*
	tar uvf ../jaPSYC.tar lava docs
	# find lava -name \*.class -print | xargs tar uvf ../jaPSYC.tar
	# find docs -type f -print | xargs tar uvf ../jaPSYC.tar
	gzip -9 ../jaPSYC.tar

docarchive: doctar

doctar: clean doc
	tar cvf psyc.tar [MP]* lava chat docs
	gzip psyc.tar

indent:
	for i in `find *.java lava chat -name \*.java -print`; do\
		echo "Indenting $$i...";\
		mv $$i $$i$(INDENT_BACKUP_SUFFIX);\
		chmod a=r $$i$(INDENT_BACKUP_SUFFIX);\
		java -mx64m Jindent $(INDENT_OPTIONS) $$i$(INDENT_BACKUP_SUFFIX) > $$i;\
	done

unindent:
	for i in \
		`find *$(INDENT_BACKUP_SUFFIX) lava chat -name \*$(INDENT_BACKUP_SUFFIX)\
			-print`; do\
		echo "Restoring $$i...";\
		name=`echo $$i | sed -e 's/$(INDENT_BACKUP_SUFFIX)$$//'`;\
		mv $$i $$name;\
		chmod a=r,u+w $$name;\
	done

stats:
	wc chat/*.java lava/net/*/*.java lava/net/psyc/packages/*.java

