#
# pre-Makefile for Portable Data Base Library
#
# Files and Directories
#

LibName=pdb

TGTBin = none
TGTLib = ${LibDir}/lib${LibName}${ThreadLibExt}.a
TGTInc = ${Hdrs}

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

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

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

#
# Things upon which install depends (pact install)
#
InstallDep = ${BinDir}/detect ${IncDir}/pdform.h ${TGTLib}
BinDep =
BinObj =

#
# Source Files
#
FocalLst  = pdb.focal
FocalSrcA = pdb.h pdb.c pdrdwr.c pdlow.c pdmemb.c pdconv.c pdbmm.c
FocalSrcB = pdbio.c pdpath.c pdbnet.c pdprnt.c pdbdir.c pdpar.c
FocalSrcC = pdbx.c pdszof.c pdfia.c
FocalSrc  = ${FocalSrcA} ${FocalSrcB} ${FocalSrcC}

#
# Required Libraries
#
Libs = ${LPDB} ${LPML} ${LSCORE} -lm ${MachDepLib}

#
# Headers Files
#
Hdrs = pdb.h

#
# Object Files
#
ObjsA = pdb.o pdlow.o pdrdwr.o pdprnt.o pdmemb.o
ObjsB = pdbmm.o pdconv.o pdbio.o pdpath.o pdbnet.o
ObjsC = pdbx.o pdszof.o pdfia.o pdbdir.o pdpar.o
Objs  = ${ObjsA} ${ObjsB} ${ObjsC}

ArObjs = ${TGTLib}(pdb.o) ${TGTLib}(pdlow.o) ${TGTLib}(pdrdwr.o) \
         ${TGTLib}(pdmemb.o) ${TGTLib}(pdbmm.o) ${TGTLib}(pdconv.o) \
         ${TGTLib}(pdbio.o) ${TGTLib}(pdpath.o) ${TGTLib}(pdbnet.o) \
         ${TGTLib}(pdprnt.o) ${TGTLib}(pdbx.o) ${TGTLib}(pdfia.o) \
	 ${TGTLib}(pdbdir.o) ${TGTLib}(pdszof.o) ${TGTLib}(pdpar.o)

${Objs} : ${Hdrs} ${IncDir}/pdform.h
${LibDep} : ${Hdrs} ${IncDir}/pdform.h

#
# detect
#
${BinDir}/detect : detect.c ${Hdrs} 
	${CC} ${LdFlags} detect.c -o ${BinDir}/detect ${MachDepLib}

${IncDir}/pdform.h : ${BinDir}/detect
	${RM} ${IncDir}/pdform.h pdform.h
	${FrontEnd} ${BinDir}/detect ${BackEnd} > ${IncDir}/pdform.h

#
# standard tests
#

Cstd : ${BinDir}/pdbtst ${BinDir}/pdntst ${BinDir}/pdatst

${BinDir}/pdbtst : pdbtst.c ${TGTLib} ${Hdrs}
	${CC} ${LdFlags} pdbtst.c -o ${BinDir}/pdbtst ${Libs}
#	purify -cache-dir=/home/braddy/cache ${CC} ${LdFlags} pdbtst.c -o ${BinDir}/pdbtst ${Libs}

${BinDir}/pdatst : pdatst.c ${TGTLib} ${Hdrs}
	${CC} ${LdFlags} pdatst.c -o ${BinDir}/pdatst ${Libs}
#	purify -cache-dir=/home/braddy/cache ${CC} ${LdFlags} pdatst.c -o ${BinDir}/pdatst ${Libs}

Fstd : ${BinDir}/pdftst

${BinDir}/pdftst : pdftst.f ${TGTLib} ${Hdrs}
	${FC} ${LdFlags} pdftst.f -o ${BinDir}/pdftst ${Libs}

#
# net io test
#
net : ${BinDir}/pdntst

${BinDir}/pdntst : pdntst.c ${TGTLib} ${Hdrs}
	${CC} ${LdFlags} pdntst.c -o ${BinDir}/pdntst ${Libs}

#
# old read test
#
old :

${BinDir}/pdrtst : pdrtst.c ${TGTLib} ${Hdrs}
	${CC} ${LdFlags} pdrtst.c -o ${BinDir}/pdrtst ${Libs}

#
# smp i/o test
#
smp : ${BinDir}/pdsmp

${BinDir}/pdsmp : pdsmp.c ${TGTLib} ${Hdrs}
	${CC} ${LdFlags} pdsmp.c -o ${BinDir}/pdsmp ${Libs}

#
# test attribute handling
#
attr : ${BinDir}/pdatst ${BinDir}/pxrdts ${BinDir}/pxntst

${BinDir}/pxrdts : pxrdts.c ${TGTLib} ${Hdrs}
	${CC} ${LdFlags} pxrdts.c -o ${BinDir}/pxrdts ${Libs}

${BinDir}/pxntst : pxntst.c ${TGTLib} ${Hdrs}
	${CC} ${LdFlags} pxntst.c -o ${BinDir}/pxntst ${Libs}

#
# timing test
#
time : ${BinDir}/pdtime

${BinDir}/pdtime : pdtime.c ${TGTLib} ${Hdrs}
	${CC} ${LdFlags} pdtime.c -o ${BinDir}/pdtime ${Libs}

#
# exam
#
exambin :
	${CC} ${LdFlags} exambin.c -o exambin ${Libs}
	mv exambin ${BinDir}

exam :
	${CC} ${LdFlags} exam.c -o exam
	mv exam ${BinDir}

#
# install 
#
install: ${InstallDep}
	pact incinstall

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

#
# Run the PDB test suite
#
test :
	@pdtest

