#
#  SSF.App.Worm Makefile
#

SHELL = /bin/sh


RELEASE = 0.4

#----------------------------------------------------------- SETUP

TOPDIR = ../../../..
include $(TOPDIR)/Makefile.common

JAVAC = javac $(JAVAC_FLAGS) -classpath $(SSFNET_TEST_CLASSPATH):$(PTII)
JAVA  = java  -classpath $(SSFNET_TEST_CLASSPATH)

# files
SOURCES = WormProtocolSession.java EpidemicModel.java

OTHER_FILES = Makefile package.html README \
	      doc-files/abstraction_levels.fig \
	      test/singleHost.dml test/campusUnderAttack.dml \
	      test/testplot.pl test/plotDataExtr.pl test/worm.gnuplot

CLASSES = $(SOURCES:.java=.class)

# build flags
USERCFLAGS = -g

# general targets

#----------------------------------------------------------- MAKE ALL


.PHONY : all
all :	code

.PHONY : code
code :	$(CLASSES)
	@echo "---------- SSF.App.Worm package built -----------------------"

# classes

WormProtocolSession.class:	WormProtocolSession.java
	@echo ">>> building SSF.App.Worm package..."
	$(JAVAC) $(USERCFLAGS) WormProtocolSession.java

EpidemicModel.class:	EpidemicModel.java
	$(JAVAC) $(USERCFLAGS) EpidemicModel.java


#----------------------------------------------------------- MAKE JAVADOC

.PHONY : javadoc
javadoc: $(SOURCES)
	@echo ">>> making java documentation..."
	@if [ -d ./doc ]; then echo "./doc exists"; else echo "creating ./doc"; mkdir ./doc; fi
	javadoc -d ./doc -classpath $(SSFNET_TEST_CLASSPATH):$(PTII) $(SOURCES)
	@echo 'done.'



#----------------------------------------------------------- MAKE TESTS

# no tests implemented
tests:
#	(cd test; $(MAKE))

#----------------------------------------------------------- MAKE CLEAN

.PHONY : clean
clean:
	@rm -f *.class test/*.txt test/test.out test/test.png
	@echo 'Done.'

#----------------------------------------------------------- MAKE SPOTLESS

spotless:
	@find . \( -name "*.class" -o -name ".*~" -o -name "*~" \) -exec rm -f {} \;
	@rm -rf doc/javadoc/*
	@echo 'Done.'

#----------------------------------------------------------- MAKE RELEASE

# mark all current versions as one consistent release
# usage: make release NAME=<symbolic name>

.PHONY : release
release:
	@echo "Making release with name: $(NAME)"
	rcs -n$(NAME): $(SOURCES) $(OTHER_FILES)


#----------------------------------------------------------- MAKE GETCODEBASE

# retrieve sources from RCS repository

.PHONY : getcodebase
getcodebase:
	@echo "Retrieving sources"
	co $(SOURCES)


#----------------------------------------------------------- MAKE TARBALL

# retrieve sources from RCS repository

.PHONY : tarball
tarball:
	@echo "Creating release tarball in directory .."
	cd ..; tar -zcvf worm$(RELEASE).tgz Worm/README Worm/*.java Worm/Makefile Worm/*.html Worm/doc-files Worm/test
	@ # perhaps use variable lists defined above instead?



#  $Id: Makefile,v 1.5 2003/02/12 22:36:31 mili Exp $
