# FILE. . . . . ~/ilt/src/ilog/rif/versions/bld-v1.1/Makefile
# EDIT BY . . . Hassan Ait-Kaci
# ON MACHINE. . Haktp
# STARTED ON. . Wed Nov 25 04:35:02 2009

# Last modified on Thu Feb 17 16:48:14 2011 by hak

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

MAIN	= BLD
EXT	= bld
COMMAND	= ${EXT}

SOURCES		= ./sources
CLASSES		= ./classes
RESOURCES	= ${CLASSES}/resources
DOCS		= ./docs
EXAMPLES	= ./examples
TESTFILE	= ${EXAMPLES}/Test2.${EXT}

ILT_JAR	= ilog.language.2009.11.25.jar
CLSPATH	= ${CLASSES};${CLASSES}/${ILT_JAR};${CLASSES}/jdom.jar
TRASH	= ,* ,.* *~ @*@ .*~ */,* */,.* */*~ */@*@ */.*~

JC	= @javac -O -d "${CLASSES}" -classpath "${CLSPATH}" #-Xlint:unchecked
JAVA	= @java -classpath "${CLSPATH}"
JACC	= ${JAVA} ilog.language.syntax.Jacc
BLD	= ${JAVA} ilog.rif.bld.Main

MK	= @\make
ND	= @\mkdir -p
CP	= @\cp -f
LS	= @\ls
MV	= @\mv -f
RM	= @\rm -rf
SAY	= @echo "***"

HL_OPS	= -! -c "${RESOURCES}/Hilite.Configuration" 
HL	= @hl ${HL_OPS}
#HL	= java -classpath "${CLSPATH}" ilog.language.tools.HiliteCommand ${HL_OPS}

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

help:
	@echo
	@echo "You can 'make foo' where 'foo' is one of:"
	@echo
	@echo "  all:     same as 'make gen; make classes'"
	@echo "  backup:  save a new copy of source files"
	@echo "  classes: compile the java source files"
	@echo "  clean:   erase regeneratable files"
	@echo "  distrib: generate a (gzipped tarred) distribution file"
	@echo "  doc:     generate the BLD documentation"
	@echo "  full:    same as 'make all; make doc'"
	@echo "  gen:     generate the BLD parser"
	@echo "  help:    print this message"
	@echo "  log:     generate a grammar analysis log file"
	@echo "  save:    save source files"
	@echo "  test:    run the BLD compiler on '${TESTFILE}'"
	@echo "  zip:     generate a zip archive file"
	@echo
########################################################################

all: gen classes

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

full: all doc

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

test: tidy
	${SAY} Make test:
	${SAY} Running 'bld ${TESTFILE}'
	${BLD} ${TESTFILE}

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

gen: tidy ${SOURCES}/${MAIN}.grm
	${SAY} Make gen:
	${SAY} Generating the ${MAIN} parser...
	${JACC} -base ${SOURCES} -dest ${SOURCES} -p Parser ${SOURCES}/${MAIN}.grm

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

classes: tidy
	${SAY} Make classes:
	${SAY} Compiling java files...
	${JC} ${SOURCES}/*.java
	${SAY} Wrote class files in ${CLASSES}/

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

doc: rmdoc hyper hl

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

rmdoc:
	${SAY} Make rmdoc:
	${SAY} Removing old ${DOCS}/${MAIN}Doc documentation ...
	${RM} -rf ${DOCS}/${MAIN}Doc/*

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

hyper: rmdoc tidy
	${SAY} Make hyper:
	${SAY} Generating grammar hyperdocumentation ...
	${JACC} -doc -base ${SOURCES} ${SOURCES}/${MAIN}.grm
	@chmod 755 ${MAIN}Doc
	@chmod 755 ${MAIN}Doc/*
	${LS} -al ${MAIN}Doc
	${MV} ${MAIN}Doc ${DOCS}/
	${SAY} Copy images:
	@cp -r ~/ilt/src/images ${DOCS}/${MAIN}Doc/
	@cp ${DOCS}/${MAIN}Doc/index.html ${DOCS}/${MAIN}Doc/000_START_HERE.html
	${SAY} Visit ${DOCS}/${MAIN}Doc/000_START_HERE.html to navigate the grammar documentation

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

hl: tidy
	${SAY} Make hl:
	${SAY} Hiliting HTML for Java and Jacc sources files ...
	${HL} -p ilog.rif.${EXT} -d ${DOCS}/${MAIN}Doc ${SOURCES}/*.grm ${SOURCES}/*.java
	${SAY} See hilited HTML source code in ${DOCS}/${MAIN}Doc/index.html.

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

log: tidy
	${SAY} Make log:
	${SAY} Generating the full grammar log for ${SOURCES}/${MAIN}.grm...
	${JACC} -v 4 -n -o ${MAIN}.log -base ${SOURCES} ${SOURCES}/${MAIN}
	${MV} ${MAIN}.log ${SOURCES}/${MAIN}.log
	${SAY} See grammar log in file ${SOURCES}/${MAIN}.log

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

distrib: clean save all zip

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

clean: tidy
	${SAY} Make clean:
	${SAY} Removing the old parser Java sources...
	${RM} -f Parser.java
	${SAY} Removing the old grammar analysis log...
	${RM} -f ${MAIN}.log 
	${SAY} Removing the old archives
	${RM} -f ${MAIN}Doc.zip ${MAIN}2XML.tar.gz

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

zip: clean doc
	@zip ${MAIN}Doc ${MAIN}Doc/* ${MAIN}Doc/*/* > /dev/null
	${SAY} Wrote zipped documentation ${MAIN}Doc.zip

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

save: clean
	${SAY} Make save:
	@tar cvf ilog.rif.${EXT}.tar Makefile bld *.bl? *.java *.grm > /dev/null
	@gzip ilog.rif.${EXT}.tar
	@mv -f ilog.rif.${EXT}.tar.gz ${SAVEDIR}
	${SAY} Saved archive ilog.rif.${EXT}.tar.gz in ${SAVEDIR}

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

backup: clean
	${SAY} Make backup:
	${SAY} Saving current package ilog.rif.${EXT}
	${SAY} Backing up previously saved version in ${SAVEDIR}/previous
	@tar cvf ilog.rif.${EXT}.tar *.java *.grm Makefile > /dev/null
	@gzip ilog.rif.${EXT}.tar
	${MV} -f ${SAVEDIR}/previous /tmp
	${ND} ${SAVEDIR}/previous
	${MV} /tmp/previous ${SAVEDIR}/previous
	${MV} ${SAVEDIR}/ilog.rif.${EXT}.tar.gz ${SAVEDIR}/previous
	${MV} -f ilog.rif.${EXT}.tar.gz ${SAVEDIR}

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

tidy:
	${SAY} Make tidy:
	${SAY} "Tidying up trash (if any) ..."
	${LS} ${TRASH} 2> /dev/null ; true
	${RM} -rf ${TRASH}

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