
CC  = javac -g
DOC = javadoc

.SUFFIXES: .java .class


.java.class:; $(CC) $< && chmod +x $@


PACKAGES=JavaGroups JavaGroups.Ensemble JavaGroups.algorithms\
	 JavaGroups.JavaStack JavaGroups.JavaStack.Protocols

BASE_DIR=JavaGroups

JAR=jar



CLASSFILES=Channel.class Message.class MembershipListener.class\
	   EnsChannel.class MessageListener.class Transportable.class\
	   SyncCall.class Queue.class MessageCorrelator.class QueueClosed.class\
	   NotConnected.class Demux.class PullPushAdapter.class Dispatcher.class\
	   MethodCall.class RemoteMethodCall.class MethodInvoker.class ChannelEntry.class\
	   LazyEvaluator.class Header.class Promise.class JChannel.class Conf.class\
	   ChannelFactory.class EnsChannelFactory.class JChannelFactory.class\
	   Util.class Profiler.class MethodLookup.class MethodLookupClos.class\
	   MethodLookupJava.class TimeoutException.class DistributedHashtable.class\
	   RepeatedUnicast.class Timer.class Command.class SlidingWindow.class\
	   Version.class






this: $(CLASSFILES)
all: $(CLASSFILES) subdirs documentation
ibus: IbusChannel.class IbusChannelFactory.class
JavaGroups.jar: $(CLASSFILES) TestFiles subdirs ibus
	@(cd .. ;\
	$(JAR) -cvf JavaGroups.jar JavaGroups/*.class JavaGroups/Ensemble/*.class \
	            JavaGroups/JavaStack/*.class JavaGroups/JavaStack/Protocols/*.class\
	            JavaGroups/algorithms/*.class JavaGroups/Tests/wb/*.class)
src: 
	@(cd .. ;\
	tar -cvf src.tar JavaGroups/*.java JavaGroups/Ensemble/*.java \
	            JavaGroups/JavaStack/*.java JavaGroups/JavaStack/Protocols/*.java\
	            JavaGroups/algorithms/*.java)


demos:; @(cd Tests; make all)

subdirs:
	@(cd algorithms          ; make)
	@(cd JavaStack           ; make)
	@(cd JavaStack/Protocols ; make)
	@(cd Ensemble            ; make)




documentation:
	$(DOC) -d doc -author -version -public $(PACKAGES)


clean: 
	@rm -f ./doc/*.html ./doc/html~ ./doc/*~ core *.class *.class~
	@(cd algorithms          ; make clean)
	@(cd JavaStack           ; make clean)
	@(cd JavaStack/Protocols ; make clean)
	@(cd Ensemble            ; make clean)
	@(cd tests               ; make clean)
	@(cd Tests               ; make clean)
	@(cd Tests/ColorDemo     ; make clean)
	@(cd Tests/Grid          ; make clean)
	@(cd Tests/GMS           ; make clean)
	@(cd Tests/Applet        ; make clean)
	@(cd Tests/wb            ; make clean)


TestFiles:
	@(cd Tests/wb            ; make)

wc:;
	wc -l *.java algorithms/*.java JavaStack/*.java JavaStack/Protocols/*.java


