DIRMARKOV = markov\
DIRGRAMMAR = grammar\
DIRJFLEX = ..\..\LexParse\JFlex\lib
DIRJAVACUP = ..

JAVAC    = javac -classpath ..
JAVACUP  = java -cp $(DIRJAVACUP) java_cup.Main
JAVAFLEX = java -cp $(DIRJFLEX);..\..\LexParse\JFlex\lib JFlex.Main


LEX_SOURCES = grammar\GenRGenSScanner.java markov\GenRGenSScanner.java
CUP_SOURCES = grammar\ParseGrammar.java markov\ParseMarkov.java grammar\sym.java markov\sym.java

GenRGenS_SOURCES = GenRGenS.java GenerationException.java GenerationLink.java Generator.java GeneratorCreationException.java Linker.java GeneratorConfigFile.java  LexicalException.java
GenRGenS_IU_SOURCES = Main.java IU\ComptageDialog.java IU\GenRGenSDialog.java IU\HelpDialog.java IU\InOrderJMenu.java IU\IntField.java IU\JTextAreaOutputStream.java IU\MainFrame.java IU\MainFramePrintStream.java IU\MainFrame_AboutBox.java IU\MenuAction.java IU\StringOutputStream.java IU\TextAreaPrintStream.java IU\GenerationSpecificOptionsPanel.java IU\Option.java IU\ProgressDialog.java
GenRGenS_APPLET_SOURCES = Packages.java Applet\MainApplet.java Applet\EasyPrint.java  Applet\AWTGenerationSpecificOptionsPanel.java
UTILITIES_SOURCES =  utility\FileTooSmallException.java utility\IntArray.java utility\LightState.java utility\RandomBigDecimal.java utility\Couple.java utility\FileExtensionFilter.java  utility\ParseRule.java utility\CommandLineParser.java utility\Comptage.java
HOLDER_SOURCES = utility\holder\BooleanHolder.java utility\holder\CharHolder.java utility\holder\Holder.java utility\holder\IntHolder.java utility\holder\StringHolder.java
CALLBACKS_SOURCES = utility\callbacks\Callback.java utility\callbacks\CharCallback.java utility\callbacks\BooleanCallback.java utility\callbacks\IntCallback.java utility\callbacks\StringCallback.java utility\callbacks\VoidCallback.java

MARKOV_SOURCES = markov\BadMarkovException.java markov\Markov.java markov\MarkovianGenerationConfiguration.java

GRAMMAR_SOURCES = grammar\BadGrammarException.java grammar\ContextFreeGrammar.java grammar\ContextFreeGrammarProduction.java grammar\CountedNCFG.java grammar\DoubleCountedNCFG.java grammar\NormalContextFreeGrammar.java grammar\NormalContextFreeGrammarProduction.java grammar\NormalContextFreeGrammarProductionProduct.java grammar\NormalContextFreeGrammarProductionTerminal.java grammar\NormalContextFreeGrammarProductionUnion.java grammar\GrammarGenerationConfiguration.java

MASTER_SOURCES = master\BadMasterFileException.java master\IntermediateGeneratedSequence.java master\Linking.java


SOURCES =  $(UTILITIES_SOURCES) $(CALLBACKS_SOURCES) $(HOLDER_SOURCES) $(CUP_SOURCES) $(LEX_SOURCES) $(GenRGenS_SOURCES) $(MARKOV_SOURCES) $(GenRGenS_IU_SOURCES) $(GRAMMAR_SOURCES) $(GenRGenS_APPLET_SOURCES) 
CLASSES = $(SOURCES:.java=.class)



all: GenRGenS


GenRGenS: $(SOURCES) $(CLASSES)


distribution : clean GenRGenS
	java -cp ..\SrcBck SrcBck README LICENCE ..\..\tmp
	java -cp ..\SrcBck SrcBck ..\Manifest.MF Makefile $(SOURCES) IU\bin markov\markov.cup grammar\grammar.cup markov\GenRGenSScanner.flex grammar\GenRGenSScanner.flex ..\..\tmp\GenRGenS
	java -cp ..\SrcBck SrcBck ..\java_cup ..\..\tmp\GenRGenS
	make -C ..\..\tmp\GenRGenS

# generic rules :
#################

.SUFFIXES: .mli .ml .cmi .cmo .cmx .mll .mly .java .class

.mll.ml:
	ocamllex $<

.mly.ml: 
	ocamlyacc $<

.mli.cmi:
	$(JAVAC) -c $(BYTEFLAGS) $<

.ml.cmo:
	$(JAVAC) -c $(BYTEFLAGS) $<

.ml.o:
	$(JAVACOPT) -c $(OPTFLAGS) $<

.ml.cmx:
	$(JAVACOPT) -c $(OPTFLAGS) $<

.java.class :
	$(JAVAC) $<

grammar\GenRGenSScanner.java : grammar\GenRGenSScanner.flex
	$(JAVAFLEX) -d grammar grammar\GenRGenSScanner.flex

markov\GenRGenSScanner.java : markov\GenRGenSScanner.flex
	$(JAVAFLEX) -d markov markov\GenRGenSScanner.flex

grammar\ParseGrammar.java grammar\sym.java : grammar\grammar.cup
	$(JAVACUP) -parser ParseGrammar grammar\grammar.cup
	mv ParseGrammar.java sym.java grammar\

markov\ParseMarkov.java markov\sym.java : markov\markov.cup
	$(JAVACUP) -parser ParseMarkov markov\markov.cup
	mv ParseMarkov.java sym.java markov\

# clean and doc
##################

GENERATED = $(LEX_SOURCES) $(CUP_SOURCES)
WINDOW_TITLE = 'GenRGenS v1.0'
PACKAGES = GenRGenS.utility.callbacks GenRGenS.utility GenRGenS.master GenRGenS.grammar GenRGenS.markov  GenRGenS
DOCTITLE = 'GenRGenS<sup>v1.0</sup>'
#DOCTITLE = 'Java<sup><font size="-2">TM</font></sup> Platform 1.2 Final API Specification'


clean :
	rm -f $(GENERATED) 
	rm -f $(CLASSES)

doc :
	javadoc -use -version -author -private -splitindex -sourcepath .. -d ..\javadoc -windowtitle $(WINDOW_TITLE) -doctitle $(DOCTITLE) $(PACKAGES)