#
# Written by Bradley Huffaker
# Goal: To help comply the Otter Code

##############################################
# # # #      User Defined varialbes    # # # #
##############################################
#  This should point to classes.zip
#CLASSES_ZIP=/usr/local/jdk1.2/lib/classes.zip
#   This should point to java bin directory
#   This must be java1.1.  Otter will currently
#   not complie under java1.2 or higher.  We have
#   use java1.1 since binaries complied by java2 
#   do not work with Netscape4.7.
#JAVA_BIN=/usr/local/linux-jdk1.3.0/bin/
JAVA_BIN=/usr/local/jdk1.4.1/bin/
CLASSES_ZIP=$(JAVA_BIN)/lib/classes.zip

# This should point to sh shell
SH=/bin/sh

# Current Version of Otter
VERSION=otter-0.9.1

##############################################
# # # #      Directory Tree            # # # #
##############################################
DIR_PATH=./
# Classes for creating PNG files created by VISUALTEK
VISUALTEK=$(DIR_PATH)/com/visualtek/

# Classes created by CAIDA
CLASS=$(DIR_PATH)caida/
TOOLS=$(CLASS)tools/
OTTER=$(CLASS)otter/
IMAGE=$(CLASS)image/
LIST=$(CLASS)list/

SOURCE=$(DIR_PATH)../web/source/
OUT_JAVA=$(DIR_PATH)../web/java/

# The -g options gives more information while debugging
#JAVAC=$(JAVA_BIN)javac -g -d $(DIR_PATH)
JAVAC=$(JAVA_BIN)javac -d $(DIR_PATH)

TURNIN_FILES= *.java Makefile otter.html README

##############################################
# #   Sets the dependances for otter   # #
##############################################
otter:$(JAVA_BIN)javac $(JAVA_BIN)java $(SH) Makefile $(OTTER)Otter.class
	echo '#!$(SH)' > otter
	echo '$(JAVA_BIN)java -classpath $(CLASSES_ZIP):'`pwd`\
	' caida.otter.Otter $$*' >> otter
	chmod a+x otter

##############################################
#  This is used for debugging                #
##############################################
runit:otter
	$(JAVA_BIN)java -mx128000000 caida.otter.Otter 

