#OJC = ojc -compile=JikesCompiler
OJC = ojc 
JAVAC = javac
#JAVAC = jikes
JAVADOC = javadoc
RMIC = java -cp $(HOME)/aux_work/mChaRM:$(HOME)/aux_work/mChaRM/mChaRM:/usr/local/exts/jp-karmi-1.05b/jar/jpc.jar:/usr/local/exts/jp-karmi-1.05b/jar/jp.jar:/usr/local/exts/jp-karmi-1.05b/jar/karmi.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar gjc.v6.KaRMIc
MAKE = make
BASEDIR = $(PWD)

all: package base-level packagedoc #doc

doc: 
	if test ! -d doc; then mkdir doc; fi
	$(JAVADOC) -use -d doc -package -windowtitle "mChaRM Examples" -author -version *.java

package:
	cd $(BASEDIR)/RMI; $(MAKE) -f $(BASEDIR)/RMI/Makefile package ;
	cd $(BASEDIR)/multichannel; $(MAKE) -f $(BASEDIR)/multichannel/Makefile package ;
	cd $(BASEDIR)/MOP; $(MAKE) -f $(BASEDIR)/MOP/Makefile mop
	cd $(BASEDIR)/PremChaRM; $(MAKE) -f $(BASEDIR)/PremChaRM/Makefile 
	cd $(BASEDIR)/time_constraint/time; $(MAKE) -f $(BASEDIR)/time_constraint/time/Makefile all ;
	cd $(BASEDIR)/time_constraint/constr_eval; $(MAKE) -f $(BASEDIR)/time_constraint/constr_eval/Makefile all ;
	cd $(BASEDIR)/mChaRMCollection; $(MAKE) -f $(BASEDIR)/mChaRMCollection/Makefile all

packagedoc: 
	if test ! -d packagedoc; then mkdir packagedoc; fi ;
	if test -f $(BASEDIR)/MOP/*OJMI.java; then rm $(BASEDIR)/MOP/*OJMI.java ; fi ;
	$(JAVADOC) -use -d packagedoc -package -link http://www.hlla.is.tsukuba.ac.jp/~mich/openjava/htdocs \
	-windowtitle "mChaRM Framework" -author -version time_constraint.time time_constraint.constr_eval \
	mChaRM.multichannel mChaRM.mChaRMCollection mChaRM.PremChaRM mChaRM.MOP

base-level: receiverInterface.class mainNormalChannel.class mainRMPChannel.class mainVerboseChannel.class mutantSenderStub.class mutantChannel.class mainMutantChannel.class mainValidationChannel.class sender.class receiver.class RMPReceiver.class RMPSender.class receiverInterface1.class sender1A.class sender1B.class receiver1.class

mainNormalChannel.class: mainNormalChannel.java
	$(JAVAC) mainNormalChannel.java
	
mainVerboseChannel.class: mainVerboseChannel.java 
	$(JAVAC) $?

mainRMPChannel.class: mainRMPChannel.java
	$(JAVAC) mainRMPChannel.java
	
mainValidationChannel.class: mainValidationChannel.java
	$(JAVAC) $<
	
mainMutantChannel.class: mainMutantChannel.java mutantSenderStub.class mutantChannel.class
	$(JAVAC) $<
			
receiverInterface.class: receiverInterface.java
	$(JAVAC) $<

receiverInterface1.class: receiverInterface1.java
	$(JAVAC) $<

receiver.class: receiver.oj
	$(OJC) $<
	$(RMIC) receiver

sender.class: sender.oj
	$(OJC) $<

sender1A.class: sender1A.oj
	$(OJC) $<

sender1B.class: sender1B.oj
	$(OJC) $<

receiver1.class: receiver1.oj
	$(OJC) $<
	$(RMIC) receiver1

RMPReceiver.class: RMPReceiverInterface.java RMPReceiver.oj
	$(JAVAC) RMPReceiverInterface.java
	$(OJC) RMPReceiver.oj
	$(RMIC) RMPReceiver

RMPSender.class: RMPSender.oj
	$(OJC) $<
	$(RMIC) RMPSender

mutantChannel.class: mutantChannel.java mutantSenderStub.class
	$(JAVAC) $<
	$(RMIC) mutantChannel

mutantSenderStub.class: mutantSenderStub.java
	$(JAVAC) $?
	$(RMIC) mutantSenderStub

clean:
	rm -f *.class *KSkel.java *KStub.java *OJMI.java sender.java receiver.java RMPSender.java RMPReceiver.java sender1A.java receiver1.java sender1B.java;
	rm -fr doc packagedoc;
	cd $(BASEDIR)/multichannel; $(MAKE) -f $(BASEDIR)/multichannel/Makefile clean ;
	cd $(BASEDIR)/mChaRMCollection; $(MAKE) -f $(BASEDIR)/mChaRMCollection/Makefile clean ;
	cd $(BASEDIR)/MOP; $(MAKE) -f $(BASEDIR)/MOP/Makefile clean 
	cd $(BASEDIR)/PremChaRM; $(MAKE) -f $(BASEDIR)/PremChaRM/Makefile clean 
	cd $(BASEDIR)/RMI; $(MAKE) -f $(BASEDIR)/RMI/Makefile clean 
	cd $(BASEDIR)/time_constraint/time; $(MAKE) -f $(BASEDIR)/time_constraint/time/Makefile clean ;
	cd $(BASEDIR)/time_constraint/constr_eval; $(MAKE) -f $(BASEDIR)/time_constraint/constr_eval/Makefile clean ;

build: clean all
