
#CC  = javac -g
CC  = jikes -g +E +P
DOC = javadoc

.SUFFIXES: .java .class


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


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

BASE_DIR=JavaGroups

JAR=jar



CLASSFILES=Channel.class ChannelListener.class Message.class Event.class Header.class		\
           Transport.class View.class ViewId.class						\
	   MembershipListener.class MessageListener.class					\
	   Queue.class QueueClosed.class							\
	   ChannelNotConnected.class ChannelClosed.class					\
	   Suspected.class ChannelException.class						\
	   MethodCall.class MethodLookup.class MethodLookupClos.class MethodLookupJava.class	\
	   JChannel.class ChannelFactory.class JChannelFactory.class				\
	   EnsChannel.class EnsChannelFactory.class						\
	   Util.class Profiler.class List.class Stack.class					\
	   PullPushAdapter.class								\
	   Timeout.class DistributedHashtable.class						\
	   StateTransferInfo.class								\
	   Version.class									\
	   AckSenderWindow.class AckReceiverWindow.class					\
	   AckMcastSenderWindow.class AckMcastReceiverWindow.class				\
	   NakReceiverWindow.class								\
           BlockEvent.class SuspectEvent.class GetStateEvent.class SetStateEvent.class		\
	   RequestCorrelator.class MessageDispatcher.class					\
	   RpcDispatcher.class									\
           RspCollector.class RequestHandler.class						\
	   GroupRequest.class Rsp.class RspList.class						\
	   Scheduler.class ReusableThread.class ThreadPool.class				\
	   SchedulerListener.class								\
	   UpHandler.class Command.class Comparable.class					\
           SortedList.class \


This: $(CLASSFILES)
all: $(CLASSFILES) subdirs
allall: all demos tests 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/Demos/wb/*.class)
src: 
	@(cd .. ;\
	tar -cvf src.tar JavaGroups/*.java JavaGroups/Ensemble/*.java \
	            JavaGroups/JavaStack/*.java JavaGroups/JavaStack/Protocols/*.java)


demos:; @(cd Demos; make all)


tests:; @(cd Tests; make)

subdirs:
	@(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 JavaStack           ; make clean)
	@(cd JavaStack/Protocols ; make clean)
	@(cd Ensemble            ; make clean)
	@(cd Demos               ; make clean)
	@(cd Demos/Grid          ; make clean)
	@(cd Demos/Applet        ; make clean)
	@(cd Demos/wb            ; make clean)


TestFiles:
	@(cd Demos/wb            ; make)

wc:;
	wc -l *.java JavaStack/*.java JavaStack/Protocols/*.java\
              Ensemble/*.java


