# makefile for Hades, central top level makefile
# 
# (c) 1997 - 1999 
#          N.Hendrich, University of Hamburg, Computer Science
#          hendrich@informatik.uni-hamburg.de
#
# 15.10.99 added hades.models.mips and mcore, pic cleanups
# 19.02.99 hades.utils.vhdl 
# 21.10.98 added PIC stuff
# 04.08.98 cleanups, RTLIB stuff
# 01.03.98 Linux version
# 02.04.97 centralized all makefiles into this one
# 25.03.97 first try
#
# --------------------------------------------------------------------------
# Tools section
# --------------------------------------------------------------------------
JAVAC = javac 
#JAVAC = jikes
JAVACC = java COM.sun.labs.javacc.Main
#
JAR = jar
JAVADOC = javadoc
JAVAKEY = javakey
JAVAOPT = -g -classpath $(BASEDIR) -d $(BASEDIR)
#JAVAOPT = -O -d $(BASEDIR)

# --------------------------------------------------------------------------
# pathnames section
# --------------------------------------------------------------------------

# where to put the HADES Web-pages and archives
#WWWSERVER = tech18
#WWWDIR = /export/www/htdocs/applets/hades
#WWWARDIR = /export/www/htdocs/applets/hades/archives
#WWWDOCDIR =  /export/www/htdocs/lehre/t3Prak

# where to install the HADES classes, examples, and run scripts
INSTALLDIR = /home/ddi/sirocic/ravisun/install/hades

# base directories of the source trees
#BASEDIR  = /home/tech_1/hendrich/java
BASEDIR = /home/ddi/sirocic/ravisun

HADESDIR = $(BASEDIR)/hades
CLASSDIR = $(BASEDIR)/hades
ARCHIVEDIR = $(BASEDIR)/hades/archives
JAVAFIGARCHIVEDIR = $(BASEDIR)/jfig/archive

# HADES internal directories, relative to HADESDIR
SIMDIR = $(HADESDIR)/simulator
SIMDIROPT = $(HADESDIR)/simulator
SIGNALDIR = $(HADESDIR)/signals
MODELDIR = $(HADESDIR)/models
IODIR = $(HADESDIR)/models/io
STIMULIDIR = $(HADESDIR)/models/stimuli
GATEDIR = $(HADESDIR)/models/gates
GATEDELAYDIR = $(HADESDIR)/models/gates/delaynode
CGATEDIR = $(HADESDIR)/models/complexgates
GATTERDIR = $(HADESDIR)/models/gatter
FLIPFLOPDIR = $(HADESDIR)/models/flipflops
TTLDIR = $(HADESDIR)/models/ttl74
MEMORYDIR = $(HADESDIR)/models/memory
RTLDIR = $(HADESDIR)/models/rtl
REGDIR = $(HADESDIR)/models/register
FSMDIR = $(HADESDIR)/models/fsm
#FSMDIR = $(HADESDIR)/fsm
DCF77DIR = $(HADESDIR)/models/dcf77
PICDIR = $(HADESDIR)/models/pic
MIPSDIR = $(HADESDIR)/models/mips
MCOREDIR = $(HADESDIR)/models/mcore
SPECIALDIR = $(HADESDIR)/models/special
METADIR = $(HADESDIR)/models/meta
I8048DIR = $(HADESDIR)/models/i8048
IMAGINGDIR = $(HADESDIR)/models/imaging
STRINGDIR = $(HADESDIR)/models/string
RUGEDIR = $(HADESDIR)/models/ruge
HAGENDIR = $(HADESDIR)/models/hagen

RTLIBDIR = $(HADESDIR)/models/rtlib
RTLIB_ARITH_DIR    = $(HADESDIR)/models/rtlib/arith
RTLIB_COMPARE_DIR  = $(HADESDIR)/models/rtlib/compare
RTLIB_LOGIC_DIR    = $(HADESDIR)/models/rtlib/logic
RTLIB_MEMORY_DIR   = $(HADESDIR)/models/rtlib/memory
RTLIB_MUXES_DIR    = $(HADESDIR)/models/rtlib/muxes
RTLIB_IO_DIR       = $(HADESDIR)/models/rtlib/io
RTLIB_REGISTER_DIR = $(HADESDIR)/models/rtlib/register

SYMBOLDIR = $(HADESDIR)/symbols
GUIDIR = $(HADESDIR)/gui
MANAGERDIR = $(HADESDIR)/manager
WAVESDIR = $(HADESDIR)/waves
STYXDIR = $(HADESDIR)/styx
UTILSDIR = $(HADESDIR)/utils
VHDLDIR  = $(HADESDIR)/utils/vhdl
JPSHELLDIR = $(HADESDIR)/jpshell

# --------------------------------------------------------------------------
# rules section
# --------------------------------------------------------------------------
.SUFFIXES:
.SUFFIXES: .java .class

%.class: %.java
	$(JAVAC) $(JAVAOPT) $*.java

$(SIMDIROPT)/%.class:	$(SIMDIROPT)/%.java
	$(JAVAC) $(JAVAOPTO) $(SIMDIROPT)/$*.java

