diff options
Diffstat (limited to 'unix/hlib/cl.csh')
-rwxr-xr-x | unix/hlib/cl.csh | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/unix/hlib/cl.csh b/unix/hlib/cl.csh new file mode 100755 index 00000000..12938b53 --- /dev/null +++ b/unix/hlib/cl.csh @@ -0,0 +1,153 @@ +#!/bin/csh +# +# 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 = "vocl.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") 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 (-e $iraf/unix/hlib/irafarch.csh) then + set ACTUAL_ARCH = `$iraf/unix/hlib/irafarch.csh -actual` +else + set ACTUAL_ARCH = $IRAFARCH +endif + +if ($?IRAFARCH) then + if (-e $iraf/bin.${IRAFARCH}/${cl_binary}) then + set MACH = $IRAFARCH + else + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + if ("$ACTUAL_ARCH" != "$IRAFARCH") then + echo "ERROR: IRAFARCH set to '$IRAFARCH', should be '$ACTUAL_ARCH'" + endif + exit 1 + endif + setenv arch ".$MACH" + +else + set os_mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + + if (-e $iraf/unix/hlib/irafarch.csh) then + set MACH = `$iraf/unix/hlib/irafarch.csh` + else + set MACH = $os_mach + endif + + if ("$os_mach" == "linux") then # handle linux systems + if (`uname -m` == "x86_64") then + setenv mach linux64 + else + setenv mach linux + endif + else if ("$os_mach" == "darwin") then # handle Mac systems + if ("`uname -m`" == "x86_64") then + setenv mach macintel + else + setenv mach macosx + endif + else if ("$os_mach" == "cygwin") then + setenv mach cygwin + else + set mach = `uname -s | tr '[A-Z]' '[a-z]'` + endif + + setenv arch ".$MACH" + if (! $?IRAFARCH) then + setenv IRAFARCH "$MACH" + endif + + if (! (-e $iraf/bin.${MACH}/${cl_binary}) ) then + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + exit 1 + endif +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" == "linux64" || \ + "$IRAFARCH" == "linux") then + limit stacksize unlimited +endif + + +# Just run the CL if IRAFARCH already defined. +if ($?IRAFARCH) then + if ($IRAFARCH == "") then + setenv arch "" + else + setenv arch ".$IRAFARCH" + endif + + setenv IRAFBIN ${iraf}bin$arch/ + set file = ${IRAFBIN}$cl_binary + if (-e $file) then + exec $file + else + echo "$file not found" + endif +endif + + +# Set the architecture to be used. +setenv IRAFARCH $MACH + + +setenv arch .$IRAFARCH +setenv IRAFBIN ${iraf}bin$arch/ + +# Run the desired CL. +exec ${IRAFBIN}$cl_binary |