R_HOME = /Library/Frameworks/R.framework/Versions/2.0.1/Resources
TAUROOT = /Users/khuck/tau2
CONFIG_ARCH = apple

##########################

OMEGAHAT_HOME = $(R_HOME)/library/SJava
CONFIGFILE = ${HOME}/.ParaProf/perfdmf.cfg
OMEGAHAT_JARPATH = ${OMEGAHAT_HOME}/org/omegahat/Jars
WEBSTART_DIR = /Library/WebServer/Documents/perfexplorer

WEKA_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/weka.jar
PERFDMF_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/dms.jar
XMLSAX_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/xerces.jar
JARGS_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/jargs.jar
JDBC_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/postgresql.jar
JOGL_JAR =${TAUROOT}/${CONFIG_ARCH}/lib/jogl.jar
JARGS_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/jargs.jar
PARAPROF_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/vis.jar
OMEGAHAT_JARS = ${OMEGAHAT_HOME}:${OMEGAHAT_JARPATH}/Environment.jar:${OMEGAHAT_JARPATH}/antlr.jar:${OMEGAHAT_JARPATH}/jas.jar:${OMEGAHAT_JARPATH}/jhall.jar
JFREECHART_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/jfreechart-0.9.21.jar
JCOMMON_JAR = ${TAUROOT}/${CONFIG_ARCH}/lib/jcommon-0.9.6.jar

CLIENT_DYLD_LIBRARY_PATH=${TAUROOT}/${CONFIG_ARCH}/lib
SERVER_DYLD_LIBRARY_PATH=${OMEGAHAT_HOME}/libs:${R_HOME}/lib:${R_HOME}/bin:${R_HOME}/library/SJava/libs

BUILD_CLASSPATH = classes:${PERFDMF_JAR}:${JOGL_JAR}:${PARAPROF_JAR}:${JARGS_JAR}
CLIENT_BUILD_CLASSPATH = classes:${PERFDMF_JAR}:${JFREECHART_JAR}:${JCOMMON_JAR}:${JOGL_JAR}:${PARAPROF_JAR}:${JARGS_JAR}
CLUSTERING_BUILD_CLASSPATH = classes:${PERFDMF_JAR}:${WEKA_JAR}
SERVER_BUILD_CLASSPATH = classes:${PERFDMF_JAR}:${OMEGAHAT_JARS}:${WEKA_JAR}:${JFREECHART_JAR}:${JCOMMON_JAR}:${JARGS_JAR}
CLIENT_RUN_CLASSPATH = classes:${PERFDMF_JAR}:${XMLSAX_JAR}:${JDBC_JAR}:${JFREECHART_JAR}:${JCOMMON_JAR}:${JOGL_JAR}:${PARAPROF_JAR}
SERVER_RUN_CLASSPATH = classes:${PERFDMF_JAR}:${XMLSAX_JAR}:${JDBC_JAR}:${OMEGAHAT_JARS}:${WEKA_JAR}:${JFREECHART_JAR}:${JCOMMON_JAR}
STANDALONE_RUN_CLASSPATH = classes:${PERFDMF_JAR}:${XMLSAX_JAR}:${JDBC_JAR}:${OMEGAHAT_JARS}:${JFREECHART_JAR}:${JCOMMON_JAR}:${WEKA_JAR}:${JOGL_JAR}:${PARAPROF_JAR}

