# $Id: Makefile,v 1.42.4.4.2.1 2003/05/21 19:54:45 amphibian Exp $

SHELL ?= /bin/sh
RELEASE_NAME ?= `date +%Y%m%d`
JAR ?= jar

#
# define build targets
#

GATEWAY:=freenet/client/http/gateway.html

CLIENT:=freenet/client/*.java \
	freenet/client/cli/*.java

FPROXY:=freenet/client/http/*.java \
	freenet/client/http/filter/*.java \
	freenet/support/StripedBucketArray.java

TOOLS:=freenet/interfaces/TerminalService.java \
       freenet/interfaces/servlet/TestHttpServlet.java \
       freenet/node/NodeConsole.java \
       freenet/fs/dir/FSConsole.java \
       freenet/node/ds/DSConsole.java \
       freenet/node/FSTool.java

NODE:=freenet/node/Main.java \
      freenet/interfaces/servlet/SingleHttpServletContainer.java \
      freenet/interfaces/servlet/MultipleHttpServletContainer.java \
      freenet/node/http/DiagnosticsServlet.java \
      freenet/node/http/DistributionServlet.java \
      freenet/node/http/NodeInfoServlet.java \
      freenet/node/http/BookmarkManagerServlet.java

TESTS:=freenet/crypt/CryptTest.java \
       freenet/diagnostics/DiagnosticsTest.java \
       freenet/support/sort/SortTest.java \
       freenet/support/test/FieldsTest.java \
       freenet/support/test/HeapTest.java \
       freenet/support/test/KeyListTest.java \
       freenet/support/test/RedBlackTreeTest.java \
       freenet/support/test/BoyerMooreTest.java \
       freenet/support/test/URLDecoderTest.java \
       freenet/node/http/DistributionTest.java

#
# detect java compiler
#

JAVAC_OPTS:=-sourcepath src -d build $(JAVAC_OPTS)

ifndef JAVAC
    JAVAC:=$(shell if which jikes >/dev/null; \
		       then echo jikes; \
		       else if which kaffe >/dev/null; \
			   then echo kaffe at/dms/kjc/Main; \
			   else echo javac; \
		       fi \
		   fi)
endif

ifeq ($(shell test -f lib/freenet-ext.jar && echo yes), yes)
    ifeq ($(JAVAC), jikes)
	JAVAC_OPTS:=-bootclasspath lib/freenet-ext.jar $(JAVAC_OPTS)
    else
	JAVAC_OPTS:=-classpath lib/freenet-ext.jar $(JAVAC_OPTS)
    endif
endif


# set JAVA to java2 to compile without 1.1 compatability
ifneq ($(JAVA), java2)
ifeq ($(JAVAC), javac)
	JAVAC_OPTS:=$(shell java -version 2>&1 | grep '1\.1' >/dev/null \
		      || echo -target 1.1) \
		      $(JAVAC_OPTS)
endif		
else
#  JAVAC_OPTS:=-deprecation $(JAVAC_OPTS)
endif

#
# targets
#

all: client fproxy tools node

clean:
	rm -rf lib/freenet.jar build/freenet binfred *.o

realclean: clean
	rm -rf lib build tgz node_* store_* seednodes.ref freenet.log java gnu

check: tests
	scripts/test.sh

lib:
	mkdir lib

build:
	mkdir build

#build/$(GATEWAY): src/$(GATEWAY)
#	mkdir -p $(dir $@)
#	cp $< $@

#
# download targets
#

getlibs: lib
	rm -f lib/freenet-ext.jar
	cd lib; wget http://freenetproject.org/snapshots/freenet-ext.jar

getseeds:
	rm -f seednodes.ref
	wget http://freenetproject.org/snapshots/seednodes.ref

#
# dist targets
#

jar: all lib
	cd build; \
	$(JAR) -cmf ../src/node.manifest ../lib/freenet.jar freenet

tgz: jar
	mkdir -p tgz/freenet-$(RELEASE_NAME)
	cp -R lib tgz/freenet-$(RELEASE_NAME)
	cp start-freenet*.sh stop-freenet.sh scripts/preconfig.sh README tgz/freenet-$(RELEASE_NAME)
	if test -f seednodes.ref; then cp seednodes.ref tgz/freenet-$(RELEASE_NAME); fi
	cd tgz ;\
	tar c freenet-$(RELEASE_NAME) | gzip > ../freenet-$(RELEASE_NAME).tgz
	rm -rf tgz/freenet-$(RELEASE_NAME)

#rpm: jar
#	mkdir -p rpm/BUILD rpm/RPMS
#	java -cp lib/freenet.jar freenet.config.Setup --silent fred.conf.in
#	sed 's/^storePath=.*$/storePath=\/var\/spool\/fred/;\
#	     s/^logFile=.*$/logFile=\/var\/log\/fred/'\
#	     fred.conf.in > rpm/fred.conf
#	rm fred.conf.in
#	echo "%_topdir rpm" > rpm/.rpmmacros
#	HOME=rpm rpm -bb --target=noarch rpm/fred.spec
#	mv rpm/RPMS/noarch/fred*.noarch.rpm .
#	rm -rf rpm/BUILD rpm/RPMS rpm/.rpmmacros

# TARGET gcj 
# compiles a binary fred (named binfred) from bytecode freenet.jar

gcj: binfred

binfred: jar
	CLASSPATH=lib/freenet-ext.jar \
	gcj --main=freenet.node.Main \
		-o binfred \
		lib/freenet.jar \
		lib/freenet-ext.jar

#
# compilation targets
#

client fproxy tools node tests:: build

#fproxy:: build/$(GATEWAY)


client:: $(CLIENT)
	$(JAVAC) $(JAVAC_OPTS) $(addprefix src/,$^)

fproxy:: $(FPROXY)
	$(JAVAC) $(JAVAC_OPTS) $(addprefix src/,$^)
	test -d build/freenet/node/http/templates || mkdir -p build/freenet/node/http/templates
	cp -r src/freenet/node/http/templates build/freenet/node/http/

tools:: $(TOOLS)
	$(JAVAC) $(JAVAC_OPTS) $(addprefix src/,$^)

node:: $(NODE)
	$(JAVAC) $(JAVAC_OPTS) $(addprefix src/,$^)

tests:: $(TESTS)
	$(JAVAC) $(JAVAC_OPTS) $(addprefix src/,$^)


%.java:
	


.PHONY: all clean check getlibs getseeds jar tgz \
	client fproxy tools node tests %.java



