#==============================================================================
#                                  Makefile
#------------------------------------------------------------------------------
# Main makefile for Tcl SIPP.  It has the following targets:
#    o all - Compile and link the tsipp interpreter (default).
#    o test - Run the standard tests.
#    o clean - Remove all generated files.
#    o buildhelp - Rebuild the help files.
#    o demo - Generate the demo pictures.
#    o both - Run the tests and generate the demos.
#    o tkdemo - Run the interactive tkdemo.
#------------------------------------------------------------------------------

include Config.mk

SHELL=/bin/sh

#-----------------------------------------------------------------------------

MBINDIR    = ./master/bin${ARCH}
MLIBDIR    = ./master/lib${ARCH}
MSRCDIR    = ./master/src
MMANDIR    = ./master/man
MMANCMDDIR = ${MMANDIR}/man${MAN_DIR_SEPARATOR}${TSIPP_MAN_CMD_SECTION}
MDEMODIR   = ./master/demos
TSIPP      = ${MBINDIR}/tsipp

#-----------------------------------------------------------------------------

all: BUILD_TSIPP ${TKSIPP_BUILD}

master:
	test -d master        || mkdir master
	test -d ${MBINDIR}    || mkdir ${MBINDIR}
	test -d ${MLIBDIR}    || mkdir ${MLIBDIR}
	test -d ${MSRCDIR}    || mkdir ${MSRCDIR}
	test -d ${MMANDIR}    || mkdir ${MMANDIR}
	test -d ${MMANCMDDIR} || mkdir ${MMANCMDDIR}
	test -d ${MDEMODIR}   || mkdir ${MDEMODIR}

BUILD_TSIPP: master ${TKSIPP_BUILD}
	cd libsipp; ${MAKE} -${MAKEFLAGS} all
	cd src;     ${MAKE} -${MAKEFLAGS} all
	cd tclsrc;  ${MAKE} -${MAKEFLAGS} all
	cd man;     ${MAKE} -${MAKEFLAGS} all
	cd demos;   ${MAKE} -${MAKEFLAGS} all

#-----------------------------------------------------------------------------
# This does not build the tksipp shell, it just makes the dependencies.
# It is built in the source directory.
#
BUILD_TKSIPP: master
	cd photo;    ${MAKE} -${MAKEFLAGS} all

#-----------------------------------------------------------------------------

buildhelp:
	rm -rf help
	mkdir help
	${TSIPP} -c "buildhelp help tsipp.brf {man/*.n}"

#-----------------------------------------------------------------------------

test: all
	cd tests;${MAKE} -${MAKEFLAGS} test

#-----------------------------------------------------------------------------

demo: all
	cd demos;${MAKE} -${MAKEFLAGS} demo

tkdemo: all
	cd demos;${MAKE} -${MAKEFLAGS} tkdemo

#-----------------------------------------------------------------------------

both: test forcedemo

forcedemo:
	cd demos;    ${MAKE} -${MAKEFLAGS} clean
	cd demos;    ${MAKE} -${MAKEFLAGS} demo

#-----------------------------------------------------------------------------
INSTMASTER = ${MASTERDIR}/${TSIPP_VERSION}

install: all  INST_${TKSIPP_BUILD}
	test -d ${MASTERDIR}  || mkdir ${MASTERDIR}
	test -d ${INSTMASTER} || mkdir ${INSTMASTER}
	(cd master; tar -cf - .) | (cd ${INSTMASTER}; tar -xf -)
	${RANLIB} ${INSTMASTER}/lib${ARCH}/libtsipp.a
	touch ${INSTMASTER}/tsipp.tndx
	rm -f ${BINDIR}/tsipp
	ln -s ${INSTMASTER}/bin${ARCH}/tsipp ${BINDIR}/tsipp
	rm -f ${LIBDIR}/libtsipp.a
	ln -s ${INSTMASTER}/lib${ARCH}/libtsipp.a ${LIBDIR}/libtsipp.a

INST_BUILD_TKSIPP:
	rm -f ${BINDIR}/tksipp
	ln -s ${INSTMASTER}/bin${ARCH}/tksipp ${BINDIR}/tksipp
	rm -f ${BINDIR}/tsipphelp
	ln -s ${INSTMASTER}/bin${ARCH}/tsipphelp ${BINDIR}/tsipphelp

# Dummy target when tksipp is not built.
INST_:

#-----------------------------------------------------------------------------

clean: 
	cd src;      ${MAKE} -${MAKEFLAGS} clean
	cd libsipp;  ${MAKE} -${MAKEFLAGS} clean
	cd tclsrc;   ${MAKE} -${MAKEFLAGS} clean
	cd tests;    ${MAKE} -${MAKEFLAGS} clean
	cd demos;    ${MAKE} -${MAKEFLAGS} clean
	cd man;      ${MAKE} -${MAKEFLAGS} clean
	cd photo;    ${MAKE} -${MAKEFLAGS} clean
	rm -rf master
