diff options
Diffstat (limited to 'unix/hlib/cl.csh.ORIG')
-rwxr-xr-x | unix/hlib/cl.csh.ORIG | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/unix/hlib/cl.csh.ORIG b/unix/hlib/cl.csh.ORIG new file mode 100755 index 00000000..bab64f9d --- /dev/null +++ b/unix/hlib/cl.csh.ORIG @@ -0,0 +1,212 @@ +#!/bin/csh -f +# +# CL.CSH -- Startup the version of the CL executable compiled for the +# architecture or floating point hardware appropriate for the current +# machine. This script can be used to invoke a number of CL flavors +# depending on how it is called. The install script will create a 'cl' +# and 'ecl' command link to this script with the intent that a different +# binary would be started for each command. + + +# Determine CL binary to run based on how we were called. + +set cl_binary = "ecl.e" + +if (`echo $0 | egrep ecl` != "") then + set cl_binary = "ecl.e" + +else if (`echo $0 | egrep vo` != "") then + set cl_binary = "vocl.e" + +else if ($#argv > 0) then + if ("$argv[1]" == "-old" || "$argv[1]" == "-o") then + set cl_binary = "cl.e" + else if ("$argv[1]" == "-vo" || "$argv[1]" == "-o") then + set cl_binary = "vocl.e" + else if ("$argv[1]:e" == "c") then + # Workaround for autoconf scripts attempting to use this command as + # a valid compiler option. On some systems (mostly Debian) a valid + # CC command can't be found and eventually the 'cl' (lisp) compiler + # is tried. It will always apparently have the conftest.c test file, + # so simply exit with a code to tell autoconf it won't work. + exit 1 + endif +endif + + +# Determine IRAF root directory (value set in install script). +set d_iraf = "/iraf/iraf/" +if ($?iraf) then + if (! -e $iraf) then + echo "Warning: iraf=$iraf does not exist (check .cshrc or .login)" + echo "Session will default to iraf=$d_iraf" + unsetenv iraf ; sleep 3 + endif +endif +if ($?iraf == 0) then + setenv iraf "$d_iraf" +endif + + +# Check for a version query. +if ($#argv > 0) then + if ("$argv[1]" == "-v" || "$argv[1]" == "-version" || \ + "$argv[1]" == "-V" || "$argv[1]" == "--version") then + head -1 $iraf/unix/hlib/motd + exit 0 + endif +endif + + +# Determine platform architecture. +if ($?IRAFARCH) then + if (-e $iraf/bin.${IRAFARCH}/${cl_binary}) then + set MACH = $IRAFARCH + endif +endif + +if (! $?MACH) then + + # SUN-IRAF + setenv OSNAME `uname` + if ($OSNAME == 'SunOS') then + setenv OSVERSION `uname -r | cut -c1` + if ($OSVERSION == 5) then + set MACH = `uname -p` + switch ($MACH) + case sparc: + set MACH = ssol + breaksw + endsw + else + set MACH = `mach` + endif + + else + + # PC-IRAF + set os_mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + if (-f /etc/redhat-release) then + if (`uname -m` == "ppc") then + setenv mach linuxppc + else + setenv mach redhat + endif + else + set mach = `uname -s | tr '[A-Z]' '[a-z]'` + endif + + if ($mach == "darwin") then + if ("`uname -m`" == "i386") then + setenv mach macintel + else + setenv mach macosx + endif + else if ($os_mach == "cygwin") then + setenv mach cygwin + endif + + + if (-e $iraf/bin.$mach/$cl_binary) then + set MACH = $mach + else if (-e $iraf/bin.freebsd/$cl_binary) then + set MACH = freebsd + else if (-e $iraf/bin.macosx/$cl_binary) then + set MACH = macosx + else if (-e $iraf/bin.macintel/$cl_binary) then + set MACH = macintel + else if (-e $iraf/bin.cygwin/$cl_binary) then + set MACH = cygwin + else if (-e $iraf/bin.linux/$cl_binary) then + set MACH = linux + else if (-e $iraf/bin.redhat/$cl_binary) then + set MACH = redhat + else if (-e $iraf/bin.linuxppc/$cl_binary) then + set MACH = linuxppc + else if (-e $iraf/bin.sunos/$cl_binary) then + set MACH = sunos + else if (-e $iraf/bin.linuz/$cl_binary) then + set MACH = linuz + else + echo "cannot find $iraf/bin.xxx/$cl_binary" + exit 1 + endif + + endif + +endif + +# Check for obsolete IRAFBIN definition. +if ($?IRAFBIN && !($?IRAFARCH)) then + echo "Use IRAFARCH rather than IRAFBIN to specify the machine architecture" + echo "IRAFARCH, if defined, should be one of ffpa,f68881,i386,sparc, etc." +endif + +# Just run the CL if IRAFARCH already defined. +if ($?IRAFARCH) then + if ($IRAFARCH == "") then + setenv arch "" + else + setenv arch ".$IRAFARCH" + endif + + # Recent linux systems display a problem in how pointer addresses + # interact with the stack and can result in a segfault. Remove the + # stacksize limit for IRAF processes until this is better understood. + if ("$IRAFARCH" == "redhat" || \ + "$IRAFARCH" == "linux" || \ + "$IRAFARCH" == "linuxppc") then + limit stacksize unlimited + endif + + setenv IRAFBIN ${iraf}bin$arch/ + set file = ${IRAFBIN}$cl_binary + if (-e $file) then + exec $file + else + echo "$file not found" + endif +endif + + +# Determine the architecture to be used. +if ("$MACH" == "freebsd") then # PC-IRAF + setenv IRAFARCH "freebsd" +else if ("$MACH" == "linux") then + setenv IRAFARCH "linux" +else if ("$MACH" == "redhat") then + setenv IRAFARCH "redhat" +else if ("$MACH" == "linuxppc") then + setenv IRAFARCH "linuxppc" +else if ("$MACH" == "macosx") then + setenv IRAFARCH "macosx" +else if ("$MACH" == "macintel") then + setenv IRAFARCH "macintel" +else if ("$MACH" == "cygwin") then + setenv IRAFARCH "cygwin" +else if ("$MACH" == "sunos") then + setenv IRAFARCH "sunos" +else if ("$MACH" == "linuz") then + setenv IRAFARCH "linuz" + +else if ("$MACH" == "ssol") then # SUN-IRAF + setenv IRAFARCH "ssun" +else if ("$MACH" == "sparc") then + setenv IRAFARCH "sparc" +endif + +# Recent linux systems display a problem in how pointer addresses +# interact with the stack and can result in a segfault. Remove the +# stacksize limit for IRAF processes until this is better understood. +if ("$IRAFARCH" == "redhat" || \ + "$IRAFARCH" == "linux" || \ + "$IRAFARCH" == "linuxppc") then + limit stacksize unlimited +endif + +setenv arch .$IRAFARCH +setenv IRAFBIN ${iraf}bin$arch/ +set file = ${IRAFBIN}$cl_binary + +# Run the desired CL. +exec $file |