# FILE. . . . . /home/hak/hlt/src/hlt/osf/Makefile
# EDIT BY . . . Hassan Ait-Kaci
# ON MACHINE. . Hak-Laptop
# STARTED ON. . Mon Sep 02 09:09:16 2013

# Last modified on Sat May 11 06:14:01 2019 by hak

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

# NB: make does not understand /cygdrive/d - its needs D:
WIN_HOME	= D:/hak

HLT_HOME	= ${WIN_HOME}/hlt

HLT_CLASSES	= ${HLT_HOME}/classes
JDOM_CLASSES	= ${HLT_CLASSES}/jdom.jar

CLASSPATH	= .;${HLT_CLASSES};${JDOM_CLASSES}

RESOURCES	= ${HLT_CLASSES}/resources

DOCDIR		= ./doc
BASE_DOCDIR	= ${DOCDIR}/base
EXEC_DOCDIR	= ${DOCDIR}/exec
IO_DOCDIR	= ${DOCDIR}/io
UTIL_DOCDIR	= ${DOCDIR}/util

SRCDIR		= ${HLT_HOME}/src
BASE_SRCDIR	= ${SRCDIR}/hlt/osf/base
EXEC_SRCDIR	= ${SRCDIR}/hlt/osf/exec
IO_SRCDIR	= ${SRCDIR}/hlt/osf/io
UTIL_SRCDIR	= ${SRCDIR}/hlt/osf/util

SOURCES		= ${BASE_SRCDIR}/*.java \
		  ${EXEC_SRCDIR}/*.java \
		  ${IO_SRCDIR}/*.java \
		  ${UTIL_SRCDIR}/*.java

TEST		= test

WINTIT		= "API documentation of hlt.osf packages"
HEADER		= "Author: <a href=\"http://www.hassan-ait-kaci.net\">Hassan A&iuml;t-Kaci</a>"
FOOTER		= "Contact: <a href=\"mailto:hak@acm.org?subject=hlt.osf\">hak@acm.org</a>"

#IMAGES		= ${DOCDIR}/images

APIDIR		= ${HLT_HOME}/doc/hlt/api
APIMARKS	= -windowtitle ${WINTIT} \
                  -author -version -public ${TAGS} \
                  -header ${HEADER} \
                  -footer ${FOOTER}

SYSTEM		= hlt.osf
PACKAGES	= ${SYSTEM}.util\
		  ${SYSTEM}.base\
		  ${SYSTEM}.io\
		  ${SYSTEM}.exec

HUSH		= -quiet > /dev/null 2> /dev/null
TRASH		= */,* */,.* */*~ */@*@ */.*~

JC		= @javac -classpath "${CLASSPATH}" -O -d "${HLT_CLASSES}" -Xlint:deprecation #-Xlint:unchecked
JCT		= @javac -classpath "${CLASSPATH}" -O -d "${TEST}" -Xlint:deprecation #-Xlint:unchecked
JV		= java -classpath "${CLASSPATH}" 

# Because eclipse is not aware what's defined in ~/.profile and ~/.cshrc
# all these commands must be preceded by ${BIN} if this makefile is to be used by eclipse; e.g.,
# SAY	= @${BIN}/echo "***"
# where:
# BIN		= C:/cygwin/bin		# 

MK	= @make
ND	= @mkdir -p
CP	= @cp -f
CD	= @cd
LS	= @ls
MV	= @mv -f
RM	= @rm -rf

SAY	= @echo "***"

HL_OPS	= -! -c "${RESOURCES}/Hilite.Configuration"
HL	= java -classpath "${HLT_CLASSES}" hlt.language.tools.HiliteCommand \
	  -css ${HLT_CLASSES}/resources/Hilite.Style.css \
	  -con ${HLT_CLASSES}/resources/Hilite.Configuration.Jacc -s /

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

help:
	${SAY}
	${SAY} "This makefile manages the hlt.osf.* packages."
	${SAY} "You can 'make ...' where '...' is one of:"
	${SAY}
	${SAY} "    all:      same as 'classes doc api'"
	${SAY} "    classes:  compiles the hlt.osf.* java source files"
	${SAY} "    doc:      generates the hlt.osf.* source files documentation"
	${SAY} "    api:      generates  hlt.osf.* API javadoc documentation"
	${SAY} "    save:     saves the contents of this directory (${shell pwd})"
	${SAY} "    tidy:     erases regeneratable files"
	${SAY} "    help:     prints this message"
	${SAY}

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

all:	classes doc api

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

classes: tidy
	${SAY} Removing existing hlt.osf.* class files
	${RM} ${HLT_CLASSES}/hlt/osf/*/*.class
	${SAY} Compiling hlt.osf.* package sources
	${JC} ${SOURCES}

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

test: tidy
	${SAY} Removing test/.* class files
	${RM} ${TEST}/*.class
	${SAY} Compiling test/*.java sources
	${JCT} ${TEST}/*.java

bci : tidy
	cd ${TEST}
	${JV} BitCodeIteratorTest
	cd ..

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

api: tidy
#	${SAY} Regenerating the Javadoc API documentation for all the hlt.* packages
#	@make -C ${HLT_HOME}/src all
	${SAY} Generating Javadoc API documentation for hlt.osf.* packages
	@javadoc -J-Xmx128m -classpath "${CLASSPATH}" -sourcepath "${SRCDIR}"\
		 -d "${APIDIR}" ${APIMARKS} ${PACKAGES} ${HUSH}
	${SAY} Wrote javadoc root file ${APIDIR}/index.html

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

doc: tidy
	${SAY} Removing old ${DOCDIR} documentation
	${RM} ${DOCDIR}/*.*
	${SAY} Generating HTML docs for osf hlt.osf.* source files
	${HL} -d ${DOCDIR} ${SOURCES}
	${MV} ${DOCDIR}/index.html ${DOCDIR}/000StartHere.html
#	${HL} -d ${BASE_DOCDIR} ${BASE_SRCDIR}/*.java
#	${HL} -d ${EXEC_DOCDIR} ${EXEC_SRCDIR}/*.java
#	${HL} -d ${IO_DOCDIR} ${IO_SRCDIR}/*.java
#	${HL} -d ${UTIL_DOCDIR} ${UTIL_SRCDIR}/*.java
	${SAY} See hilited HTML source code in ${DOCDIR}/000StartHere.html

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

save: tidy
	${SAY} Saving the contents of the current directories
	@tar cvf osf.tar * ${HUSH}
	@gzip osf.tar
	${MV} osf.tar.gz save/
	${SAY} Wrote save/osf.tar.gz

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

tidy:
	${SAY} "Tidying up trash"
	${RM} ${TRASH}

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