#
# pre-Makefile for Portable Process Control Library
#
# Files and Directories
#

LibName=ppc

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

#
# Compiler/Loader Options
#
UniFlags =
CcFlags = ${CDebug} -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} ${TGTBin}
BinDep = ${Hdrs} ${TGTLib} pcexec.c
BinObj = ${LdFlags} pcexec.c

#
# Source Files
#
FocalLst = ppc.focal
FocalSrc = ${Hdrs} ppc.c ppcaux.c pcbin.c pcposix.c pctmod.c

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

#
# Headers Files
#
Hdrs = ppc.h

#
# Object Files
#
ObjsA = ppc.o ppcaux.o pcbin.o pctmod.o pcfio.o pcpio.o
Objs = ${MPassDevices} ${IPCDevices} ${ObjsA}

${Objs} : ${Hdrs}

OMPSC  = pcmpsc.o
OLMPS  = pclmps.o
OPARC  = pcparc.o

OPOSIX = pcposix.o
ONOIPC = pcnil.o

ArObjs = ${MPassDevices} ${IPCDevices} \
         ${TGTLib}(ppc.o) ${TGTLib}(ppcaux.o) ${TGTLib}(pcbin.o) \
         ${TGTLib}(pctmod.o) ${TGTLib}(pcfio.o) ${TGTLib}(pcpio.o)

ArMPSC = ${TGTLib}(pcmpsc.o)
ArLMPS = ${TGTLib}(pclmps.o)
ArPARC = ${TGTLib}(pcparc.o)

ArPOSIX = ${TGTLib}(pcposix.o)
ArNOIPC = ${TGTLib}(pcnil.o)

${TGTLib} : ${LibDep}

Cstd : ${BinDir}/pcexec ${BinDir}/pcmtst \
       ${BinDir}/pcbtst ${BinDir}/pcctst

Fstd : ${BinDir}/pcftst

parallel : ${BinDir}/pcptst ${BinDir}/pcexec

#
# binary data tests
#
${BinDir}/pcbtst : ${TGTLib} pcbtst.c
	${CC} ${LdFlags} pcbtst.c -o ${BinDir}/pcbtst ${Libs}

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

${BinDir}/pcftst : ${TGTLib} pcftst.f
	${FC} ${LdFlags} pcftst.f -o ${BinDir}/pcftst ${Libs}
#
# multiple process tests
#
${BinDir}/pcmtst : ${TGTLib} pcmtst.c
	${CC} ${LdFlags} pcmtst.c -o ${BinDir}/pcmtst ${Libs}
#
# parallel process tests
#
${BinDir}/pcptst : ${TGTLib} pcptst.c
	${CC} ${LdFlags} pcptst.c -o ${BinDir}/pcptst ${Libs}
#
# install 
#
install: ${InstallDep}
	pact incinstall

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

#
# Run the PPC test suite
#
test :
	@pctest

