aboutsummaryrefslogtreecommitdiff
path: root/unix/hlib/cl.csh
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /unix/hlib/cl.csh
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'unix/hlib/cl.csh')
-rwxr-xr-xunix/hlib/cl.csh153
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