⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mkimage.sh

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 SH
字号:
#!/bin/sh## Copyright (c) 1998, 1999, 2003 The University of Utah. All rights reserved.## See the file "license.terms" for information on usage and redistribution# of this file.## Contributed by the Flux Research Group at the University of Utah.# Authors: Leigh Stoller, Patrick Tullmann## Build a multiboot image from Kaffe plus other stuff. You can either# copy this script to your object directory and edit the paths below,# or you can pass it all in as command line args.## By default, you alway get the contents of the Kaffe# install/share/kaffe directory (which includes the standard kaffe# classes) and install/lib/kaffe/*.la (the libtool archive description# files).## # LIBTOOL NOTES:# # When using preloaded (static) libraries, libtool still needs to# examine the .la files (but not the real archives) at runtime,# KAFFELIBRARYPATH should contain the directories where all the native# .la library descriptions can be found.# # KAFFELIBRARYPATH's default value in the OSKit is /lib.  This script# loads all the .la files into that /lib in the boot image.# # Your Kaffe install directoryKAFFEDIR=/opt/kaffe/install# where your oskit was installedOSKITDIR=/opt/oskit/install# Default classpath file (see the README for a description of this file)CLASSPATHFILE=default_kaffe_classpath# Default boot image construction program.  We use Multiboot images.#  NOTE that mkmb2 is broken in 990722.MAKEIMAGE=mkmbimage# default directory to put the new kernel image intoKERNELDIR=.## ---# If non-null will be passed as kernel command lineKERNELCOMMANDLINE=# Make mkimage.sh quiet by making this variable non-nil.QUIET=# A list of directoriesDIRS=# A list of unrooted directoriesURDIRS=# A list of explicit file:file pairs to put in the imageEXPLICITFILES=# Control whether the default_kaffe_classpath is generated by this script or notCREATE_CLASSPATHFILE=yes# Parse the command-line options to override above.until [ $# -eq 0 ]do	case "$1" in		--kerneldir=* )			KERNELDIR=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;			shift;;		--kaffedir=* )			KAFFEDIR=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;			shift;;		--oskitdir=* )			OSKITDIR=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;			shift;;		--makeimage=* )			MAKEIMAGE=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;			shift;;		--classpathfile=* )			CLASSPATHFILE=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`;			CREATE_CLASSPATHFILE=no			shift;;		--commandline=* )			## XXX only works for *arguments to main not env vars*			KERNELCOMMANDLINE=`echo "$1" | sed 's/[-a-z]*=//'`;			KERNELCOMMANDLINE="-c \"${KERNELCOMMANDLINE}\""			shift;;		--explicitfile=* )			EXPLICITFILES="$EXPLICITFILES `echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`" ;			shift;;		--help )			echo "Create a boot image for Kaffe/OSKit"			echo "Options (and their defaults):"			echo "  --kerneldir=<dir>       The directory in which to drop the created Image ($IMAGEDIR)"			echo "  --kaffedir=<dir>        The directory in which kaffe was installed ($KAFFEDIR)"			echo "  --oskitdir=<dir>        The directory in which the OSKit was installed ($OSKITDIR)"			echo "  --makeimage=prog        The program to use to create the image ($MAKEIMAGE)"			echo "  --classpathfile=<file>  The file containing the classpath for Kaffe ($CLASSPATHFILE)"			echo "         (Note that $CLASSPATHFILE will be generated for you if not specified.)"			echo "  --explicitfile=<file>[:<imagename>]   Add <file> to the boot image.  Make <file> "			echo "         visibile in the kernel filesystem as <imagename>."			echo "  -dir <dir>              Add all the files in <dir> to the image.  No name mapping."			exit 7;;		-dir )			DIRS="$DIRS $2" ;			shift;			shift;;		-unrooteddir )			URDIRS="$URDIRS $2" ;			shift;			shift;;		* ) echo "Bad arg: $1";			  exit 8 ;;	esacdoneif test ! -d $KAFFEDIR; then    echo "$KAFFEDIR is not a directory.  Specify with --kaffedir=<dir>"    exit 9fi    if test ! -d $KERNELDIR; then    echo "ERROR: $KERNELDIR is not a valid directory.  Specify one with --kerneldir=<dir>"    exit 10fiCPF="$CLASSPATHFILE:/etc/kaffe_classpath"# The Kaffe kernelKAFFE=$KAFFEDIR/jre/bin/kaffe-binif test ! -x $KAFFE; then    echo "ERROR: $KAFFE is not an executable."    exit 11fi# The directory with the minimum necessary class files.CLASSDIR=$KAFFEDIR/jre/lib# The final list of directoriesDIRS="$CLASSDIR $DIRS"MAKEIMAGE=${OSKITDIR}/bin/${MAKEIMAGE}### Create the classpath file if just using the defaultif test $CREATE_CLASSPATHFILE = "yes"; then    rm -f $CLASSPATHFILE    touch $CLASSPATHFILE    for i in $CLASSDIR/*.jar; do	echo -n "${i}:" >> $CLASSPATHFILE;    done    echo "." >> $CLASSPATHFILE;else     if test ! -f $CLASSPATHFILE; then	echo "$CLASSPATHFILE doesn't exist.  Please create or point elsewhere with --classpathfile=<file>"	exit 12    fifi### Print out some if test -z "$QUIET"; then    echo "  Sucking (full-path) all files in: $DIRS"    echo "  Sucking (rel. path) all files in: $URDIRS"    echo "  Plus all the *.la files in $KAFFEDIR/lib/kaffe"    test ! -z "$EXPLICITFILES" && echo "  Plus these files: $EXPLICITFILES"    echo "  Plus the classpath: $CPF"firm -f ${KERNELDIR}/Image# Add all the files in the DIRS and all of the .la files.{	for DIR in $DIRS	do		for FILE in `find -L $DIR -type f -o -type l`		do		    echo "$FILE:$FILE"		done	done	for DIR in $URDIRS	do		for FILE in `find -L $DIR -type f -o -type l`		do		    echo "$FILE:"`echo $FILE | sed -e "s,^$DIR,/,"`		done	done	for FILE in $KAFFEDIR/jre/lib/i386/*.la	do		echo "$FILE:/lib/"$(basename $FILE)	done} | eval $MAKEIMAGE -o $KERNELDIR/Image $KERNELCOMMANDLINE -stdin \    $KAFFE $CPF $EXPLICITFILES \    && echo Created $KERNELDIR/Imageexit 0#eof

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -