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 5876 - (view) (download)

1 : monnier 211 #!@SHELL@
2 :     #
3 : jhr 5642 # Copyright 2019 The Fellowship of SML/NJ (http://www.smlnj.org)
4 :     # All rights reserved.
5 :     #
6 : monnier 211 # The standard driver for SML/NJ under the new runtime system
7 :     #
8 :    
9 : mblume 1725 CMD=`basename "$0"`
10 : monnier 211
11 :     #
12 :     # for /bin/ksh, disable reading user's environment file
13 :     #
14 :     unset ENV
15 :    
16 :     #############################################################################
17 :     #
18 :     # BEGIN SITE SPECIFIC STUFF
19 :     #
20 :     #############################################################################
21 :    
22 :     #
23 :     # SITE SPECIFIC CONFIGURATION INFO
24 :     #
25 :    
26 : allenleung 1740 # On cygwin, make sure SMLNJ_HOME is given a POSIX-style pathname.
27 :     if [ x"$SMLNJ_HOME" != x ] ; then
28 : jhr 5642 if [ x"$SMLNJ_CYGWIN_RUNTIME" != x ] ; then
29 : allenleung 1740 if [ "`uname -o`" = "Cygwin" ] ; then
30 :     # Convert to Unix style, absolute pathname.
31 :     SMLNJ_HOME=`cygpath -u -a "$SMLNJ_HOME"`
32 :     fi
33 :     fi
34 :     fi
35 :    
36 : monnier 211 # the path of the directory in which executables (like this file) are kept.
37 : mblume 1725 if [ x"$SMLNJ_HOME" = x ] ; then
38 :     BIN_DIR="@BINDIR@"
39 : blume 1261 if [ ! -d "$BIN_DIR" ]; then
40 : mblume 1725 cmddir=`dirname "$0"`
41 : blume 1261 case "$cmddir" in
42 :     /* ) BIN_DIR="$cmddir";;
43 :     * ) BIN_DIR=`cd $cmddir; pwd` ;;
44 :     esac
45 :     fi
46 :     else
47 : mblume 1725 if [ x"$CM_PATHCONFIG" = x ] ; then
48 : blume 1261 CM_PATHCONFIG=${SMLNJ_HOME}/lib/pathconfig
49 :     export CM_PATHCONFIG
50 :     fi
51 :     BIN_DIR=${SMLNJ_HOME}/bin
52 : monnier 214 fi
53 : monnier 211
54 :     # the path of the directory in which the runtime system executables are kept.
55 :     RUN_DIR=$BIN_DIR/.run
56 :    
57 :     # the path of the directory in which the heap images are kept.
58 :     HEAP_DIR=$BIN_DIR/.heap
59 :    
60 :     #############################################################################
61 :     #
62 :     # END SITE SPECIFIC STUFF
63 :     #
64 :     #############################################################################
65 :    
66 : monnier 214 # special shortcut for frequent use (and for Linux' binfmt)
67 : mblume 1725 if [ `basename "$0"` = sml ] ; then
68 : blume 902 case "$1" in
69 :     /* | ./* | ../* )
70 :     case "$1" in
71 :     *.cm | *.sml | *.sig | *.fun )
72 :     ;;
73 :     * )
74 :     HEAP="@SMLload=$1"
75 :     shift
76 :     ;;
77 :     esac
78 :     ;;
79 :     esac
80 :     fi
81 : monnier 214
82 : blume 569 ALLOC=""
83 :    
84 : jhr 5870 # the default size; this is set by the config/install.sh script
85 : monnier 211 #
86 : jhr 5870 SIZE_OPT="-"@SIZE@
87 :    
88 : jhr 5876 # if "yes" then we report the heap suffix and quit
89 : jhr 5870 #
90 : jhr 5876 REPORT_SUFFIX=no
91 :    
92 :     #
93 : monnier 211 # Process command line arguments
94 :     #
95 :     while [ "$#" != "0" ]; do
96 : blume 937 arg=$1
97 : mblume 1725 case "$arg" in
98 : jhr 5791 -32) shift; SIZE_OPT=$arg ;;
99 :     -64) shift; SIZE_OPT=$arg ;;
100 : monnier 211 @SMLrun=*)
101 : blume 937 shift
102 : monnier 211 RUN=`echo $arg | sed 's/@SMLrun=//'`
103 :     ;;
104 :     @SMLload=*)
105 : blume 937 shift
106 :     HEAP=$arg
107 : monnier 211 ;;
108 :     @SMLappl)
109 : blume 937 shift
110 : monnier 211 if [ "$#" = "0" ]; then
111 :     echo "$CMD: missing argument for @SMLappl option"
112 :     exit 1
113 :     fi
114 : blume 937 APPL=$1
115 :     shift
116 : monnier 211 ;;
117 :     @SMLversion)
118 :     echo "$CMD @VERSION@"
119 :     exit 0
120 :     ;;
121 : jhr 3459 @SMLsuffix)
122 : jhr 5876 shift
123 :     REPORT_SUFFIX=yes
124 : jhr 3459 ;;
125 : blume 569 @SMLalloc=*)
126 : blume 937 shift
127 : blume 569 ALLOC=$arg
128 :     ;;
129 : monnier 211 *)
130 : blume 937 break
131 : monnier 211 ;;
132 :     esac
133 :     done
134 :    
135 : blume 569 #
136 : jhr 5791 # the following could be replaced with some site specific code
137 :     #
138 :     ARCH_N_OPSYS=`"$BIN_DIR/.arch-n-opsys" $SIZE_OPT`
139 :     if [ "$?" != "0" ]; then
140 :     echo "$CMD: unable to determine architecture/operating system"
141 :     exit 1
142 :     fi
143 :     eval $ARCH_N_OPSYS
144 :    
145 : jhr 5876 # if the `@SMLsuffix` option was specified, then report the suffix and quit
146 : jhr 5791 #
147 : jhr 5876 if [ $REPORT_SUFFIX = yes ] ; then
148 :     echo $HEAP_SUFFIX
149 :     exit 0
150 :     fi
151 :    
152 :     #
153 : blume 569 # Try to figure out the CPU's cache size and set the allocation area
154 :     # size accordingly. This is majorly important for Celeron systems
155 :     # which suffer badly when the allocation area is too big.
156 :     #
157 :     if [ "$ALLOC" = "" ] ; then
158 :     if [ -f /proc/cpuinfo ] ; then
159 :     # "head" is called to make sure we consider only one matching line.
160 :     # (On linux SMP systems there is more than one such line.)
161 :     cache=`fgrep 'cache size' </proc/cpuinfo | head -1`
162 : george 722 if [ "x$cache" = "x" ] ; then
163 : blume 715 # No cache info in /proc/cputype. No we are checking the CPU
164 :     # type....
165 :     cpu=`fgrep 'cpu ' </proc/cpuinfo | head -1`
166 :     cputype=`echo $cpu | sed -e 's/^.*:[ \t]*\(.*\)$/\1/'`
167 :     case $cputype in
168 :     586)
169 :     # An old Pentium. Seems to work best with 64k.
170 :     # Some extreme cases run best with even less
171 :     # (32k, 16k, or even just 8k).
172 :     ALLOC="@SMLalloc=64k"
173 :     ;;
174 :     *)
175 :     ;;
176 :     esac
177 :     else
178 : blume 569 kb=`echo $cache | sed -e 's/^[^0-9]*\([0-9]*\).*$/\1/'`
179 : jhr 5642 case $kb in
180 : blume 569 128)
181 :     # This is the Celeron case.
182 : mblume 1368 # ALLOC="@SMLalloc=32k"
183 :     ALLOC="@SMLalloc=64k"
184 : blume 569 ;;
185 :     256)
186 :     # Do CPUs like this exist?
187 : jhr 3601 ALLOC="@SMLalloc=256k"
188 : blume 569 ;;
189 :     512)
190 :     # The Pentium II case...
191 : jhr 3601 ALLOC="@SMLalloc=512k"
192 : blume 569 ;;
193 : jhr 3601 1024) ALLOC="@SMLalloc=512k" ;;
194 :     2048) ALLOC="@SMLalloc=1024k" ;;
195 :     3072) ALLOC="@SMLalloc=1024k" ;;
196 : jhr 3602 12288) ALLOC="@SMLalloc=1024k" ;;
197 : blume 569 *)
198 :     ;;
199 :     esac
200 :     fi
201 : jhr 3601 elif [ x"$OPSYS" = "darwin" ] ; then
202 :     cache=`/usr/sbin/sysctl -n hw.l3cachesize`
203 :     if [ x"$cache" = "x" ] ; then
204 :     cache=`/usr/sbin/sysctl -n hw.l2cachesize`
205 :     if [ x"$cache" = "x" ] ; then
206 :     cache=262144 # fallback
207 :     fi
208 :     fi
209 :     # possible cache sizes for Intel Macs
210 :     # see list at http://en.wikipedia.org/wiki/List_of_Macintosh_models_grouped_by_CPU_type
211 :     case $cache in
212 :     262144) kb=256;;
213 :     524288) kb=512;;
214 :     1048576) kb=512;;
215 :     2097152) kb=1024;;
216 :     3145728) kb=1024;;
217 :     4194304) kb=1024;;
218 :     6291456) kb=1024;;
219 :     8388608) kb=1024;;
220 :     12582912) kb=1024;;
221 :     esac
222 :     ALLOC="@SMLalloc=$kb"
223 : blume 569 fi
224 :     fi
225 :    
226 : monnier 211 if [ "$RUN" = "" ]; then
227 :     #
228 :     # Construct the runtime system path from the ARCH and OS
229 :     #
230 :     RUN="$RUN_DIR/run.$ARCH-$OPSYS"
231 :     if [ ! -x "$RUN" ]; then
232 :     if [ "$ALT_OPSYS" = "" ]; then
233 :     echo "$CMD: cannot find runtime system $RUN"
234 :     exit 1
235 :     else
236 :     RUN="$RUN_DIR/run.$ARCH-$ALT_OPSYS"
237 :     if [ ! -x "$RUN" ]; then
238 :     echo "$CMD: cannot find runtime system $RUN"
239 :     exit 1
240 :     fi
241 :     fi
242 :     fi
243 :     fi
244 :    
245 :     if [ "$HEAP" = "" ]; then
246 :     #
247 :     # Construct the heap image path from the APPL and ARCH
248 :     #
249 :     if [ "$APPL" = "" ]; then
250 :     APPL=$CMD
251 :     fi
252 :     HEAP="@SMLload=$HEAP_DIR/$APPL"
253 :     fi
254 :    
255 :     #
256 :     # run the sucker!
257 :     #
258 : mblume 1725 exec "$RUN" @SMLcmdname="$0" "$HEAP" $ALLOC "$@"

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