##############################################
#  Copies the files over the to the Source   #
#  directory which is web mounted            #
##############################################
release: $(OTTER)Otter.class 
	cp -r caida ../web/java

	rm -rf $(VERSION)
	mkdir $(VERSION)

	cp *.java Makefile otter.html README $(VERSION)
	mkdir $(VERSION)/scripts
	cp scripts/*.pl scripts/as2asname $(VERSION)/scripts
	mkdir $(VERSION)/data
	cp data/*.odf $(VERSION)/data

	perl createListingHtml.pl > $(VERSION)/listing.html
	tar -cvf $(VERSION).tar $(VERSION)
	rm -r $(VERSION)

	cp *.java Makefile otter.html README $(SOURCE)
	cp location.txt $(SOURCE)
	perl createListingXml.pl > $(SOURCE)/listing.xml
	cp scripts/*.pl scripts/as2asname $(SOURCE)/scripts
	cp data/*.odf $(SOURCE)/data

	cp -r caida $(OUT_JAVA)
	gzip $(VERSION).tar
	perl createIndexXml.pl $(VERSION).tar.gz > $(SOURCE)index.xml
	mv $(VERSION).tar.gz $(SOURCE)

##############################################
# Removes the classes                        #
##############################################
clean:
	rm -r caida


$(OTTER)Otter.class: $(OTTER)Display.class  $(OTTER)DimensionDialog.class\
	$(OTTER)PullDownMenu.class $(OTTER)IOInterface.class \
	$(OTTER)IOHandler.class $(OTTER)Format.class \
	$(OTTER)NameSearch.class $(OTTER)StepByStep.class \
	$(OTTER)HelpFrame.class $(OTTER)NameFilter.class \
	$(OTTER)URLDialog.class $(OTTER)FileInterface.class \
	$(OTTER)Animator.class $(OTTER)ValuesGroup.class \
	$(OTTER)Arrows.class $(OTTER)ShiftImage.class \
	$(TOOLS)PsGenerator.class Otter.java
	$(JAVAC) Otter.java

#--------------------------Animator Stuff

$(OTTER)Animator.class: $(OTTER)FilesSelect.class \
	$(TOOLS)GridPanel.class $(OTTER)DisplayInterface.class \
	Animator.java
	$(JAVAC) Animator.java

$(OTTER)DisplayInterface.class: DisplayInterface.java
	$(JAVAC) DisplayInterface.java

$(OTTER)FilesSelect.class: FilesSelect.java
	$(JAVAC) FilesSelect.java

$(TOOLS)GridPanel.class: GridPanel.java
	$(JAVAC) GridPanel.java

#------------------------- URLDialog Stuff

$(OTTER)URLDialog.class: $(OTTER)FileInterface.class URLDialog.java
	$(JAVAC) URLDialog.java

$(OTTER)FileInterface.class: FileInterface.java
	$(JAVAC) FileInterface.java

$(OTTER)NameFilter.class: NameFilter.java
	$(JAVAC) NameFilter.java

$(OTTER)NameSearch.class: NameSearch.java
	$(JAVAC) NameSearch.java

$(OTTER)StepByStep.class: StepByStep.java
	$(JAVAC) StepByStep.java

#-------------------------Pull Down Menu

$(OTTER)PullDownMenu.class: $(OTTER)ValuesGroup.class PullDownMenu.java
	$(JAVAC) PullDownMenu.java

#-------------------------- Format

$(OTTER)Format.class: $(OTTER)FormatInterface.class \
	$(OTTER)Node.class $(OTTER)Path.class Format.java
	$(JAVAC) Format.java

$(OTTER)FormatInterface.class: FormatInterface.java
	$(JAVAC) FormatInterface.java

#-------------------------- HelpFrame

$(OTTER)HelpFrame.class: HelpFrame.java
	$(JAVAC) HelpFrame.java

#-------------------------- IOHandler

$(OTTER)IOHandler.class: $(OTTER)IOInterface.class \
	$(OTTER)Link.class $(OTTER)Node.class $(OTTER)Path.class \
	IOHandler.java
	$(JAVAC) IOHandler.java

$(OTTER)IOInterface.class: IOInterface.java
	$(JAVAC) IOInterface.java

#-------------------------- Display

$(OTTER)Display.class: $(OTTER)Arrows.class \
	$(TOOLS)StatusBar.class $(OTTER)Node.class \
	$(OTTER)Path.class $(OTTER)Link.class $(OTTER)DList.class \
	$(OTTER)DisplayInterface.class $(TOOLS)Strings.class \
	$(OTTER)ColorMaskFrame.class $(TOOLS)PsGenerator.class \
	Display.java
	$(JAVAC) Display.java

$(OTTER)Link.class: $(OTTER)DisplayObject.class .pass2 \
	$(OTTER)DList.class Link.java
	$(JAVAC) Link.java

$(OTTER)Path.class: $(OTTER)DisplayObject.class $(OTTER)Node.class \
	Path.java
	$(JAVAC) Path.java

$(OTTER)Node.class: $(TOOLS)PsGenerator.class .pass1 $(OTTER)DList.class \
	Node.java
	$(JAVAC) Node.java

$(OTTER)DList.class: $(OTTER)ValuesGroup.class \
	$(OTTER)DisplayObject.class DList.java
	$(JAVAC) DList.java

$(OTTER)DisplayObject.class: $(OTTER)ValuesGroup.class DisplayObject.java
	$(JAVAC) DisplayObject.java

#------------------------  Dimension Dialog stuff

$(OTTER)DimensionDialog.class: $(OTTER)Display.class $(TOOLS)GridPanel.class \
	DimensionDialog.java
	$(JAVAC) DimensionDialog.java

#-------------------------  Color Stuff

$(OTTER)ColorMaskFrame.class: $(TOOLS)GridPanel.class \
	$(OTTER)ValuesGroup.class ColorMaskFrame.java
	$(JAVAC) ColorMaskFrame.java 

#-------------------------- ValuesGroup

$(OTTER)ValuesGroup.class: ValuesGroup.java
	$(JAVAC) ValuesGroup.java 

#------------------------- Status Bar

$(TOOLS)StatusBar.class: StatusBar.java
	$(JAVAC) StatusBar.java

#--------------------------Strings

$(TOOLS)Strings.class: Strings.java
	$(JAVAC) Strings.java

#-------------------------- PsGenerator

$(TOOLS)PsGenerator.class: PsGenerator.java
	$(JAVAC) PsGenerator.java

#-------------------------- Arrows

$(OTTER)Arrows.class: $(TOOLS)PsGenerator.class \
	Arrows.java
	$(JAVAC) Arrows.java

#-------------------------- ShiftImage

$(OTTER)ShiftImage.class: ShiftImage.java
	$(JAVAC) ShiftImage.java

.pass1: $(OTTER)DisplayObject.class $(OTTER)ShiftImage.class $(OTTER)DList.class
	$(JAVAC) Link.java Node.java
	touch .pass1

.pass2: $(OTTER)DisplayObject.class $(OTTER)ShiftImage.class $(OTTER)DList.class
	$(JAVAC) Node.java Link.java
	touch .pass2
