#!/bin/csh -f
#
# PACT-MAKE-CONFIGS - processor for auto-configuration information
#                   - some of the complexity of this process stems from the fact
#                   - that there are several ways of obtaining the source:
#                   -    a CVS repository
#                   -    an anonymous FTP node
#                   -    a compressed tar file
#                   - and that the other parts of the manager interlock with
#                   - this script
#
# Usage: cat foo.config | pact-make-configs foo.config
#
# 07/01/98 - AR
#
######################
# Source Version: 2.0
# Software Release #92-0043
#
# include "cpyright.h"
#

if ($#argv < 1) then
   echo ""
   echo "Usage: pact-make-configs [-a] [-g] [-i <directory>] [-s <sysid>] [-t] [-v] -n | <site>"
   echo ""
   echo "             -a     - do NOT perform PACT-ANALYZE step"
   echo "             -g     - build debuggable no matter what"
   echo "             -i     - base installation directory (default /usr/local)"
   echo "             -n     - do an auto-configuration"
   echo "             -p     - emit files with defaults (no <file> required)"
   echo "             -s     - explicit system id"
   echo "             -t     - trace on (diagnostic)"
   echo "             -v     - verbose on (diagnostic)"
   echo "             <site> - the configuration for the installation"
   echo "                    - config file must be of the form [<path>/]<site>.config"
   echo ""
   exit(1)
endif


if ($?USER == 0) then
   if ($?LOGNAME == 0) then
      set USER = "anonymous"
   else
      set USER = $LOGNAME
   endif
endif

unalias cd
set noglob

alias SET_CONTINUATION 'set Continuations = ( "\!\!:2" $Continuations ) ; goto \!\!:1'
alias RET_CONTINUATION 'set Return = $Continuations[1] ; shift Continuations ; goto $Return'
alias GO_CONTINUATION  'set Return = $Continuations[1] ; goto $Return'

set DoingConfig = TRUE

# see PCD for the reason for this
set Here = `pwd` ; cd ; set RealHome = `pwd` ; cd $Here ; unset $Here

set Here = `pwd | sed "s|$RealHome|$home|"`
set Root = $Here:h
set UserDir = $Here

# Source Control System Variables
set SCSRepository = ""
set SRCDate       = ""

source pact-scs

set HostOS    = `uname -s`
set HostOSRel = `uname -r`

#
# Global Variables
#
set Continuations = ( "Finish" )
set Trace         = FALSE
set Verbose       = FALSE
set Templates     = FALSE
set ConfigFile    = DEFAULT
set NoConfig      = FALSE
set NoAnalyze     = FALSE
set BackSlash     = "\\"
set SharedLibArg  = ""

set LibVers      = 1
set System       = `./system-id`
set RootDir      = "$Root/dev/$System"
set InstBase     = "/usr/local"
set IBSet        = "dflt"
set PubInc       = "-I$InstBase/include"
set PubLib       = "-L$InstBase/lib"
set ScmDir       = "scheme"
set BinExt       = ""
set EnvFile      = "env-$System"
set GnuMakeOpt   = ""
set ThreadLibExt = ""
set AbsoluteDeb  = FALSE

# primarily inspired by front ended MPPs
set FrontEnd  = ""
set BackEnd   = ""
set NoExe     = FALSE
set Load      = TRUE

#set CCompiler = "cc"
set CCmpLdr   = ""
set CFLAGS    = ""
set CDebug    = "-g"
set COptimize = "-O"
set FCompiler = "f77"
set FFLAGS    = ""
set FDebug    = "-g"
set FOptimize = "-O"
set LDFLAGS   = ""
set LXFLAGS   = ""

set UseX       = TRUE
if ("$HostOS" == "IRIX") then
   set UseIGL     = TRUE
   set UseOGL     = TRUE
else
   set UseIGL     = FALSE
   set UseOGL     = FALSE
endif
set MachDepLib = ""
set MachDepInc = ""

set RM = "rm -f"

set SUFFIXES = ".i"

set CSpokes       = ( "ascii" "nacf" )
set SchemeSpokes  = "netcdf"
set SpokeDepLib   = ""

set NEED_MEM_TRACE = "TRUE"

#
# PACT-ANALYZE can compute these
#

set GraphicsFlag    = ""
set GraphicsDevices = "PS CGM MPG"
set GSYS            = "X"

set ParCommSupport = "PARC"
set IPCSupport     = "POSIX"

set MachDepGraphicsInc = ""
set MachDepGraphicsLib = ""

set RANLIB    = "touch"
set INSTALL   = "cp"
set UPDATE    = "touch"

set HAVE_SOCKETS_P = "TRUE"
set HAVE_STREAMS_P = "FALSE"
set HAVE_SELECT_P  = "FALSE"

set BuildStrategy = "SpaceSaving"

set CCType   = "ANSI"
set Register = "none"

# PACT-ANALYZE will define these
#set OSType     = "SYSV"
#set ArcInstOpt = "rsc"

#
# Default Rules for CC, Lex, and FC
#

set CCP    = ( '\t${CC} -P $<\n' )
set CCObj  = ( '\t${CC} -c $< -o $@\n' )
set CCArc  = ( '\t${CC} -c $< -o $*.o\n\t@ar ${AROpt} ${TGTLib} $*.o 2> /dev/null\n\t@${RM} $*.o 2> /dev/null\n' )
set LexObj = ( '\tlex $< 2> /dev/null\n\t@mv lex.yy.c $*.c\n\t@( echo '"'"'e $*.c'"'"' ; echo '"'"'1,$$s/yy/$*_/g'"'"' ; echo '"'"'1,$$w $*.c'"'"' ; echo '"'"'q'"'"' ) | ed > /dev/null\n\t${LX} -c $*.c\n\t@${RM} $*.c\n' )
set LexArc = ( '\tlex $< 2> /dev/null\n\t@mv lex.yy.c $*.c\n\t@( echo '"'"'e $*.c'"'"' ; echo '"'"'1,$$s/yy/$*_/g'"'"' ; echo '"'"'1,$$w $*.c'"'"' ; echo '"'"'q'"'"' ) | ed > /dev/null\n\t${LX} -c $*.c\n\t@ar ${AROpt} ${TGTLib} $*.o 2> /dev/null\n\t@${RM} $*.c $*.o\n' )
set FCObj  = ( '\t${FC} -c $< -o $@\n' )
set FCArc  = ( '\t${FC} -c $< -o $*.o\n\t@ar ${AROpt} ${TGTLib} $*.o 2> /dev/null\n\t@${RM} $*.o 2> /dev/null\n' )

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# MAIN - start it out here

Main:

    while ($#argv > 0)
       switch ($1)
          case -a:
                   set NoAnalyze = TRUE
                   breaksw

          case -g:
                   set AbsoluteDeb = TRUE
                   breaksw

          case -i:
                   shift
                   set InstBase = $1
                   set PubInc   = "-I$InstBase/include"
                   set PubLib   = "-L$InstBase/lib"
                   set IBSet    = "input"
                   breaksw

          case -n:
                   set NoConfig = TRUE
                   breaksw

          case -p:
                   set Templates = TRUE
                   breaksw

          case -s:
                   shift
                   set System  = $1
                   set RootDir = "$Root/dev/$System"
                   set EnvFile = "env-$System"
                   breaksw

          case -t:
                   set Trace = TRUE
                   breaksw

          case -v:
                   set Verbose = TRUE
                   breaksw
          default:
                   set ConfigFile = $1
                   breaksw
       endsw
       shift
    end

    set Sys = $ConfigFile:t
    set Sys = $Sys:r

    rm -f file.ce
    touch file.ce
    rm -f file.cd
    touch file.cd
    rm -f file.ur
    touch file.ur

    set STDOUT = "file.ur"

    echo ""

    if ($Templates == FALSE) then

       if ($NoConfig == FALSE) then
          SET_CONTINUATION ReadConfig ReadConfig_RET
ReadConfig_RET:
       endif

       SET_CONTINUATION CheckDir CheckDir_RET
CheckDir_RET:

       if ($NoAnalyze == FALSE) then
          SET_CONTINUATION AnalyzeConfig AnalyzeConfig_RET
AnalyzeConfig_RET:
       endif

    endif

    GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# ANALYZECONFIG - analyze the system configuration

AnalyzeConfig:

    echo "Analyzing --"

    source pact-analyze

    if (!($?CC1) || ("$CC1" == "none") || ("$CC1" == "")) then
       echo "ERROR: No C compiler available - check your system or your path"
       echo ""
       exit(1)
    else
       echo "C Compiler used is `which $CCompiler`"
    endif

    if ("$SharedLibArg" != "") then
       echo "Building shared libraries"
    else
       echo "Building static libraries"
    endif

    if ($AbsoluteDeb == TRUE) then
       echo "Building absolutely debuggable version"
       set CDebug    = "-g"
       set COptimize = "-g"
       set FDebug    = "-g"
       set FOptimize = "-g"
    endif

    echo ""

#    echo $GSYS
#    echo $MachDepGraphicsInc
#    echo $MachDepGraphicsLib
#    echo $RANLIB
#    echo $UPDATE
#    echo $INSTALL
#    echo HAVE_SOCKETS_P
#    echo HAVE_STREAMS_P
#    echo HAVE_SELECT_P
#    echo BuildStrategy
#    echo OSType
#    echo ArcInstOpt
#    echo CCType
#    echo Register

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# CHECKDIR - check for missing directories

CheckDir:

    set Missing = ""
    if ("$InstBase" != "none") then
       if (!(-d $InstBase/bin)) then
          set Missing = ( $Missing $InstBase/bin )
       endif
       if (!(-d $InstBase/lib)) then
          set Missing = ( $Missing $InstBase/lib )
       endif
       if (!(-d $InstBase/include)) then
          set Missing = ( $Missing $InstBase/include )
       endif
       if (!(-d $InstBase/$ScmDir)) then
          set Missing = ( $Missing $InstBase/$ScmDir )
       endif
    endif
    if ("$Missing" != "") then
       if ($?prompt) then
          set OutDev = /dev/tty
       else
          set OutDev = _tmp_
          rm -f $OutDev
          touch $OutDev
       endif
       echo "You have asked that PACT be installed in the following" >> $OutDev
       echo "missing directories:" >> $OutDev
       foreach i ($Missing)
          echo "   $i" >> $OutDev
       end
       echo "You must either create these directories, choose" >> $OutDev
       echo "another place to install PACT, or specify -i none" >> $OutDev
       echo "for no installation." >> $OutDev
       echo "" >> $OutDev
       if (!($?prompt)) then
          cat $OutDev
	  rm -f $OutDev
       endif
       exit(1)
    endif

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# READCONFIG - read the user configuration file

ReadConfig:

    echo "Reading Configuration File"

    set nlines = `cat $ConfigFile | wc -l`
    set iline  = 0

    SET_CONTINUATION TopLevel TopLevel

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# TOPLEVEL - loop over the input to define configuration parameters

TopLevel:

    if (`expr $iline \>= $nlines`) then
       shift Continuations
       RET_CONTINUATION
    endif

    SET_CONTINUATION ReadLine MainLine_Ret
MainLine_Ret:

    if ("$Line" == "") then
       GO_CONTINUATION
    endif

    set Key = $Line[1]
    if ($#Line < 3) then
       set Value = ""
    else
       set Value = "$Line[3-]"
    endif

    switch ("$Key")

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# MAKERULE -  handle addition of a new make rule

   case MakeRule:

        SET_CONTINUATION ReadLine MakeRuleRead_Ret
MakeRuleRead_Ret:

        if ("$Line" == "") then
           if ($Trace == "TRUE") then
              echo "Leaving MakeRule with error"
           endif

           GO_CONTINUATION
        endif
        set RuleStart = "$Line"

        SET_CONTINUATION ParseRule MakeRuleParse_Ret
MakeRuleParse_Ret:

        set Text = "$RuleStart\n$Val"
        if ($Verbose == "TRUE") then
           echo "\nDefining new rule:\n$Text"
        endif

        SET_CONTINUATION PrintText TopLevel

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# DPENVIRONMENT -  handle definition of the distributed parallel environment

   case DPEnvironment:
        SET_CONTINUATION DPDefine TopLevel

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# CENVIRONMENT -  handle definition of the C compilation environment

   case CEnvironment:
        SET_CONTINUATION CDefine TopLevel

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# CDECLARATIONS -  handle missing C declarations

   case CDeclarations:
        SET_CONTINUATION CDeclare TopLevel

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# SET-VARIABLES - reset definition variables

   case ArcInstOpt:
        set ArcInstOpt = "$Value"
        endif

        GO_CONTINUATION

   case BackEnd:
        set BackEnd = "$Value"

        GO_CONTINUATION

   case BuildStrategy:
        set BuildStrategy = "$Value"

        GO_CONTINUATION

   case CCompiler:
        set CCompiler = "$Value"

        GO_CONTINUATION

   case CCmpLdr:
        set CCmpLdr = "$Value"

        GO_CONTINUATION

   case CCType:
        set CCType = "$Value"

        GO_CONTINUATION

   case CDebug:
        set CDebug = "$Value"

        GO_CONTINUATION

   case CFLAGS:
        set CFLAGS = "$Value"

        GO_CONTINUATION

   case COptimize:
        set COptimize = "$Value"

        GO_CONTINUATION

   case CSpokes:
        set CSpokes = `echo $Value`

        GO_CONTINUATION

   case ExtensionBinaries:
        set BinExt = "$Value"

        GO_CONTINUATION

   case FCompiler:
        set FCompiler = "$Value"

        GO_CONTINUATION

   case FDebug:
        set FDebug = "$Value"

        GO_CONTINUATION

   case FFLAGS:
        set FFLAGS = "$Value"

        GO_CONTINUATION

   case FOptimize:
        set FOptimize = "$Value"

        GO_CONTINUATION

   case FrontEnd:
        set FrontEnd = "$Value"

        GO_CONTINUATION

   case GraphicsFlag:
        set GraphicsFlag = "$Value"

        GO_CONTINUATION

   case GraphicsDevices:
        set GraphicsDevices = ( $GraphicsDevices `echo $Value` )

        GO_CONTINUATION

   case GSYS:
        set GSYS = "$Value"

        GO_CONTINUATION

   case INSTALL:
        set INSTALL = "$Value"

        GO_CONTINUATION

   case InstBase:
        if ($IBSet == "dflt") then
          set InstBase = "$Value"
          set PubInc   = "-I$InstBase/include"
          set PubLib   = "-L$InstBase/lib"
        endif

        GO_CONTINUATION

   case IPCSupport:
        set IPCSupport = "$Value"

        GO_CONTINUATION

   case JPEGlibloc:
        set JPEGlibloc = "$Value"

        GO_CONTINUATION

   case LDFLAGS:
        set LDFLAGS = "$Value"

        GO_CONTINUATION

   case LXFLAGS:
        set LXFLAGS = "$Value"

        GO_CONTINUATION

   case MachDepGraphicsInc:
        set MachDepGraphicsInc = "$Value"

        GO_CONTINUATION

   case MachDepGraphicsLib:
        set MachDepGraphicsLib = "$Value"

        GO_CONTINUATION

   case MachDepInc:
        set MachDepInc = "$Value"

        GO_CONTINUATION

   case MachDepLib:
        set MachDepLib = "$Value"

        GO_CONTINUATION

   case NoExe:
	set NoExe = TRUE
        set Load  = FALSE

        GO_CONTINUATION

   case NEED_MEM_TRACE:
        set NEED_MEM_TRACE = "$Value"

        GO_CONTINUATION

   case OSType:
        set OSType = "$Value"

        GO_CONTINUATION

   case ParCommSupport:
        set ParCommSupport = "$Value"

        GO_CONTINUATION

   case PubInc:
        set PubInc = "$Value"

        GO_CONTINUATION

   case PubLib:
        set PubLib = "$Value"

        GO_CONTINUATION

   case RANLIB:
        set RANLIB = "$Value"

        GO_CONTINUATION

   case Register:
        set Register = "$Value"

        GO_CONTINUATION

   case RM:
        set RM = "$Value"

        GO_CONTINUATION

   case SchemeSpokes:
        set SchemeSpokes = `echo $Value`

        GO_CONTINUATION

   case ScmDir:
        set ScmDir = "$Value"

        GO_CONTINUATION

   case SharedLibArg:
        set SharedLibArg = "$Value"

        GO_CONTINUATION

   case SpokeDepLib:
        set SpokeDepLib = "$Value"

        GO_CONTINUATION

   case SUFFIXES:
        set SUFFIXES = "$Value"

        GO_CONTINUATION

   case ThreadLibExt:
        set ThreadLibExt = "$Value"

        GO_CONTINUATION

   case UPDATE:
        set UPDATE = "$Value"

        GO_CONTINUATION

   case UseGnuMake:
        set GnuMakeOpt = "-DUSE_GNU_MAKE"

        GO_CONTINUATION

   case UseX:
        set UseX = "$Value"

        GO_CONTINUATION

   case UseIGL:
        set UseIGL = "$Value"

        GO_CONTINUATION

   case UseOGL:
        set UseOGL = "$Value"

        GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# CCP - .c.i rule handler

   case ".c.i:":
        SET_CONTINUATION ParseRule CCP_Ret
CCP_Ret:

        set CCP = "$Val"
        if ($Verbose == "TRUE") then
           echo "Redefining .c.i rule:\n$CCP"
        endif

        GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# CCOBJ - .c.o rule handler

   case ".c.o:":
        SET_CONTINUATION ParseRule CCObj_Ret
CCObj_Ret:

        set CCObj = "$Val"
        if ($Verbose == "TRUE") then
           echo "Redefining .c.o rule:\n$CCObj"
        endif

        GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# CCARC - .c.a rule handler

   case ".c.a:":
        SET_CONTINUATION ParseRule CCArc_Ret
CCArc_Ret:

        set CCArc = "$Val"
        if ($Verbose == "TRUE") then
           echo "Redefining .c.a rule:\n$CCArc"
        endif

        GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# FCOBJ - .f.o rule handler

   case ".f.o:":
        SET_CONTINUATION ParseRule FCObj_Ret
FCObj_Ret:

        set FCObj = "$Val"
        if ($Verbose == "TRUE") then
           echo "Redefining .f.o rule:\n$FCObj"
        endif

        GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# FCARC - .f.a rule handler

   case ".f.a:":
        SET_CONTINUATION ParseRule FCArc_Ret
FCArc_Ret:

        set FCArc = "$Val"
        if ($Verbose == "TRUE") then
           echo "Redefining .f.a rule:\n$FCArc"
        endif

        GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# LEXOBJ - .l.o rule handler

   case ".l.o:":
        SET_CONTINUATION ParseRule LexObj_Ret
LexObj_Ret:

        set LexObj = "$Val"
        if ($Verbose == "TRUE") then
           echo "Redefining .l.o rule:\n$LexObj"
        endif

        GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# LEXARC - .l.a rule handler

   case ".l.a:":
        SET_CONTINUATION ParseRule LexArc_Ret
LexArc_Ret:

        set LexArc = "$Val"
        if ($Verbose == "TRUE") then
           echo "Redefining .l.a rule:\n$LexArc"
        endif

        GO_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# DEFAULT - the default case handler

   case VariableDef:
   default:

       echo $Line >>& $STDOUT
       GO_CONTINUATION

   endsw

#--------------------------------------------------------------------------

#                            SUBROUTINES

#--------------------------------------------------------------------------

# REPLACETEXT - do the required text replacement

ReplaceText:
    if ("$Replace" != "") then
       sed "$Replace" $STDOUT > file.tmp
       rm $STDOUT
       mv file.tmp $STDOUT
    endif

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# PRINTTEXT - do the required text printing with \n and \t handled
#           - properly (some csh's print them literally instead of the
#           - C way)

PrintText:
    if ("$Text" != "") then

       rm -f tmp.1

       echo "$Text" > tmp.1
       grep "\\n" tmp.1 >>& /dev/null
       if ($status == 0) then
          (echo '1,$s/[\]t/	/g' ; echo '1,$s/[\]n/
/g' ; echo '1,$p') | ed - tmp.1 |\
          tr "\015" "\012" |\
          awk '($1 != "?") {print}' >>& $STDOUT
       else
          grep "\\t" tmp.1 >>& /dev/null
          if ($status == 0) then
             (echo '1,$s/[\]t/	/g' ; echo '1,$p') | ed - tmp.1 |\
             tr "\015" "\012" |\
             awk '($1 != "?") {print}' >>& $STDOUT
          else
             cat tmp.1 >>& $STDOUT
          endif
       endif

       rm -f tmp.1

    endif

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# PARSERULE - read a rule into the Val register

ParseRule:

    if ($Trace == "TRUE") then
       echo "Entering ParseRule"
    endif

    set Val = ""

ParseNextLine:

       SET_CONTINUATION ReadLine ParseLine_Ret
ParseLine_Ret:

       if ("$Line" == "") then
          if ($Trace == "TRUE") then
             echo "Leaving ParseRule for $Continuations[1] with:\n $Val"
          endif

          RET_CONTINUATION
       endif

       set Val = "$Val\t$Line\n"

    goto ParseNextLine

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# DPDEFINE - read a rule into the Val register

DPDefine:

    if ($Trace == "TRUE") then
       echo "Entering DPDefine"
    endif

    set STDOUT = "file.dpe"
    rm -f $STDOUT
    touch $STDOUT

DPDefNextLine:

    SET_CONTINUATION ReadLine DPDefLine_Ret
DPDefLine_Ret:

    if (("$Line" == "end") || ("$Line" == "")) then
       if ($Trace == "TRUE") then
          echo "Leaving DPDefine for $Continuations[1]"
       endif
    
       echo "" >>& file.dpe
    
       set STDOUT = "trash"
       RET_CONTINUATION
    endif
    
    set Text = "setenv $Line"
    
    SET_CONTINUATION PrintText DPDefNextLine

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# CDEFINE - read a rule into the Val register

CDefine:

    if ($Trace == "TRUE") then
       echo "Entering CDefine"
    endif

    set STDOUT = "file.ce"

CDefNextLine:

    SET_CONTINUATION ReadLine CDefLine_Ret
CDefLine_Ret:

    if (("$Line" == "end") || ("$Line" == "")) then
       if ($Trace == "TRUE") then
          echo "Leaving CDefine for $Continuations[1]"
       endif
    
       echo "" >>& file.ce
    
       set STDOUT = "trash"
       RET_CONTINUATION
    endif
    
    set Text = "#define $Line"
    switch ("$Line")
       case PCC:
            set CCType = "PCC"
            goto CDefNextLine
    
       case ANSI:
            set CCType = "ANSI"
            goto CDefNextLine
    
       case SYSV:
            set OSType = "SYSV"
            breaksw
    
       case BSD:
            set OSType = "BSD"
            breaksw
    
       case HAVE_SOCKETS_P:
            set HAVE_SOCKETS_P = "File"
            breaksw
    
       case HAVE_STREAMS_P:
            set HAVE_STREAMS_P = "File"
            breaksw
    
       case HAVE_SELECT_P:
            set HAVE_SELECT_P = "File"
            breaksw
    
    endsw
    
    SET_CONTINUATION PrintText CDefNextLine

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# CDECLARE - gather consecutive lines together for C declarations

CDeclare:

    if ($Trace == "TRUE") then
       echo "Entering CDeclare"
    endif

    set STDOUT = "file.cd"

CDeclNextLine:

       SET_CONTINUATION ReadLine CDeclLine_Ret
CDeclLine_Ret:

    if (("$Line" == "end") || ("$Line" == "")) then
       if ($Trace == "TRUE") then
          echo "Leaving CDeclare for $Continuations[1]"
       endif
    
       echo "" >>& file.cd
    
       set STDOUT = "trash"
       RET_CONTINUATION
    endif
    
    set Text = "$Line"
    
    SET_CONTINUATION PrintText CDeclNextLine

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# READLINE - read the next line from the input

ReadLine:

    if ($Trace == "TRUE") then
       echo "Entering ReadLine"
    endif

    set iline = `expr $iline + 1`
    set Line  = `echo $<`

# toss blank and comment lines
    if (($#Line < 1) || (`expr "$Line" : "#"` > 0)) then
       if ($Verbose == "TRUE") then
          echo "Line ignored ($iline): $Line"
       endif
       set Line = ""
    endif

    if ($Trace == "TRUE") then
       echo "Leaving ReadLine with $Line"
    endif

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITEMAKEDEF - write the MAKE-DEF file

WriteMAKEDEF:

    echo "   Site Dependent MAKE Configuration - make-def"

    set STDOUT = $IncDir/make-def

    rm -f $STDOUT
    touch $STDOUT

    echo "#" >>& $STDOUT
    echo "# MAKE-DEF - installation dependent definitions for $Sys" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "" >>& $STDOUT
    echo "System  = $System" >>& $STDOUT
    echo "RootDir = $RootDir" >>& $STDOUT
    echo 'ScmDir  = ${RootDir}/scheme' >>& $STDOUT
    echo 'BinDir  = ${RootDir}/bin' >>& $STDOUT
    echo 'LibDir  = ${RootDir}/lib' >>& $STDOUT
    echo 'IncDir  = ${RootDir}/include' >>& $STDOUT
    echo "" >>& $STDOUT

    echo "#" >>& $STDOUT
    echo "# Site Dependent Graphics Information" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "GraphicsFlag       = $GraphicsFlag" >>& $STDOUT
    echo "MachDepGraphicsInc = $MachDepGraphicsInc" >>& $STDOUT
    echo "MachDepGraphicsLib = $MachDepGraphicsLib" >>& $STDOUT

    set GrDev = ""
    foreach dev ($GraphicsDevices)
       if ($BuildStrategy == "SpaceSaving") then
	  set GrDev = ( $GrDev '${Ar'$dev'}' )
       else
	  set GrDev = ( $GrDev '${O'$dev'}' )
       endif
    end
    echo "GraphicsDevices    = $GrDev" >>& $STDOUT

    echo "" >>& $STDOUT
    echo "GSYS=$GSYS" >>& $STDOUT
    echo "" >>& $STDOUT

    if ($BuildStrategy == "SpaceSaving") then
       set MPDev  = '${Ar'$ParCommSupport'}'
       set IPCDev = '${Ar'$IPCSupport'}'
    else
       set MPDev  = '${O'$ParCommSupport'}'
       set IPCDev = '${O'$IPCSupport'}'
    endif
    echo "MPassDevices = $MPDev" >>& $STDOUT
    echo "IPCDevices   = $IPCDev" >>& $STDOUT
    echo "" >>& $STDOUT

    echo "#" >>& $STDOUT
    echo "# Other Site Dependent Info" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "MachDepLib = $MachDepLib" >>& $STDOUT
    set MDI = ""
    foreach i ($MachDepInc)
       set MDI = " -I$i$MDI"
    end
    echo "MachDepInc =$MDI" >>& $STDOUT

    echo "" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "# Compiler/Loader Options" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "CCompiler = $CCompiler" >>& $STDOUT
    echo "CCmpLdr   = $CCmpLdr" >>& $STDOUT
    echo "CFLAGS    = $CFLAGS $SharedLibArg" >>& $STDOUT
    echo "CDebug    = $CDebug" >>& $STDOUT
    echo "COptimize = $COptimize" >>& $STDOUT
    echo "FCompiler = $FCompiler" >>& $STDOUT
    echo "FFLAGS    = $FFLAGS $SharedLibArg" >>& $STDOUT
    echo "FDebug    = $FDebug" >>& $STDOUT
    echo "FOptimize = $FOptimize" >>& $STDOUT
    echo "LXFLAGS   = $LXFLAGS $SharedLibArg" >>& $STDOUT
    echo "LDFLAGS   = $LDFLAGS" >>& $STDOUT

    echo "" >>& $STDOUT
    echo "FrontEnd  = $FrontEnd" >>& $STDOUT
    echo "BackEnd   = $BackEnd" >>& $STDOUT

    if ("$InstBase" == "none") then
       echo "PubLib    = " >>& $STDOUT
       echo "PubInc    = " >>& $STDOUT
    else
       echo "PubLib    = $PubLib" >>& $STDOUT
       echo "PubInc    = $PubInc" >>& $STDOUT
    endif

# emit the load names for the libraries - cover threaded/nonthreaded
    echo "" >>& $STDOUT
    echo "ThreadLibExt=$ThreadLibExt" >>& $STDOUT
    echo "LSCORE      = -lscore$ThreadLibExt" >>& $STDOUT
    echo "LPML        = -lpml$ThreadLibExt" >>& $STDOUT
    echo "LPDB        = -lpdb$ThreadLibExt" >>& $STDOUT
    echo "LPPC        = -lppc$ThreadLibExt" >>& $STDOUT
    echo "LPGS        = -lpgs$ThreadLibExt" >>& $STDOUT
    echo "LPANACEA    = -lpanacea$ThreadLibExt" >>& $STDOUT
    echo "LSCHEME     = -lscheme$ThreadLibExt" >>& $STDOUT
    echo "LSX         = -lsx$ThreadLibExt" >>& $STDOUT
    echo "LULTRA      = -lultra$ThreadLibExt" >>& $STDOUT

    echo "" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "# System utilities" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "INSTALL = $INSTALL" >>& $STDOUT
    echo "RM      = $RM" >>& $STDOUT
    echo "AROpt   = $ArcInstOpt" >>& $STDOUT

# emit RANLIB in case a pre-Make has to reference it!!!!
    echo "RANLIB  = $RANLIB" >>& $STDOUT
    echo "UPDATE  = $UPDATE" >>& $STDOUT

    echo "" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "# Space Saving Build" >>& $STDOUT
    echo '#     If you want that option do the following:' >>& $STDOUT
    echo '#                    LibDep = ${ArObjs}' >>& $STDOUT
    echo '#                    .PRECIOUS: ${TGTLib}' >>& $STDOUT
    echo '#     otherwise do:' >>& $STDOUT
    echo '#                    LibDep = ${Objs}' >>& $STDOUT
    echo "#" >>& $STDOUT

# BuildStrategy handler

    if ($BuildStrategy == "SpaceSaving") then
       echo 'LibDep = ${ArObjs}' >>& $STDOUT
       echo "" >>& $STDOUT
       echo '.PRECIOUS: ${TGTLib}' >>& $STDOUT
    else
       echo 'LibDep = ${Objs}' >>& $STDOUT
    endif
    echo "" >>& $STDOUT

    echo "SHELL   = /bin/sh" >>& $STDOUT
    echo "Manager = $Root" >>& $STDOUT
    echo 'DATE    = `./code-date`' >>& $STDOUT
    echo "" >>& $STDOUT
    if ("$SharedLibArg" != "") then
       echo 'CC = ${CCompiler} ${CFLAGS} ${UniFlags} ${CcFlags}' >>& $STDOUT
       echo 'FC = ${FCompiler} ${FFLAGS} ${UniFlags} ${FcFlags}' >>& $STDOUT
       echo 'LX = ${CCompiler} ${LXFLAGS} ${UniFlags} ${CcFlags}' >>& $STDOUT
    else
       echo 'CC = ${CCompiler} ${CFLAGS} ${UniFlags} ${CcFlags}' >>& $STDOUT
       echo 'FC = ${FCompiler} ${FFLAGS} ${UniFlags} ${FcFlags}' >>& $STDOUT
       echo 'LX = ${CCompiler} ${LXFLAGS} ${UniFlags} ${CcFlags}' >>& $STDOUT
    endif
    echo 'LD = ld ${UniFlags} ${LdFlags}' >>& $STDOUT
    echo "" >>& $STDOUT
 
    echo 'CLD = ${CCmpLdr} ${CFLAGS} ${UniFlags} ${CcFlags}' >>& $STDOUT
    echo "" >>& $STDOUT

    if ($Load == TRUE) then
       echo 'Load = ${CLD}' >>& $STDOUT
    else
       echo 'Load = echo' >>& $STDOUT
    endif
    echo "" >>& $STDOUT

    echo "" >>& $STDOUT
    echo ".SUFFIXES: $SUFFIXES" >>& $STDOUT
    echo "" >>& $STDOUT

# write the default make rules

    set Text = ".c.i:\n$CCP"
    SET_CONTINUATION PrintText PrintCCP_Ret
PrintCCP_Ret:

    set Text = ".c.o:\n$CCObj"
    SET_CONTINUATION PrintText PrintCCObj_Ret
PrintCCObj_Ret:

    set Text = ".c.a:\n$CCArc"
    SET_CONTINUATION PrintText PrintCCArc_Ret
PrintCCArc_Ret:

    set Text = ".l.o:\n$LexObj"
    SET_CONTINUATION PrintText PrintLexObj_Ret
PrintLexObj_Ret:

    set Text = ".l.a:\n$LexArc"
    SET_CONTINUATION PrintText PrintLexArc_Ret
PrintLexArc_Ret:

    set Text = ".f.o:\n$FCObj"
    SET_CONTINUATION PrintText PrintFCObj_Ret
PrintFCObj_Ret:

    set Text = ".f.a:\n$FCArc"
    SET_CONTINUATION PrintText PrintFCArc_Ret
PrintFCArc_Ret:

# add the user defined rules here
    set URFile = `find . -name "file.ur" -size 0c -print`
    if ($#URFile == 0) then
       echo "#" >>& $STDOUT
       echo "# Configuration defined rules" >>& $STDOUT
       echo "#" >>& $STDOUT
       echo "" >>& $STDOUT
       cat file.ur >>& $STDOUT
       echo "" >>& $STDOUT
    endif
    rm -f file.ur

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITEMAKEMAC - write the MAKE-MACROS file

WriteMAKEMAC:

    echo "   System Dependent MAKE Macros - make-macros"

    set STDOUT = $IncDir/make-macros

    rm -f $STDOUT
    touch $STDOUT

    echo '#' >>& $STDOUT
    echo '# MAKE-MACROS - PACT Makefile macros for '$Sys >>& $STDOUT
    echo '#' >>& $STDOUT
    echo "" >>& $STDOUT

    if ("$SharedLibArg" != "") then
       echo '#' >>& $STDOUT
       echo '# make shared library' >>& $STDOUT
       echo '#' >>& $STDOUT

       echo 'TGTSLib  = ${LibDir}/lib${LibName}.so' >>& $STDOUT
       echo 'TGTShLib = ${TGTSLib}.'$LibVers >>& $STDOUT
       echo '' >>& $STDOUT

       echo '${TGTShLib} : ${TGTLib}' >>& $STDOUT
       echo '	@rm -f ${TGTSLib} $@' >>& $STDOUT
       echo '	@ln -s ${TGTShLib} ${TGTSLib}' >>& $STDOUT
       echo '	@ar -x ${TGTLib}' >>& $STDOUT
       echo '	ld -shared -o $@ *.o -L${LibDir} ${Libs}' >>& $STDOUT
       echo '	@rm -f *.o' >>& $STDOUT
       echo '' >>& $STDOUT

       echo 'shared :' >>& $STDOUT
       echo '	pact ${TGTShLib}' >>& $STDOUT
       echo '' >>& $STDOUT
    else
       echo 'shared :' >>& $STDOUT
       echo '	@echo "No shared libaries requested"' >>& $STDOUT
       echo '' >>& $STDOUT
    endif

    echo '#' >>& $STDOUT
    echo '# make new library' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo '${TGTLib} : ${LibDep}' >>& $STDOUT
    if ("$BuildStrategy" != "SpaceSaving") then
       echo '	ar ${AROpt} ${TGTLib} ${Objs}' >>& $STDOUT
    endif
    if ("$RANLIB" != "touch") then
       echo "	$RANLIB "'${TGTLib}' >>& $STDOUT
    endif
    echo '' >>& $STDOUT

    if ($NoExe == TRUE) then
       echo '#' >>& $STDOUT
       echo '# make place-holder for executable' >>& $STDOUT
       echo '#' >>& $STDOUT
       echo '${TGTBin} : ${BinDep}' >>& $STDOUT
       echo '	echo "${TGTBin}" > ${TGTBin}' >>& $STDOUT
    else
       echo '#' >>& $STDOUT
       echo '# make new executable' >>& $STDOUT
       echo '#' >>& $STDOUT

       if ("$SharedLibArg" != "") then
          echo '${TGTBin} : ${BinDep} ${TGTShLib}' >>& $STDOUT
       else
          echo '${TGTBin} : ${BinDep}' >>& $STDOUT
       endif
       echo '	${Load} ${BinObj} -o ${TGTBin} ${Libs}' >>& $STDOUT
    endif
    echo '' >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# install library' >>& $STDOUT
    echo '#' >>& $STDOUT
    if ("$SharedLibArg" != "") then
       echo 'libinstall : ${TGTLib} ${TGTShLib}' >>& $STDOUT
    else
       echo 'libinstall : ${TGTLib}' >>& $STDOUT
    endif
    echo '	${INSTALL} ${TGTLib} ${TGTLib}' >>& $STDOUT

    if ("$UPDATE" != "touch") then
       echo "	$UPDATE "'${LibDir}/${TGTLib}' >>& $STDOUT
    endif
    echo '' >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# install library archive' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'arcinstall : ${TGTLib}' >>& $STDOUT
    echo '	ar x ${TGTLib}' >>& $STDOUT
    echo "	ar" '${AROpt} ${LibDir}/${TGTArc} *.o' >>& $STDOUT
    echo '	@rm *.o' >>& $STDOUT

# NOTE: this usage should reflect the libinstall target usage
#       some SUN systems insist on it!
    if ("$RANLIB" != "touch") then
       echo "	$RANLIB "'${LibDir}/${TGTArc}' >>& $STDOUT
    endif
    echo '' >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# install includes' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'incinstall : ${TGTInc}' >>& $STDOUT
    echo '	cp ${TGTInc} ${IncDir}' >>& $STDOUT
    echo "" >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# install binaries' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'bininstall : ${TGTBin}' >>& $STDOUT
    echo '	cp ${TGTBin} ${BinDir}' >>& $STDOUT
    echo "" >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# install scheme files' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'scminstall : ${TGTScm}' >>& $STDOUT
    echo '	cp ${TGTScm} ${ScmDir}' >>& $STDOUT
    echo "" >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# install (scheme) extensions files' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'extinstall :' >>& $STDOUT
    echo '	cp ${TGTScmX} ${ExtDir}' >>& $STDOUT
    echo '	cp ${TGTScrX} ${BinDir}' >>& $STDOUT
    echo "" >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# install scripts' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'scrinstall : ${TGTScr}' >>& $STDOUT
    echo '	cp ${TGTScr} ${BinDir}' >>& $STDOUT
    echo "" >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# clean up the directory' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'clean :' >>& $STDOUT
    echo '	@touch tarfu~ core' >>& $STDOUT
    echo '	@${RM} -f tmp.mk pact > /dev/null' >>& $STDOUT
    echo '	@${RM} ${CleanFiles} > /dev/null' >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# remove binaries and libraries' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'remove :' >>& $STDOUT
    echo '	@pact -i clean' >>& $STDOUT
    echo '	@touch tarfu.o' >>& $STDOUT
    echo '	@${RM} *.o *.a *.so *.so.* > /dev/null' >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# make focal listing' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'focal :' >>& $STDOUT
    echo '	cat ${FocalSrc} | focal > ${FocalLst}' >>& $STDOUT

    echo '#' >>& $STDOUT
    echo '# Record the interface changes as defined in the headers' >>& $STDOUT
    echo '#' >>& $STDOUT
    echo 'diff-hdr :' >>& $STDOUT
    echo '	${Manager}/manager/pact-changes ${IncDir} ${Hdrs}' >>& $STDOUT
    echo "" >>& $STDOUT

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITESCVERS - write the SCVERS.C file

WriteSCVERS:

    echo "   Version Configuration - scvers.c"

    set STDOUT = ../score/scvers.c

    rm -f $STDOUT
    touch $STDOUT

    echo "/*" >>& $STDOUT
    echo " * SCVERS.C - PACT version" >>& $STDOUT
    echo " *" >>& $STDOUT
    echo " * Source Version: 2.0" >>& $STDOUT
    echo " * Software Release #92-0043" >>& $STDOUT
    echo " *" >>& $STDOUT
    echo " */" >>& $STDOUT
    echo "" >>& $STDOUT

    echo "char" >>& $STDOUT
    set QUOTE = \"
    set THE_DATE = `code-date`
    echo ' SC_version_string[] = '$QUOTE$THE_DATE$QUOTE';' >>& $STDOUT
    echo "" >>& $STDOUT

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITEDPE - write the PACT-DPE file

WriteDPE:

    if ((-e file.dpe) || ("$FrontEnd" != "")) then
       echo "   MP Environment Configuration - pact-dpe"

       set STDOUT = $BinDir/pact-dpe

       rm -f $STDOUT
       touch $STDOUT

       echo "#\!/bin/csh" >>& $STDOUT
       echo "#" >>& $STDOUT
       echo "# PACT-DPE - PACT DP Environment handler" >>& $STDOUT
       echo "#" >>& $STDOUT
       echo "# Source Version: 2.0" >>& $STDOUT
       echo "# Software Release #92-0043" >>& $STDOUT
       echo "#" >>& $STDOUT
       echo "" >>& $STDOUT

       if ("$FrontEnd" != "") then
          echo 'set FrontEnd = "'$FrontEnd'"' >>& $STDOUT
       endif

       if (-e file.dpe) then
          cat file.dpe >>& $STDOUT
       endif

       chmod a+x $STDOUT

    endif

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITESCCONFIG - write the SCCONFIG.H file

WriteSCCONFIG:

    echo "   C Environment Configuration - scconfig.h"

    set STDOUT = $IncDir/scconfig.h

    rm -f $STDOUT
    touch $STDOUT

    echo "/*" >>& $STDOUT
    echo " * SCCONFIG.H - standard configuration on $Sys" >>& $STDOUT
    echo " *            - defines the following configuration parameters for PACT" >>& $STDOUT
    echo " *" >>& $STDOUT
    echo " * Source Version: 2.0" >>& $STDOUT
    echo " * Software Release #92-0043" >>& $STDOUT
    echo " *" >>& $STDOUT
    echo " */" >>& $STDOUT
    echo "" >>& $STDOUT

    echo "#ifndef PCK_CONFIGURATION" >>& $STDOUT
    echo "" >>& $STDOUT
    echo "#define PCK_CONFIGURATION" >>& $STDOUT
    echo "" >>& $STDOUT

    if ($CCType == "ANSI") then
       echo "#define ANSI" >>& $STDOUT
       echo "#define byte void" >>& $STDOUT
       echo "#define CONST const" >>& $STDOUT
       echo "#define SIGNED signed" >>& $STDOUT
    else
       echo "#define PCC" >>& $STDOUT
       echo "#define byte char" >>& $STDOUT
       echo "#define CONST" >>& $STDOUT
       echo "#define SIGNED" >>& $STDOUT
    endif

    if (!($?OSType)) then
       set OSType = "SYSV"
    endif
    echo "#undef $OSType" >>& $STDOUT
    echo "#define $OSType" >>& $STDOUT
    if ($?HostOS) then
       if ("$HostOS" == "AIX") then
          echo "#undef AIX" >>& $STDOUT
          echo "#define AIX" >>& $STDOUT
       else if ("$HostOS" == "HP-UX") then
          echo "#undef HPUX" >>& $STDOUT
          echo "#define HPUX" >>& $STDOUT
       else if ("$HostOS" == "ULTRIX") then
          echo "#undef ULTRIX" >>& $STDOUT
          echo "#define ULTRIX" >>& $STDOUT
       endif
    endif

    if (!($?HostArch)) then
       set HostArch = `uname -m`
    endif
    if ("$HostArch" == "dino1") then
       echo "#undef MEIKO" >>& $STDOUT
       echo "#define MEIKO" >>& $STDOUT
    endif

# can't get here without this being TRUE
    echo "#undef UNIX" >>& $STDOUT
    echo "#define UNIX" >>& $STDOUT

    if ($Register == "none") then
       echo "#define Register" >>& $STDOUT
    else
       echo "#define Register $Register" >>& $STDOUT
    endif

    if ($UseX == "TRUE") then
       echo "#define X11R4" >>& $STDOUT
    endif

    if ($UseOGL == "TRUE") then
       echo "#define USE_OGL" >>& $STDOUT

    else if ($UseIGL == "TRUE") then
       echo "#define USE_IGL" >>& $STDOUT
    endif

    if ($IPCSupport != "NOIPC") then
       rm -f noipc
       echo "#define HAVE_PROCESS_CONTROL" >>& $STDOUT
       if ($HAVE_SOCKETS_P != "FALSE") then
          echo "#define HAVE_SOCKETS_P" >>& $STDOUT
       endif
    else
       touch noipc
    endif

    if ($HAVE_STREAMS_P == "Envir") then
       echo "#define HAVE_STREAMS_P" >>& $STDOUT
    endif

    if ($HAVE_SELECT_P == "Envir") then
       echo "#define HAVE_SELECT_P" >>& $STDOUT
    endif

    if ($NEED_MEM_TRACE == "TRUE") then
       echo "#define NEED_MEM_TRACE" >>& $STDOUT
    endif

    if ("$F77IntPtrDiffer" != "") then
       echo "#define $F77IntPtrDiffer" >>& $STDOUT
    endif

    if ("$LONG64" != "") then
       echo "#define LONG64" >>& $STDOUT
    endif

    if ("$HAVE_JPEGLIB" != "") then
       echo "#define HAVE_JPEGLIB" >>& $STDOUT
    endif

    if ($CCType == "PCC") then
       $CC1 limits.c -o limits
       echo "" >>& $STDOUT
       limits >>& $STDOUT
       echo "" >>& $STDOUT
       rm limits
    endif

    echo "" >>& $STDOUT
    cat file.ce >>& $STDOUT
    rm -f file.ce
    echo "" >>& $STDOUT

    echo "" >>& $STDOUT
    echo "#endif" >>& $STDOUT
    echo "" >>& $STDOUT

    echo "   C Environment Configuration - scdecls.h"

    set STDOUT = $IncDir/scdecls.h

    rm -f $STDOUT
    touch $STDOUT

    echo "/*" >>& $STDOUT
    echo " * SCDECLS.H - define and declares things missing from the system headers" >>& $STDOUT
    echo " *" >>& $STDOUT
    echo " */" >>& $STDOUT
    echo "" >>& $STDOUT

    cd ../score

    $CC1 -DMM_CONFIG -I. -I../manager -I$IncDir scctla.c -o config
    ./config >>& $STDOUT
    if ($status == 0) then
       rm -f ./config
    endif
    cd ../manager
    echo "" >>& $STDOUT

    echo "#ifndef MISSING_DECLARATIONS" >>& $STDOUT
    echo "" >>& $STDOUT
    echo "#define MISSING_DECLARATIONS" >>& $STDOUT
    echo "" >>& $STDOUT

    cat file.cd >>& $STDOUT
    rm -f file.cd

    echo "" >>& $STDOUT
    echo "#endif" >>& $STDOUT
    echo "" >>& $STDOUT

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITETRCONFIG - write the TRCONFIG.H file

WriteTRCONFIG:

    echo "   Binary File Translation Spokes Configuration - trconfig.h"

    set STDOUT = ../sx/spokes/trconfig.h

    rm -f $STDOUT
    touch $STDOUT

    echo "/*" >>& $STDOUT
    echo " * TRCONFIG.H - Configure SX Binary File Translation Spokes for $Sys" >>& $STDOUT
    echo " *" >>& $STDOUT
    echo " * Source Version: 2.0" >>& $STDOUT
    echo " * Software Release #92-0043" >>& $STDOUT
    echo " *" >>& $STDOUT
    echo " */" >>& $STDOUT

    echo "" >>& $STDOUT

    set nspokes = $#CSpokes

    set ispoke  = 0
    while (`expr $ispoke \< $nspokes`)
       set ispoke = `expr $ispoke + 1`
       set Spoke  = $CSpokes[$ispoke]
       set Spoke  = `expr "$Spoke" : 'extensions/\(.*\)' \| $Spoke`
       set Spoke  = `echo $Spoke | tr "[a-z]" "[A-Z]"`
       echo "#define HAVE_$Spoke" >>& $STDOUT
    end

    echo "" >>& $STDOUT

    echo "#define DEF_SX(cd, vrs) "$BackSlash >>& $STDOUT
    echo "    SX_init(cd, vrs); "$BackSlash >>& $STDOUT

    set ispoke  = 0
    while (`expr $ispoke \< $nspokes`)
       set ispoke = `expr $ispoke + 1`
       set Spoke  = $CSpokes[$ispoke]
       set Spoke  = `expr "$Spoke" : 'extensions/\(.*\)' \| $Spoke`
       echo "    TR_install_"$Spoke"_funcs(); "$BackSlash >>& $STDOUT
    end

    echo "    TR_install_funcs()" >>& $STDOUT
    echo "" >>& $STDOUT

    set ispoke  = 0
    echo "extern void" >>& $STDOUT
    while (`expr $ispoke \< $nspokes`)
       set ispoke = `expr $ispoke + 1`
       set Spoke  = $CSpokes[$ispoke]
       set Spoke  = `expr "$Spoke" : 'extensions/\(.*\)' \| $Spoke`
       echo " SC_DECLARE(TR_install_"$Spoke"_funcs, (void))," >>& $STDOUT
    end

    echo " SC_DECLARE(TR_install_funcs, (void));" >>& $STDOUT
    echo "" >>& $STDOUT

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITESPOKESSCM - write the SPOKES.SCM file

WriteSPOKESSCM:

    echo "   Binary File Translation Spokes Loader - spokes.scm"

    set STDOUT = ../sx/applications/spokes.scm

    rm -f $STDOUT
    touch $STDOUT

    echo ";" >>& $STDOUT
    echo "; SPOKES.SCM - initialization of SX translation spokes for $Sys" >>& $STDOUT
    echo ";" >>& $STDOUT
    echo "" >>& $STDOUT
    echo '(define (safe-load file)' >>& $STDOUT
    echo '  (if (file? file nil nil "global")' >>& $STDOUT
    echo '      (load file #t)' >>& $STDOUT
    echo '      (printf nil "Cannot find %s\\n" file)))' >>& $STDOUT
    echo "" >>& $STDOUT

    set nspokes = $#SchemeSpokes
    set ispoke  = 0
    while (`expr $ispoke \< $nspokes`)
       set ispoke = `expr $ispoke + 1`
       set tspoke = $SchemeSpokes[$ispoke]
       if ($tspoke != "ascii") then
          echo "(safe-load" '"'$tspoke".scm"'"'")" >>& $STDOUT
       endif
    end

    set nspokes = $#CSpokes
    set ispoke  = 0
    while (`expr $ispoke \< $nspokes`)
       set ispoke = `expr $ispoke + 1`
       set tspoke = $CSpokes[$ispoke]
       if ($tspoke != "ascii") then
          echo "(safe-load" '"'$tspoke".scm"'"'")" >>& $STDOUT
       endif
    end
    echo "" >>& $STDOUT

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITETRSPOKE - write the TRSPOKE script

WriteTRSPOKE:

    echo "   Binary File Translation Spokes Builder - trspoke"

    set STDOUT = ../sx/spokes/trspoke

    rm -f $STDOUT
    touch $STDOUT

    echo "#\!/bin/csh -f" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "# TRSPOKE - configure and compile the SX TRANSLATION spokes" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "" >>& $STDOUT

    echo "# Source Control System variables" >>& $STDOUT
    echo "set ADM = $ADM" >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'set System = `../../manager/system-id`' >>& $STDOUT
    echo 'source ../../manager/env-$System' >>& $STDOUT
    echo "" >>& $STDOUT

    echo '# make sure there is a Makefile and build the spoke' >>& $STDOUT
    echo 'foreach entry (*)' >>& $STDOUT
    echo '   if ((-d $entry) && ($entry != $ADM)) then' >>& $STDOUT
    echo '      echo "          Building $entry spoke"' >>& $STDOUT
    echo '      cd $entry' >>& $STDOUT
    echo '      pact spoke' >>& $STDOUT
    echo '      cd ..' >>& $STDOUT
    echo '   endif' >>& $STDOUT
    echo 'end' >>& $STDOUT
    echo "" >>& $STDOUT

    echo "set TRLibs = $SpokeDepLib" >>& $STDOUT
    echo 'if ("$TRLibs" != "") then' >>& $STDOUT
    echo '   set LibSX = ../../../dev/$System/lib/libsx.a' >>& $STDOUT
    echo '   mkdir tmp' >>& $STDOUT
    echo '   cd tmp' >>& $STDOUT
    echo '   foreach i ($TRLibs)' >>& $STDOUT
    echo '      echo "Extracting $i"' >>& $STDOUT
    echo '      ar x $i' >>& $STDOUT
    echo "      ar $ArcInstOpt" '$LibSX' "*.o" >>& $STDOUT
    echo '      touch .foo foo' >>& $STDOUT
    echo '      rm .* *' >>& $STDOUT
    echo '   end' >>& $STDOUT
    echo '   $RANLIB $LibSX' >>& $STDOUT
    echo '   cd ..' >>& $STDOUT
    echo '   rm -r tmp' >>& $STDOUT
    echo 'endif' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'exit($status)' >>& $STDOUT
    echo "" >>& $STDOUT

    chmod a+x $STDOUT

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITEINSTPACT - write the install-pact script

WriteINSTPACT:

    echo "   PACT Installer Script - install-pact"

    set STDOUT = $BinDir/install-pact

    rm -f $STDOUT
    touch $STDOUT

    echo "#\!/bin/csh -f" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "# INSTALL-PACT - script for installation of PACT directory files" >>& $STDOUT
    echo "#              - in designated directories; returns error messages" >>& $STDOUT
    echo "#              - with names of errant files in case of failures" >>& $STDOUT
    echo "#              - rewritten from Carolyn Sharp's original" >>& $STDOUT
    echo "" >>& $STDOUT

    if ("$InstBase" == "none") then

       echo 'echo ""' >>& $STDOUT
       echo 'echo " ** By request PACT is NOT being installed **"' >>& $STDOUT
       echo 'echo ""' >>& $STDOUT
       echo "" >>& $STDOUT

    else

       echo "set PactDir   = $RootDir" >>& $STDOUT
       echo "set InstDir   = $InstBase" >>& $STDOUT
       echo "set SchemeDir = $InstBase/$ScmDir" >>& $STDOUT
       echo "set Owner     = $USER" >>& $STDOUT
       echo "set Group     = "'`'"groups | awk '{print "'$1'"}'"'`' >>& $STDOUT
       echo "" >>& $STDOUT

       echo 'set Bins = `cat pact.bin`' >>& $STDOUT
       echo 'set Libs = `cat pact.lib`' >>& $STDOUT
       echo 'set Incs = `cat pact.include`' >>& $STDOUT
       echo 'set Scms = `cat pact.scheme`' >>& $STDOUT
       echo 'set Scrs = `cat pact.script`' >>& $STDOUT
       echo "" >>& $STDOUT

       echo 'echo ""' >>& $STDOUT
       echo 'echo "INSTALLING PACT ..."' >>& $STDOUT
       echo "" >>& $STDOUT

       echo 'chdir $PactDir/bin' >>& $STDOUT
       echo 'set DestDir = $InstDir/bin' >>& $STDOUT
       echo "" >>& $STDOUT

       echo "# install executable files with 775" >>& $STDOUT
       echo 'echo ""' >>& $STDOUT
       echo 'echo "Installing executables in $InstDir/bin"' >>& $STDOUT
       echo 'foreach file ($Scrs)' >>& $STDOUT
       echo '   if (-e $file) then' >>& $STDOUT
       echo '      cp $file $DestDir' >>& $STDOUT
       echo '      if ($status != 0) then' >>& $STDOUT
       echo '         echo "   $file INSTALL FAILED ($status)"' >>& $STDOUT
       echo '      else' >>& $STDOUT
       echo '         chmod 775 $DestDir/$file >& /dev/null' >>& $STDOUT
       echo '         echo "   $file"' >>& $STDOUT
       echo '      endif' >>& $STDOUT
       echo '   endif' >>& $STDOUT
       echo 'end' >>& $STDOUT
       echo "" >>& $STDOUT

       echo "# [use -s to strip executables]" >>& $STDOUT
       echo 'foreach file ($Bins)' >>& $STDOUT
       echo '   if (-e $file) then' >>& $STDOUT
       echo '      cp $file $DestDir' >>& $STDOUT
       echo '      if ($status != 0) then' >>& $STDOUT
       echo '         echo "   $file INSTALL FAILED ($status)"' >>& $STDOUT
       echo '      else' >>& $STDOUT
       echo '         chmod 775 $DestDir/$file >& /dev/null' >>& $STDOUT
       echo '         echo "   $file"' >>& $STDOUT
       echo '      endif' >>& $STDOUT
       echo '   endif' >>& $STDOUT
       echo 'end' >>& $STDOUT
       echo "" >>& $STDOUT

       echo "# install include with 664" >>& $STDOUT
       echo 'chdir ../include' >>& $STDOUT
       echo 'echo ""' >>& $STDOUT
       echo 'echo "Installing includes in $InstDir/include"' >>& $STDOUT
       echo 'set DestDir = $InstDir/include' >>& $STDOUT
       echo 'foreach file ($Incs)' >>& $STDOUT
       echo '   if (-e $file) then' >>& $STDOUT
       echo '      cp $file $DestDir' >>& $STDOUT
       echo '      if ($status != 0) then' >>& $STDOUT
       echo '         echo "   $file   INSTALL FAILED ($status)"' >>& $STDOUT
       echo '      else' >>& $STDOUT
       echo '         chmod 664 $DestDir/$file >& /dev/null' >>& $STDOUT
       echo '         echo "   $file"' >>& $STDOUT
       echo '      endif' >>& $STDOUT
       echo '   endif' >>& $STDOUT
       echo 'end' >>& $STDOUT
       echo "" >>& $STDOUT

       echo "# install lib with 664" >>& $STDOUT
       echo 'chdir ../lib' >>& $STDOUT
       echo 'echo ""' >>& $STDOUT
       echo 'echo "Installing libs in $InstDir/lib"' >>& $STDOUT
       echo 'set DestDir = $InstDir/lib' >>& $STDOUT
       echo 'foreach f ($Libs)' >>& $STDOUT
       echo '   set file = $f:r'$ThreadLibExt'.a' >>& $STDOUT
       echo '   if (-e $file) then' >>& $STDOUT
       echo '      set nstatus = 0' >>& $STDOUT
       echo '      cp $file $DestDir' >>& $STDOUT
       echo '      set nstatus = $status' >>& $STDOUT

       if ("$UPDATE" != "touch") then
          echo "         $UPDATE "'$DestDir/$file' >>& $STDOUT
       endif

       echo '      if ($nstatus != 0) then' >>& $STDOUT
       echo '         echo "   $file INSTALL FAILED ($status)"' >>& $STDOUT
       echo '      else' >>& $STDOUT
       echo '         chmod 664 $DestDir/$file >& /dev/null' >>& $STDOUT
       echo '         echo "   $file"' >>& $STDOUT
       echo '      endif' >>& $STDOUT
       echo '   endif' >>& $STDOUT
       echo 'end' >>& $STDOUT
       echo "" >>& $STDOUT

       echo "# install SCHEME files with 664" >>& $STDOUT
       echo 'chdir ../scheme' >>& $STDOUT
       echo 'echo ""' >>& $STDOUT
       echo 'echo "Installing SCHEME files in $SchemeDir"' >>& $STDOUT
       echo 'set DestDir = $SchemeDir' >>& $STDOUT
       echo 'foreach file ($Scms)' >>& $STDOUT
       echo '   if (-e $file) then' >>& $STDOUT
       echo '      if (!(-d $file)) then' >>& $STDOUT
       echo '         cp $file $DestDir' >>& $STDOUT
       echo '         if ($status != 0) then' >>& $STDOUT
       echo '            echo "   $file INSTALL FAILED ($status)"' >>& $STDOUT
       echo '         else' >>& $STDOUT
       echo '            chmod 664 $DestDir/$file >& /dev/null' >>& $STDOUT
       echo '            echo "   $file"' >>& $STDOUT
       echo '         endif' >>& $STDOUT
       echo '      endif' >>& $STDOUT
       echo '   endif' >>& $STDOUT
       echo 'end' >>& $STDOUT
       echo "" >>& $STDOUT

       echo 'set DestDir = $SchemeDir/extensions' >>& $STDOUT
       echo 'if ((-d extensions) && (-d $DestDir)) then' >>& $STDOUT
       echo '   set LSFiles = `ls extensions`' >>& $STDOUT
       echo '   if ("$LSFiles" != "") then' >>& $STDOUT
       echo '      echo ""' >>& $STDOUT
       echo '      echo "Installing SCHEME EXTENSIONS in $SchemeDir/extensions"' >>& $STDOUT
       echo '      chdir extensions' >>& $STDOUT
       echo '      foreach file (*)' >>& $STDOUT
       echo '         if (!(-d $file)) then' >>& $STDOUT
       echo '            cp $file $DestDir' >>& $STDOUT
       echo '            if ($status != 0) then' >>& $STDOUT
       echo '               echo "   $file INSTALL FAILED ($status)"' >>& $STDOUT
       echo '            else' >>& $STDOUT
       echo '               chmod 664 $DestDir/$file >& /dev/null' >>& $STDOUT
       echo '               echo "   $file"' >>& $STDOUT
       echo '            endif' >>& $STDOUT
       echo '         endif' >>& $STDOUT
       echo '      end' >>& $STDOUT
       echo '   endif' >>& $STDOUT
       echo 'endif' >>& $STDOUT
       echo "" >>& $STDOUT

       echo 'echo ""' >>& $STDOUT
       echo 'echo "... PACT INSTALLATION COMPLETE"' >>& $STDOUT
       echo 'echo ""' >>& $STDOUT

    endif

    chmod a+x $STDOUT

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITEINSTEXT - write the install-ext script

WriteINSTExt:

    echo "   PACT Extensions Installer Script - install-ext"

    set STDOUT = $BinDir/install-ext

    rm -f $STDOUT
    touch $STDOUT

    echo "#\!/bin/csh -f" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "# INSTALL-EXT - script for installation of site extensions" >>& $STDOUT
    echo "#" >>& $STDOUT
    echo "" >>& $STDOUT

    echo "set PactDir   = $RootDir" >>& $STDOUT
    echo "set InstDir   = $InstBase" >>& $STDOUT
    echo "set SchemeDir = $InstBase/$ScmDir" >>& $STDOUT
    echo "set Owner     = $USER" >>& $STDOUT
    echo "set Group     = "'`'"groups | awk '{print "'$1'"}'"'`' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'echo "Installing PACT Extensions..."' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'chdir $PactDir/bin' >>& $STDOUT
    echo 'set DestDir = $InstDir/bin' >>& $STDOUT
    echo "" >>& $STDOUT

    echo "# install executable files with 775" >>& $STDOUT
    echo 'echo "Installing executables in $InstDir/bin"' >>& $STDOUT
    echo 'foreach file ('$BinExt')' >>& $STDOUT
    echo '   cp $file $DestDir' >>& $STDOUT
    echo '   if ($status != 0) then' >>& $STDOUT
    echo '      echo "INSTALL FAILED FOR SCRIPT $file ($status)"' >>& $STDOUT
    echo '   else' >>& $STDOUT
    echo '      chmod 775 $DestDir/$file >& /dev/null' >>& $STDOUT
    echo '      echo "   $file"' >>& $STDOUT
    echo '   endif' >>& $STDOUT
    echo 'end' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'echo "PACT Extensions Installation Complete"' >>& $STDOUT
    echo "" >>& $STDOUT

    chmod a+x $STDOUT

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITEFORPACT - write the for-pact script

WriteFORPACT:

    echo "   PACT Mapper Script - for-pact"

    set STDOUT = "for-pact"

    rm -f $STDOUT
    touch $STDOUT

    echo "#\!/bin/csh -f" >>& $STDOUT
    echo "#>                                                  " >>& $STDOUT
    echo "#> FOR-PACT - foreach package of PACT execute the given argument " >>& $STDOUT
    echo "#>            Skip directories (packages) manager, dev, src.     " >>& $STDOUT
    echo "#>                                                               " >>& $STDOUT
    echo "#> Usage:  for-pact [-h] [-q] [-v] [-e] [-d] [-p pkg_file]       " >>& $STDOUT
    echo "#>                  'cmd argument'                  " >>& $STDOUT
    echo "#>                                                  " >>& $STDOUT
    echo "#> Options:                                         " >>& $STDOUT
    echo "#>    -h           Help package                     " >>& $STDOUT
    echo "#>                                                  " >>& $STDOUT
    echo "#>    -q           Quiet on: Don't list entry to package.        " >>& $STDOUT
    echo "#>    -v           Verbage on: List directroy entry and command. " >>& $STDOUT  
    echo "#>    -e           Error exit on: Exit loop on error.            " >>& $STDOUT
    echo "#>                                                               " >>& $STDOUT
    echo "#>    -d           Use 'pwd' directory.  Default /home/USER/pact " >>& $STDOUT
    echo "#>    -p pkg_file  Filename for ascii list of package names.     " >>& $STDOUT
    echo "#>  'cmd argument' command argument to execute (use quote)       " >>& $STDOUT
    echo "#>                                                               " >>& $STDOUT
    echo "#> Example:                                                      " >>& $STDOUT
    echo "#>   for-pact -q -e 'pact test'      # Run tests, stop if error  " >>& $STDOUT
    echo "#>                                                               " >>& $STDOUT
    echo "#>   for-pact 'lpr *.FAQ'            # print copy of FAQ's       " >>& $STDOUT
    echo "#                                                                " >>& $STDOUT
    echo "####################                                             " >>& $STDOUT
    echo "#                                                                " >>& $STDOUT     
    echo "" >>& $STDOUT
    echo "unalias ls" >>& $STDOUT
    echo "unalias cd" >>& $STDOUT
    echo "" >>& $STDOUT

    echo "# see PCD for the reason for this                                        " >>& $STDOUT
    echo 'set Here = `'pwd'` ; cd ; set RealHome = `'pwd'` ; cd $Here ; unset $Here' >>& $STDOUT
    echo "" >>& $STDOUT

    echo "set help     = FALSE                            " >>& $STDOUT

    echo 'set UserDir  = `pwd | sed "s|$RealHome|$home|"` ' >>& $STDOUT
    echo 'set HelpCode = $UserDir/$0                      ' >>& $STDOUT
    echo 'set LogFile = $UserDir/for-pact.log             ' >>& $STDOUT
    echo "set WhoIAm  = $USER                             " >>& $STDOUT

    echo "set PactDir = $Root                             " >>& $STDOUT
    echo "set Verbage = FALSE      " >>& $STDOUT
    echo "set Quiet   = FALSE      " >>& $STDOUT
    echo "set Error   = FALSE      " >>& $STDOUT
    echo "" >>& $STDOUT

    echo "# Source Control System Variables" >>& $STDOUT
    echo "set ADM = $ADM" >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'set Opt = "$HelpCode:t  $argv"' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'if ($#argv >= 1 ) then          ' >>& $STDOUT
    echo '   if ("$argv[1]" == "-h") then ' >>& $STDOUT
    echo "      set help = TRUE           " >>& $STDOUT
    echo "   endif                        " >>& $STDOUT
    echo "else                 " >>& $STDOUT
    echo "   set help = TRUE   " >>& $STDOUT
    echo "endif                " >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'while ($#argv > 1)' >>& $STDOUT
    echo '   switch ($argv[1])' >>& $STDOUT
    echo '      case -h:' >>& $STDOUT
    echo '           set help = "TRUE"' >>& $STDOUT
    echo '           breaksw' >>& $STDOUT
    echo '      case -q:' >>& $STDOUT
    echo '           set Quiet = TRUE' >>& $STDOUT
    echo '           breaksw' >>& $STDOUT
    echo '      case -v:' >>& $STDOUT
    echo '           set Verbage = TRUE' >>& $STDOUT
    echo '           breaksw' >>& $STDOUT
    echo '      case -e:' >>& $STDOUT
    echo '           set Error = TRUE' >>& $STDOUT
    echo '           breaksw' >>& $STDOUT
    echo '      case -d:' >>& $STDOUT
    echo '           set PactDir = `pwd | sed "s|$RealHome|$home|"`' >>& $STDOUT
    echo '           breaksw' >>& $STDOUT
    echo '      case -p:' >>& $STDOUT
    echo '           shift' >>& $STDOUT
    echo '           set Packages = `cat $1`' >>& $STDOUT
    echo '           breaksw' >>& $STDOUT
    echo '   endsw' >>& $STDOUT
    echo '   shift' >>& $STDOUT
    echo 'end' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'set Cmd = "$1"' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'if ($help == "TRUE") then' >>& $STDOUT
    echo "   awk '("'$1'" == "'"#>"'") {print}'" '$HelpCode  #Print Usage:' >>& $STDOUT
    echo '   exit(1)' >>& $STDOUT
    echo 'endif' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'set MngDir = manager' >>& $STDOUT
    echo 'set SCSDir = $ADM' >>& $STDOUT
    echo 'set DevDir = dev' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'if ($Verbage == TRUE) then' >>& $STDOUT
    echo '   echo Operation: "$Opt"' >>& $STDOUT
    echo 'endif' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'cd $PactDir' >>& $STDOUT

    echo 'if (!($?Packages)) then' >>& $STDOUT
    echo '   set Packages = `ls`' >>& $STDOUT
    echo 'endif' >>& $STDOUT
    echo "" >>& $STDOUT


    echo 'rm -f $LogFile                        ' >>& $STDOUT
    echo 'touch $LogFile                        ' >>& $STDOUT
    echo 'echo ""	           >>& $LogFile ' >>& $STDOUT
    echo 'echo "Operation: $Opt "  >>& $LogFile ' >>& $STDOUT 
    echo 'echo ""	           >>& $LogFile ' >>& $STDOUT
    echo 'echo "For-Pact Log		Host: `uname -n` running `uname`" >>& $LogFile ' >>& $STDOUT
    echo 'echo "User: $WhoIAm		Date: `date`"     >>& $LogFile ' >>& $STDOUT
    echo 'echo ""	           >>& $LogFile ' >>& $STDOUT
    echo "" >>& $STDOUT


    echo 'set AnyErr = 0' >>& $STDOUT
    echo 'foreach i ($Packages)' >>& $STDOUT
    echo '   if (($i != $MngDir) && ($i != $SCSDir) && ($i != $DevDir)) then' >>& $STDOUT
    echo '      if (-d $i) then' >>& $STDOUT
    echo '         if ($Quiet == FALSE) then' >>& $STDOUT
    echo '            echo ""'  >>& $STDOUT
    echo '            echo ""'  >>& $STDOUT
    echo '            echo $PactDir/$i' >>& $STDOUT
    echo '         endif' >>& $STDOUT
    echo "" >>& $STDOUT
    echo '         cd $i' >>& $STDOUT
    echo '         set nstatus = 0 ' >>& $STDOUT
    echo "" >>& $STDOUT
    echo '         if ($Verbage == TRUE) then' >>& $STDOUT
    echo '            echo Directory: `pwd | sed "s|$RealHome|$home|"`' >>& $STDOUT
    echo '            echo Command: "$Cmd"' >>& $STDOUT
    echo '         endif' >>& $STDOUT
    echo "" >>& $STDOUT

    echo '         echo "" >>& $LogFile' >>& $STDOUT
    echo '         echo Directory: `pwd | sed "s|$RealHome|$home|"` >>& $LogFile' >>& $STDOUT
    echo '         echo Command: "$Cmd"       >>& $LogFile' >>& $STDOUT
    echo '         eval $Cmd      | tee -a        $LogFile' >>& $STDOUT
    echo "" >>& $STDOUT

    echo '         if ($status != 0) then' >>& $STDOUT
    echo '            set nstatus = 1' >>& $STDOUT
    echo '            set AnyErr = 1' >>& $STDOUT
    echo '         endif' >>& $STDOUT
    echo '         if (($Error == TRUE) && ($nstatus != 0)) then' >>& $STDOUT
    echo '            echo "Exit with ERROR"' >>& $STDOUT
    echo '            echo "Exit with ERROR" >>& $LogFile' >>& $STDOUT
    echo '            exit(1)' >>& $STDOUT
    echo '         endif' >>& $STDOUT
    echo '         cd ..' >>& $STDOUT
    echo '      endif' >>& $STDOUT
    echo '   endif' >>& $STDOUT
    echo 'end' >>& $STDOUT
    echo "" >>& $STDOUT

    echo 'if ($AnyErr != 0) then' >>& $STDOUT
    echo '   echo " "' >>& $STDOUT
    echo '   echo "... AT LEAST 1" $Cmd "FAILED"' >>& $STDOUT
    echo '   set xstatus = 9' >>& $STDOUT
    echo 'else' >>& $STDOUT
    echo '   set xstatus = 0' >>& $STDOUT
    echo 'endif' >>& $STDOUT

    echo ' exit($xstatus)' >>& $STDOUT

    echo "" >>& $STDOUT

    chmod a+x for-pact


    RET_CONTINUATION


#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# WRITEMAKEM - compile the pact program

WriteMAKEM:

    echo -n "   Actor Program (Compiling) - pact "

    set InstOld = instold

    set TMAKEF = mk.tmp

    rm -f $TMAKEF
    touch $TMAKEF pre-Make
    echo "b:" >> $TMAKEF
    echo '	@csh -c "echo OK"' >> $TMAKEF
    echo " " >> $TMAKEF
    echo "a:" >> $TMAKEF
    echo "	@cpact -f $TMAKEF b" >> $TMAKEF
    echo " " >> $TMAKEF

# backup the public files
    if ($InstBase != "none") then
      if (!(-d $InstOld)) then
        mkdir $InstOld
      else
        rm -rf $InstOld
        mkdir $InstOld
      endif

      if (-e $InstBase/bin/pact) then
        cp $InstBase/bin/pact            $InstOld
      endif
      if (-e $InstBase/include/make-def) then
        cp $InstBase/include/make-def    $InstOld
      endif
      if (-e $InstBase/include/make-macros) then
        cp $InstBase/include/make-macros $InstOld
      endif


      sed "s|$RootDir|$InstBase|" $IncDir/make-def > $InstBase/include/make-def
      cp $IncDir/make-macros $InstBase/include/make-macros
    endif

# build the local version of the PACT program
    set RootOpt = ( -g -DROOT=\"$Root\" -DSYSTEM=\"$System\" -DVERSION=\"$THE_DATE\" $GnuMakeOpt )
    $CC1 $RootOpt pact.c -o $BinDir/cpact
    $BinDir/cpact -f $TMAKEF a >>& /dev/null

    if ($status != 0) then
       rm $BinDir/cpact

       rm -f $TMAKEF
       touch $TMAKEF pre-Make
       echo "b:" >> $TMAKEF
       echo '	@csh -c "echo OK"' >> $TMAKEF
       echo " " >> $TMAKEF
       echo "a:" >> $TMAKEF
       echo "	@pact -f $TMAKEF b" >> $TMAKEF
       echo " " >> $TMAKEF

# build the local version of the PACT program for STUPID makes
       set RootOpt = ( -g -DROOT=\"$Root\" -DSYSTEM=\"$System\" -DVERSION=\"$THE_DATE\" -DSTUPID_MAKE $GnuMakeOpt )
       $CC1 $RootOpt pact.c -o $BinDir/pact
       $BinDir/pact -f $TMAKEF a >>& /dev/null
       if ($status != 0) then
          rm $BinDir/pact
          echo " "
          echo " "
          echo "ERROR: SERIOUS MAKE PROBLEM ON THIS PLATFORM"
          echo " "
          exit(1)
       else
          echo " (Does NOT use PATH)"
       endif

# build the public version of the PACT program for STUPID makes
       if ($InstBase != "none") then
          set PubOpt = ( -g -DPUB=\"$InstBase\" -DSYSTEM=\"$System\" -DVERSION=\"$THE_DATE\" -DSTUPID_MAKE $GnuMakeOpt )
          $CC1 $PubOpt pact.c -o pactx.tmp
          cp pactx.tmp $InstBase/bin/pact
       endif

    else
       echo " (Does use PATH)"

       mv $BinDir/cpact $BinDir/pact

# build the public version of the PACT program
       if ($InstBase != "none") then
          set PubOpt = ( -g -DPUB=\"$InstBase\" -DSYSTEM=\"$System\" -DVERSION=\"$THE_DATE\" $GnuMakeOpt )
          $CC1 $PubOpt pact.c -o pactx.tmp
          cp pactx.tmp $InstBase/bin/pact
       endif

    endif
    rm -f $TMAKEF pre-Make pactx.tmp

    RET_CONTINUATION

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

# FINISH - complete the configuration files

Finish:

# these are finally determined by now and it is safe to define them
    set IncDir = $RootDir/include
    set LibDir = $RootDir/lib
    set BinDir = $RootDir/bin
    set BinDir = $RootDir/bin

    if ("$CCmpLdr" == "") then
       set CCmpLdr = $CCompiler
    endif

    echo "Writing --"

    SET_CONTINUATION WriteMAKEDEF WriteMAKEDEF_Ret
WriteMAKEDEF_Ret:

    SET_CONTINUATION WriteMAKEMAC WriteMAKEMAC_Ret
WriteMAKEMAC_Ret:

    SET_CONTINUATION WriteDPE WriteDPE_Ret
WriteDPE_Ret:

    SET_CONTINUATION WriteSCCONFIG WriteSCCONFIG_Ret
WriteSCCONFIG_Ret:

    SET_CONTINUATION WriteSCVERS WriteSCVERS_Ret
WriteSCVERS_Ret:

    if (-d ../sx/applications) then

    SET_CONTINUATION WriteSPOKESSCM WriteSPOKESSCM_Ret
WriteSPOKESSCM_Ret:

    endif

    if (-d ../sx/spokes) then

       SET_CONTINUATION WriteTRCONFIG WriteTRCONFIG_Ret
WriteTRCONFIG_Ret:

       SET_CONTINUATION WriteTRSPOKE WriteTRSPOKE_Ret
WriteTRSPOKE_Ret:

    endif

    SET_CONTINUATION WriteINSTPACT WriteINSTPACT_Ret
WriteINSTPACT_Ret:

    if (("$BinExt" != "") && ("$InstBase" != "none")) then
       SET_CONTINUATION WriteINSTExt WriteINSTExt_Ret
WriteINSTExt_Ret:
    endif

    SET_CONTINUATION WriteFORPACT WriteFORPACT_Ret
WriteFORPACT_Ret:

    SET_CONTINUATION WriteMAKEM WriteMAKEM_Ret
WriteMAKEM_Ret:

#
# if T3D, fiddle pdb fortran interface regression test source
#
    if ("$FrontEnd" == "mppexec") then
       cd ../pdb
       rm -f tmp.f
       sed -e s/'iarg, iargc'/'iarg, ipxfargc, ilen, ierror'/              \
           -e s/'iargc()'/'ipxfargc()'/                                    \
           -e s/'getarg(iarg, arg)'/'pxfgetarg(iarg, arg, ilen, ierror)'/g \
           pdftst.f > tmp.f
       rm pdftst.f
       mv tmp.f pdftst.f
       cd ../manager
    endif

#
# build pact-get-package
#
    echo "   Package List - pact.package"
    rm pact.package >& /dev/null
    cat pact.Pact > pact.package
    echo "   Developers Script - pact-get-package"
    rm -f $RootDir/bin/pact-get-package
    set Packages = ( `cat pact.package` )
    set Packpact = ( `cat pact.Pact` )
    sed -e "s|PCKS|( $Packages )|" -e "s|PACTPK|( $Packpact )|" pact-gp.init > $RootDir/bin/pact-get-package
    chmod a+x $RootDir/bin/pact-get-package

    touch $EnvFile
#    if ($InstBase == "none") then
       echo "setenv SCHEME $RootDir/scheme" >> $EnvFile
       echo "setenv ULTRA $RootDir/scheme" >> $EnvFile
#    else
#       echo "setenv SCHEME $InstBase/$ScmDir" >> $EnvFile
#       echo "setenv ULTRA $InstBase/$ScmDir" >> $EnvFile
#    endif
    echo "" >> $EnvFile

    echo ""
    echo "Configuration Complete"
    echo ""

    unset noglob

    exit($status)

#--------------------------------------------------------------------------
#--------------------------------------------------------------------------

