#
# pre-Makefile for Portable Math Library
#
# Files and Directories
#

LibName=pml

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

#
# Compiler/Loader Options
#
UniFlags =
CcFlags = ${COptimize} -I${IncDir} ${MachDepInc}
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)
#
InstallDep = ${TGTLib}
BinDep =
BinObj =

#
# Source Files
#
FocalLst = pml.focal
FocalSrc = ${Hdrs} mlmath.c mlsrch.c mlrand.c mlfft.c mlmatr.c \
           mlsolv.c mliccg.c mlicgs.c \
           mlintp.c mlfpe.c mloper.c mlsort.c mlgeom.c mlmm.c \
           mlmesh.c mlcmsh.c mlnls.c mlfia.c

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

#
# Headers Files
#
Hdrs = pml.h mlcplx.h

#
# Object Files
#
Objs = mlmath.o mlsrch.o mlrand.o mlnls.o mlmatr.o mlsolv.o mliccg.o mlicgs.o  \
       mlfft.o mlintp.o mlfpe.o mloper.o mlgeom.o mlsort.o mlmm.o \
       mlmesh.o mlcmsh.o mlfia.o

ArObjs = ${TGTLib}(mlmath.o) ${TGTLib}(mlsrch.o) ${TGTLib}(mlfft.o) \
         ${TGTLib}(mlmatr.o) ${TGTLib}(mlsort.o) ${TGTLib}(mlnls.o) \
         ${TGTLib}(mlsolv.o) ${TGTLib}(mliccg.o) ${TGTLib}(mlicgs.o) \
         ${TGTLib}(mlintp.o) ${TGTLib}(mlfpe.o) ${TGTLib}(mloper.o) \
	 ${TGTLib}(mlgeom.o) ${TGTLib}(mlrand.o) ${TGTLib}(mlmm.o) \
         ${TGTLib}(mlmesh.o) ${TGTLib}(mlcmsh.o) ${TGTLib}(mlfia.o)

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

#
# make new test executable
#
matrix : ${BinDir}/mlmtrt

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

#
# test LR to AC mapping
#
lrac : ${BinDir}/mlacts

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

#
# test topological sort
#
topsort : ${BinDir}/mlstst

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

#
# test matrix ICG solvers
#
icsolv : ${BinDir}/mlicts ${BinDir}/mlicst

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

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

#
# test interpolation
#
interp : ${BinDir}/mlints

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

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

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

#
# Run the PML test suite
#
test :
	@mltest

