SCM Repository
View of /sml/trunk/config/_run-sml
Parent Directory
|
Revision Log
Revision 937 -
(download)
(annotate)
Thu Sep 20 21:20:28 2001 UTC (19 years, 5 months ago) by blume
File size: 3995 byte(s)
Thu Sep 20 21:20:28 2001 UTC (19 years, 5 months ago) by blume
File size: 3995 byte(s)
minor cleanup of pathname handling in CM as well as argument handling by the driver shell script
#!@SHELL@ # # The standard driver for SML/NJ under the new runtime system # CMD=`basename $0` # # for /bin/ksh, disable reading user's environment file # unset ENV ############################################################################# # # BEGIN SITE SPECIFIC STUFF # ############################################################################# # # SITE SPECIFIC CONFIGURATION INFO # # the path of the directory in which executables (like this file) are kept. BIN_DIR=@BINDIR@ if [ ! -d "$BIN_DIR" ]; then cmddir=`dirname $0` case "$cmddir" in /* ) BIN_DIR="$cmddir";; * ) BIN_DIR=`cd $cmddir; pwd` ;; esac fi # the path of the directory in which the runtime system executables are kept. RUN_DIR=$BIN_DIR/.run # the path of the directory in which the heap images are kept. HEAP_DIR=$BIN_DIR/.heap # # the following could be replaced with some site specific code # ARCH_N_OPSYS=`$BIN_DIR/.arch-n-opsys` if [ "$?" != "0" ]; then echo "$CMD: unable to determine architecture/operating system" exit 1 fi eval $ARCH_N_OPSYS ############################################################################# # # END SITE SPECIFIC STUFF # ############################################################################# # special shortcut for frequent use (and for Linux' binfmt) if [ `basename $0` = sml ] ; then case "$1" in /* | ./* | ../* ) case "$1" in *.cm | *.sml | *.sig | *.fun ) ;; * ) HEAP="@SMLload=$1" shift ;; esac ;; esac fi ALLOC="" # # Process command line arguments # while [ "$#" != "0" ]; do arg=$1 case $arg in @SMLrun=*) shift RUN=`echo $arg | sed 's/@SMLrun=//'` ;; @SMLload=*) shift HEAP=$arg ;; @SMLappl) shift if [ "$#" = "0" ]; then echo "$CMD: missing argument for @SMLappl option" exit 1 fi APPL=$1 shift ;; @SMLversion) echo "$CMD @VERSION@" exit 0 ;; @SMLalloc=*) shift ALLOC=$arg ;; *) break ;; esac done # # Try to figure out the CPU's cache size and set the allocation area # size accordingly. This is majorly important for Celeron systems # which suffer badly when the allocation area is too big. # if [ "$ALLOC" = "" ] ; then if [ -f /proc/cpuinfo ] ; then # "head" is called to make sure we consider only one matching line. # (On linux SMP systems there is more than one such line.) cache=`fgrep 'cache size' </proc/cpuinfo | head -1` if [ "x$cache" = "x" ] ; then # No cache info in /proc/cputype. No we are checking the CPU # type.... cpu=`fgrep 'cpu ' </proc/cpuinfo | head -1` cputype=`echo $cpu | sed -e 's/^.*:[ \t]*\(.*\)$/\1/'` case $cputype in 586) # An old Pentium. Seems to work best with 64k. # Some extreme cases run best with even less # (32k, 16k, or even just 8k). ALLOC="@SMLalloc=64k" ;; *) ;; esac else kb=`echo $cache | sed -e 's/^[^0-9]*\([0-9]*\).*$/\1/'` case $kb in 128) # This is the Celeron case. ALLOC="@SMLalloc=32k" ;; 256) # Do CPUs like this exist? ALLOC="@SMLalloc=128k" ;; 512) # The Pentium II case... ALLOC="@SMLalloc=256k" ;; *) ;; esac fi fi fi if [ "$RUN" = "" ]; then # # Construct the runtime system path from the ARCH and OS # RUN="$RUN_DIR/run.$ARCH-$OPSYS" if [ ! -x "$RUN" ]; then if [ "$ALT_OPSYS" = "" ]; then echo "$CMD: cannot find runtime system $RUN" exit 1 else RUN="$RUN_DIR/run.$ARCH-$ALT_OPSYS" if [ ! -x "$RUN" ]; then echo "$CMD: cannot find runtime system $RUN" exit 1 fi fi fi fi if [ "$HEAP" = "" ]; then # # Construct the heap image path from the APPL and ARCH # if [ "$APPL" = "" ]; then APPL=$CMD fi HEAP="@SMLload=$HEAP_DIR/$APPL" fi # # run the sucker! # exec $RUN @SMLcmdname=$0 $HEAP $ALLOC "$@"
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |