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 /sml/trunk/config/_run-sml
ViewVC logotype

Annotation of /sml/trunk/config/_run-sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 902 - (view) (download)

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

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