# settings set automatically by the configure script.
CONFIG_ARCH=@TAUARCH@
TAUROOT=@TAUROOT@


# these are classpaths for the build.  The second classpath is for the 
# src/edu/uoregon/tau/dms/loader directory.  The first is for everything else.
CLASSPATH=./classes
LOADER_CLASSPATH=$(CLASSPATH):../contrib/jargs.jar:../contrib/xerces.jar

# These are class and source targets.
DOC_PATH=./doc
SRC_PATH=./src/edu/uoregon/tau
DATABASE_SOURCES=$(wildcard $(SRC_PATH)/dms/database/*.java)
LOADER_SOURCES=$(wildcard $(SRC_PATH)/dms/loader/*.java)
DSS_SOURCES=$(wildcard $(SRC_PATH)/dms/dss/*.java)
ANALYSIS_SOURCES=$(wildcard $(SRC_PATH)/dms/analysis/*.java)
EXAMPLE_CLASSES=./src/examples/*.class
EXAMPLE_SOURCES=./src/examples/*.java


SOURCES = $(DATABASE_SOURCES) $(DSS_SOURCES) $(LOADER_SOURCES) $(ANALYSIS_SOURCES)
CLASSES = $(subst ./src/, ./classes/, $(patsubst %.java, %.class, $(SOURCES)))



default: dms.jar 


all: dms.jar javadoc rebuilddb buildtest simple

#./classes/%.class : ./src/%.java
#	javac -d $(CLASSPATH) -classpath $(CLASSPATH) $<

dms.jar: $(SOURCES)
	javac -d $(CLASSPATH) -classpath $(LOADER_CLASSPATH) $(SOURCES)
	jar -cvf dms.jar -C classes .
	cp dms.jar $(TAUROOT)/$(CONFIG_ARCH)/lib/dms.jar

#dms.jar: $(DATABASE_CLASSES) $(DSS_CLASSES) $(LOADER_CLASSES) $(ANALYSIS_CLASSES)
#	jar -cvf dms.jar -C classes .

install:
	cp dms.jar $(TAUROOT)/$(CONFIG_ARCH)/lib/dms.jar

# $(DATABASE_CLASSES): $(DATABASE_SOURCES)
# 	javac -d $(CLASSPATH) -classpath $(CLASSPATH) $(DATABASE_SOURCES)

# $(LOADER_CLASSES): $(LOADER_SOURCES) $(DSS_CLASSES)
# 	javac -d $(CLASSPATH) -classpath $(LOADER_CLASSPATH) $(LOADER_SOURCES)

# $(DSS_CLASSES): $(DSS_SOURCES) $(DATABASE_CLASSES)
# 	javac -d $(CLASSPATH) -classpath $(CLASSPATH) $(DSS_SOURCES)

# $(ANALYSIS_CLASSES): $(ANALYSIS_SOURCES) $(DSS_CLASSES)
# 	javac -d $(CLASSPATH) -classpath $(CLASSPATH) $(ANALYSIS_SOURCES)


$(EXAMPLE_CLASSES): dms.jar $(EXAMPLE_SOURCES)
	javac -d $(CLASSPATH) -classpath dms.jar $(EXAMPLE_SOURCES)

javadoc: dms.jar $(SRC_PATH)/dms/dss/package.html
	javadoc -d $(DOC_PATH) -classpath $(CLASSPATH) $(DSS_SOURCES) $(ANALYSIS_SOURCES)

# these are maintenance targets.

clean:
	rm -rf dms.jar ./classes/edu ./classes/examples ./doc/[a-z]*

remake: clean all

# These targets are all for testing purposes.

buildtest: $(EXAMPLE_CLASSES)
	./src/examples/testBuild

simple: $(EXAMPLE_CLASSES)
	./src/examples/testSimpleExample

scalability: $(EXAMPLE_CLASSES)
	./src/examples/testScalabilityExample

copytest: $(EXAMPLE_CLASSES)
	./src/examples/testCopy

simple.db2: $(EXAMPLE_CLASSES)
	./src/examples/testSimpleExample.db2

buildtest.db2: $(EXAMPLE_CLASSES)
	./src/examples/testBuild.db2

testdelete: $(EXAMPLE_CLASSES)
	./src/examples/testDelete

testsave: $(EXAMPLE_CLASSES)
	./src/examples/testSave

analysis: $(EXAMPLE_CLASSES)
	./src/examples/testAnalysis

rebuilddb: dms.jar
	dropdb perfdmf_buildtest
	createdb perfdmf_buildtest
	perfdmf_loadschema
	perfdmf_loadapp -x data/App_Info.xml
	perfdmf_loadexp -x data/Exp_Info.xml -a 1
	perfdmf_loadtrial -e 1 -f pprof -s data/pprof.dat -n Test

rebuilddb_and_test: rebuilddb simple buildtest
