aboutsummaryrefslogtreecommitdiff
path: root/unix/hlib/cl.csh
blob: 12938b5346c8d18ad0e4b36e8cdec0c02aef9c18 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
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