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

LibName=pgs

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

#
# Compiler/Loader Options
#
UniFlags =
CcFlags  = ${CDebug} -I${IncDir} ${MachDepInc} ${MachDepGraphicsInc}
FcFlags  = ${FDebug}
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 = ${GraphicsPackages} ${TGTLib}
BinDep = ${TGTLib}
BinObj =

#
# Source Files
#
FocalLst = pgs.focal
FocalSrcA = ${Hdrs} gsmm.c gstxt.c gsdv.c gspr.c gsclr.c
FocalSrcB = gsdv_ps.c gspr_ps.c gsdv_cgm.c gspr_cgm.c gsdv_rst.c gspr_rst.c gsdv_im.c
FocalSrcB = gshigh.c gsrend.c gshls.c gsaux.c gsgrot.c gsscat.c
FocalSrcC = gsaxis.c gsdlin.c gscrv.c gscntr.c gsvect.c gsimag.c gssurf.c
FocalSrcD = gsdvb.c gspolf.c gsdplt.c gsiob.c gsrwi.c
FocalSrcE = gsfia.c gsfib.c
FocalSrc = ${FocalSrcA} ${FocalSrcB} ${FocalSrcC} ${FocalSrcD} ${FocalSrcE}

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

#
# Headers Files
#
Hdrs = pgs.h gscgm.h gsrast.h
MpgHdr = gsmpeg.h

#
# Object Files
#
GObjsA = gsaux.o gsaxis.o gsdlin.o gscrv.o gscntr.o gsvect.o gsimag.o gssurf.o gshls.o
GObjsB = gsdvb.o gspolf.o gsdplt.o gsgrot.o gsscat.o gsiob.o gsrwi.o
GObjsC = gsmm.o gstxt.o gsclr.o gshigh.o gsdv.o gspr.o gsrend.o
GObjsD = gsdv_im.o gsdv_rst.o gspr_rst.o
GObjsE = gsfia.o gsfib.o
Objs = ${GObjsA} ${GObjsB} ${GObjsC} ${GObjsD} ${GObjsE} ${GraphicsDevices}

${Objs} : ${Hdrs}

OPS  = gsdv_ps.o gspr_ps.o
OCGM = gsdv_cgm.o gspr_cgm.o
OSUN = gsdv_sun.o gspr_sun.o
OBGI = gsdv_bgi.o gspr_bgi.o
OMSC = gsdv_msc.o gspr_msc.o
OQD  = gsdv_qd.o gspr_qd.o
OX   = gsdv_X.o gspr_X.o
OOGL = gsdv_GL.o gspr_GL.o
OJPG = gsdv_jpg.o
OMPG = gsdv_mpg.o gspr_mpg.o gsmpeg.o
OXGL =
OPEX =

ArObjs = ${TGTLib}(gsdv.o) ${TGTLib}(gspr.o) ${TGTLib}(gsdv_im.o) \
         ${TGTLib}(gsdv_rst.o) ${TGTLib}(gspr_rst.o) \
	 ${TGTLib}(gsaux.o) ${TGTLib}(gsmm.o) \
	 ${TGTLib}(gshigh.o) ${TGTLib}(gsrend.o) \
         ${TGTLib}(gsiob.o) ${TGTLib}(gsrwi.o) ${TGTLib}(gstxt.o) \
	 ${TGTLib}(gsdplt.o) ${TGTLib}(gsaxis.o) ${TGTLib}(gsdlin.o) \
	 ${TGTLib}(gscrv.o) ${TGTLib}(gscntr.o) ${TGTLib}(gsvect.o) \
         ${TGTLib}(gsimag.o) ${TGTLib}(gssurf.o) ${TGTLib}(gsdvb.o) ${TGTLib}(gspolf.o) \
         ${TGTLib}(gsgrot.o) ${TGTLib}(gshls.o) ${TGTLib}(gsscat.o) \
         ${TGTLib}(gsclr.o) ${TGTLib}(gsfia.o) ${TGTLib}(gsfib.o)

ArPS  = ${TGTLib}(gsdv_ps.o) ${TGTLib}(gspr_ps.o)
ArCGM = ${TGTLib}(gsdv_cgm.o) ${TGTLib}(gspr_cgm.o)
ArSUN = ${TGTLib}(gsdv_sun.o) ${TGTLib}(gspr_sun.o)
ArBGI = ${TGTLib}(gsdv_bgi.o) ${TGTLib}(gspr_bgi.o)
ArMSC = ${TGTLib}(gsdv_msc.o) ${TGTLib}(gspr_msc.o)
ArQD  = ${TGTLib}(gsdv_qd.o) ${TGTLib}(gspr_qd.o)
ArX   = ${TGTLib}(gsdv_X.o) ${TGTLib}(gspr_X.o)
ArOGL = ${TGTLib}(gsdv_GL.o) ${TGTLib}(gspr_GL.o)
ArJPG = ${TGTLib}(gsdv_jpg.o)
ArMPG = ${TGTLib}(gsdv_mpg.o) ${TGTLib}(gspr_mpg.o) ${TGTLib}(gsmpeg.o)
ArXGL =
ArPEX =

