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

LibName=panacea

TGTBin = ${BinDir}/toul
TGTLib = ${LibDir}/lib${LibName}${ThreadLibExt}.a
TGTInc = panace.h f77std.h

TGTScm = applications/panache.scm applications/panabgc.scm applications/panagc.scm \
         applications/panbgc.scm applications/panpgc.scm applications/panint.scm

TGTScr = applications/panache

#
# 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

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

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

InstallDep = ${TGTLib} ${TGTBin} ${TGTScr}
BinDep = ${Hdrs} ${TGTLib} toul.c ${DepLib}
BinObj = ${LdFlags} toul.c

#
# Source Units
#
FocalLst = panacea.focal
PanSrc   = panacea.c padsys.c pavars.c paccess.c pashar.c pashas.c pamm.c pastr.c pafi.c pafia.c
PPSrc    = papp.c padump.c panth.c
GenSrc   = pagnrd.c pahand.c
SorSrc   = pasrc.c
FocalSrc = panace.h ${GenSrc} ${SorSrc} ${PanSrc} ${PPSrc}

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

#
# Headers Files
#
Hdrs = panace.h f77std.h

#
# Object Files
#
GenObjs = pagnrd.o pahand.o pafi.o pafia.o
PanObjs = padsys.o pamm.o panacea.o paccess.o pashar.o pashas.o pastr.o pavars.o \
 	  padef.o pacpp.o papkg.o
PPObjs  = papp.o padump.o panth.o
SorObjs = pasrc.o
Objs    = ${GenObjs} ${SorObjs} ${PanObjs} ${PPObjs}

ArObjs = ${TGTLib}(padef.o) ${TGTLib}(pacpp.o) ${TGTLib}(papkg.o) \
	 ${TGTLib}(pagnrd.o) ${TGTLib}(pahand.o) ${TGTLib}(pafi.o)   \
         ${TGTLib}(panacea.o) ${TGTLib}(pashar.o) ${TGTLib}(pashas.o) \
         ${TGTLib}(paccess.o) ${TGTLib}(padsys.o) ${TGTLib}(pamm.o)  \
         ${TGTLib}(pavars.o) ${TGTLib}(papp.o) ${TGTLib}(padump.o)   \
         ${TGTLib}(panth.o)                                         \
         ${TGTLib}(pasrc.o) ${TGTLib}(pastr.o) ${TGTLib}(pafia.o)

${Objs} : ${Hdrs}
${LibDep} : ${Hdrs}

#
# time history tests
#
Cth : ${BinDir}/pathts

${BinDir}/pathts : pathts.c ${TGTLib}
	${CC} ${LdFlags} pathts.c -o ${BinDir}/pathts ${NGLibs}

Fth : ${BinDir}/pathft

${BinDir}/pathft : pathft.f ${TGTLib}
	${FC} ${LdFlags} pathft.f -o ${BinDir}/pathft ${NGLibs}

#
# pata
#
${BinDir}/pata : pata.c ${TGTLib}
	${CC} ${LdFlags} pata.c -o ${BinDir}/pata ${NGLibs}

#
# preprocessing test
#
prep : ${BinDir}/pacppt

${BinDir}/pacppt : pacppt.c ${TGTLib}
	${CC} ${LdFlags} pacppt.c -o ${BinDir}/pacppt ${NGLibs}
#
# test new variable definition
#
defvar : ${BinDir}/padeft

${BinDir}/padeft : padeft.c ${TGTLib}
	${CC} ${LdFlags} padeft.c -o ${BinDir}/padeft ${NGLibs}

#
# install everything
#
install : ${InstallDep}
	pact incinstall
	pact scminstall
	pact scrinstall

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

#
# Run the PANACEA test suite
#
test :
	@patest

