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

SCM Repository

[smlnj] View of /sml/trunk/src/system/makeml
ViewVC logotype

View of /sml/trunk/src/system/makeml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 645 - (download) (annotate)
Mon May 15 07:17:30 2000 UTC (19 years, 4 months ago) by blume
File size: 3193 byte(s)
merging changes from devel branch; see HISTORY
#!/bin/sh

this=$0
here=`pwd`
cd ../..
twoup=`pwd`
cd $here

LINK=$twoup/bin/.link-sml

if [ ! -x $LINK ] ; then
    echo $this: link script $LINK is not operational.
    exit 1
fi

ALLOC=1M
ARCH=sparc
HEAP="sml"
ARGS=""
MODE=""
RUN=""

rebuilt=no
bare=no

#
# Set CM_PATHCONFIG_DEFAULT to ../../lib/pathconfig
# (using an absolute path!)
# ... unless it was already set at the time we run this script.
#

CM_PATHCONFIG_DEFAULT=${CM_PATHCONFIG_DEFAULT:-$twoup/lib/pathconfig}
export CM_PATHCONFIG_DEFAULT

#
# use the arch-n-opsys script to determine the ARCH/OS if possible
#
if [ -f $twoup/bin/.arch-n-opsys ]; then
    ARCH_N_OPSYS=`$twoup/bin/.arch-n-opsys`
    if [ "$?" = "0" ]; then
	eval $ARCH_N_OPSYS
	echo $this: architecture = $ARCH
    fi
fi

# A function to create a directory hierarchy parallel to a given
# hierarchy where ordinary files are hard-linked (i.e., shared).
# The first argument must be a simple path (no / inside), and
# the second argument must be an absolute path.
link() {
    if [ -d $1 ] ; then
	if [ ! -d $2 ] ; then
	    if [ -f $2 ] ; then
		echo $this: $2 exists as a non-directory
		exit 1
	    fi
	    mkdir $2
	fi
	cd $1
	for i in * ; do
	    link $i $2/$i
	done
	cd ..
    elif [ -f $1 ] ; then
	rm -f $2
	ln $1 $2
    fi
}

BOOT_DIR="sml.boot.${ARCH}-unix"

while [ "$#" != "0" ] ; do
    arg=$1; shift
    case $arg in
    -run)
	if [ "$#" = "0" ]; then
	    echo "$this: missing argument for \"-run\" option"
	    exit 1
	fi
	RUN="@SMLrun=$1"; shift
	;;
    -bare)
	bare=yes
	MODE="@SMLbare"
	;;
    -rebuild)
	if [ "$#" = "0" ]; then
	    echo "$this: missing argument for \"-rebuild\" option"
	    exit 1
	fi
	rebuilt=yes
	MODE="@SMLrebuild=$1"; shift
	;;
    -rebuildlight|-lightrebuild|-light)
	if [ "$#" = "0" ]; then
	    echo "$this: missing argument for \"-rebuild\" option"
	    exit 1
	fi
	rebuilt=yes
	MODE="@SMLlightrebuild=$1"; shift
	;;
    -o)
	if [ "$#" = "0" ]; then
	    echo "$this: missing argument for \"-o\" option"
	    exit 1
	fi
	HEAP=$1; shift
	;;
    -alloc)
	if [ "$#" = "0" ]; then
	    echo "$this: missing argument for \"-alloc\" option"
	    exit 1
	fi
	ALLOC=$1; shift
	;;
    -boot)
	if [ "$#" = "0" ]; then
	    echo "$this: missing argument for \"-boot\" option"
	    exit 1
	fi
	BOOT_DIR=$1; shift
	;;
    @SML*)
	ARGS="$ARGS $arg"
	;;
    *)
	echo "$this: unknown argument \"$arg\""
	exit 1
	;;
    esac
done

cd $BOOT_DIR

echo $LINK $RUN \
    @SMLboot=BOOTLIST @SMLheap=$here/$HEAP @SMLalloc=$ALLOC $ARGS $MODE
if $LINK $RUN \
    @SMLboot=BOOTLIST @SMLheap=$here/$HEAP @SMLalloc=$ALLOC $ARGS $MODE
then
#
# If this was a -rebuild run, we have to quit now...
#
    if [ $rebuilt = yes ] ; then
	echo $this: New binfiles are ready.
	exit 0
    fi
    echo $this: Heap image generated.
else
    echo $this: Something broke.
    exit 1
fi

#
# Now move the libraries, generate the pathconfig file, and delete the bootdir.
#

cd $here
if [ $bare = no ] ; then
    LIB_DIR=`pwd`/${HEAP}.lib

    rm -rf $LIB_DIR
    mkdir $LIB_DIR

    cd $BOOT_DIR

    for anchor in * ; do
	if [ -d $anchor ] ; then
	    link $anchor $LIB_DIR/$anchor
	    echo $anchor $anchor
	fi
    done >$LIB_DIR/pathconfig

    cd $here
fi

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