#
# Makefile for SPCL
#
###################################################
#
#   SPCL_HOME     (Required!) 
#
#   CLASSPATH    (Required!) it will be set up for
#                   you based on other vars here.
#
#   JAVA_HOME    (Required!) Must point at your Java 
#                   Development Kit installation.
#
##################################################
# Michael E. Locasto

SHELL = /bin/sh
JAVA_HOME = /usr/java/j2sdk1.4.1
SPCL_HOME = /home/michael/projects/spcl/spcl-0.1

CLASSPATH=$(SPCL_HOME)/lib/support/antlr.jar:$(SPCL_HOME)/classes/:$(SPCL_HOME)/lib/data.jar:$(SPCL_HOME)/lib/polc.jar:$(SPCL_HOME)/lib/pole.jar:$(SPCL_HOME)/lib/client.jar

SOURCE_PATH1=$(SPCL_HOME)/src/spcl/data/*.java
SOURCE_PATH2=$(SPCL_HOME)/src/spcl/compiler/*.java
SOURCE_PATH3=$(SPCL_HOME)/src/spcl/policyengine/*.java
SOURCE_PATH4=$(SPCL_HOME)/src/spcl/client/*.java

OUTPUT_DIR=$(SPCL_HOME)/docs/javadocs

JAVAC = $(JAVA_HOME)/bin/javac
JAVA = $(JAVA_HOME)/bin/java -server

#-------------------------------------------- MAKE commands

all:
	@echo 'nothing to do.'

javadoc:
	$(JAVA_HOME)/bin/javadoc -overview $(SPCL_HOME)/docs/overview.html -author -private -d $(OUTPUT_DIR) -classpath $(CLASSPATH) -sourcepath $(SOURCE_PATH1) $(SOURCE_PATH2) $(SOURCE_PATH3)

pe:

	$(JAVAC) -d $(SPCL_HOME)/classes/ -classpath $(CLASSPATH) $(SPCL_HOME)/src/spcl/policyengine/*.java
	$(JAVA_HOME)/bin/jar -cf pole.jar $(SPCL_HOME)/classes/spcl/policyengine/*.class
	@mv pole.jar $(SPCL_HOME)/lib

pec:

	$(JAVAC) -d $(SPCL_HOME)/classes/ -classpath $(CLASSPATH) $(SPCL_HOME)/src/spcl/client/*.java
	$(JAVA_HOME)/bin/jar -cf client.jar $(SPCL_HOME)/classes/spcl/client/*.class
	@mv client.jar $(SPCL_HOME)/lib

client:

	@$(JAVA_HOME)/bin/java -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.client.PolicyEngineClient

tests:
	$(JAVAC) -d $(SPCL_HOME)/classes/ -classpath $(CLASSPATH) $(SPCL_HOME)/src/*.java
	$(JAVA_HOME)/bin/jar -cf tests.jar $(SPCL_HOME)/classes/*.class
	@mv tests.jar $(SPCL_HOME)/lib

data:

	$(JAVAC) -d $(SPCL_HOME)/classes/ -classpath $(CLASSPATH) $(SPCL_HOME)/src/spcl/data/*.java
	$(JAVA_HOME)/bin/jar -cf data.jar $(SPCL_HOME)/classes/spcl/data/*.class
	@mv data.jar $(SPCL_HOME)/lib

server:
#	$(JAVA) -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.policyengine.PolicyEngineDriver -policy spcl.data.DefaultPolicyInstaller
#	@$(JAVA) -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.policyengine.PolicyEngineDriver -policy spcl.data.Test1PolicyInstaller
#	@$(JAVA) -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.policyengine.PolicyEngineDriver -policy spcl.data.thisZonemyPolicyInstaller
#	@$(JAVA) -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.policyengine.PolicyEngineDriver -policy TutorialProblemInstaller
#	@$(JAVA) -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.policyengine.PolicyEngineDriver -policy InternetWebsite_PolicyInstaller
#	@$(JAVA) -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.policyengine.PolicyEngineDriver -policy ManyTestsInstaller
	@$(JAVA) -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.policyengine.PolicyEngineDriver -policy CyclicReferenceInstaller

stop:
	$(JAVA_HOME)/bin/java -cp $(CLASSPATH) -Dspcl.home="$(SPCL_HOME)" spcl.policyengine.PolicyEngineDriver -stop


clean:
	@rm -f $(SPCL_HOME)/classes/spcl/policyengine/*.class
	@rm -f $(SPCL_HOME)/classes/spcl/data/*.class
	@rm -f $(SPCL_HOME)/classes/spcl/compiler/*.class
	@rm -f $(SPCL_HOME)/lib/pole.jar
	@rm -f $(SPCL_HOME)/lib/data.jar
	@rm -f $(SPCL_HOME)/lib/compiler.jar
	@echo 'Done.'
