#!/bin/csh
## Generating pvm task for common lisp process 
##   in the form of a csh script
## Usage:  pvm_cltask [-I lisp] [-N a.out] file.o ...
## Paul Wang  9/14/95
## added file-loading error check for lisp task 10/8/95

if ( $#argv == 0 ) then
     echo "Usage:  pvmc_ltask [-I lisp] [-N a.out] file.o ..."
     exit(1)
endif

set aout = ""
set lisp = '/usr/local/maxima.obj/saved_kcl+pvm /usr/local/maxima.obj/'
set optdone = 0

while ( ! $optdone )
  switch ($1)
    case -I: ## lisp interpreter to use
         set lisp = $2
         shift; shift; breaksw
    case -N: ## name of executable to produce
         set aout = $2
         shift; shift; breaksw
    default:
         set optdone = 1
  endsw
end

while ( $aout == "" )
    echo -n Enter name of executable: name=
    set aout = $<
end

set mainfn = ""
while ( $mainfn == "" )
    echo Your main lisp function receives command-line arguments, if any
    echo -n Enter name of main function: mainfn=
    set mainfn = $<
end

set objs = "$argv"

echo \#\!/bin/csh >! $aout
echo 'set logfile = /tmp/${USER}LOG.$$' >>! $aout
echo 'echo $0 $argv INVOKED >! $logfile' >>! $aout

echo set cmd = \( $mainfn \) >>! $aout
echo 'foreach a ( $argv )' >>! $aout
echo '    set cmd = ( $cmd \"$a\" )' >>! $aout
echo end >>! $aout

echo $lisp '>>&! $logfile <<EOF' >>! $aout

## use preloaded version of lisp now
##echo '(si::faslink "$PVM_ROOT/UTIL/clpvm/lib/$PVM_ARCH/clpvm3.o"' >>! $aout
##echo '    "$PVM_ROOT/lib/$PVM_ARCH/libpvm3.a -lc")' >>! $aout

foreach file ( $objs )
    echo '(if (null (load "$HOME/pvm3/local_disk_bin/'$file'"' >>! $aout
    echo '        :if-does-not-exist nil))'  >>! $aout
    echo '        (progn (princ "loading '$file' failed.") (bye) ))'  >>! $aout
end
echo \( \$cmd \) >>! $aout
echo '( bye )' >>! $aout
echo EOF >>! $aout

echo 'echo FINISHED >>\! $logfile' >>! $aout
chmod u+x $aout

ls -l $aout

