#!/bin/csh

set optlist
set hpf = pghpf
set np = 1
set size = 64
set xldflgs
set runline
set getsize = n
set getnp = n
set tflag
set sflag

foreach arg ( $argv:q )
  if ("$getsize" == "y") then
     set size = $arg
     set getsize = n
     continue
  endif
  if ("$getnp" == "y") then
     set np = $arg
     set getnp = n
     continue
  endif
  switch ( $arg:q )
  case -size:
    set getsize = y
    breaksw
  case -np:
    set getnp = y
    breaksw
  case -check:
    set tflag = check
    breaksw
  case -serial:
    set sflag = serial 
    breaksw
  default:
    breaksw
  endsw
end

foreach arg ( $argv:q )
  if ("$getsize" == "y" || "$getnp" == "y") then
     set getsize = n
     set getnp = n
     continue
  endif
  switch ( $arg:q )
  case -sun:
    set sys = sun
    if ("$tflag" == "check") then
       set test = sun_test
    else
       set test = sun_run
    endif
    if ("$sflag" == "serial") then
       set defopts = "-fast -Mvect -Mcray=pointer -Munroll -Hnohpf"
       set runline = "pde1_$sys"
    else
       set defopts = "-fast -Mvect -Mcray=pointer -Munroll"
       set xldflgs = ""
       set runline = "pde1_$sys -pghpf -np $np -heapz 32M"
    endif
    breaksw
  case -sgi:
    set sys = sgi
    if ("$tflag" == "check") then
       set test = sgi_test
    else
       set test = sgi_run
    endif
    if ("$sflag" == "serial") then
       set defopts = "-O2 -Hnohpf"
       set runline = "pde1_$sys"
    else
       set defopts = "-O2"
       set xldflgs = ""
       set runline = "pde1_$sys -pghpf -np $np -heapz 32M"
    endif
    breaksw
  case -cs2:
    set sys = cs2
    if ("$tflag" == "check") then
       set test = cs2_test
    else
       set test = cs2_run
    endif
    if ("$sflag" == "serial") then
       set defopts = "-fast -Mvect -Mcray=pointer -Munroll -novpu -Hnohpf"
       set xldflgs = "-novpu"
       set runline = "pde1_$sys"
    else
       set defopts = "-fast -Mvect -Mcray=pointer -Munroll -novpu"
       set xldflgs = "-novpu"
       set runline = "prun -n $np pde1_$sys"
    endif
    breaksw
  case -pgn:
    set sys = pgn
    if ("$tflag" == "check") then
       set test = pgn_test
    else
       set test = pgn_run
    endif
    if ("$sflag" == "serial") then
       set defopts = "-O3 -Mvect -Mcray=pointer -Hnohpf"
       set runline = "pde1_$sys"
    else
       set defopts = "-O3 -Mvect -Mcray=pointer"
       set xldflgs = ""
       set runline = "pde1_$sys -pghpf -np $np"
    endif
    breaksw
  case -size:
    set getsize = y
    breaksw
  case -np:
    set getnp = y
    breaksw
  case -check:
    breaksw
  case -serial:
    breaksw
  case -*:
    set optlist = ( $optlist:q $arg:q )
    breaksw
  default:
    echo unrecognized argument \"$arg\" -- ignored
  endsw
end

echo " "
echo -n "Hostname is ........... " ; hostname
echo -n "Compiler located at ... " ; which pghpf
if ("$optlist" == "") then
   set optlist = ( $defopts:q )
   echo -n "Compiler options ...... none specified, using: " ; echo $optlist
else
   set optlist = ( $optlist:q )
   echo -n "Compiler options ...... " ; echo $optlist
endif
echo " "

rm -f pde1_$sys.o

make SYS="$sys" \
     HPF="$hpf" \
     EXTRA_HPFFLAGS="$optlist" \
     EXTRA_LDFLAGS="$xldflgs" \
     RUNLINE="$runline" \
     SIZE="$size" \
     $test