$(SIMDIR)/%.class:	$(SIMDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(SIMDIR)/$*.java

$(SIGNALDIR)/%.class:	$(SIGNALDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(SIGNALDIR)/$*.java

$(MODELDIR)/%.class:	$(MODELDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(MODELDIR)/$*.java

$(GATEDIR)/%.class:	$(GATEDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(GATEDIR)/$*.java

$(GATEDELAYDIR)/%.class:	$(GATEDELAYDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(GATEDELAYDIR)/$*.java

$(GATTERIR)/%.class:	$(GATTERIR)/%.java
	$(JAVAC) $(JAVAOPT) $(GATTERDIR)/$*.java

$(CGATEDIR)/%.class:	$(CGATEDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(CGATEDIR)/$*.java

$(IODIR)/%.class:	$(IODIR)/%.java
	$(JAVAC) $(JAVAOPT) $(IODIR)/$*.java

$(FLIPFLOPDIR)/%.class:	$(FLIPFLOPDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(FLIPFLOPDIR)/$*.java

$(TTLDIR)/%.class:	$(TTLDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(TTLDIR)/$*.java

$(FSMDIR)/%.class:	$(FSMDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(FSMDIR)/$*.java

$(MEMORYDIR)/%.class:	$(MEMORYDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(MEMORYDIR)/$*.java

$(RTLDIR)/%.class:	$(RTLDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLDIR)/$*.java

$(RTLIB_ARITH_DIR)/%.class:	$(RTLIB_ARITH_DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLIB_ARITH_DIR)/$*.java

$(RTLIB_COMPARE_DIR)/%.class:	$(RTLIB_COMPARE_DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLIB_COMPARE_DIR)/$*.java

$(RTLIB_LOGIC_DIR)/%.class:	$(RTLIB_LOGIC_DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLIB_LOGIC_DIR)/$*.java

$(RTLIB_MEMORY_DIR)/%.class:	$(RTLIB_MEMORY_DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLIB_MEMORY_DIR)/$*.java

$(RTLIB_MUXES_DIR)/%.class:	$(RTLIB_MUXES_DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLIB_MUXES_DIR)/$*.java

$(RTLIB_IO_DIR)/%.class:	$(RTLIB_IO_DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLIB_IO_DIR)/$*.java

$(RTLIB_REGISTER_DIR)/%.class:	$(RTLIB_REGISTER_DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLIB_REGISTER_DIR)/$*.java

$(REGDIR)/%.class:	$(REGDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(REGDIR)/$*.java

$(SPECIALDIR)/%.class:	$(SPECIALDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(SPECIALDIR)/$*.java

$(STIMULIDIR)/%.class:	$(STIMULIDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(STIMULIDIR)/$*.java

$(STIMULIDIR)/%.java:	$(STIMULIDIR)/%.jj
	$(JAVACC) -OUTPUT_DIRECTORY="models/stimuli" $(STIMULIDIR)/$*.jj


$(STIMULIDIR)/%.class:	$(STIMULIDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(STIMULIDIR)/$*.java


$(DCF77DIR)/%.class:	$(DCF77DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(DCF77DIR)/$*.java

$(PICDIR)/%.class:	$(PICDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(PICDIR)/$*.java

$(MIPSDIR)/%.class:	$(MIPSDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(MIPSDIR)/$*.java

$(MCOREDIR)/%.class:	$(MCOREDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(MCOREDIR)/$*.java

$(METADIR)/%.class:	$(METADIR)/%.java
	$(JAVAC) $(JAVAOPT) $(METADIR)/$*.java

$(I80480DIR)/%.class:	$(I80480DIR)/%.java
	$(JAVAC) $(JAVAOPT) $(I80480DIR)/$*.java

$(IMAGINGDIR)/%.class:	$(IMAGINGDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(IMAGINGDIR)/$*.java

$(STRINGDIR)/%.class:	$(STRINGDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(STRINGDIR)/$*.java

$(RUGEDIR)/%.class:	$(RUGEDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RUGEDIR)/$*.java

$(HAGENDIR)/%.class:	$(HAGENDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(HAGENDIR)/$*.java

$(RTLIBDIR)/%.class:	$(RTLIBDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(RTLIBDIR)/$*.java

$(SYMBOLDIR)/%.class:	$(SYMBOLDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(SYMBOLDIR)/$*.java

$(GUIDIR)/%.class:	$(GUIDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(GUIDIR)/$*.java

$(MANAGERDIR)/%.class:	$(MANAGERDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(MANAGERDIR)/$*.java

$(WAVESDIR)/%.class:	$(WAVESDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(WAVESDIR)/$*.java

$(STYXDIR)/%.class:	$(STYXDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(STYXDIR)/$*.java

$(UTILSDIR)/%.class:	$(UTILSDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(UTILSDIR)/$*.java

$(VHDLDIR)/%.class:	$(VHDLDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(VHDLDIR)/$*.java

$(JPSHELLDIR)/%.class:	$(JPSHELLDIR)/%.java
	$(JAVAC) $(JAVAOPT) $(JPSHELLDIR)/$*.java





# --------------------------------------------------------------------------
# targets section
# --------------------------------------------------------------------------
OBJ =\
	$(GUIDIR)/Console.class 


SIMOBJ =\
	$(SIMDIROPT)/Simulatable.class \
	$(SIMDIROPT)/Wakeable.class \
	$(SIMDIROPT)/Assignable.class \
	$(SIMDIROPT)/Port.class \
	$(SIGNALDIR)/Signal.class \
	$(SIGNALDIR)/SignalStdLogic1164.class \
	$(MODELDIR)/PortStdLogic1164.class \
	$(SIGNALDIR)/SignalStdLogicVector.class \
	$(MODELDIR)/PortStdLogicVector.class \
	$(SIGNALDIR)/SignalInteger.class \
	$(SIGNALDIR)/PortInteger.class \
	$(SIMDIROPT)/SimObject.class \
	$(SIMDIROPT)/SimEvent.class \
	$(SIMDIROPT)/SimEvent1164.class \
	$(SIMDIROPT)/WakeupEvent.class \
	$(SIMDIR)/SimulatorInterruptEvent.class \
	$(SIMDIR)/SignalEvent.class \
	$(SIMDIROPT)/EventList.class \
	$(SIMDIROPT)/SimEventRecycler.class \
	$(SIMDIROPT)/SimKernel.class \
	$(SIMDIROPT)/RealTimeSimKernel.class \
	$(SIMDIROPT)/BatchModeSimKernel.class \
	$(SIMDIROPT)/InteractiveSimKernel.class \
	$(SIMDIROPT)/VhdlSimKernel.class \
	$(SIMDIROPT)/VhdlBatchSimKernel.class \
	$(SIMDIROPT)/CommandQueue.class \
	$(SIMDIROPT)/SimulatorCommand.class \
	$(SIMDIROPT)/SimulatorScheduleCommand.class \
	$(SIMDIROPT)/SimulatorSingleStepCommand.class \
	$(SIMDIROPT)/DeleteAllEventsFromSourceCommand.class \
	$(SIMDIR)/SimDebugPanel.class 


SYMBOLOBJ =\
	$(SYMBOLDIR)/Symbol.class \
	$(SYMBOLDIR)/SymbolManager.class \
	$(SYMBOLDIR)/PortSymbol.class \
	$(SYMBOLDIR)/BusPortSymbol.class \
	$(SYMBOLDIR)/TextSource.class \
	$(SYMBOLDIR)/ColorSource.class \
	$(SYMBOLDIR)/Label.class \
	$(SYMBOLDIR)/PortLabel.class \
	$(SYMBOLDIR)/FatLabel.class \
	$(SYMBOLDIR)/InstanceLabel.class \
	$(SYMBOLDIR)/FatInstanceLabel.class \
	$(SYMBOLDIR)/PersistentInstanceLabel.class \
	$(SYMBOLDIR)/ClassLabel.class \
	$(SYMBOLDIR)/Polyline.class \
	$(SYMBOLDIR)/Circle.class \
	$(SYMBOLDIR)/ColoredPolyline.class \
	$(SYMBOLDIR)/ColoredCircle.class \
	$(SYMBOLDIR)/Arc.class \
	$(SYMBOLDIR)/Rectangle.class \
	$(SYMBOLDIR)/ImageObject.class \
	$(SYMBOLDIR)/BboxRectangle.class \
	$(SYMBOLDIR)/WireSegment.class \
	$(SYMBOLDIR)/SolderDot.class \
	$(SYMBOLDIR)/ProbeSymbol.class \
	$(SYMBOLDIR)/ClockArm.class \
	$(SYMBOLDIR)/FigWrapper.class \
	$(SYMBOLDIR)/Color_DIN_IEC_62.class \
	$(SYMBOLDIR)/ColoredRectangle.class \
	$(SYMBOLDIR)/ColoredValueLabel.class \
	$(SYMBOLDIR)/HorizontalBarGraph.class \
	$(SYMBOLDIR)/HighlightRectangle.class \
	$(SYMBOLDIR)/HighlightWireSegment.class \
	$(SYMBOLDIR)/ErrorMarker.class


MODELOBJ =\
	$(MODELDIR)/InputConnector.class \
	$(MODELDIR)/OutputConnector.class \
	$(MODELDIR)/Design.class \
	$(MODELDIR)/StdLogic1164.class \
	$(MODELDIR)/Const1164.class \
	$(MODELDIR)/StdLogicVector.class \
	$(MODELDIR)/FigObject.class \
	$(IODIR)/Vcc.class \
	$(IODIR)/Gnd.class \
	$(IODIR)/Pullup.class \
	$(IODIR)/Constant.class \
	$(IODIR)/Constant0.class \
	$(IODIR)/Constant1.class \
	$(IODIR)/ConstantH.class \
	$(IODIR)/ConstantL.class \
	$(IODIR)/ConstantW.class \
	$(IODIR)/LED.class \
	$(IODIR)/Opin.class \
	$(IODIR)/OpinWithLabel.class \
	$(IODIR)/Ipin.class \
	$(IODIR)/IpinStdLogic1164.class \
	$(IODIR)/PulseSwitch.class \
	$(IODIR)/DiodeSwitch.class \
	$(IODIR)/SevenSegment.class \
	$(IODIR)/SevenSegmentMultiplexed.class \
	$(IODIR)/HexDisplay.class \
	$(IODIR)/AsciiDisplay.class \
	$(IODIR)/Iso8859Display.class \
	$(IODIR)/HexSwitch.class \
	$(IODIR)/ClockGen.class \
	$(IODIR)/ClockGenWithAutoStop.class \
	$(IODIR)/PowerOnReset.class \
	$(IODIR)/BitReg6.class \
	$(IODIR)/Swatch.class \
	$(IODIR)/Trigger.class \
	$(IODIR)/RandomBitGenerator.class \
	$(IODIR)/RomDiode.class \
	$(IODIR)/Stimulus.class \
	$(IODIR)/RemoteOpin.class \
	$(IODIR)/RemoteOpin8.class \
	$(IODIR)/RemoteIpin.class \
	$(IODIR)/RemoteIpin8.class

GATES =\
	$(GATEDIR)/GenericGate.class \
	$(GATEDIR)/Buffer.class \
	$(GATEDIR)/BufferSmall.class \
	$(GATEDIR)/And2.class \
	$(GATEDIR)/And3.class \
	$(GATEDIR)/And4.class \
	$(GATEDIR)/And4Neg2.class \
	$(GATEDIR)/Demux14.class \
	$(GATEDIR)/Inv.class \
	$(GATEDIR)/InvSmall.class \
	$(GATEDIR)/InvOpenCollector.class \
	$(GATEDIR)/Or2.class \
	$(GATEDIR)/Or3.class \
	$(GATEDIR)/Or4.class \
	$(GATEDIR)/Or6.class \
	$(GATEDIR)/Mux21.class \
	$(GATEDIR)/Mux41.class \
	$(GATEDIR)/Nand2.class \
	$(GATEDIR)/Nand3.class \
	$(GATEDIR)/Nand4.class \
	$(GATEDIR)/Nor2.class \
	$(GATEDIR)/Nor3.class \
	$(GATEDIR)/Nor4.class \
	$(GATEDIR)/Tri.class \
	$(GATEDIR)/Xor2.class \
	$(GATEDIR)/Xnor2.class \
	$(GATEDIR)/NandMetastable2.class \
	$(GATEDIR)/NandMetastable3.class

GATESWITHDINSYMBOLS =\
	$(GATTERDIR)/And2.class \
	$(GATTERDIR)/And3.class \
	$(GATTERDIR)/And4.class \
	$(GATTERDIR)/And4Neg2.class \
	$(GATTERDIR)/Demux14.class \
	$(GATTERDIR)/Inv.class \
	$(GATTERDIR)/InvVertical.class \
	$(GATTERDIR)/Mux21.class \
	$(GATTERDIR)/Nand2.class \
	$(GATTERDIR)/Nand3.class \
	$(GATTERDIR)/Nor2.class \
	$(GATTERDIR)/Nor3.class \
	$(GATTERDIR)/Or2.class \
	$(GATTERDIR)/Or3.class \
	$(GATTERDIR)/Or4.class \
	$(GATTERDIR)/Or6.class \
	$(GATTERDIR)/Xor2.class \
	$(GATTERDIR)/Xnor2.class

DELAYNODES =\
	$(GATEDELAYDIR)/DelayNode.class \
	$(GATEDELAYDIR)/DelayNode_LR.class \
	$(GATEDELAYDIR)/DelayNode_TB.class

COMPLEXGATES =\
	$(CGATEDIR)/GenericCGate.class \
	$(CGATEDIR)/AOI21.class \
	$(CGATEDIR)/AOI22.class \
	$(CGATEDIR)/AOI31.class \
	$(CGATEDIR)/AOI32.class \
	$(CGATEDIR)/AOI33.class \
	$(CGATEDIR)/OAI21.class \
	$(CGATEDIR)/OAI22.class \
	$(CGATEDIR)/OAI31.class \
	$(CGATEDIR)/OAI32.class \
	$(CGATEDIR)/OAI33.class 

FLIPFLOPS = \
	$(FLIPFLOPDIR)/GenericFlipflop.class \
	$(FLIPFLOPDIR)/Dff.class \
	$(FLIPFLOPDIR)/DffMetastable.class \
	$(FLIPFLOPDIR)/Dffr.class \
	$(FLIPFLOPDIR)/DffrMetastable.class \
	$(FLIPFLOPDIR)/Dffe.class \
	$(FLIPFLOPDIR)/Dffre.class \
	$(FLIPFLOPDIR)/Dffrs.class \
	$(FLIPFLOPDIR)/Jkff.class \
	$(FLIPFLOPDIR)/JkffMetastable.class \
	$(FLIPFLOPDIR)/Latch.class \
	$(FLIPFLOPDIR)/LatchMetastable.class \
	$(FLIPFLOPDIR)/Latchr.class \
	$(FLIPFLOPDIR)/DffRtlib.class \
	$(FLIPFLOPDIR)/DffreRtlib.class \
	$(FLIPFLOPDIR)/SrffRtlib.class

TTLS = \
	$(TTLDIR)/SN7449.class       \
	$(TTLDIR)/SN7449_pinout.class \
	$(TTLDIR)/SN7400.class \
	$(TTLDIR)/SN7400_pinout.class \
	$(TTLDIR)/SN7405.class \
	$(TTLDIR)/SN7405_pinout.class \
	$(TTLDIR)/SN7408_pinout.class \
	$(TTLDIR)/SN7432_pinout.class \
	$(TTLDIR)/SN7486_pinout.class 

MEMORY = \
	$(MEMORYDIR)/MemoryListener.class \
	$(MEMORYDIR)/Memory.class

RTLS = \
	$(RTLDIR)/ROM_1Kx8.class \
	$(RTLDIR)/ROM_256x8.class \
	$(RTLDIR)/ROM_64x8.class \
	$(RTLDIR)/ROM_8Kx8.class \
	$(RTLDIR)/ROM_64Kx8.class \
	$(RTLDIR)/RAM_256x8.class

REGS = \
	$(REGDIR)/Register.class \
	$(REGDIR)/RegisterR.class \
	$(REGDIR)/RegisterRE.class \
	$(REGDIR)/ShiftRegister.class \
	$(REGDIR)/LFSRGenerator.class \
	$(REGDIR)/LFSRGenerator8.class \
	$(REGDIR)/LFSRGenerator16.class \
	$(REGDIR)/LFSRGenerator24.class \
	$(REGDIR)/LFSRGenerator32.class \
	$(REGDIR)/LFSRAnalyzer.class \
	$(REGDIR)/LFSRAnalyzer8.class \
	$(REGDIR)/LFSRAnalyzer16.class \
	$(REGDIR)/LFSRAnalyzer24.class \
	$(REGDIR)/LFSRAnalyzer32.class \
	$(REGDIR)/CounterRE.class \
	$(REGDIR)/CounterRE8.class \
	$(REGDIR)/CounterRE16.class

FSMS = \
	$(FSMDIR)/Statuszeile.class \
	$(FSMDIR)/Zustand.class \
	$(FSMDIR)/Signal.class \
	$(FSMDIR)/Transition.class \
	$(FSMDIR)/Kommentar.class \
	$(FSMDIR)/BadExpressionException.class \
	$(FSMDIR)/Parser.class \
	$(FSMDIR)/Tester.class \
	$(FSMDIR)/FSMtester.class \
	$(FSMDIR)/About.class \
	$(FSMDIR)/Panel3D.class \
	$(FSMDIR)/ExportFSM.class \
	$(FSMDIR)/SignalDialog.class \
	$(FSMDIR)/EditCanvas.class \
	$(FSMDIR)/EditFrame.class \
	$(FSMDIR)/NameDialog.class \
	$(FSMDIR)/Simulation.class \
	$(FSMDIR)/FSM.class \
	$(FSMDIR)/FsmRenderer.class \
	$(FSMDIR)/FsmWrapper.class 

SPECIAL = \
	$(SPECIALDIR)/Counter.class \
	$(SPECIALDIR)/ValueTrigger.class \
	$(SPECIALDIR)/EdgeTrigger.class \
	$(SPECIALDIR)/HazardTrigger.class \
	$(SPECIALDIR)/VT52Canvas.class \
	$(SPECIALDIR)/ParallelTerminal.class \
	$(SPECIALDIR)/SerialTerminal.class \
	$(SPECIALDIR)/MidiReceiver.class \
	$(SPECIALDIR)/TextLCDCanvas.class \
	$(SPECIALDIR)/TextLCD.class \
	$(SPECIALDIR)/GraphicsLCDCanvas.class \
	$(SPECIALDIR)/GraphicsLCD.class

DCF77S = \
	$(DCF77DIR)/Dcf77Sender.class \
	$(DCF77DIR)/Dcf77Clock.class

PIC16C84 = \
	$(PICDIR)/BitButton.class \
	$(PICDIR)/BitButtonListener.class \
	$(PICDIR)/MemoryView.class \
	$(PICDIR)/MemoryDisView.class \
	$(PICDIR)/ShowDisassemblerCanvas.class \
	$(PICDIR)/MemoryDisassemblerView.class \
	$(PICDIR)/HexMemoryCanvas.class \
	$(PICDIR)/PicAlu.class \
	$(PICDIR)/PicBitReg.class \
	$(PICDIR)/PicByteReg.class \
	$(PICDIR)/PicCalc.class \
	$(PICDIR)/PicCalcADDWF.class \
	$(PICDIR)/PicCalcANDWF.class \
	$(PICDIR)/PicCalcCLR.class \
	$(PICDIR)/PicCalcCOMF.class \
	$(PICDIR)/PicCalcDECF.class \
	$(PICDIR)/PicCalcDECFSZ.class \
	$(PICDIR)/PicCalcINCF.class \
	$(PICDIR)/PicCalcINCFSZ.class \
	$(PICDIR)/PicCalcIORWF.class \
	$(PICDIR)/PicCalcMOVF.class \
	$(PICDIR)/PicCalcMOVWF.class \
	$(PICDIR)/PicCalcNOP.class \
	$(PICDIR)/PicCalcRLF.class \
	$(PICDIR)/PicCalcRRF.class \
	$(PICDIR)/PicCalcSUBWF.class \
	$(PICDIR)/PicCalcSWAPF.class \
	$(PICDIR)/PicCalcXORWF.class \
	$(PICDIR)/PicClocking.class \
	$(PICDIR)/PicDecode.class \
	$(PICDIR)/PicEprom.class \
	$(PICDIR)/PicEeprom.class \
	$(PICDIR)/PicIndfReg.class \
	$(PICDIR)/PicIntConReg.class \
	$(PICDIR)/PicMemory.class \
	$(PICDIR)/PicNoReg.class \
	$(PICDIR)/PicPcReg.class \
	$(PICDIR)/PicPortReg.class \
	$(PICDIR)/PicReg.class \
	$(PICDIR)/PicRegBank.class \
	$(PICDIR)/PicStack.class \
	$(PICDIR)/PicTimerReg.class \
	$(PICDIR)/PicWdt.class \
	$(PICDIR)/PicWordReg.class \
	$(PICDIR)/PicExec.class \
	$(PICDIR)/ShowPic2.class \
	$(PICDIR)/ShowSignals.class \
	$(PICDIR)/SignalElement.class \
	$(PICDIR)/TestPic.class \
	$(PICDIR)/WordButton.class \
	$(PICDIR)/Pic16C84.class \
	$(PICDIR)/PicRegBank16F84.class \
	$(PICDIR)/PicExec16F84.class \
	$(PICDIR)/Pic16F84.class \
	$(PICDIR)/FastPic16F84.class \
	$(PICDIR)/SmartPic16F84.class \
	$(PICDIR)/Pic16C84Debug.class \
	$(PICDIR)/PicDisassembler.class \
	$(PICDIR)/PicAssembler.class \
	$(PICDIR)/TurboPicCore.class \
	$(PICDIR)/TurboPicGUI.class \
	$(PICDIR)/TurboPic16C84.class


MCORE = \
	$(MCOREDIR)/McoreALU.class \
	$(MCOREDIR)/TestMcore.class \
	$(MCOREDIR)/McoreMillionCycles.class \
	$(MCOREDIR)/DcoreDecoder.class \
	$(MCOREDIR)/DcoreDisassemblerCanvas.class \
	$(MCOREDIR)/DcoreDisassemblerOrHexCanvas.class \
	$(MCOREDIR)/DcoreDisassemblerEditorFrame.class \
	$(MCOREDIR)/DcoreRAM.class \
	$(MCOREDIR)/DcoreROM.class


META = \
	$(METADIR)/ActionButton.class \
	$(METADIR)/AudioPlayer.class \
	$(METADIR)/JythonScriptWrapper.class \
	$(METADIR)/Label.class

I8048 = \
	$(I8048DIR)/OpcodeTable.class \
	$(I8048DIR)/I8048.class \
	$(I8048DIR)/I8048GUI.class

IMAGING = \
	$(IMAGINGDIR)/ImageSignal.class \
	$(IMAGINGDIR)/ImageViewer.class \
	$(IMAGINGDIR)/ImageSource.class \
	$(IMAGINGDIR)/RedFilterKernel.class \
	$(IMAGINGDIR)/GreenFilterKernel.class \
	$(IMAGINGDIR)/BlueFilterKernel.class \
	$(IMAGINGDIR)/GrayFilterKernel.class \
	$(IMAGINGDIR)/InvertFilterKernel.class \
	$(IMAGINGDIR)/SimpleFilter.class \
	$(IMAGINGDIR)/RedFilter.class \
	$(IMAGINGDIR)/GreenFilter.class \
	$(IMAGINGDIR)/BlueFilter.class \
	$(IMAGINGDIR)/GrayFilter.class \
	$(IMAGINGDIR)/InvertFilter.class \
	$(IMAGINGDIR)/GaussFilter.class \
	$(IMAGINGDIR)/DifferenceFilter.class

STRING =\
	$(STRINGDIR)/StringSignal.class \
	$(STRINGDIR)/PortString.class \
	$(STRINGDIR)/StringDisplay.class

RUGE =\
	$(RUGEDIR)/IntegerSignal.class \
	$(RUGEDIR)/Constant.class \
	$(RUGEDIR)/Register.class \
	$(RUGEDIR)/Latch.class \
	$(RUGEDIR)/Mux.class \
	$(RUGEDIR)/Adder.class \
	$(RUGEDIR)/Alu.class \
	$(RUGEDIR)/Incr.class \
	$(RUGEDIR)/TriBuf.class \
	$(RUGEDIR)/DelayNode.class \
	$(RUGEDIR)/RAM_64K.class
#	$(RUGEDIR)/RegisterBank.class \

HAGEN =\
	$(HAGENDIR)/SimpleShiftRegister.class \
	$(HAGENDIR)/ROM_8x8.class


RTLIB =\
	$(RTLIBDIR)/GenericRtlibObject.class \
	$(RTLIB_IO_DIR)/IpinVector.class \
	$(RTLIB_IO_DIR)/OpinVector.class \
	$(RTLIB_IO_DIR)/IpinVectorLarge.class \
	$(RTLIB_IO_DIR)/OpinVectorLarge.class \
	$(RTLIB_IO_DIR)/Constant.class \
	$(RTLIB_IO_DIR)/SmallConstant.class \
	$(RTLIB_IO_DIR)/Merge.class \
	$(RTLIB_IO_DIR)/Merge3.class \
	$(RTLIB_IO_DIR)/Subset.class \
	$(RTLIB_IO_DIR)/SubsetFlip.class \
	$(RTLIB_IO_DIR)/BusTapRight.class \
	$(RTLIB_IO_DIR)/BusTapBottom.class \
	$(RTLIB_IO_DIR)/SelectBit.class \
	$(RTLIB_IO_DIR)/Expander.class \
	$(RTLIB_IO_DIR)/ExpanderVertical.class \
	$(RTLIB_IO_DIR)/MergeBits.class \
	$(RTLIB_IO_DIR)/ExpandBit.class \
	$(RTLIB_ARITH_DIR)/Incr.class \
	$(RTLIB_ARITH_DIR)/Incr2.class \
	$(RTLIB_ARITH_DIR)/Decr.class \
	$(RTLIB_ARITH_DIR)/TwosComplement.class \
	$(RTLIB_ARITH_DIR)/Add.class \
	$(RTLIB_ARITH_DIR)/Sub.class \
	$(RTLIB_ARITH_DIR)/Addc.class \
	$(RTLIB_ARITH_DIR)/GenericShifter.class \
	$(RTLIB_ARITH_DIR)/ShiftLeft.class \
	$(RTLIB_ARITH_DIR)/ShiftRightArith.class \
	$(RTLIB_ARITH_DIR)/ShiftRightLogic.class \
	$(RTLIB_ARITH_DIR)/RotateLeft.class \
	$(RTLIB_ARITH_DIR)/RotateRight.class \
	$(RTLIB_ARITH_DIR)/UserDefinedALU.class \
	$(RTLIB_ARITH_DIR)/DcoreALU.class \
	$(RTLIB_ARITH_DIR)/DcoreALU2.class \
	$(RTLIB_COMPARE_DIR)/CompareEqual.class \
	$(RTLIB_COMPARE_DIR)/CompareNotEqual.class \
	$(RTLIB_COMPARE_DIR)/CompareGreater.class \
	$(RTLIB_COMPARE_DIR)/CompareLess.class \
	$(RTLIB_COMPARE_DIR)/CompareAll.class \
	$(RTLIB_LOGIC_DIR)/BitwiseAnd.class \
	$(RTLIB_LOGIC_DIR)/BitwiseNot.class \
	$(RTLIB_LOGIC_DIR)/BitwiseOr.class \
	$(RTLIB_LOGIC_DIR)/BitwiseXor.class \
	$(RTLIB_LOGIC_DIR)/N1And.class \
	$(RTLIB_LOGIC_DIR)/N1Or.class \
	$(RTLIB_LOGIC_DIR)/GenericOnebitLogicObject.class \
	$(RTLIB_LOGIC_DIR)/And.class \
	$(RTLIB_LOGIC_DIR)/Nand.class \
	$(RTLIB_LOGIC_DIR)/Nor.class \
	$(RTLIB_LOGIC_DIR)/Or.class \
	$(RTLIB_LOGIC_DIR)/Xor.class \
	$(RTLIB_LOGIC_DIR)/Xnor.class \
	$(RTLIB_MUXES_DIR)/Mux21.class \
	$(RTLIB_MUXES_DIR)/Mux41.class \
	$(RTLIB_MUXES_DIR)/TriBuf.class \
	$(RTLIB_MUXES_DIR)/TriBufBig.class \
	$(RTLIB_MUXES_DIR)/Decoder.class \
	$(RTLIB_MUXES_DIR)/BitDecoder.class \
	$(RTLIB_REGISTER_DIR)/Reg.class \
	$(RTLIB_REGISTER_DIR)/RegE.class \
	$(RTLIB_REGISTER_DIR)/RegR.class \
	$(RTLIB_REGISTER_DIR)/RegRE.class \
	$(RTLIB_REGISTER_DIR)/Latch.class \
	$(RTLIB_REGISTER_DIR)/LatchR.class \
	$(RTLIB_REGISTER_DIR)/ShiftRegR.class \
	$(RTLIB_REGISTER_DIR)/CounterRE.class \
	$(RTLIB_REGISTER_DIR)/LFSR.class \
	$(RTLIB_REGISTER_DIR)/RegWithInitialValue.class \
	$(RTLIB_MEMORY_DIR)/GenericMemory.class \
	$(RTLIB_MEMORY_DIR)/ROM.class \
	$(RTLIB_MEMORY_DIR)/ROMcs.class \
	$(RTLIB_MEMORY_DIR)/ROMoe.class \
	$(RTLIB_MEMORY_DIR)/RAM.class \
	$(RTLIB_MEMORY_DIR)/RAMoe.class \
	$(RTLIB_MEMORY_DIR)/DPRAM.class \
	$(RTLIB_MEMORY_DIR)/RegBank.class \
	$(RTLIB_MEMORY_DIR)/MipsRegbank.class \
	$(RTLIB_MEMORY_DIR)/MicroROM.class \
	$(RTLIB_MEMORY_DIR)/MR.class \
	$(RTLIB_MEMORY_DIR)/MR20.class \
	$(RTLIB_MEMORY_DIR)/MRCanvas.class \
	$(RTLIB_MEMORY_DIR)/MRLabelCanvas.class \
	$(RTLIB_MEMORY_DIR)/MREditorFrame.class \
	$(RTLIB_MEMORY_DIR)/AddressDecoder4.class \
	$(RTLIB_MEMORY_DIR)/RealTimeClock.class \
#$(RTLIB_MEMORY_DIR)/RegBank.class \
	$(RTLIBDIR)/Incr.class \
	$(RTLIBDIR)/Adder.class


GUI =\
	$(GUIDIR)/WindowCloser.class \
	$(GUIDIR)/Trafo2D.class \
	$(GUIDIR)/ObjectCanvas.class \
	$(GUIDIR)/SyncRedrawTimer.class \
	$(GUIDIR)/ImageCanvas.class \
	$(GUIDIR)/ImageButton.class \
	$(GUIDIR)/CloseableFrame.class \
	$(GUIDIR)/LayerTable.class \
	$(GUIDIR)/EditFrame.class \
	$(GUIDIR)/UndoStack.class \
	$(GUIDIR)/Command.class \
	$(GUIDIR)/MoveCommand.class \
	$(GUIDIR)/CopyCommand.class \
	$(GUIDIR)/EditCommand.class \
	$(GUIDIR)/CreateCommand.class \
	$(GUIDIR)/ColibriCreateCommand.class \
	$(GUIDIR)/CreateSubdesignCommand.class \
	$(GUIDIR)/CreateByNameCommand.class \
	$(GUIDIR)/StringDialog.class \
	$(GUIDIR)/DeleteCommand.class \
	$(GUIDIR)/DeleteComponentCommand.class \
	$(GUIDIR)/DeleteSignalCommand.class \
	$(GUIDIR)/DeleteAllCommand.class \
	$(GUIDIR)/ZoomRegionCommand.class \
	$(GUIDIR)/CreateSignalCommand.class \
	$(GUIDIR)/AddSegmentToSignalCommand.class \
	$(GUIDIR)/InsertVertexIntoSignalCommand.class \
	$(GUIDIR)/DeleteSegmentFromSignalCommand.class \
	$(GUIDIR)/AddProbeToSignalCommand.class \
	$(GUIDIR)/DeleteProbeFromSignalCommand.class \
	$(GUIDIR)/SignalMovePointCommand.class \
	$(GUIDIR)/SignalSetValueCommand.class \
	$(GUIDIR)/ChangeNameCommand.class \
	$(GUIDIR)/ChangeSignalNameCommand.class \
	$(GUIDIR)/SetDesignNameCommand.class \
	$(GUIDIR)/OpenDesignCommand.class \
	$(GUIDIR)/MoveToPositiveQuadrantCommand.class \
	$(GUIDIR)/AutoconnectCommand.class \
	$(GUIDIR)/DisconnectCommand.class \
	$(GUIDIR)/DisconnectPortCommand.class \
	$(GUIDIR)/MirrorXCommand.class \
	$(GUIDIR)/MirrorYCommand.class \
	$(GUIDIR)/SelectObjectCommand.class \
	$(GUIDIR)/SelectRegionCommand.class \
	$(GUIDIR)/SelectAllCommand.class \
	$(GUIDIR)/MoveSelectionCommand.class \
	$(GUIDIR)/DeleteSelectionCommand.class \
	$(GUIDIR)/DeselectAllCommand.class \
	$(GUIDIR)/TrafficLight.class \
	$(GUIDIR)/SimControlPanel.class \
	$(GUIDIR)/MultiLineLabel.class \
	$(GUIDIR)/PropertySheet.class \
	$(GUIDIR)/KeyHandler.class \
	$(GUIDIR)/ConfirmDialog.class \
	$(GUIDIR)/SaveChangesDialog.class \
	$(GUIDIR)/OKtoQuit.class \
	$(GUIDIR)/SelectFileOrURLDialog.class \
	$(GUIDIR)/AboutDialog.class \
	$(GUIDIR)/ExportOptionsDialog.class \
	$(GUIDIR)/Editor.class \
	$(GUIDIR)/EditorInApplet.class \
	$(GUIDIR)/HexTextField.class \
	$(GUIDIR)/MemoryHexEditorField.class \
	$(GUIDIR)/MemoryEditorFrame.class \
	$(GUIDIR)/CanvasScroller.class \
	$(GUIDIR)/StimuliEditorCanvas.class \
	$(GUIDIR)/StimuliEditor.class \
	$(GUIDIR)/PropertiesViewer.class \
	$(GUIDIR)/Log.class

#	$(GUIDIR)/MyPythonInterpreter.class \
#	$(GUIDIR)/JPShell.class \


STYX =\
	$(STYXDIR)/TimeFormatter.class \
	$(STYXDIR)/TimePanel.class \
	$(STYXDIR)/Transformation.class \
	$(STYXDIR)/Xscroller.class \
	$(STYXDIR)/Yscroller.class \
	$(STYXDIR)/Waveform.class \
	$(STYXDIR)/WaveStdLogic1164.class \
	$(STYXDIR)/WaveStdLogicVector.class \
	$(STYXDIR)/WaveInteger.class \
	$(STYXDIR)/WaveString.class \
	$(STYXDIR)/WaveCanvas.class \
	$(STYXDIR)/NameCanvas.class \
	$(STYXDIR)/WaveformViewer.class

MANAGER =\
	$(MANAGERDIR)/SimObjectNotFoundException.class \
	$(MANAGERDIR)/SimObjectVersionNotFoundException.class \
	$(MANAGERDIR)/DesignManager.class \
	$(MANAGERDIR)/CreateThumbnail.class \
	$(MANAGERDIR)/ComponentInfo.class \
	$(MANAGERDIR)/ComponentInfoDialog.class \
	$(MANAGERDIR)/CreateComponentInfo.class \
	$(MANAGERDIR)/tree/SortedTreeNode.class \
	$(MANAGERDIR)/tree/RootTreeNode.class \
	$(MANAGERDIR)/tree/ZipRootTreeNode.class \
	$(MANAGERDIR)/tree/FileRootTreeNode.class \
	$(MANAGERDIR)/tree/DirectoryTreeNode.class \
	$(MANAGERDIR)/tree/SimObjectTreeNode.class \
	$(MANAGERDIR)/tree/DesignFileTreeNode.class \
	$(MANAGERDIR)/tree/TextFileTreeNode.class \
	$(MANAGERDIR)/tree/AssemblerFileTreeNode.class \
	$(MANAGERDIR)/tree/PythonFileTreeNode.class \
	$(MANAGERDIR)/tree/ReadmeFileTreeNode.class \
	$(MANAGERDIR)/TSL.class \
	$(MANAGERDIR)/HadesTreeCellRenderer.class \
	$(MANAGERDIR)/TreeManager.class \
	$(MANAGERDIR)/TreePopupMenu.class \
	$(MANAGERDIR)/TreeDemo.class \
	$(MANAGERDIR)/InfoPanel.class \
	$(MANAGERDIR)/BrowserFrame.class

UTILS =\
	$(UTILSDIR)/NameListener.class \
	$(UTILSDIR)/Parser.class \
	$(UTILSDIR)/StringTokenizer.class \
	$(UTILSDIR)/ValidName.class \
	$(UTILSDIR)/DesignHierarchyNavigator.class \
	$(UTILSDIR)/NameMangler.class \
	$(UTILSDIR)/ShellSort.class \
	$(UTILSDIR)/TimeFormatter.class \
	$(UTILSDIR)/Flatten.class \
	$(UTILSDIR)/SignalEnumerator.class \
	$(UTILSDIR)/EndsWithFilter.class \
	$(UTILSDIR)/DidYouKnowFrame.class \
	$(UTILSDIR)/FigWriter.class \
	$(UTILSDIR)/Exporter.class \
	$(UTILSDIR)/Selection.class \
	$(UTILSDIR)/PrintManager.class \
	$(UTILSDIR)/DecimalFormat.class \
	$(UTILSDIR)/HexFormat.class \
	$(UTILSDIR)/ContextToolTip.class \
	$(UTILSDIR)/ToolTipManager.class \
	$(UTILSDIR)/IntelHexFile.class \
	$(UTILSDIR)/LFSR32.class \
	$(UTILSDIR)/MemoryDec2HexConverter.class \
	$(UTILSDIR)/MemoryMultiple2SingleConverter.class \
	$(UTILSDIR)/JviewJythonWrapper.class \
	$(UTILSDIR)/ISCAS89Converter.class \
	$(UTILSDIR)/AudioPlayer.class \
	$(UTILSDIR)/AudioFileLoader.class \
	$(UTILSDIR)/TestLoadAllDesigns.class \
	$(VHDLDIR)/VHDLExportable.class \
	$(VHDLDIR)/VHDLNameMangler.class \
	$(VHDLDIR)/VHDLWriter.class \
	$(VHDLDIR)/VHDLModelFactory.class \
	$(UTILSDIR)/TestStdLogicVectorOverflow.class

JPSHELL =\
	$(JPSHELLDIR)/History.class \
	$(JPSHELLDIR)/MyPythonInterpreter.class \
	$(JPSHELLDIR)/JPWrapper.class \
	$(JPSHELLDIR)/JPShell.class \
	$(JPSHELLDIR)/JPEditor.class

STIMULI =\
	$(STIMULIDIR)/StimuliParser.class \
	$(STIMULIDIR)/StimuliGenerator.class


all: $(OBJ) $(SIMOBJ) $(MODELOBJ) $(SYMBOLOBJ) $(GATES) \
	$(COMPLEXGATES) $(FLIPFLOPS) $(TTLS) $(RTLS) $(DCF77S) $(META) \
	$(I8048) $(REGS) $(FSMS) $(UTILS) $(GUI) $(MANAGER) \
	$(SPECIAL) $(IMAGING) $(STRING) $(RUGE) $(DELAYNODES) \
	$(GATESWITHDINSYMBOLS) \
	$(RTLIB) \
	$(STYX) \
	$(PIC16C84) \
	$(MCORE) \
	$(JPSHELL) \
	$(MIPS) \
	$(HAGEN) \
	$(STIMULI) \
	$(WAVES) 


MIPS:
	(cd $(MIPSDIR); make; ) 



clean:	
	rm -f *.class 
	rm -f */*.class
	rm -f models/*/*.class
	rm -f models/*/*/*.class


classdoczip:
	@echo javadoc...
	cd ..; javadoc -d $(HADESDIR)/classdoc -J-mx128M \
	hades.gui \
	hades.jpshell \
	hades.manager \
	hades.manager.tree \
	hades.models \
	hades.models.complexgates \
	hades.models.dcf77 \
	hades.models.flipflops \
	hades.models.fsm \
	hades.models.gates \
	hades.models.gates.delaynode \
	hades.models.gatter \
	hades.models.imaging \
	hades.models.io \
	hades.models.mcore \
	hades.models.memory \
	hades.models.meta \
	\
	hades.models.mips.core \
	hades.models.mips.gui \
	hades.models.mips.instr \
	hades.models.mips.memory \
	hades.models.mips.mipsmemory \
	hades.models.mips.tools \
	\
	hades.models.pic \
	hades.models.register \
	hades.models.rtl \
	hades.models.rtlib \
	hades.models.rtlib.arith \
	hades.models.rtlib.compare \
	hades.models.rtlib.io \
	hades.models.rtlib.logic \
	hades.models.rtlib.memory \
	hades.models.rtlib.muxes \
	hades.models.rtlib.register \
	hades.models.ruge \
	hades.models.special \
	hades.models.stimuli \
	hades.models.string \
	hades.models.ttl74 \
	hades.signals \
	hades.simulator \
	hades.styx \
	hades.symbols \
	hades.utils \
	hades.utils.vhdl \
	jfig.canvas \
	jfig.commands \
	jfig.gui \
	jfig.objects \
	jfig.utils 
	@echo packaing class documentation...
	cd ..; $(JAR) -cMvf hades-classdoc.jar \
		hades/doc/README hades/doc/INSTALL hades/doc/CHANGES hades/doc/FAQ \
		hades/classdoc 
	mv ../hades-classdoc.jar $(ARCHIVEDIR)/hades-classdoc.zip


tar:
	@echo HADES tar.gz archive with everything inside
	cd ..; tar -cvhf hades.tar hades jfig GIFEncoder; gzip hades.tar 
	@echo you should now move the hades.tar file to somewhere safe


classjar:
	@echo signed HADES and jfig class jar archive
	exit -1
	mv ../hades.jar $(ARCHIVEDIR)/hades.jar
	@echo ...signing the class archive...
	cd $(ARCHIVEDIR); $(JAVAKEY) -gs Sign_directive_Hendrich hades.jar
	rm $(ARCHIVEDIR)/hades.jar



megazip:
	@echo HADES/jfig class archive, some examples
	cd ..; $(JAR) -cvMf hades-mega.zip \
		hades/doc/README hades/doc/INSTALL hades/doc/CHANGES hades/doc/FAQ \
		hades/makefile \
		hades/.hadesrc \
		hades/gui/images hades/gui/*.html \
		hades/gui/PopupMenu.txt \
		hades/gui/ViewModePopupMenu.txt \
		hades/*/*.class hades/*/*/*.class hades/*/*/*/*.class \
		hades/simulator/*.sym \
		hades/manager \
		hades/models/*.sym hades/models/*/*.sym hades/models/*/*/*.sym \
		hades/models/*.rom hades/models/*/*.rom hades/models/*/*/*.rom \
		hades/models/*.fsm hades/models/*/*.fsm hades/models/*/*/*.fsm \
		hades/*/README hades/*/*/README hades/*/*/*/README \
		hades/models/ttl74/*.hds hades/models/ttl74/figs/* \
		hades/models/*.gif hades/models/*/*.gif \
		hades/models/*.fig hades/models/*/*.fig \
		hades/models/*.hds hades/models/*/*.hds \
		hades/models/*/*/*.gif \
		hades/models/pic/help \
		hades/utils/vhdl/vhdl-classmap.txt \
		hades/styx/*.gif hades/styx/shortcut-keys.txt \
		hades/examples/tutorial \
		hades/examples/simple \
		hades/examples/pic16c84 \
		hades/scripts \
		hades/jpshell \
		hades/doc/help \
		jfig/canvas/*.class \
		jfig/commands/*.class \
		jfig/objects/*.class \
		jfig/utils/*.class \
		jfig/gui/*.class \
		jfig/doc \
		jfig/gui/*.html \
		jfig/examples \
		jfig/images \
		jfig/jfig.cnf \
		GIFEncoder/*.class
	mv ../hades-mega.zip $(ARCHIVEDIR)/hades-mega.zip


gatelevelzip:
	@echo HADES/jfig gate level applet archive, minimal size
	cd ..; $(JAR) cvmf hades/gui/Manifest hades-gatelevel.zip \
	hades/doc/README hades/doc/INSTALL \
	hades/doc/FAQ \
	hades/doc/TODO \
	hades/.hadesrc \
	hades/gui/images/simcontrol.gif \
	hades/gui/images/simcontrol_gray.gif \
	hades/gui/images/iconEditor.gif \
	hades/gui/images/sound.gif \
	hades/gui/PopupMenu.txt \
	hades/gui/ViewModePopupMenu.txt \
	\
	hades/gui/*.class \
	\
	hades/manager/DesignManager.class \
	hades/manager/SimObjectNotFoundException.class \
	hades/manager/SimObjectVersionNotFoundException.class \
	hades/simulator/*.class \
	hades/symbols/*.class \
	hades/signals/*.class \
	\
	hades/styx/README \
	hades/styx/shortcut-keys.txt \
	hades/styx/*.class \
	hades/gui/images/wavebuttons.gif \
	\
	hades/utils/AudioFileLoader.class \
	hades/utils/AudioPlayer.class \
	hades/utils/ContextToolTip.class \
	hades/utils/DecimalFormat.class \
	hades/utils/DidYouKnowFrame$WindowCloser.class \
	hades/utils/DidYouKnowFrame.class \
	hades/utils/EndsWithFilter.class \
	hades/utils/Exporter.class \
	hades/utils/FigWriter.class \
	hades/utils/FileDialog.class \
	hades/utils/HexFormat.class \
	hades/utils/JviewJythonWrapper.class \
	hades/utils/LFSR32.class \
	hades/utils/NameListener.class \
	hades/utils/Parser.class \
	hades/utils/PrintManager.class \
	hades/utils/Selection.class \
	hades/utils/ShellSort.class \
	hades/utils/SignalEnumerator.class \
	hades/utils/StringTokenizer.class \
	hades/utils/TimeFormatter.class \
	hades/utils/ToolTipManager$1.class \
	hades/utils/ToolTipManager.class \
	hades/utils/NameMangler.class \
	\
	hades/models/*.class \
	hades/models/*.sym \
	hades/models/gates/*.class \
	hades/models/gates/*.sym \
	hades/models/io/*.class \
	hades/models/io/*.sym \
	hades/models/flipflops/*.class \
	hades/models/flipflops/*.sym \
	\
	jfig/canvas/FigBasicCanvas$Options2D.class \
	jfig/canvas/FigBasicCanvas.class \
	jfig/canvas/FigCanvas.class \
	jfig/canvas/FigCanvasEvent.class \
	jfig/canvas/FigCanvasListener.class \
	jfig/canvas/FigCanvasRubberband.class \
	jfig/canvas/FigDrawable.class \
	jfig/canvas/FigDrawableEnumerator.class \
	jfig/canvas/FigTrafo2D.class \
	jfig/canvas/FullRedraw.class \
	jfig/canvas/ObjectPainter.class \
	jfig/canvas/SyncPainter.class \
	jfig/canvas/TopLeftRulerCanvas.class \
	jfig/canvas/ViewerTrafo.class \
	jfig/canvas/ZoomListener.class \
	\
	jfig/commands/Command.class \
	jfig/commands/FigBasicEditor.class \
	\
	jfig/gui/About*.class \
	jfig/gui/ConfirmDialog.class \
	jfig/gui/Console*.class \
	jfig/gui/ColorCache.class \
	jfig/gui/Export*.class \
	jfig/gui/FontCache.class \
	jfig/gui/ImageHelper.class \
	jfig/gui/InsetsPanel.class \
	jfig/gui/InvertGrayFilter.class \
	jfig/gui/SimpleTextViewer*.class \
	jfig/gui/StatusCanvas.class \
	jfig/gui/StatusMessage.class \
	\
	jfig/objects/*.class \
	\
	jfig/utils/AntiDeadlock.class \
	jfig/utils/BoundingBoxCalculator.class \
	jfig/utils/ExceptionTracer.class \
	jfig/utils/FilteredFigWriter.class \
	jfig/utils/Format.class \
	jfig/utils/MouseMapper.class \
	jfig/utils/Pathname.class \
	jfig/utils/SetupManager.class \
	\
	jfig/jfig.cnf 
	mv ../hades-gatelevel.zip $(ARCHIVEDIR)/hades-gatelevel.zip





classzip:
	@echo HADES/jfig class archive, few examples - but all .sym
	cd ..; $(JAR) cvmf hades/gui/Manifest hades.zip \
		hades/doc/README hades/doc/INSTALL hades/doc/CHANGES hades/doc/FAQ \
		hades/doc/TODO \
		hades/makefile \
		hades/.hadesrc \
		hades/gui/images \
		hades/gui/PopupMenu.txt \
		hades/gui/ViewModePopupMenu.txt \
		hades/*/*.class hades/*/*/*.class hades/*/*/*/*.class \
		hades/simulator/*.sym \
		hades/manager \
		hades/models/*.sym hades/models/*/*.sym hades/models/*/*/*.sym \
		hades/models/*.clb hades/models/*/*.clb hades/models/*/*/*.clb \
		hades/models/*.rom hades/models/*/*.rom hades/models/*/*/*.rom \
		hades/models/*.fsm hades/models/*/*.fsm hades/models/*/*/*.fsm \
		hades/*/README hades/*/*/README hades/*/*/*/README \
		hades/models/ttl74/*.hds hades/models/ttl74/figs/* \
		hades/models/*.fig hades/models/*/*.fig \
		hades/models/*.gif hades/models/*/*.gif \
		hades/models/*.hds hades/models/*/*.hds \
		hades/models/*/*/*.gif \
		hades/models/pic/help \
		hades/models/io/Stimulus.hst \
		hades/models/meta/AudioPlayer.wav \
		hades/utils/vhdl/vhdl-classmap.txt \
		hades/styx/*.gif hades/styx/shortcut-keys.txt \
		hades/examples/tutorial \
		hades/examples/simple \
		hades/examples/pic16c84 \
		hades/scripts \
		hades/testsuite \
		hades/jpshell \
		hades/doc/help \
		\
                jfig/canvas/*.class \
                jfig/commands/*.class \
                jfig/gui/*.class \
                jfig/objects/*.class \
                jfig/utils/*.class \
                \
                jfig/images/icon.gif \
                jfig/images/buttons.gif \
                jfig/images/fontmenu.gif \
                jfig/images/fillpatterns.gif \
                jfig/images/updatebutton.gif \
                \
                jfig/examples \
                jfig/gui/*.html \
                jfig/jfig.cnf \
                jfig/gui/UserEditor.java \
                jfig/gui/ExportOptionsDialog.java \
                jfig/utils/MakePieChart.java 
	mv ../hades.zip $(ARCHIVEDIR)/hades.zip


src2zip:
	@echo HADES/jfig source archive, few examples - but all .sym
	cd ..; $(JAR) -cvMf hades-src-small.zip \
		hades/doc/README hades/doc/INSTALL hades/doc/CHANGES hades/doc/FAQ \
		hades/doc/TODO \
		hades/makefile \
		hades/.hadesrc \
		hades/gui/images \
		hades/gui/PopupMenu.txt \
		hades/gui/ViewModePopupMenu.txt \
		hades/*.java \
		hades/gui/*.java hades/jpshell/*.java hades/manager/*.java \
		hades/models/*.java hades/signals/*.java hades/simulator/*.java \
		hades/styx/*.java hades/symbols/*.java hades/utils/*.java \
		hades/*/*/*.java hades/*/*/*/*.java \
		hades/*/README hades/*/*/README hades/*/*/*/README \
		hades/manager \
		hades/models/*.hds hades/models/*/*.hds hades/models/*/*/*.hds \
		hades/models/*.fig hades/models/*/*.fig hades/models/*/*/*.fig \
		hades/models/*.gif hades/models/*/*.gif hades/models/*/*/*.gif \
		hades/models/*.sym hades/models/*/*.sym hades/models/*/*/*.sym \
		hades/models/*.clb hades/models/*/*.clb hades/models/*/*/*.clb \
		hades/models/*.rom hades/models/*/*.rom hades/models/*/*/*.rom \
		hades/models/*.fsm hades/models/*/*.fsm hades/models/*/*/*.fsm \
		hades/*/*.sav hades/models/*/*.sav hades/models/*/*/*.sav \
		hades/models/io/Stimulust.hst \
		hades/models/meta/AudioPlayer.wav \
		hades/styx/*.gif hades/styx/shortcut-keys.txt \
		hades/models/pic/examples hades/models/pic/help \
		hades/models/pic/programmer \
		hades/models/mips/examples hades/models/mips/bin \
		hades/models/mips/makefile \
		hades/utils/vhdl/vhdl-classmap.txt \
		hades/examples/tutorial \
		hades/scripts \
		hades/testsuite \
		hades/jpshell \
		hades/doc/help \
		hades/gui/Manifest



srczip:
	@echo HADES/jfig source archive, few examples - but all .sym
	cd ..; $(JAR) -cvMf hades-src.zip \
		hades/doc/README hades/doc/INSTALL hades/doc/CHANGES hades/doc/FAQ \
		hades/doc/TODO \
		hades/makefile \
		hades/.hadesrc \
		hades/gui/images \
		hades/gui/PopupMenu.txt \
		hades/gui/ViewModePopupMenu.txt \
		hades/*.java \
		hades/*/*.java hades/*/*/*.java hades/*/*/*/*.java \
		hades/*/README hades/*/*/README hades/*/*/*/README \
		hades/manager \
		hades/models/*.hds hades/models/*/*.hds hades/models/*/*/*.hds \
		hades/models/*.fig hades/models/*/*.fig hades/models/*/*/*.fig \
		hades/models/*.gif hades/models/*/*.gif hades/models/*/*/*.gif \
		hades/models/*.sym hades/models/*/*.sym hades/models/*/*/*.sym \
		hades/models/*.clb hades/models/*/*.clb hades/models/*/*/*.clb \
		hades/models/*.rom hades/models/*/*.rom hades/models/*/*/*.rom \
		hades/models/*.fsm hades/models/*/*.fsm hades/models/*/*/*.fsm \
		hades/*/*.sav hades/models/*/*.sav hades/models/*/*/*.sav \
		hades/models/io/Stimulust.hst \
		hades/models/meta/AudioPlayer.wav \
		hades/styx/*.gif hades/styx/shortcut-keys.txt \
		hades/models/pic/examples hades/models/pic/help \
		hades/models/pic/programmer \
		hades/models/mips/examples hades/models/mips/bin \
		hades/models/mips/makefile \
		hades/utils/vhdl/vhdl-classmap.txt \
		hades/examples/tutorial \
		hades/scripts \
		hades/testsuite \
		hades/jpshell \
		hades/doc/help \
		hades/gui/Manifest
	mv ../hades-src.zip $(ARCHIVEDIR)/hades-src.zip


examplezip:
	@echo HADES examples archive
	cd ..; $(JAR) -cvMf hades-examples.jar hades/examples 
	mv ../hades-examples.jar $(ARCHIVEDIR)/hades-examples.zip
	@echo HADES examples-unihh archive
	cd ..; $(JAR) -cvMf hades-examples-unihh.jar \
		hades/examples-unihh \
		hades/examples-midi \
		hades/examples-tmp \
		hades/phraser 
	mv ../hades-examples-unihh.jar $(ARCHIVEDIR)/hades-examples-unihh.zip


doczip:
	@echo HADES documentation jar archive
	cd ..; $(JAR) -cMvf hades-doc.jar \
		hades/doc/README hades/doc/INSTALL hades/doc/CHANGES hades/doc/FAQ \
		hades/doc/tutorial/tutorial.ps \
		hades/doc/html
	mv ../hades-doc.jar $(ARCHIVEDIR)/hades-doc.zip

docsrcjar:
	@echo "HADES documentation source (TeX stuff, etc.) jar archive"
	cd ..; $(JAR) -cMvf hades-doc-src.jar \
		hades/doc
	mv ../hades-doc-src.jar $(ARCHIVEDIR)/hades-doc-src.jar

classdocjar:
	@echo HADES class documentation jar archive
	cd ..; $(JAR) -cMvf hades-classdoc.jar \
		hades/doc/README hades/doc/INSTALL hades/doc/CHANGES hades/doc/FAQ \
		hades/classdoc 
	mv ../hades-classdoc.jar $(ARCHIVEDIR)/hades-classdoc.jar


examplejar:
	@echo HADES examples jar archive
	cd ..; $(JAR) -cMvf hades-examples.jar \
		hades/examples 
	mv ../hades-examples.jar $(ARCHIVEDIR)/hades-examples.jar



signedjar: 
	@echo signed HADES jar archive
	make jar;
	cd ..; $(JAVAKEY) -gs hades/Sign_directive_Hendrich hades.jar
	@echo signed HADES jar archive ok.


wwwinstall: 
	@echo ...installing HADES to $(WWWSERVER):$(WWWDIR)
	ssh $(WWWSERVER) "cp -f $(ARCHIVEDIR)/hades.zip $(WWWARDIR)/hades.zip"
	ssh $(WWWSERVER) "cp -f $(ARCHIVEDIR)/hades-classes.zip $(WWWARDIR)/hades-classes.zip"
	ssh $(WWWSERVER) "cp -f $(JAVAFIGARCHIVEDIR)/jfig-classes.zip $(WWWARDIR)/jfig-classes.zip"
	ssh $(WWWSERVER) "cp -f $(ARCHIVEDIR)/hades-doc.zip $(WWWARDIR)/hades-doc.zip"
	ssh $(WWWSERVER) "cp -f $(ARCHIVEDIR)/hades-classdoc.zip \
                                       $(WWWARDIR)/hades-classdoc.zip"
	ssh $(WWWSERVER) "cp -f $(ARCHIVEDIR)/hades-examples.zip \
                                       $(WWWARDIR)/hades-examples.zip"
	ssh $(WWWSERVER) "cp -f $(HADESDIR)/doc/README $(WWWDIR)"
	ssh $(WWWSERVER) "cp -f $(HADESDIR)/doc/README $(WWWARDIR)"
	ssh $(WWWSERVER) "cp -f $(HADESDIR)/doc/CHANGES $(WWWARDIR)"
	ssh $(WWWSERVER) "cp -f $(HADESDIR)/doc/INSTALL $(WWWARDIR)"
	ssh $(WWWSERVER) "cp -f $(HADESDIR)/doc/FAQ $(WWWARDIR)"
	ssh $(WWWSERVER) "cp -f $(HADESDIR)/doc/qrc/referenzkarte.pdf $(WWWARDIR)"
	ssh $(WWWSERVER) "chmod a+r $(WWWDIR)/*.html $(WWWDIR)/archives/*"
	ssh $(WWWSERVER) "touch $(HADESDIR)/index.html"
	ssh $(WWWSERVER) "chmod a-r $(WWWDIR)/archives/hades-src.zip"


t3zip:
	@echo Creating the T3 template designs and master solution...
	jar -cMvf archives/t3-hades.zip t3
	jar -cMvf archives/t3-master.zip t3-master

t3install:
	@echo Installing the T3 template designs...
	scp archives/t3-hades.zip $(WWWSERVER):$(WWWDOCDIR)/t3-hades.zip
	scp archives/hades.zip $(WWWSERVER):$(WWWDOCDIR)/hades.zip

optinstall-old:
	@echo Installing to $INSTALLDIR...
	cp $(ARCHIVEDIR)/hades.jar.sig $(INSTALLDIR)/hades.jar
	cd $(INSTALLDIR); jar xvf $(ARCHIVEDIR)/hades-examples.jar
	cd $(INSTALLDIR); jar xvf $(ARCHIVEDIR)/hades-doc.jar
#cd $(INSTALLDIR); chmod a-rwx examples/b-tutorial
	cp scripts/runhades scripts/runjfig $(INSTALLDIR)

optinstall:
	@echo Installing to $INSTALLDIR...
	cp $(ARCHIVEDIR)/hades.zip $(INSTALLDIR)/classes/
	chmod a+r $(INSTALLDIR)/classes/hades.zip




echo:
	@echo $(OBJ)


help:
	@echo Use on of the following targets:
	@echo classzip srczip megazip wwwinstall optinstall	



allarchives:
	make classzip srczip megazip classdoczip wwwinstall optinstall

