Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /config/trunk/_run-sml
ViewVC logotype

Annotation of /config/trunk/_run-sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1261 - (view) (download)
Original Path: sml/trunk/config/_run-sml

1 : monnier 211 #!@SHELL@
2 :     #
3 :     # The standard driver for SML/NJ under the new runtime system
4 :     #
5 :    
6 :     CMD=`basename $0`
7 :    
8 :     #
9 :     # for /bin/ksh, disable reading user's environment file
10 :     #
11 :     unset ENV
12 :    
13 :     #############################################################################
14 :     #
15 :     # BEGIN SITE SPECIFIC STUFF
16 :     #
17 :     #############################################################################
18 :    
19 :     #
20 :     # SITE SPECIFIC CONFIGURATION INFO
21 :     #
22 :    
23 :     # the path of the directory in which executables (like this file) are kept.
24 : blume 1261 if [ x${SMLNJ_HOME} = x ] ; then
25 :     BIN_DIR=@BINDIR@
26 :     if [ ! -d "$BIN_DIR" ]; then
27 :     cmddir=`dirname $0`
28 :     case "$cmddir" in
29 :     /* ) BIN_DIR="$cmddir";;
30 :     * ) BIN_DIR=`cd $cmddir; pwd` ;;
31 :     esac
32 :     fi
33 :     else
34 :     if [ x${CM_PATHCONFIG} = x ] ; then
35 :     CM_PATHCONFIG=${SMLNJ_HOME}/lib/pathconfig
36 :     export CM_PATHCONFIG
37 :     fi
38 :     BIN_DIR=${SMLNJ_HOME}/bin
39 : monnier 214 fi
40 : monnier 211
41 :     # the path of the directory in which the runtime system executables are kept.
42 :     RUN_DIR=$BIN_DIR/.run
43 :    
44 :     # the path of the directory in which the heap images are kept.
45 :     HEAP_DIR=$BIN_DIR/.heap
46 :    
47 :     #
48 :     # the following could be replaced with some site specific code
49 :     #
50 :     ARCH_N_OPSYS=`$BIN_DIR/.arch-n-opsys`
51 :     if [ "$?" != "0" ]; then
52 :     echo "$CMD: unable to determine architecture/operating system"
53 :     exit 1
54 :     fi
55 :     eval $ARCH_N_OPSYS
56 :    
57 :     #############################################################################
58 :     #
59 :     # END SITE SPECIFIC STUFF
60 :     #
61 :     #############################################################################
62 :    
63 : monnier 214 # special shortcut for frequent use (and for Linux' binfmt)
64 : blume 902 if [ `basename $0` = sml ] ; then
65 :     case "$1" in
66 :     /* | ./* | ../* )
67 :     case "$1" in
68 :     *.cm | *.sml | *.sig | *.fun )
69 :     ;;
70 :     * )
71 :     HEAP="@SMLload=$1"
72 :     shift
73 :     ;;
74 :     esac
75 :     ;;
76 :     esac
77 :     fi
78 : monnier 214
79 : blume 569 ALLOC=""
80 :    
81 : monnier 211 #
82 :     # Process command line arguments
83 :     #
84 :     while [ "$#" != "0" ]; do
85 : blume 937 arg=$1
86 : monnier 211 case $arg in
87 :     @SMLrun=*)
88 : blume 937 shift
89 : monnier 211 RUN=`echo $arg | sed 's/@SMLrun=//'`
90 :     ;;
91 :     @SMLload=*)
92 : blume 937 shift
93 :     HEAP=$arg
94 : monnier 211 ;;
95 :     @SMLappl)
96 : blume 937 shift
97 : monnier 211 if [ "$#" = "0" ]; then
98 :     echo "$CMD: missing argument for @SMLappl option"
99 :     exit 1
100 :     fi
101 : blume 937 APPL=$1
102 :     shift
103 : monnier 211 ;;
104 :     @SMLversion)
105 :     echo "$CMD @VERSION@"
106 :     exit 0
107 :     ;;
108 : blume 569 @SMLalloc=*)
109 : blume 937 shift
110 : blume 569 ALLOC=$arg
111 :     ;;
112 : monnier 211 *)
113 : blume 937 break
114 : monnier 211 ;;
115 :     esac
116 :     done
117 :    
118 : blume 569 #
119 :     # Try to figure out the CPU's cache size and set the allocation area
120 :     # size accordingly. This is majorly important for Celeron systems
121 :     # which suffer badly when the allocation area is too big.
122 :     #
123 :     if [ "$ALLOC" = "" ] ; then
124 :     if [ -f /proc/cpuinfo ] ; then
125 :     # "head" is called to make sure we consider only one matching line.
126 :     # (On linux SMP systems there is more than one such line.)
127 :     cache=`fgrep 'cache size' </proc/cpuinfo | head -1`
128 : george 722 if [ "x$cache" = "x" ] ; then
129 : blume 715 # No cache info in /proc/cputype. No we are checking the CPU
130 :     # type....
131 :     cpu=`fgrep 'cpu ' </proc/cpuinfo | head -1`
132 :     cputype=`echo $cpu | sed -e 's/^.*:[ \t]*\(.*\)$/\1/'`
133 :     case $cputype in
134 :     586)
135 :     # An old Pentium. Seems to work best with 64k.
136 :     # Some extreme cases run best with even less
137 :     # (32k, 16k, or even just 8k).
138 :     ALLOC="@SMLalloc=64k"
139 :     ;;
140 :     *)
141 :     ;;
142 :     esac
143 :     else
144 : blume 569 kb=`echo $cache | sed -e 's/^[^0-9]*\([0-9]*\).*$/\1/'`
145 :     case $kb in
146 :     128)
147 :     # This is the Celeron case.
148 :     ALLOC="@SMLalloc=32k"
149 :     ;;
150 :     256)
151 :     # Do CPUs like this exist?
152 :     ALLOC="@SMLalloc=128k"
153 :     ;;
154 :     512)
155 :     # The Pentium II case...
156 : monnier 661 ALLOC="@SMLalloc=256k"
157 : blume 569 ;;
158 :     *)
159 :     ;;
160 :     esac
161 :     fi
162 :     fi
163 :     fi
164 :    
165 : monnier 211 if [ "$RUN" = "" ]; then
166 :     #
167 :     # Construct the runtime system path from the ARCH and OS
168 :     #
169 :     RUN="$RUN_DIR/run.$ARCH-$OPSYS"
170 :     if [ ! -x "$RUN" ]; then
171 :     if [ "$ALT_OPSYS" = "" ]; then
172 :     echo "$CMD: cannot find runtime system $RUN"
173 :     exit 1
174 :     else
175 :     RUN="$RUN_DIR/run.$ARCH-$ALT_OPSYS"
176 :     if [ ! -x "$RUN" ]; then
177 :     echo "$CMD: cannot find runtime system $RUN"
178 :     exit 1
179 :     fi
180 :     fi
181 :     fi
182 :     fi
183 :    
184 :     if [ "$HEAP" = "" ]; then
185 :     #
186 :     # Construct the heap image path from the APPL and ARCH
187 :     #
188 :     if [ "$APPL" = "" ]; then
189 :     APPL=$CMD
190 :     fi
191 :     HEAP="@SMLload=$HEAP_DIR/$APPL"
192 :     fi
193 :    
194 :     #
195 :     # run the sucker!
196 :     #
197 : blume 937 exec $RUN @SMLcmdname=$0 $HEAP $ALLOC "$@"

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0