COMMON_SOURCES = ${wildcard src/common/*.java}
CLUSTERING_SOURCES = ${wildcard src/clustering/*.java}
CLIENT_SOURCES = ${wildcard src/client/*.java}
SERVER_SOURCES = ${wildcard src/server/*.java}
SOURCES = ${COMMON_SOURCES} ${SERVER_SOURCES} ${CLIENT_SOURCES} ${CLUSTERING_SOURCES}

COMMON_CLASSES = ${subst src/, classes/, ${patsubst %.java, %.class, ${COMMON_SOURCES}}} 
CLUSTERING_CLASSES = ${subst src/, classes/, ${patsubst %.java, %.class, ${CLUSTERING_SOURCES}}} 
SERVER_CLASSES = ${subst src/, classes/, ${patsubst %.java, %.class, ${SERVER_SOURCES}}} 
CLIENT_CLASSES = ${subst src/, classes/, ${patsubst %.java, %.class, ${CLIENT_SOURCES}}} 
CLASSES = ${COMMON_CLASSES} ${SERVER_CLASSES} ${CLIENT_CLASSES} ${CLUSTERING_CLASSES}
RMIC_CLASSES = classes/server/PerfExplorerServer_Stub.class

default: perfexplorer.jar

###
### THESE COMMANDS ARE FOR COMPILING
###

# all: perfexplorer.jar

common: ${COMMON_CLASSES} server

clustering: ${CLUSTERING_CLASSES} server

server: ${SERVER_CLASSES} ${RMIC_CLASSES}

client: ${CLIENT_CLASSES} server

perfexplorer.jar: ${CLIENT_CLASSES} ${COMMON_CLASSES} ${CLUSTERING_CLASSES} ${SERVER_CLASSES} ${RMIC_CLASSES}
	jar -cvf perfexplorer.jar -C classes .
	cp perfexplorer.jar ${TAUROOT}/${CONFIG_ARCH}/lib/.

########################
# for the javac command, specify -target 1.3 for older java versions,
# otherwise specify -source 1.4 to enable assertions.
########################

${COMMON_CLASSES}: ${COMMON_SOURCES}
	mkdir -p classes
	javac -target 1.3 -classpath ${BUILD_CLASSPATH} -d classes ${COMMON_SOURCES}

${CLUSTERING_CLASSES}: ${CLUSTERING_SOURCES}
	javac -target 1.3 -classpath ${CLUSTERING_BUILD_CLASSPATH} -d classes ${CLUSTERING_SOURCES}

${SERVER_CLASSES}: ${SERVER_SOURCES} ${COMMON_CLASSES} ${CLUSTERING_CLASSES}
	javac -target 1.3 -classpath ${SERVER_BUILD_CLASSPATH} -d classes ${SERVER_SOURCES}

${CLIENT_CLASSES}: ${CLIENT_SOURCES} ${COMMON_CLASSES} ${SERVER_CLASSES}
	javac -target 1.3 -classpath ${CLIENT_BUILD_CLASSPATH} -d classes ${CLIENT_SOURCES}
	cp src/client/resources/*.gif classes/client/.

${RMIC_CLASSES}: ${SERVER_CLASSES}
	rmic -classpath ${SERVER_BUILD_CLASSPATH} -d classes server.PerfExplorerServer

###
### THESE COMMANDS ARE FOR CLEANING
###

cleanclient:
	rm -rf classes/client

cleanserver:
	rm -rf classes/server

cleancommon:
	rm -rf classes/common

cleanclustering:
	rm -rf classes/clustering

clean: cleanclient cleanserver cleancommon cleanclustering
	rm -f perfexplorer.jar
	rm -rf PerfExplorer-0.1/*.jar PerfExplorer-0.1/java.policy
	rm -f PerfExplorer-0.1.tgz
	rm -rf classes

remake: clean all

###
### THESE COMMANDS ARE FOR RUNNING/TESTING
###

testserver: server
	java -ea -cp ${SERVER_RUN_CLASSPATH} server.TestServer ${CONFIGFILE}

runserver: perfexplorer.jar
	perfexplorer -server

runclient: perfexplorer.jar
	perfexplorer -client

runstandalone: perfexplorer.jar
	perfexplorer

install: perfexplorer.jar
	rm -rf PerfExplorer-0.1/*.jar PerfExplorer-0.1/java.policy
	rm -f PerfExplorer-0.1.tgz
	cp perfexplorer.jar PerfExplorer-0.1/.
	cp ${PERFDMF_JAR} PerfExplorer-0.1/.
	cp ${XMLSAX_JAR} PerfExplorer-0.1/.
	cp ${JARGS_JAR} PerfExplorer-0.1/.
	cp ${JDBC_JAR} PerfExplorer-0.1/.
	cp ${JOGL_JAR} PerfExplorer-0.1/.
	cp ${PARAPROF_JAR} PerfExplorer-0.1/.
	cp ${JFREECHART_JAR} PerfExplorer-0.1/.
	cp ${JCOMMON_JAR} PerfExplorer-0.1/.
	cp ${WEKA_JAR} PerfExplorer-0.1/.
	cp ${OMEGAHAT_JARPATH}/Environment.jar PerfExplorer-0.1/.
	cp ${OMEGAHAT_JARPATH}/antlr.jar PerfExplorer-0.1/.
	cp ${OMEGAHAT_JARPATH}/jas.jar PerfExplorer-0.1/.
	cp ${OMEGAHAT_JARPATH}/jhall.jar PerfExplorer-0.1/.
	cp ${JFREECHART_JAR} PerfExplorer-0.1/.
	cp ${JCOMMON_JAR} PerfExplorer-0.1/.
	cp etc/java.policy PerfExplorer-0.1/.
	chmod 444 PerfExplorer-0.1/*.jar
	chmod 775 PerfExplorer-0.1/pe.sh
	tar -cvf PerfExplorer-0.1.tar PerfExplorer-0.1
	# cp PerfExplorer-0.1.tgz ~/tmp/.
	scp PerfExplorer-0.1.tar ix.cs.uoregon.edu:public_html/PerfExplorer-0.1.tar

webstart: perfexplorer.jar
	jarsigner -keystore /Users/khuck/myKeystore -storepass perfexplorer perfexplorer.jar khuck
	cp perfexplorer.jar ${WEBSTART_DIR}
	jarsigner -keystore /Users/khuck/myKeystore -storepass perfexplorer ${PERFDMF_JAR} khuck
	cp ${PERFDMF_JAR} ${WEBSTART_DIR}
	jarsigner -keystore /Users/khuck/myKeystore -storepass perfexplorer ${JARGS_JAR} khuck
	cp ${JARGS_JAR} ${WEBSTART_DIR}
	jarsigner -keystore /Users/khuck/myKeystore -storepass perfexplorer ${JOGL_JAR} khuck
	cp ${JOGL_JAR} ${WEBSTART_DIR}
	jarsigner -keystore /Users/khuck/myKeystore -storepass perfexplorer ${PARAPROF_JAR} khuck
	cp ${PARAPROF_JAR} ${WEBSTART_DIR}
	jarsigner -keystore /Users/khuck/myKeystore -storepass perfexplorer ${JFREECHART_JAR} khuck
	cp ${JFREECHART_JAR} ${WEBSTART_DIR}
	jarsigner -keystore /Users/khuck/myKeystore -storepass perfexplorer ${JCOMMON_JAR} khuck
	cp ${JCOMMON_JAR} ${WEBSTART_DIR}
	cp etc/java.policy ${WEBSTART_DIR}
	chmod 755 ${WEBSTART_DIR}/*.jar

###
### END
###