GrDep = ${GraphicsDevices} ${LibDep}
${GrDep} : ${Hdrs}
${TGTLib} : ${GrDep}
${TGTLib}(gspr_mpg.o) : ${MpgHdr}
${TGTLib}(gsmpeg.o) : ${MpgHdr}

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

#
# Basic drawing test
#
Cstd : ${BinDir}/gsatst

${BinDir}/gsatst : gsatst.c ${TGTLib}
	${CLD} ${LdFlags} gsatst.c -o ${BinDir}/gsatst ${Libs}

#
# fortran API test
#
Fstd : ${BinDir}/gsftst

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

#
# event handling test
#

event : ${BinDir}/gsevts

${BinDir}/gsevts : ${TGTLib} gsevts.c
	${CLD} ${LdFlags} gsevts.c -o ${BinDir}/gsevts ${Libs}

#
# line drawing test
#
line : ${BinDir}/gsclts

${BinDir}/gsclts : gsclts.c ${TGTLib}
	${CLD} ${LdFlags} gsclts.c -o ${BinDir}/gsclts ${Libs}

#
# poly segment test
#
polyseg : ${BinDir}/gsmlts

${BinDir}/gsmlts : gsmlts.c ${TGTLib}
	${CLD} ${LdFlags} gsmlts.c -o ${BinDir}/gsmlts ${Libs}

#
# text handling test
#
text : ${BinDir}/gstxts

${BinDir}/gstxts : gstxts.c ${TGTLib}
	${CLD} ${LdFlags} gstxts.c -o ${BinDir}/gstxts ${Libs}

#
# curve drawing test
#
curve : ${BinDir}/gsltst

${BinDir}/gsltst : gsltst.c ${TGTLib}
	${CLD} ${LdFlags} gsltst.c -o ${BinDir}/gsltst ${Libs}

#
# surface test
#
surface : ${BinDir}/gssfts

${BinDir}/gssfts : gssfts.c ${TGTLib}
	${CLD} ${LdFlags} gssfts.c -o ${BinDir}/gssfts ${Libs}

#
# fill-poly test
#
fillpoly: ${BinDir}/gsfpts

${BinDir}/gsfpts : gsfpts.c ${TGTLib}
	${CLD} ${LdFlags} gsfpts.c -o ${BinDir}/gsfpts ${Libs}

#
# contour test
#
contour : ${BinDir}/gsctst

${BinDir}/gsctst : gsctst.c ${TGTLib}
	${CLD} ${LdFlags} gsctst.c -o ${BinDir}/gsctst ${Libs}

#
# vector test
#
vector : ${BinDir}/gsvtst

${BinDir}/gsvtst : gsvtst.c ${TGTLib}
	${CLD} ${LdFlags} gsvtst.c -o ${BinDir}/gsvtst ${Libs}

#
# image test
#
image : ${BinDir}/gsimts

${BinDir}/gsimts : gsimts.c ${TGTLib}
	${CLD} ${LdFlags} gsimts.c -o ${BinDir}/gsimts ${Libs}

#
# show colormap
#
colormap : ${BinDir}/gsshcm

${BinDir}/gsshcm : gsshcm.c ${TGTLib}
	${CLD} ${LdFlags} gsshcm.c -o ${BinDir}/gsshcm ${Libs}

${BinDir}/gscmts : gscmts.c ${TGTLib}
	${CLD} ${LdFlags} gscmts.c -o ${BinDir}/gscmts ${Libs}

#
# Raster test
#
raster : ${BinDir}/gsrstt

${BinDir}/gsrstt : gsrstt.c ${TGTLib}
	${CLD} ${LdFlags} gsrstt.c -o ${BinDir}/gsrstt ${Libs}

#
# log axis test
#
logaxis : ${BinDir}/gslaxt

${BinDir}/gslaxt : gslaxt.c ${TGTLib}
	${CLD} ${LdFlags} gslaxt.c -o ${BinDir}/gslaxt ${Libs}

#
# inform
#
inform :
	@rm -f required.objs
	@echo ${GObjsA} ${GObjsB} ${GObjsC} ${GObjsD} ${OPS} ${OCGM} ${ORST} > required.objs

#
# Run the PGS test suite
#
test :
	@gstest

#
# my MPEG test
#
mpegtest : ${BinDir}/gsmpgtst1 ${BinDir}/gsmpgtst2

${BinDir}/gsmpgtst1 : gsmpgtst1.c ${TGTLib}
	${CLD} ${LdFlags} gsmpgtst1.c -o ${BinDir}/gsmpgtst1 ${Libs}

${BinDir}/gsmpgtst2 : gsmpgtst2.c ${TGTLib}
	${CLD} ${LdFlags} gsmpgtst2.c -o ${BinDir}/gsmpgtst2 ${Libs}
