#
# Makefile for ULTRA
#
# Files and Directories
#

LibName=ultra

TGTBin = ${BinDir}/ultra
TGTLib = ${LibDir}/lib${LibName}${ThreadLibExt}.a
TGTInc = none
TGTScmA = applications/ultra.scm applications/consts.scm applications/func.scm
TGTScmB = applications/annotate.scm applications/compare.scm applications/trig.scm
TGTScmC = applications/help.scm applications/synon.scm ultra.ini
TGTScmD = applications/toolbox.scm applications/ultra.pui
TGTScm  = ${TGTScmA} ${TGTScmB} ${TGTScmC} ${TGTScmD}

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

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

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

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

#
# Source Files
#
FocalLst = ultra.focal
FocalSrc = ${Hdrs} ultra.c ulhand.c ulfunc.c ulauxf.c ulcntl.c

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

#
# Headers Files
#
Hdrs = ultra.h

#
# Object Files
#
Objs = ulfunc.o ulauxf.o ulhand.o ulcntl.o

ArObjs = ${TGTLib}(ulfunc.o) ${TGTLib}(ulauxf.o) \
	 ${TGTLib}(ulhand.o) ${TGTLib}(ulcntl.o)

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

#
# pixie version
#
pixie : ${TGTBin}
	pixie -o ultra.pixie ultra
	ultra.pixie -s -l ulperf.scm
	rm -f pixie.stats
	prof -pixie ultra ultra.Addrs ultra.Counts > pixie.stats

#
# install 
#
install: ${InstallDep}
	mv ultra.ini ultra.ini.dev
	cp ultra.ini.user ultra.ini
	pact scminstall
	rm ultra.ini
	mv ultra.ini.dev ultra.ini

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

#
# Run the ULTRA test suite
#
test :
	@ultest
