#
# pre-Makefile for SX
#
# Files and Directories
#

LibName=sx

TGTBin = none
TGTLib = ${LibDir}/lib${LibName}${ThreadLibExt}.a
TGTExe = ${BinDir}/sx
TGTInc = sx.h

ExtDir = ${ScmDir}/extensions

TGTScm = applications/sxview.scm applications/sxcomp.scm applications/sxdm.scm \
         applications/netcdf.scm applications/nacf.scm applications/pdbvcmd.scm \
         applications/pdbvdat.scm applications/pdbview.rc applications/pdbvio.scm \
         applications/pdbview.scm applications/pdbvplt.scm applications/spokes.scm \
         applications/pdbview.pui
TGTScr = applications/pdbview applications/pdbdiff

TGTScmX = applications/extensions/*.scm
TGTScrX = applications/extensions/tpu applications/extensions/tzu

#
# Compiler/Loader Options
#
UniFlags =
CcFlags  = ${CDebug} -I${IncDir} ${MachDepInc} ${MachDepGraphicsInc}
FcFlags  =
LdFlags  = -L${LibDir} ${LDFLAGS}

#
# Files to Save for Backup (pact save)
#
SaveFiles = *.c *.h *.scm

#
# Files to remove in directory clean (pact clean)
#
CleanFiles = *~ core

#
# Things upon which install depends (pact install)
#
DepLib = ${LibDir}/libscheme${ThreadLibExt}.a \
         ${LibDir}/libpanacea${ThreadLibExt}.a \
         ${LibDir}/libpgs${ThreadLibExt}.a \
	 ${LibDir}/libppc${ThreadLibExt}.a \
         ${LibDir}/libpdb${ThreadLibExt}.a \
         ${LibDir}/libpml${ThreadLibExt}.a \
	 ${LibDir}/libscore${ThreadLibExt}.a

InstallDep = ${TGTLib} ${TGTExe} ${TGTScr}
BinDep = ${Hdrs} ${TGTLib} sxmain.c ${DepLib}
BinObj = ${LdFlags} sxmain.c

#
# Source Files
#
FocalLst = sx.focal
FocalSrcA = sx.h sxhook.c sxmm.c sxset.c sxshar.c sxcont.c sxgc.c sxhand.c sxfunc.c sxhbo.c
FocalSrcB = sxpdb.c sxpdba.c sxpdbr.c sxpdbc.c sxpdbd.c sxpdbf.c sxpdbl.c
FocalSrcC = sxpan.c sxpanw.c
FocalSrcD = sxpgs.c sxpgsp.c sxgrot.c
FocalSrcE = sxpml.c
FocalSrcU = sxulio.c sxcrv.o
FocalSrc = ${FocalSrcA} ${FocalSrcB} ${FocalSrcC} ${FocalSrcD} \
           ${FocalSrcE} ${FocalSrcU}

#
# Required Libraries
#
Libs = ${LSX} ${LPANACEA} ${LPGS} ${MachDepGraphicsLib} ${LSCHEME} ${LPPC} ${LPDB} ${LPML} ${LSCORE} -lm ${MachDepLib}

SPDBXLibs = ${LSCHEME} ${LPPC} ${LPDB} ${LPML} ${LSCORE} -lm ${MachDepLib}

#
# Headers Files
#
Hdrs  = sx.h
HdrsT = sxtrans.h

#
# Object Files
#
ObjsA = sxhook.o sxmm.o sxgc.o sxhand.o sxfunc.o sxhbo.o
ObjsB = sxpdb.o sxpdba.o sxpdbr.o sxpdbc.o sxpdbd.o sxpdbf.o sxpdbl.o
ObjsC = sxpan.o sxpanw.o
ObjsD = sxgri.o sxpgs.o sxpgsp.o sxgrot.o
ObjsE = sxpml.o
ObjsY = sxshar.o
ObjsZ = sxset.o sxcont.o sxulio.o sxcrv.o
Objs = ${ObjsA} ${ObjsB} ${ObjsC} ${ObjsD} ${ObjsE} ${ObjsY} ${ObjsZ}

ArObjs = ${TGTLib}(sxhook.o) ${TGTLib}(sxmm.o) ${TGTLib}(sxgc.o) \
         ${TGTLib}(sxhand.o) ${TGTLib}(sxfunc.o) ${TGTLib}(sxhbo.o) \
         ${TGTLib}(sxpdb.o) ${TGTLib}(sxpdba.o) ${TGTLib}(sxpdbr.o) \
         ${TGTLib}(sxpdbc.o) ${TGTLib}(sxpdbd.o) ${TGTLib}(sxpdbf.o) \
         ${TGTLib}(sxpdbl.o) ${TGTLib}(sxpan.o) \
         ${TGTLib}(sxpanw.o) ${TGTLib}(sxpml.o) \
         ${TGTLib}(sxgri.o) ${TGTLib}(sxpgs.o) ${TGTLib}(sxpgsp.o) ${TGTLib}(sxgrot.o) \
         ${TGTLib}(sxshar.o) ${TGTLib}(sxset.o) ${TGTLib}(sxcont.o) \
         ${TGTLib}(sxulio.o) ${TGTLib}(sxcrv.o)

sxmain.o : ${Hdrs}
${ObjsY} : ${HdrsT}
${Objs} : ${Hdrs}
${LibDep} : ${Hdrs}

#
# make the executable
#
${TGTExe} : ${BinDep}
	cd spokes ; make spokes
	@pact shared
	${CLD} ${BinObj} -o ${TGTExe} ${Libs}

#
# install everything
#
install : ${InstallDep}
	pact incinstall
	pact scminstall
	pact scrinstall
	pact -i extinstall 2> /dev/null

#
# remove everything
#
remove-sys :
	pact remove
	cd spokes ; pact remove

#
# inform
#
inform :
	@rm -f required.objs
	@echo ${Objs} > required.objs

#
# Run the SX test suite
#
test :
	@sxtest

