You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2005/10/08 06:29:29 UTC

svn commit: r307257 [3/24] - in /incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm: ./ bootJVM/ bootJVM/jni/ bootJVM/jni/src/ bootJVM/jni/src/gnu/ bootJVM/jni/src/gnu/classpath/ bootJVM/jni/src/gnu/classpath/0.16/ bootJVM/jni/src/gnu/classpath/...

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/common.sh
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/common.sh?rev=307257&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/common.sh (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/common.sh Fri Oct  7 21:27:56 2005
@@ -0,0 +1,468 @@
+#!/bin/sh
+#
+#!
+# @file /home/dlydick/harmony/bootJVM/common.sh
+#
+# @brief Common code for @link ./build.sh build.sh@endlink and
+# @link ./clean.sh clean.sh@endlink and
+# @link ./dist-src.sh dist-src.sh@endlink and
+# @link ./dist-bin.sh dist-bin.sh@endlink and
+# @link ./dist-doc.sh dist-doc.sh@endlink.
+#
+# This script is common to @link ./build.sh build.sh@endlink and
+# @link ./clean.sh clean.sh@endlink and is not designed to do
+# anything on its own.
+#
+# All source code compiled according to selections from
+# @link ./config.sh config.sh@endlink.  This may or may not include
+# any or all of:
+#
+# <ul>
+# <li>@b jvm:      The main JVM development area.  All source code
+#                  is found here.  Building this area will compile
+#                  source code and link it into a binary form in
+#                  @b jvm/bin/bootjvm </li>
+#
+# <li>@b libjvm:   JVM code as a static library.  Compile the source
+#                  code from @b jvm/src (less
+#                  @link jvm/src/main.c main.c@endlink) and
+#                  archive it into @b libjvm/lib/libjvm.a </li>
+#
+# <li>@b main:     Sample @link main/src/main.c main()@endlink
+#                  program.  This program is currently not a unique
+#                  program, but is a symbolic link to
+#                  @link jvm/src/main.c jvm/src/main.c@endlink.
+#                  This may change as necessary.  Compile @b main()
+#                  that contains an invokation of the main JVM entry
+#                  point @link jvm/src/jvm.c jvm()@endlink and
+#                  link to @b libjvm/lib/libjvm.a .</li>
+#
+# <li>@b jni:      Sample JNI subset, showing how to reference
+#                  the local native methods, but using the full
+#                  JNI mechanism.  Compile code that meets JNI
+#                  naming and prototype conventions that would
+#                  normally be stored in a shared object @b .so
+#                  or @b .dll file.  (Here it will be statically linked
+#                  into a regular binary.)  Then statically link this
+#                  code to @b libjvm/lib/libjvm.a .</li>
+#
+# <li>@b test:     Java test programs for exercising various parts
+#                  of the JVM</li>
+#
+# <li>@b dox:      Documentation of source code in @b jvm directory
+# </ul>
+#
+# Each of these directories contains a @b build.sh script.  In addition
+# to these, an Eclipse project file is available in each for use with
+# the Eclipse C/C++ plugin, so this entire directory tree may be
+# imported wholesale into an Eclipse workspace and used without
+# changes.  (Eclipse 3.0.2 generated these files.)  Notice that
+# the Eclipse setup does not build the documentation set.  This must
+# be done manually with the top-level 'build.sh dox'.
+#
+# @attention For Eclipse uses, be aware that the configuration
+# options stored by @link config.sh config.sh@endlink into
+# <b><code>config/config_*.gcc*</code></b> are @e not directly
+# available to Eclipse and @e must be manually entered there
+# after they are established by @link ./config.sh config.sh@endlink.
+# They should be entered in the project build parameters for
+# C/C++ in the miscellaneous parameters section.  For example,
+# @b -m32 and @b -m64 .  For a command line GCC invocation,
+# the following is a convenient way to incorporate the options:
+#
+# @verbatim
+#
+#   $ gcc `cat ../config/config_opts_always.gcc` \
+#         `cat ../config/config_opts_usually.gcc` -c filename.c ...
+#
+# @endverbatim
+#
+# Notice that this script may be run instead of or as well as an
+# Eclipse build.  There is only a slight difference as to
+# where the compiled object files are stored, but the binaries
+# and library archives are stored in the same place for both
+# methods.
+#
+#
+# @see @link ./build.sh ./build.sh@endlink
+#
+# @see @link ./clean.sh ./clean.sh@endlink
+#
+# @see @link jvm/build.sh jvm/build.sh@endlink
+#
+# @see @link libjvm/build.sh libjvm/build.sh@endlink
+#
+# @see @link main/build.sh main/build.sh@endlink
+#
+# @see @link test/build.sh test/build.sh@endlink
+#
+# @see @link jni/src/harmony/generic/0.0/build.sh
+#            jni/src/harmony/generic/0.0/build.sh@endlink
+#
+# @see @link jvm/clean.sh jvm/clean.sh@endlink
+#
+# @see @link libjvm/clean.sh libjvm/clean.sh@endlink
+#
+# @see @link main/clean.sh main/clean.sh@endlink
+#
+# @see @link test/clean.sh test/clean.sh@endlink
+#
+# @see @link jni/src/harmony/generic/0.0/clean.sh
+#            jni/src/harmony/generic/0.0/clean.sh@endlink
+#
+# @see @link jvm/common.sh jvm/common.sh@endlink
+#
+# @see @link libjvm/common.sh libjvm/common.sh@endlink
+#
+# @see @link main/common.sh main/common.sh@endlink
+#
+# @see @link test/common.sh test/common.sh@endlink
+#
+# @see @link jni/src/harmony/generic/0.0/common.sh
+#            jni/src/harmony/generic/0.0/common.sh@endlink
+#
+#
+# @todo  A Windows .BAT version of this script needs to be written
+#
+#
+# @section Control
+#
+# \$URL: https://svn.apache.org/path/name/build.sh $ \$Id: build.sh 0 09/28/2005 dlydick $
+#
+# Copyright 2005 The Apache Software Foundation
+# or its licensors, as applicable.
+#
+# Licensed under the Apache License, Version 2.0 ("the License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied.
+#
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# @version \$LastChangedRevision: 0 $
+#
+# @date \$LastChangedDate: 09/28/2005 $
+#
+# @author \$LastChangedBy: dlydick $
+#         Original code contributed by Daniel Lydick on 09/28/2005.
+#
+# @section Reference
+#
+#/ /* 
+# (Use  #! and #/ with dox_filter.sh to fool Doxygen into
+# parsing this non-source text file for the documentation set.
+# Use the above open comment to force termination of parsing
+# since it is not a Doxygen-style 'C' comment.)
+#
+#
+###################################################################
+#
+# Script setup
+#
+. config/config_build_steps.sh
+
+# `dirname $0` for shells without that utility
+PGMDIR=`expr "${0:-.}/" : '\(/\)/*[^/]*//*$'  \| \
+             "${0:-.}/" : '\(.*[^/]\)//*[^/][^/]*//*$' \| .`
+PGMDIR=`cd $PGMDIR; pwd`
+
+# `basename $0` for shells without that utility
+PGMNAME=`expr "/${0:-.}" : '\(.*[^/]\)/*$' : '.*/\(..*\)'`
+
+###################################################################
+#
+# Check compilation options
+#
+Usage ()
+{
+    (
+   OPTLIST="{cfg | all | jvm | libjvm | main | test | jni | dox | help}"
+        echo "Usage:  $0 $OPTLIST"
+        echo ""
+echo "where  cfg   Build what was configured by the 'config.sh' script"
+        echo "       all    Build/clean everything"
+        echo "       jvm    Build/clean main JVM development area"
+        echo "       libjvm Build/clean static JVM library"
+        echo "       main   Build/clean JVM binary"
+       echo "       test   Build/clean test classes for JVM development"
+        echo "       jni    Build/clean JNI library and sample binary"
+        echo "       dox    Build/clean documentation"
+        echo "       help   Display this message"
+        echo ""
+    ) 1>&2
+    exit 10
+}
+
+BUILD_ALL=0
+BUILD_JVM=0
+BUILD_LIB=0
+BUILD_MAIN=0
+BUILD_TEST=0
+BUILD_JNI=0
+BUILD_DOX=0
+
+BUILD_DIST=0
+
+case $1 in
+    cfg)    if test 1 -eq $CONFIG_BUILD_ALLCODE;  then BUILD_ALL=1;  fi
+            if test 1 -eq $CONFIG_BUILD_JVM;      then BUILD_JVM=1;  fi
+            if test 1 -eq $CONFIG_BUILD_LIB;      then BUILD_LIB=1;  fi
+            if test 1 -eq $CONFIG_BUILD_MAIN;     then BUILD_MAIN=1; fi
+            if test 1 -eq $CONFIG_BUILD_TEST;     then BUILD_TEST=1; fi
+            if test 1 -eq $CONFIG_BUILD_JNI;      then BUILD_JNI=1;  fi
+            if test 1 -eq $CONFIG_BUILD_DOX;      then BUILD_DOX=1;  fi
+            ;;
+    all)    BUILD_ALL=1
+            BUILD_JVM=1
+            BUILD_LIB=1
+            BUILD_MAIN=1
+            BUILD_TEST=1
+            BUILD_JNI=1
+            BUILD_DOX=1
+            ;;
+    jvm)    BUILD_JVM=1;;
+    libjvm) BUILD_LIB=1;;
+    main)   BUILD_MAIN=1;;
+    test)   BUILD_TEST=1;;
+    jni)    BUILD_JNI=1;;
+    dox)    BUILD_DOX=1;;
+
+    *)      # These scripts ave their own Usage tests
+            case $PGMNAME in
+                dist-src.sh | dist-bin.sh | dist-doc.sh)
+                    # CONFIG_RELEASE_LEVEL contains release level,
+                    # and no other parameterization is needed
+                    BUILD_DIST=1
+                    ;;
+                *)  if test -z "$1"
+                    then
+                        $0 cfg
+                        exit $?
+                    fi
+                    Usage
+                    ;;
+            esac
+            ;;
+esac
+
+###################################################################
+#
+# Build binary from source code
+#
+rc=0
+
+# All scripts except distribution scripts use this logic:
+if test 0 -eq $BUILD_DIST
+then
+    if test 1 -eq $BUILD_JVM
+    then
+        echo "$PGMNAME jvm"
+        cd jvm
+        $PGMNAME
+        rc=$?
+        cd ..
+    fi
+
+    if test 1 -eq $BUILD_LIB
+    then
+        echo "$PGMNAME libjvm"
+        cd libjvm
+        $PGMNAME
+        rc1=$?
+        if test 0 -eq $rc; then rc=$rc1; fi
+        cd ..
+    fi
+
+    if test 1 -eq $BUILD_MAIN
+    then
+        echo "$PGMNAME main"
+        cd main
+        $PGMNAME
+        rc1=$?
+        if test 0 -eq $rc; then rc=$rc1; fi
+        cd ..
+    fi
+
+    if test 1 -eq $BUILD_TEST
+    then
+        echo "$PGMNAME test"
+        cd test
+        $PGMNAME
+        rc1=$?
+        if test 0 -eq $rc; then rc=$rc1; fi
+        cd ..
+    fi
+
+    if test 1 -eq $BUILD_JNI
+    then
+        echo "$PGMNAME jni/src/harmony/generic/0.0"
+        cd jni/src/harmony/generic/0.0
+        $PGMNAME
+        rc1=$?
+        if test 0 -eq $rc; then rc=$rc1; fi
+        cd ../../../../..
+    fi
+
+    if test 1 -eq $BUILD_DOX
+    then
+        echo "$PGMNAME dox"
+        case $PGMNAME in
+            build.sh) dox.sh;;
+            clean.sh) undox.sh;;
+        esac
+        rc1=$?
+        if test 0 -eq $rc; then rc=$rc1; fi
+    fi
+
+    exit $rc
+fi
+
+###################################################################
+#
+# Preparation for 'dist-src.sh' and 'dist-bin.sh' and 'dist-doc.sh'
+#
+# Strip out _all_ output, rebuild documentation in _all_ formats,
+# archive it, and then delete it.  Package the result in final
+# 'tar' file.
+#
+
+# Names of documentation tar file and source distribution tar file
+PREFMTDOCSTAR="bootJVM-docs.tar"
+
+# Can't add release level unless 'config.sh' can locate release level:
+#PREFMTDOCSTAR="bootJVM-docs-$CONFIG_RELEASE_LEVEL.tar"
+
+DISTBINTAR="bootJVM-bin-$CONFIG_RELEASE_LEVEL.tar"
+DISTDOCTAR="bootJVM-doc-$CONFIG_RELEASE_LEVEL.tar"
+DISTSRCTAR="bootJVM-src-$CONFIG_RELEASE_LEVEL.tar"
+
+# Transient storage for keeping existing old configuration
+PGMTMP=../tmp.$$.$PGMNAME
+
+
+DistPrep()
+{
+    # Keep existing configuration in temp area for later restoration
+    rm -rf $PGMTMP
+    mkdir $PGMTMP
+    if test ! -d $PGMTMP
+    then
+        echo "$PGMNAME: Cannot create temp area '$PGMTMP'"
+        echo "$PGMNAME: Either non-writable parent or file system full."
+        echo "$PGMNAME: Please make it writable/not full and try again."
+        exit 3
+    fi
+
+    . config/config_build_steps.sh
+    # # Don't need this constraint if only changing doxygen.css file:
+    # if test "NO" != "$CONFIG_BUILD_HTML_ADJUST_NETSCAPE47X"
+    # then
+    #     echo ""
+    #     echo "$PGMNAME: Documentation must be build without any"
+    #     echo "adjustment for Netscape 4.7x.  Please run 'config.sh'"
+    #     echo "again and do NOT permit this adjustment, then retry"
+    #     echo "the distribution."
+    #     echo ""
+    #     exit 4
+    # fi
+
+    if test -f $PREFMTDOCSTAR.gz
+    then
+        mv $PREFMTDOCSTAR.gz $PGMTMP
+    fi
+    if test -d doc
+    then
+        mv doc $PGMTMP
+    fi
+    if test -d doc.ORIG
+    then
+        chmod +w doc.ORIG
+        mv doc.ORIG $PGMTMP
+    fi
+    if test -d bootclasspath
+    then
+        mv bootclasspath $PGMTMP
+    fi
+}
+
+CDSD="config/config_dox_setup.dox"
+DistDocPrep ()
+{
+    echo ""
+    echo "$PGMNAME: Creating documentation set in _all_ formats"
+
+    # Keep old doc cfg file, generate all-inclusive temporary one
+    rm -f ${CDSD}.ORIG
+    mv $CDSD ${CDSD}.ORIG
+    (
+        echo "GENERATE_HTML=YES"
+        echo "GENERATE_LATEX=YES"
+        echo "GENERATE_RTF=YES"
+        echo "GENERATE_MAN=YES"
+        echo "GENERATE_XML=YES"
+    ) > $CDSD
+}
+
+
+DistTargetBuild ()
+{
+    # Make SURE the output area is clean
+    SUPPRESS_DOXYGEN_VERYCLEAN=
+    export SUPPRESS_DOXYGEN_VERYCLEAN
+
+    # Set up for patchable 'doxygen.css' file
+    CONFIG_BUILD_HTML_ADJUST_NETSCAPE47X=YES
+    export CONFIG_BUILD_HTML_ADJUST_NETSCAPE47X
+
+    ./build.sh $1
+
+    # Set initial state to unpatched
+    ./doxunpatch.sh
+}
+
+DistDocTar ()
+{
+    echo ""
+    echo "$PGMNAME: Creating documentation file '$PREFMTDOCSTAR.gz'"
+    tar cf $PREFMTDOCSTAR doc
+    rm -f $PREFMTDOCSTAR.gz
+    gzip $PREFMTDOCSTAR
+}
+
+DistDocUnPrep ()
+{
+    echo ""
+    echo "$PGMNAME: Removing temporary documentation set"
+    ./clean.sh dox
+    rm -f $CDSD
+    mv ${CDSD}.ORIG $CDSD 
+}
+
+DistConfigPrep ()
+{
+    mv config $PGMTMP
+}
+
+DistConfigUnPrep ()
+{
+    mv $PGMTMP/config .
+}
+
+DistUnPrep ()
+{
+    echo ""
+    echo "$PGMNAME: Restoring configuration from temp area"
+    mv $PGMTMP/* .
+    rmdir $PGMTMP
+}
+
+###################################################################
+#
+# EOF

Propchange: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/common.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/commondox.sh
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/commondox.sh?rev=307257&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/commondox.sh (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/commondox.sh Fri Oct  7 21:27:56 2005
@@ -0,0 +1,114 @@
+#!/bin/sh
+#!
+# @file ./commondox.sh
+#
+# @brief Common code for @link ./dox.sh dox.sh@endlink and
+# @link ./undox.sh undox.sh@endlink.
+#
+# This script is common to @link ./dox.sh dox.sh@endlink and
+# @link ./undox.sh undox.sh@endlink and is not designed to do
+# anything on its own.
+#
+#
+# @todo  A Windows .BAT version of this script needs to be written
+#
+#
+# @section Control
+#
+# \$URL: https://svn.apache.org/path/name/commondox.sh $ \$Id: commondox.sh 0 09/28/2005 dlydick $
+#
+# Copyright 2005 The Apache Software Foundation
+# or its licensors, as applicable.
+#
+# Licensed under the Apache License, Version 2.0 ("the License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied.
+#
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# @version \$LastChangedRevision: 0 $
+#
+# @date \$LastChangedDate: 09/28/2005 $
+#
+# @author \$LastChangedBy: dlydick $
+#         Original code contributed by Daniel Lydick on 09/28/2005.
+#
+# @section Reference
+#
+#/ /* 
+# (Use  #! and #/ with dox_filter.sh to fool Doxygen into
+# parsing this non-source text file for the documentation set.
+# Use the above open comment to force termination of parsing
+# since it is not a Doxygen-style 'C' comment.)
+#
+#
+########################################################################
+#
+# Doxygen configuration file.  Parse out keywords from this file.
+#
+DOXYFILE=bootjvm.dox
+
+########################################################################
+#
+# Parse out the target output directory and its subdirectories for
+# various output styles.  Use as path name $OUTPUT_DIRECTORY/$xxx_OUTPUT
+#
+CUT="cut -d= -f2 | sed 's/ //g'"
+
+OUTPUT_DIRECTORY=`grep "^OUTPUT_DIRECTORY" $DOXYFILE | eval $CUT`
+
+# Subdirectories
+HTML_OUTPUT=`grep "^HTML_OUTPUT" $DOXYFILE | eval $CUT`
+LATEX_OUTPUT=`grep "^LATEX_OUTPUT" $DOXYFILE | eval $CUT`
+RTF_OUTPUT=`grep "^RTF_OUTPUT" $DOXYFILE | eval $CUT`
+MAN_OUTPUT=`grep "^MAN_OUTPUT" $DOXYFILE | eval $CUT`
+XML_OUTPUT=`grep "^XML_OUTPUT" $DOXYFILE | eval $CUT`
+
+# Default values
+if test -z "$OUTPUT_DIRECTORY"; then OUTPUT_DIRECTORY=doc; fi
+if test -z "$HTML_OUTPUT";      then HTML_OUTPUT=html;     fi
+if test -z "$LATEX_OUTPUT";     then LATEX_OUTPUT=latex;   fi
+if test -z "$RTF_OUTPUT";       then RTF_OUTPUT=rtf;       fi
+if test -z "$MAN_OUTPUT";       then MAN_OUTPUT=man;       fi
+if test -z "$XML_OUTPUT";       then XML_OUTPUT=xml;       fi
+
+########################################################################
+#
+# Remove output directory, clean up its subdirectories for results
+#
+# Each component is listed separately.  If there is _anything_ else
+# in this area, then the final 'rmdir' will fail.  Such an additional
+# item needs to be accounted for in these scripts and not just
+# arbitrarily stored into this area, which should _alway_ remain
+# _completely_ auto-generated.
+#
+RMALL_CMD="\
+rm -rf $OUTPUT_DIRECTORY/$HTML_OUTPUT \
+       $OUTPUT_DIRECTORY/$LATEX_OUTPUT \
+       $OUTPUT_DIRECTORY/$RTF_OUTPUT \
+       $OUTPUT_DIRECTORY/$MAN_OUTPUT \
+       $OUTPUT_DIRECTORY/$XML_OUTPUT; \
+rmdir  $OUTPUT_DIRECTORY"
+
+########################################################################
+#
+# Default Doxygen cascadiing style sheet file, plus patched versions.
+#
+CSS_FILE_NAME=doxygen.css
+CSS_FILE_ORIG_NAME=$CSS_FILE_NAME.ORIG
+CSS_FILE_PATCHED_NAME=$CSS_FILE_NAME.PATCHED_BY_DOX_SH
+
+CSS_FILE=$OUTPUT_DIRECTORY/$HTML_OUTPUT/$CSS_FILE_NAME
+CSS_FILE_ORIG=$OUTPUT_DIRECTORY/$HTML_OUTPUT/$CSS_FILE_ORIG_NAME
+CSS_FILE_PATCHED=$OUTPUT_DIRECTORY/$HTML_OUTPUT/$CSS_FILE_PATCHED_NAME
+
+#
+# EOF

Propchange: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/commondox.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/config.sh
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/config.sh?rev=307257&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/config.sh (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/config.sh Fri Oct  7 21:27:56 2005
@@ -0,0 +1,2010 @@
+#!/bin/sh
+#
+#!
+# @file ./config.sh
+#
+# @brief Configure Boot JVM.
+#
+# Shell script to configure which features are in the compiled code.
+# This build happens in several phases:
+#
+# <ul>
+# <li>
+# <b>(1)</b> Pre-formatted documentation
+# </li>
+# <li>
+# <b>(2)</b> Java Setup
+# </li>
+# <li>
+# <b>(3)</b> C Compilation and Document Compilation Setup
+# </li>
+# <li>
+# <b>(4)</b> Startup Library (bootclasspath) Java classes
+# </li>
+# <li>
+# <b>(5)</b> Source code build-- Invokes 'build.sh', which may be
+#                         used for all further compilations.
+# </li>
+# </ul>
+#
+# Remember that if you add a Java source file, a C source or header
+# file, or a shell script, you should run this script again so that
+# the @b config directory roster locates the update.  This way,
+# 'doxygen' will automatically incorporate it into the documentation
+# suite.
+#
+# @todo Support the following input parameter format:
+#
+# Input:   [hwvendor [wordwidth [osname]]]
+#
+# These optional positional parameters contain specific token values,
+# which may change from one release to the next.  Initially, they are
+# as follows.  For current actual supported platform values, please
+# refer to parsing of positional parms $1 and $2 and $3 below.
+#
+# <ul>
+#         <li>hwvendor     Keyword for supported hardware platform.
+#                          Initially @b sparc and @b intel
+#
+#         </li>
+#         <li>wordwidth    Keyword for hardware word size.
+#                          Initialiy either @b 32 and @b 64
+#         </li>
+#         <li>osname       Keyword for operating system name.
+#                          Initially @b solaris and @b linux and
+#                          @b windows.
+#         </li>
+# </ul>
+#
+# These may evolve over time, and not every combination of these
+# is valid.  The initial valid combinations are:
+#
+# (hwvendor, wordwidth, osname) ::=   one of these combinations:
+#
+# <ul>
+#     <li>(sparc, 32, solaris)
+#     </li>
+#     <li>(sparc, 64, solaris)
+#     </li>
+#     <li>(sparc, 32, linux)
+#     </li>
+#     <li>(sparc, 64, linux)
+#     </li>
+#     <li>(intel, 32, solaris)
+#     </li>
+#     <li>(intel, 32, linux)
+#     </li>
+#     <li>(intel, 64, solaris)
+#     </li>
+#     <li>(intel, 64, linux)
+#     </li>
+#     <li>(intel, 32, windows)
+#     </li>
+#     <li>(amd,   64, windows)... JDK for AMD64 coming soon from Sun.
+#     </li>
+# </ul>
+#
+#
+# @todo  A Windows .BAT version of this script needs to be written
+#
+#
+# @section Control
+#
+# \$URL: https://svn.apache.org/path/name/config.sh $ \$Id: config.sh 0 09/28/2005 dlydick $
+#
+# Copyright 2005 The Apache Software Foundation
+# or its licensors, as applicable.
+#
+# Licensed under the Apache License, Version 2.0 ("the License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied.
+#
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# @version \$LastChangedRevision: 0 $
+#
+# @date \$LastChangedDate: 09/28/2005 $
+#
+# @author \$LastChangedBy: dlydick $
+#         Original code contributed by Daniel Lydick on 09/28/2005.
+#
+# @section Reference
+#
+#/ /* 
+# (Use  #! and #/ with dox_filter.sh to fool Doxygen into
+# parsing this non-source text file for the documentation set.
+# Use the above open comment to force termination of parsing
+# since it is not a Doxygen-style 'C' comment.)
+#
+#
+###################################################################
+#
+# Script setup
+#
+chmod -w $0 ./echotest.sh
+
+. ./echotest.sh
+
+# `dirname $0` for shells without that utility
+PGMDIR=`expr "${0:-.}/" : '\(/\)/*[^/]*//*$'  \| \
+             "${0:-.}/" : '\(.*[^/]\)//*[^/][^/]*//*$' \| .`
+PGMDIR=`cd $PGMDIR; pwd`
+
+# `basename $0` for shells without that utility
+PGMNAME=`expr "/${0:-.}" : '\(.*[^/]\)/*$' : '.*/\(..*\)' \|\
+              "/${0:-.}" : '\(.*[^/]\)/*$' : '.*/\(..*\)' \| \
+              "/${0:-.}" : '.*/\(..*\)'`
+
+###################################################################
+#
+# Constant values
+#
+PROGRAM_NAME="BootJVM"
+PROGRAM_DESCRIPTION="Apache Harmony Bootstrap JVM"
+
+###################################################################
+#
+# Introduction
+#
+tput clear
+echo ""
+echo "Welcome to the Apache Harmony Bootstrap JVM configurator!"
+echo "========================================================="
+echo ""
+echo "You may run this utility as often as needed to configure or"
+echo "reconfigure various parts of your installation of this project."
+echo "There are several areas that will be configured with this tool:"
+echo ""
+echo "  (1) Pre-formatted documentation"
+echo "  (2) Java compilation setup"
+echo "  (3) C compilation and document compilation setup"
+echo "  (4) Startup library (bootclasspath) Java classes"
+echo "  (5) Project build"
+echo ""
+echo "Phases (2) and (3) will be configured every time, where"
+echo "phases (1) and (4) need only be configured once, unless"
+echo "there is a need to change something.  Phase (5) may be"
+echo "run each time or not, as desired.  The most important"
+echo "information from phases (2) and (3) is stored into the"
+CFGH="config/config.h"
+echo "configuration file '$CFGH' and are the ones"
+echo "most likely to need adjustment from time to time."
+echo ""
+echo "Do you wish to read the introductory notes? [y,n] $echoc"
+read readintro
+echo ""
+
+case $readintro in
+    y|ye|yes|Y|YE|YES) READINTRO=1;;
+    *)                 READINTRO=0;;
+esac
+
+if test 1 -eq $READINTRO
+then
+# Do not indent so that more text may be put on each line:
+
+tput clear
+echo ""
+echo "Introductory Configuration Notes"
+echo "--------------------------------"
+echo ""
+echo "The documentation for this project is created from information"
+echo "stored literally within each source file.  Documentation tags are"
+echo "used to frame each portion, which is extracted and formatted"
+echo "with the C/C++ documentation tool called Doxygen."
+echo ""
+echo "Over the course of the development cycle, you may add or delete"
+echo "source files:  Java source, C source, C headers, perhaps shell"
+echo "scripts.  When this is done, the 'build.sh' scripts will"
+echo "automatically pick up the changes after this script is run."
+echo "The changes will be made available to the 'doxygen' and 'gcc'"
+echo "as coordinated by the 'config/config_roster*' files, and"
+echo "without assistance required from users."
+echo ""
+echo "The 'README' file in this directory contains much useful"
+echo "information about which source files perform which function."
+echo ""
+echo "more... $echoc"
+read dummy
+echo ""
+echo "This project was originally developed on a Solaris 9 platform."
+echo "All C code was originally compiled there with the GCC C compiler."
+echo "Your GCC compiler is located in"
+echo ""
+echo "\$ which gcc"
+which gcc
+echo ""
+echo "If not found, the source be located at www.gnu.org.  Please use"
+echo "version 3.3.2 or newer.  There are also compiled binary editions"
+echo "of GCC available from numerous hardware vendors and/or their"
+echo "user groups."
+echo ""
+echo "ready... $echoc"
+read dummy
+echo ""
+echo "The 'build.sh dox' facility extracts the documentation from the"
+echo "source code using 'doxygen'.  On your system, it is located in:"
+echo ""
+echo "\$ which doxygen"
+which doxygen
+echo ""
+echo "If not found, binary distributions for numerous platforms are"
+echo "located at: www.doxygen.org.  Please use version 1.4.4 or newer."
+echo ""
+echo "... End of introductory notes ..."
+echo ""
+echo "ready... $echoc"
+read dummy
+fi
+
+###################################################################
+#
+# Set up phase 1:  Pre-formatted documentation
+#
+tput clear
+echo ""
+echo "Phase 1:  Pre-formatted documentation"
+echo "-------------------------------------"
+echo ""
+echo ""
+echo "The project documentation comes pre-formatted by 'doxygen'."
+echo "It provides output in HTML format for a web browser, in Unix"
+echo "man and Latex info formats, as well as RTF, and XML formats"
+echo "for other access methods."
+echo ""
+echo "This documentation may also be derived from the source code at"
+echo "any time by invoking the top-level project build option"
+echo "'build.sh dox' or 'build.sh all'."
+echo ""
+echo "Developers working only on documentation may wish to _not_"
+echo "install it, while most others may wish to do so for a starting"
+echo "point for their work.  (Remember that documentation of source"
+echo "files, functions, data types, and data structures is all part"
+echo "of the development process.  Running 'build.sh dox' will refresh"
+echo "the documentation suite with your current work.)"
+echo ""
+echo "more... $echoc"
+read dummy
+echo ""
+echo "Once installed in the 'doc' directory, this information will"
+echo "promptly be moved to a 'doc.ORIG' directory as a read-only"
+echo "reference that is not changed during 'build.sh' operations."
+echo "All documentation builds write their output to the 'doc'"
+echo "directory, leaving 'doc.ORIG' untouched.  If you will be"
+echo "regularly working with documentation changes, or if you do"
+echo "not need a reference copy of the documentation, you may"
+echo "safely remove this version."
+echo ""
+echo "more... $echoc"
+read dummy
+echo ""
+echo "It is recommended that a typical user install the documentation"
+echo "suite in manner described here and used it in this way until"
+echo "accustomed to the use of the various tools."
+echo ""
+echo "If it has already been installed on a previous instance of"
+echo "running '$PGMNAME', then it does not need to be installed again."
+echo ""
+echo "Do you wish to install pre-formatted documentation? [y,n] $echoc"
+read prefmtdocs
+
+###################################################################
+#
+# Set up and run phase 2:  Java compilation setup
+#
+tput clear
+echo ""
+echo "Phase 2:  Java compilation setup"
+echo "--------------------------------"
+echo ""
+echo "This project uses your current Java J2SE compilation tools."
+echo "Any JDK will do, as long as its compiler is called 'javac'"
+echo "and it has an archiver utility called 'jar'.  It also needs"
+echo "to have a class library of some description from which this"
+echo "Java runtime will initially draw its library classes such as"
+echo "java.lang.Object and other fundamental components.  These will,"
+echo "over time, be replaced with classes native to the project."
+echo ""
+echo "$PGMNAME:  Testing JAVA_HOME..."
+
+if test "" = "$JAVA_HOME"
+then
+    echo "$PGMNAME:  STOP!  Need to have JAVA_HOME defined first"
+    exit 1
+fi
+echo "$PGMNAME:  JAVA_HOME okay: $JAVA_HOME"
+
+echo "$PGMNAME:  Testing $JAVA_HOME..."
+
+if test ! -d $JAVA_HOME/.
+then
+    echo "$PGMNAME:  JAVA_HOME directory does not exist"
+fi
+
+CRITICAL_PROGRAMS="jar javac" # javah java ... add as needed
+
+echo "$PGMNAME:  Testing $JAVA_HOME/bin..."
+
+rc=0
+for binary in $CRITICAL_PROGRAMS
+do
+    if test ! -x $JAVA_HOME/bin/$binary
+    then
+     echo "$PGMNAME:  Critical program $JAVA_HOME/bin/$binary not found"
+        rc=1
+    fi
+done
+if test 0 -ne $rc
+then
+    exit 2
+fi
+
+echo "$PGMNAME:  Testing $JAVA_HOME/include..."
+
+if test ! -d $JAVA_HOME/include
+then
+    echo "$PGMNAME:  Missing JDK include directory $JAVA_HOME/include"
+    exit 3
+fi
+
+echo "$PGMNAME:  Testing $PGMDIR..."
+
+if test ! -w .
+then
+ echo "$PGMNAME:  Cannot write to $PGMDIR.  Please change to read-write"
+    exit 4
+fi
+
+echo "$PGMNAME:  Testing Java version..."
+
+$JAVA_HOME/bin/java -version
+
+echo  ""
+echo  "Is this version of Java and JAVA_HOME satisfactory? [y,n] $echoc"
+read libsetup
+echo ""
+
+case $libsetup in
+    y|ye|yes|Y|YE|YES) ;;
+    *)     echo ""
+           echo "Remedy:  Change JAVA_HOME to desired JDK and try again"
+           echo ""
+           exit 5;;
+esac
+
+for dir in jvm libjvm main test jni jni/src/harmony/generic/0.0
+do
+    echo "$PGMNAME:  Testing Source Area $dir..."
+
+    if test ! -d $dir/src
+    then
+        echo "$PGMNAME:  Missing '$PGMDIR/$dir/src' directory"
+        exit 6
+    fi
+done
+
+for dir in jvm jni/src/harmony/generic/0.0
+do
+    echo "$PGMNAME:  Testing Include Area $dir..."
+
+    if test ! -d $dir/include
+    then
+        echo "$PGMNAME:  Missing '$PGMDIR/$dir/include' directory"
+        exit 7
+    fi
+done
+
+echo "$PGMNAME:  Testing Object Area..."
+echo "$PGMNAME:  Setting up output area..."
+
+echo ""
+echo "$PGMNAME:  Enter name of JRE class library archive file,"
+echo "              relative to JAVA_HOME ($JAVA_HOME)."
+echo "              Use this format:  relative/pathname/filename.jar"
+
+while true
+do
+    echo ""
+    echo "           If the default is acceptable, enter an empty line:"
+    echo ""
+    $echon "JRE class library archive: [jre/lib/rt.jar] $echoc"
+    read rtjarfile
+
+    if test -z "$rtjarfile"
+    then
+        rtjarfile="jre/lib/rt.jar"
+    fi
+
+   if test ! -f $JAVA_HOME/$rtjarfile
+   then
+       echo ""
+       echo "File not found: $JAVA_HOME/$rtjarfile"
+       echo ""
+       continue
+   fi
+
+   if test ! -r $JAVA_HOME/$rtjarfile
+   then
+       echo ""
+       echo "Permission denied: $JAVA_HOME/$rtjarfile"
+       echo ""
+       continue
+   fi
+
+   (
+       mkdir ${TMPDIR:-/tmp}/tmp.config.$$
+       cd ${TMPDIR:-/tmp}/tmp.config.$$
+       $JAVA_HOME/bin/jar xf $JAVA_HOME/$rtjarfile \
+                             java/lang/Object.class
+   )
+   if test ! -r ${TMPDIR:-/tmp}/tmp.config.$$/java/lang/Object.class
+   then
+       rm -rf ${TMPDIR:-/tmp}/tmp.config.$$
+       echo ""
+       echo "Archive is missing java.lang.Object: $JAVA_HOME/$rtjarfile"
+       echo ""
+       continue
+   fi
+   rm -rf ${TMPDIR:-/tmp}/tmp.config.$$
+
+   # JRE file correct
+   break
+done
+RTJARFILE=$rtjarfile
+CONFIG_RTJARFILE=$JAVA_HOME/$rtjarfile
+
+###################################################################
+#
+# Set up phase 3:  C Compilation and Document Compilation Setup
+#
+tput clear
+echo ""
+echo "Phase 3:  C Compilation and Document Compilation Setup"
+echo "------------------------------------------------------"
+echo ""
+echo "The following is a set of questions that tells the compiler"
+echo "the release level of the project and which compile options"
+echo "to use and tells the source code about certain features of"
+echo "the CPU.  Further questions inform the compiler and linker"
+echo "about which options to use for selected modular features"
+echo "such as heap allocation and garbage collection."
+echo ""
+while true
+do
+    echo ""
+    echo "  The release level is configured as:  MAJOR.MINOR.PATCHLEVEL"
+    echo "  where each part of the tuple is"
+    echo "  a numeric value of up to four digits."
+    echo "  The only time it is important is"
+    echo "  when a release is being made, at"
+    echo "  which time the  tuple assigned by"
+    echo "  the project management committee"
+    echo "  must be used."
+    echo ""
+    $echon "  Enter the numeric MAJOR revision level:      $echoc"
+    read RELEASE_MAJOR
+
+    case $RELEASE_MAJOR in
+        [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9] ) ;;
+        *)     echo ""
+               echo "Please use a numeric value for the MAJOR field"
+               echo ""
+               continue;;
+    esac
+
+    # Strip leading zeroes
+    RELEASE_MAJOR=`expr 0 + $RELEASE_MAJOR`
+
+    echo ""
+    $echon "  Enter the numeric MINOR revision level:      $echoc"
+    read RELEASE_MINOR
+
+    case $RELEASE_MINOR in
+        [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9] ) ;;
+        *)     echo ""
+               echo "Please use a numeric value for the MINOR field"
+               echo ""
+               continue;;
+    esac
+
+    # Strip leading zeroes
+    RELEASE_MINOR=`expr 0 + $RELEASE_MINOR`
+
+    echo ""
+    $echon "  Enter the numeric PATCHLEVEL revision level: $echoc"
+    read RELEASE_PATCHLEVEL
+
+    case $RELEASE_PATCHLEVEL in
+        [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9] ) ;;
+        *)     echo ""
+              echo "Please use a numeric value for the PATCHLEVEL field"
+               echo ""
+               continue;;
+    esac
+
+    # Strip leading zeroes
+    RELEASE_PATCHLEVEL=`expr 0 + $RELEASE_PATCHLEVEL`
+
+    # Valid tuple of three numbers entered
+    RELEASE_LEVEL="$RELEASE_MAJOR.$RELEASE_MINOR.$RELEASE_PATCHLEVEL"
+    break
+done
+
+echo "---"
+echo "Valid release level: $RELEASE_LEVEL"
+
+
+while true
+do
+    echo ""
+    echo "  Enter hardware configuration of this platform:"
+    echo ""
+    HWLIST="Sun Sparc series, Intel x86 series[, add others here]"
+    echo "  Hardware vendor name: $HWLIST"
+    echo ""
+    $echon "  Select [sparc,intel] $echoc"
+    read hwvendor
+
+    case $hwvendor in
+        sparc) HWVENDOR=SPARC;;
+        intel) HWVENDOR=INTEL;;
+        *)     echo ""
+               echo "Hardware vendor '$hwvendor' invalid"
+               echo ""
+               continue;;
+    esac
+
+    echo ""
+    echo "  Architecture word width model:  32-bit word, 64-bit word"
+    echo ""
+    $echon "  Select [32,64] $echoc"
+    read wordwidth
+
+    case $wordwidth in
+        32 | 64 ) WORDWIDTH=$wordwidth;;
+        *)        echo ""
+                  echo "Word width '$wordwidth' invalid"
+                  echo ""
+                  continue;;
+    esac
+
+    echo ""
+    echo "  Operating system:  Solaris, Linux, Windows"
+    echo ""
+    $echon "  Select [solaris,linux,windows] $echoc"
+    read osname
+
+    case $osname in
+        solaris) OSNAME=SOLARIS;;
+        linux)   OSNAME=LINUX;;
+        windows) OSNAME=WINDOWS;;
+        *)       echo ""
+                 echo "Operating system '$osname' invalid"
+                 echo ""
+                 continue;;
+    esac
+
+    # Check invalid combinations
+    echo ""
+    case $hwvendor in
+        sparc)  if test "$osname" = "windows"
+                then
+                    echo "Combination invalid:  $hwvendor/$osname"
+                    echo ""
+                    continue
+                fi;;
+
+        intel)  if test "$wordwidth" = "64"
+                then
+                    echo "Combination unsupported: $hwvendor/$wordwidth"
+                    echo ""
+                    continue
+                fi;;
+    esac
+
+    break # All other combinations valid
+
+done
+
+echo "---"
+echo \
+"Valid architecture:  HW=$hwvendor  Word=$wordwidth bits OS=$osname"
+
+
+echo ""
+echo "$PGMNAME:  Choose a heap allocation method:"
+echo ""
+echo "            simple-- Uses malloc(3) and free(3) only"
+echo "            bimodal-- Augments 'simple' with large storage area"
+echo "            other-- Roll your own, generates unresolved externals"
+
+while true
+do
+    echo ""
+    $echon "Heap allocation method: [simple,bimodal,other] $echoc"
+    read heapalloc
+
+    case $heapalloc in
+        simple)  HEAPALLOC="HEAP_TYPE_SIMPLE";;
+        bimodal) HEAPALLOC="HEAP_TYPE_SIMPLE";;
+        other)   HEAPALLOC="HEAP_TYPE_OTHER";;
+
+        *)       echo ""
+                 echo "Heap allocation method '$heapalloc' invalid"
+                 echo ""
+                 continue;;
+    esac
+    break
+done
+
+
+echo ""
+echo "$PGMNAME:  Choose a garbage collection method:"
+echo ""
+echo "            stub--  Only the API calls, no content"
+echo "            other-- Roll your own, generates unresolved externals"
+
+while true
+do
+    echo ""
+    $echon "Garbage collection method: [stub,other] $echoc"
+    read gcmethod
+
+    case $gcmethod in
+        stub)    GCMETHOD="GC_TYPE_STUB";;
+        other)   GCMETHOD="GC_TYPE_OTHER";;
+
+        *)       echo ""
+                 echo "Garbage collection method '$gcmethod' invalid"
+                 echo ""
+                 continue;;
+    esac
+    break
+done
+
+###################################################################
+#
+# Set up phase 4: Extract startup classes for system bootstrap
+#
+# Extract selected classes from '$CONFIG_RTJARFILE' for use
+# during system startup.  This is a convenient workaround for
+# when the JAR extraction logic is not yet available.
+#
+# These classes are required for proper initialization of the
+# JVM.  Any others, which are listed in 'src/jvmclass.h' may
+# be included also.  The minimum set is:
+#
+#     #define JVM_STARTCLASS_JAVA_LANG_OBJECT "java/lang/Object"
+#     #define JVM_STARTCLASS_JAVA_LANG_VOID   "java/lang/Void"
+#     #define JVM_STARTCLASS_JAVA_LANG_STRING "java/lang/String"
+#     #define JVM_STARTCLASS_JAVA_LANG_STRING "java/lang/Thread"
+#
+tput clear
+echo ""
+echo "Phase 4: Extract startup classes"
+echo "--------------------------------"
+echo ""
+echo "The environment BOOTCLASSPATH is used to make selected classes"
+echo "more easily accessible during runtime startup.  When installed,"
+echo "a BOOTCLASSPATH directory decreases startup time significantly"
+echo "by having fundamental classes ready to be loaded without having"
+echo "to extract them from the class library.  A minimum set is needed"
+echo "and a larger set is available if desired, although they are not"
+echo "vital to normal startup scenarios.  This environment variable"
+echo "may also be overridden on the 'bootjvm' command line."
+echo ""
+
+# Squeeze msg onto 80-columns (just a matter of text standards and form)
+MSG80="Do you wish to set up the BOOTCLASSPATH library?"
+echo  ""
+$echon "$MSG80 [y,n] $echoc"
+read libsetup
+
+biglib=0
+case $libsetup in
+    y|ye|yes|Y|YE|YES)
+        dosetupboot=1
+
+        echo  ""
+        echo "How much disk buffering do you wish"
+     $echon "for the BOOTCLASSPATH directory to use? [less,more] $echoc"
+        read libsize
+
+        case $libsize in
+            m|mo|mor|more|M|MO|MOR|MORE) biglib=1;;
+            *)                           biglib=0;; # Redundant
+        esac
+        ;;
+
+    *)  dosetupboot=0;;
+esac
+
+###################################################################
+#
+# Set up phase 5:  Build binary and documentation from source code
+#
+tput clear
+echo ""
+echo "Phase 5:  Build binary and documentation from source code"
+echo "---------------------------------------------------------"
+echo ""
+echo "The code may be partitioned into several components and built"
+echo "either all at once and/or by its various parts.  The top-level"
+echo "build script has these same options, and using 'build.sh cfg'"
+echo "will build what is requested here in addition to individual"
+echo "selections.  The default option is 'build.sh cfg'.  Choosing"
+echo "'all' declares that all components are to be built by the"
+echo "default build option 'build.sh cfg'."
+echo ""
+echo "more... $echoc"
+read dummy
+echo ""
+echo \
+"The several options for building the code (answer 'yes' or 'no') are:"
+echo ""
+echo "    all--   Build the entire code tree, namely:"
+echo ""
+echo "    jvm--   Build the main development area"
+echo "    libjvm--Build the static JVM library"
+echo "    main--  Build the sample main() program (links 'libjvm.a')"
+echo "    test--  Build the Java test code area"
+echo "    jni--   Build the sample JNI code area (links 'libjvm.a')"
+echo "    dox--   Build the documentation (using doxygen)"
+echo ""
+echo "A suggested combination for beginning users is 'jvm' and 'dox' to"
+echo "build everything in one place and generate documentation changes"
+echo "when appropriate."
+echo ""
+echo "A suggested combination for integrators is 'lib' and 'main' for"
+echo "creating the JVM in a library and testing it out with 'main'."
+echo ""
+echo "A suggested combination for test case writers is 'jvm' and 'test'"
+echo "for creating the JVM in a binary and adding test cases."
+echo ""
+
+SHOULDBUILD="Should 'build.sh' construct"
+MSG80ALL="all:  $SHOULDBUILD the entire code tree?"
+MSG80JVM="jvm:  $SHOULDBUILD the main develoment area?"
+MSG80LIB="lib:  $SHOULDBUILD the static JVM library?"
+MSG80MAIN="main: $SHOULDBUILD the sample main() program?"
+MSG80TEST="test: $SHOULDBUILD the Java test code area?"
+MSG80JNI="jni:  $SHOULDBUILD the sample JNI code area?"
+MSG80DOX="dox:  $SHOULDBUILD the documentation area?"
+
+BUILD_JVM=1
+BUILD_LIB=1
+BUILD_MAIN=1
+BUILD_TEST=1
+BUILD_JNI=1
+BUILD_DOX=1
+
+while true
+do
+    echo  ""
+    $echon "$MSG80ALL [y,n] $echoc"
+    read buildall
+
+    case $buildall in
+        y|ye|yes|Y|YE|YES)
+           BUILD_ALLCODE=1
+           ;;
+
+        n|no|N|NO)
+           BUILD_ALLCODE=0
+
+           echo  ""
+           $echon "$MSG80JVM [y,n] $echoc"
+           read buildjvm
+           case $buildjvm in
+               y|ye|yes|Y|YE|YES) BUILD_JVM=1;;
+               *)                 BUILD_JVM=0;;
+           esac
+
+           echo  ""
+           $echon "$MSG80LIB [y,n] $echoc"
+           read buildlib
+           case $buildlib in
+               y|ye|yes|Y|YE|YES) BUILD_LIB=1;;
+               *)                 BUILD_LIB=0;;
+           esac
+
+           echo  ""
+           $echon "$MSG80MAIN [y,n] $echoc"
+           read buildmain
+           case $buildmain in
+               y|ye|yes|Y|YE|YES) BUILD_MAIN=1;;
+               *)                 BUILD_MAIN=0;;
+           esac
+
+           echo  ""
+           $echon "$MSG80TEST [y,n] $echoc"
+           read buildmain
+           case $buildmain in
+               y|ye|yes|Y|YE|YES) BUILD_TEST=1;;
+               *)                 BUILD_TEST=0;;
+           esac
+
+           echo  ""
+           $echon "$MSG80JNI [y,n] $echoc"
+           read buildjni
+           case $buildjni in
+               y|ye|yes|Y|YE|YES) BUILD_JNI=1;;
+               *)                 BUILD_JNI=0;;
+           esac
+
+           echo  ""
+           $echon "$MSG80DOX [y,n] $echoc"
+           read builddox
+           case $builddox in
+               y|ye|yes|Y|YE|YES) BUILD_DOX=1;;
+               *)                 BUILD_DOX=0;;
+           esac
+           ;;
+
+        *) continue;;
+    esac
+
+    break
+done
+echo ""
+echo ""
+echo "The documentation creation process is independent of the"
+echo "pre-formatted documentation installed into 'doc.ORIG'.  When"
+echo "generated, it gets stored into the 'doc' directory without regard"
+echo "for previous contents.  It may be generated either through the"
+echo "pre-configured build process (per above question) or by direct"
+echo "action from the top-level build command 'build.sh dox'.  When"
+echo "time comes to generate documentation, there are several formats"
+echo "available.  Most options may be used in combination to yield only"
+echo "the desired formats.  Choosing 'all' configures every format."
+echo ""
+echo "more... $echoc"
+read dummy
+echo ""
+echo "The several options for building various documentation formats"
+echo "(answer 'yes' or 'no') are:"
+echo ""
+echo "            all--  Build documentation in every format, namely:"
+echo ""
+echo "            html-- Build HTML format docs (doc/html)"
+echo "            latex--Build Latex info format docs (doc/latex)"
+echo "            rtf--  Build RTF docs (doc/rtf)"
+echo "            man--  Build man section 3 docs (doc/man/man3)"
+echo "            xml--  Build XML format docs (doc/xml)"
+echo ""
+echo "(Note:  Choosing 'rtf' may cause doxygen to generate spurious"
+echo "        messages, 'QGDict::hashAsciiKey: Invalid null key' on"
+echo "        otherwise perfectly formatted documentation.  Reasons"
+echo "        are not yet known.)"
+echo ""
+echo "A suggested combination for Unix users might be HTML and"
+echo "either man page or latex formats."
+echo ""
+echo "A suggested combination for Windows users might be HTML and"
+echo "RTF formats."
+echo ""
+echo "more... $echoc"
+read dummy
+echo ""
+echo "Older versions of the NetScape HTML browser can do odd things to"
+echo "newer versions of HTML code.  In particular, the persistent"
+echo "versions 4.7X that are still widely used on many Unix systems"
+echo "may experience difficulties.  The output of Doxygen may require"
+echo "certain adjustments, particularly on presentation of code"
+echo "fragments and other so-called 'verbatim' fragments."
+echo ""
+
+MSG80HTML="Do you need these adjustments done for your HTML browser?"
+while true
+do
+    echo  ""
+    $echon "$MSG80HTML [y,n] $echoc"
+    read adjnetscape
+
+    case $adjnetscape in
+        y|ye|yes|Y|YE|YES) BUILD_HTML_ADJ_NETSCAPE47X=YES
+                           break;;
+
+        n|no|N|NO)         BUILD_HTML_ADJ_NETSCAPE47X=NO
+                           break;;
+
+        *)                 continue;;
+    esac
+done
+
+
+
+SHOULDBUILD="Should 'build.sh dox' build"
+MSG80ALL="all:    $SHOULDBUILD docs in every format?"
+MSG80HTML="html:   $SHOULDBUILD HTML format docs (doc/html) ?"
+MSG80LATEX="latex:  $SHOULDBUILD Latex info format docs (doc/latex) ?"
+MSG80RTF="rtf:    $SHOULDBUILD RTF docs (doc/rtf) ?"
+MSG80MAN="man:    $SHOULDBUILD man section 3 docs (doc/man/man3) ?"
+MSG80XML="xml:    $SHOULDBUILD XML format docs (doc/xml) ?"
+
+BUILD_HTML=YES
+BUILD_LATEX=YES
+BUILD_RTF=YES
+BUILD_MAN=YES
+BUILD_XML=YES
+
+while true
+do
+    echo  ""
+    $echon "$MSG80ALL [y,n] $echoc"
+    read buildall
+
+    case $buildall in
+        y|ye|yes|Y|YE|YES)
+           BUILD_ALLDOX=YES
+           ;;
+
+        n|no|N|NO)
+           BUILD_ALLDOX=NO
+
+           echo  ""
+           $echon "$MSG80HTML [y,n] $echoc"
+           read buildhtml
+           case $buildhtml in
+               y|ye|yes|Y|YE|YES) BUILD_HTML=YES;;
+               *)                 BUILD_HTML=NO;;
+           esac
+
+           echo  ""
+           $echon "$MSG80LATEX [y,n] $echoc"
+           read buildlatex
+           case $buildlatex in
+               y|ye|yes|Y|YE|YES) BUILD_LATEX=YES;;
+               *)                 BUILD_LATEX=NO;;
+           esac
+
+           echo  ""
+           $echon "$MSG80RTF [y,n] $echoc"
+           read buildrtf
+           case $buildrtf in
+               y|ye|yes|Y|YE|YES) BUILD_RTF=YES;;
+               *)                 BUILD_RTF=NO;;
+           esac
+
+           echo  ""
+           $echon "$MSG80MAN [y,n] $echoc"
+           read buildman
+           case $buildman in
+               y|ye|yes|Y|YE|YES) BUILD_MAN=YES;;
+               *)                 BUILD_MAN=NO;;
+           esac
+
+           echo  ""
+           $echon "$MSG80XML [y,n] $echoc"
+           read buildxml
+           case $buildxml in
+               y|ye|yes|Y|YE|YES) BUILD_XML=YES;;
+               *)                 BUILD_XML=NO;;
+           esac
+           ;;
+
+        *) continue;;
+    esac
+
+    break
+done
+echo ""
+
+echo ""
+echo "Do you also wish to build the configured components? [y,n] $echoc"
+read buildnow
+echo ""
+echo  ""
+$echon "$PGMNAME: Ready to configure and build... $echoc"
+read doit
+echo  ""
+
+###################################################################
+#
+# Run phase 1:  Pre-formatted documentation
+#
+echo  ""
+$echon "$PGMNAME: Starting to configure... $echoc"
+sleep 3
+echo  ""
+echo  ""
+echo  "$PGMNAME:  configuring project"
+echo  ""
+case $prefmtdocs in
+    y|ye|yes|Y|YE|YES)
+        PREFMTDOCSTAR="$PGMDIR/bootJVM-docs.tar"
+        echo "$PGMNAME:  Testing $PREFMTDOCSTAR.gz"
+
+        if test ! -r $PREFMTDOCSTAR.gz
+        then
+  echo "$PGMNAME:  Pre-formatted documents not found: $PREFMTDOCSTAR.gz"
+            echo ""
+            echo "Configuration will continue..."
+            echo ""
+            sleep 3
+            # exit 8
+
+        else
+            chmod 0444 $PREFMTDOCSTAR.gz
+
+          echo "$PGMNAME:  Removing previous documentation installation"
+            if test -d doc/.; then chmod -R +w doc; fi
+            if test -d doc.ORIG/.; then chmod -R +w doc.ORIG; fi
+
+            rm -rf doc doc.ORIG
+            if test -d doc/.
+            then
+              echo "$PGMNAME:  Could not remove directory '$PGMDIR/doc'"
+                exit 9
+            fi
+            if test -d doc.ORIG/.
+            then
+         echo "$PGMNAME:  Could not remove directory '$PGMDIR/doc.ORIG'"
+                exit 10
+            fi
+
+            echo "$PGMNAME:  Installing pre-formatted documentation"
+            cat $PREFMTDOCSTAR.gz | gunzip | tar xf - doc 
+
+            echo "$PGMNAME:  Verifying documentation install"
+            if test 0 -ne $?
+            then
+     echo "$PGMNAME:  Cannot perform tar extract from $PREFMTDOCSTAR.gz"
+                exit 11
+            fi
+            if test ! -d doc/.
+            then
+                echo "$PGMNAME:  Cannot create '$PGMDIR/doc' directory"
+                exit 12
+            fi
+
+      echo "$PGMNAME:  Moving pre-formatted documentation to 'doc.ORIG'"
+            mv doc doc.ORIG
+            chmod -R -w doc.ORIG
+
+            if test ! -d doc.ORIG/.
+            then
+            echo "$PGMNAME:  Cannot create '$PGMDIR/doc.ORIG' directory"
+                exit 13
+            fi
+        fi
+        ;;
+
+    *)  ;;
+esac
+
+###################################################################
+#
+# Run phase 3:  C Compilation and Document Compilation Setup
+#
+# (Phase 2 did setup and run all above.)
+#
+rm -rf config
+if test -d config/.
+then
+    echo "$PGMNAME:  Could not remove directory '$PGMDIR/config'"
+    exit 14
+fi
+
+mkdir config
+if test ! -d config
+then
+    echo "$PGMNAME:  Cannot create '$PGMDIR/config' directory"
+    exit 15
+fi
+
+CRME="config/README"
+THISDATE=`date`
+(
+    echo ""
+    echo "Boot JVM build configuration files."
+    echo ""
+    echo "Auto-generated by $PGMNAME"
+    echo "on $THISDATE:"
+    echo "DO NOT MODIFY!"
+    echo ""
+    echo "Instead, run $PGMNAME to change anything."
+    echo "(The same goes for the '*.gcc' and '*.gccld' files in"
+    echo "this directory, but they cannot contain any comments.)"
+    echo ""
+
+) > $CRME
+
+chmod -w $CRME
+
+(
+    # Include basic doxygen tokens for documentation purposes
+    echo "/*!"
+    echo " * @file config.h"
+    echo " *"
+    echo " * @brief Boot JVM build configuration."
+    echo " *"
+    echo " * Top-level configuration declarations."
+ echo " * Auto-generated by @link ./config.sh $PGMNAME@endlink"
+    echo " * on $THISDATE:"
+    echo " * <b>@verbatim"
+    echo ""
+    echo "   DO NOT MODIFY!"
+    echo ""
+    echo "   @endverbatim</b>"
+    echo " *"
+    echo " * @section Control"
+    echo " *"
+    echo " * Id:  Auto-generated by @c @b $PGMNAME"
+    echo " *"
+    echo " * Copyright `date +%Y` The Apache Software Foundation"
+    echo " * or its licensors, as applicable."
+    echo " *"
+echo " * Licensed under the Apache License, Version 2.0 (\"the License\");"
+echo " * you may not use this file except in compliance with the License."
+    echo " * You may obtain a copy of the License at"
+    echo " *"
+    echo " *     http://www.apache.org/licenses/LICENSE-2.0"
+    echo " *"
+    echo " * Unless required by applicable law or agreed to in writing,"
+   echo " * software distributed under the License is distributed on an"
+  echo " * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,"
+    echo " * either express or implied."
+    echo " *"
+echo " * See the License for the specific language governing permissions"
+    echo " * and limitations under the License."
+    echo " *"
+    echo " * @version N/A"
+    echo " *"
+    echo " * @date $THISDATE"
+    echo " *"
+    echo " * @author $USER"
+    echo " *"
+    echo " * @section Reference"
+    echo " *"
+    echo " */"
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_PROGRAM_NAME"
+    echo " * @brief Short project name string"
+    echo " *"
+    echo " * The program name string is used in both the source"
+    echo " * and in the documentation title.  It is known between"
+    echo " * this header and the Doxygen setup, where it is"
+    echo " * called @c @b PROJECT_NAME in that parlance.  The"
+    echo " * definition of @link #CONFIG_PROGRAM_DESCRIPTION"
+    echo "   CONFIG_PROGRAM_DESCRIPTION@endlink is appended to"
+    echo " * @c @b CONFIG_PROJECT_NAME to form the"
+    echo " * text 'CONFIG_PROGRAM_NAME: CONFIG_PROGRAM_DESCRIPTION'"
+    echo " * in that location."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_PROGRAM_NAME \"$PROGRAM_NAME\""
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_PROGRAM_DESCRIPTION"
+    echo " * @brief Short description string of project function"
+    echo " *"
+    echo " * The program description is a short string describing"
+    echo " * the functionality of the program.  It is known commonly"
+    echo " * between this header and the Doxygen setup, where it is"
+    echo " * called @c @b PROJECT_NAME in that parlance.  The"
+    echo " * definition of @c @b CONFIG_PROGRAM_DESCRIPTION is appended"
+    echo " * to @link #CONFIG_PROGRAM_NAME CONFIG_PROGRAM_NAME@endlink"
+    echo " * to form the"
+    echo " * text 'CONFIG_PROGRAM_NAME: CONFIG_PROGRAM_DESCRIPTION'"
+    echo " * in that location."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_PROGRAM_DESCRIPTION \"$PROGRAM_DESCRIPTION\""
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_RELEASE_LEVEL"
+    echo " * @brief Project release as major, minor, and patchlevel"
+    echo " *"
+    echo " * The release number is stored in a three-field tuple"
+    echo " * as 'major.minor.patchlevel'.  It is known commonly"
+    echo " * between this header and the Doxygen setup, where it"
+    echo " * is called @c @b PROJECT_NUMBER in that parlance."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_RELEASE_LEVEL \"$RELEASE_LEVEL\""
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_WORDWIDTH$WORDWIDTH"
+    echo " * @brief Number of bits in real machine integer word."
+    echo " *"
+    echo " * This value may be either @b 32 or @b 64."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_WORDWIDTH$WORDWIDTH"
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_$HWVENDOR"
+    echo " * @brief Manufacturer or type of CPU."
+    echo " *"
+    echo " * This value typically implys a specific CPU architecture"
+    echo " * rather than a manufacturer of a number of them."
+    echo " *"
+    echo " * @b sparc means Sun's SPARC CPU architecture."
+    echo " *"
+    echo " * @b intel means Intel's x86 CPU architecture."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_$HWVENDOR"
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_$HWVENDOR$WORDWIDTH"
+    echo \
+" * @brief Combination of CONFIG_$HWVENDOR and CONFIG_WORDWIDTH$WORDWIDTH."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_$HWVENDOR$WORDWIDTH"
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_$OSNAME"
+    echo " * @brief Operating system name."
+    echo " *"
+    echo " * This value may be @b solaris or @b linux or @b windows."
+    echo " *"
+    OSTXTABBRV="Unix architecture operating system" # Keep short lines
+    echo " * @b solaris means Sun's premier $OSTXTABBRV"
+    echo " *"
+    echo " * @b linix means the open-source $OSTXTABBRV"
+    echo " *"
+    echo " * @b windows means Microsoft's proprietary operating system."
+    echo " *"
+    echo " * Notice that, with the exception of @b windows, various CPU"
+    echo " * architectures may run various operating systems."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_$OSNAME"
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_$OSNAME$WORDWIDTH"
+    echo \
+" * @brief Combination of CONFIG_$OSNAME and CONFIG_WORDWIDTH$WORDWIDTH."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_$OSNAME$WORDWIDTH"
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_HACKED_RTJARFILE"
+    echo " * @brief Location of run-time Java class library archive."
+    echo " *"
+    echo " * This JAR file name may be appended to @b BOOTCLASSPATH"
+    echo " * as a development hack to provide a default startup class"
+    echo " * library until the project has something better.  This"
+    echo " * file name points to the JRE run-time class library archive"
+    echo " * file name as requested from user input by" 
+    echo " * @c @b $PGMNAME at configuration time."
+    echo " *"
+    echo " * This symbol may be removed via @c @b \#undef in"
+    echo \
+" * @link jvm/src/jvmcfg.h jvmcfg.h @endlink if desired without"
+    echo " * changing its definition here in this file."
+    echo " *"
+    echo " * @todo  Put fuller definition for this symbol and its" 
+    echo " *        usage into the code in"
+    echo " *        @link jvm/src/classpath.c classpath.c @endlink."
+    echo " *"
+    echo " * @todo  Need to find some other way to locate the class"
+    echo " *        library archive in the JDK so that @e any JDK may"
+    echo " *        be considered (initially).  Need to ultimately"
+    echo " *        change out the logic that uses it over time to"
+    echo " *        begin looking for natively constructed class"
+    echo " *        library archive instead of leaning on outside work."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_HACKED_RTJARFILE \"$RTJARFILE\""
+
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_HACKED_BOOTCLASSPATH"
+    echo \
+      " * @brief Location of provisional run-time Java startup classes."
+    echo " *"
+    echo " * Internally append this name onto the end of @b CLASSPATH"
+    echo " * as a development hack to provide a default startup class"
+    echo " * library until the project has something better.  This"
+    echo " * directory name points to the @b bootclasspath directory"
+    echo " * as created by @c @b $PGMNAME at configuration time."
+    echo " *"
+    echo " * This symbol may be removed via @c @b \#undef in"
+    echo \
+" * @link jvm/src/jvmcfg.h jvmcfg.h @endlink if desired without"
+    echo " * changing its definition here in this file."
+    echo " *"
+    echo " * @todo  Put fuller definition for this symbol and its" 
+    echo " *        usage into the code in"
+    echo " *        @link jvm/src/classpath.c classpath.c @endlink"
+    echo " *        and @link jvm/src/argv.c argv.c @endlink."
+    echo " *"
+    echo " * @todo  Remove compiled absolute path name in favor or"
+    echo " *        either a relative path name or removal of this"
+    echo " *        symbol from the logic entirely."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_HACKED_BOOTCLASSPATH \"$PGMDIR/bootclasspath\""
+    echo ""
+
+  if test -z "$HEAPALLOC"
+  then
+    echo ""
+    echo "/*!"
+    echo " * @internal There is no heap allocation method configured"
+    echo " *"
+    echo " */"
+  else
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_$HEAPALLOC"
+    echo " * @brief Heap allocation method"
+    echo " *"
+    echo " * This value may be @b simple or @b bimodal or @b other."
+    echo " *"
+    echo " * @b simple means @c @b malloc(3)/free(3) only"
+    echo " *"
+  echo " * @b bimodal means @c @b malloc(3)/free(3) plus a large buffer"
+    echo " *"
+    echo " * @b other means roll your own-- generates unresolved"
+    echo " *          external symbols."
+    echo " *"
+    echo " * Refer to"
+    echo " * @link jvm/src/heap_bimodal.c heap_bimodal.c@endlink"
+    echo " * for a good example as to how to implement the heap API and"
+    echo " * incorporate it into the suite of heap allocation options."
+    echo " * Remember also to add it to"
+    echo " * @link ./$PGMNAME $PGMNAME@endlink"
+    echo " * so others may configure and use it."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_$HEAPALLOC"
+  fi
+
+  if test -z "$GCMETHOD"
+  then
+    echo ""
+    echo "/*!"
+    echo " * @internal There is no garbage collection method configured"
+    echo " *"
+    echo " */"
+  else
+    echo ""
+    echo "/*!"
+    echo " * @def CONFIG_$GCMETHOD"
+    echo " * @brief Garbage collection method"
+    echo " *"
+    echo " * This value may be @b stub or @b other."
+    echo " *"
+    echo " * @b stub means API only, no content"
+    echo " *"
+    echo " * @b other means roll your own-- generates unresolved"
+    echo " *          external symbols."
+    echo " *"
+    echo " * Refer to"
+    echo " * @link jvm/src/heap_bimodal.c heap_bimodal.c@endlink"
+    echo " * for a good example as to how to implement the heap API and"
+    echo " * incorporate it into the suite of heap allocation options."
+    echo " * The garbage collection API is similarly implemented."
+    echo " * Remember also to add it to"
+    echo " * @link ./$PGMNAME $PGMNAME@endlink"
+    echo " * so others may configure and use it."
+    echo " *"
+    echo " */"
+    echo "#define CONFIG_$GCMETHOD"
+  fi
+
+    echo "/* EOF */"
+
+) > $CFGH
+
+chmod -w $CFGH
+
+
+# Always pack structures, support static copyright info strings
+INCLUDE_PATHS="\
+  -Iinclude \
+  -I$PGMDIR/config \
+  -I$PGMDIR/jvm/include \
+  -I$JAVA_HOME/include \
+  -I$JAVA_HOME/include/$osname"
+
+CONSTANT_GCC_OPTIONS="-O0 -g3 -Wall -fmessage-length=0 -ansi"
+
+ALWAYS_REQUIRED_GCC_OPTIONS="\
+  -m$WORDWIDTH \
+  $INCLUDE_PATHS \
+  $CONSTANT_GCC_OPTIONS"
+
+ALWAYS_REQUIRED_GCCLD_OPTIONS="-m$WORDWIDTH -lpthread"
+
+USUALLY_REQUIRED_GCC_OPTIONS="-fpack-struct"
+
+COAG="config/config_opts_always.gcc"
+(
+    echo "$ALWAYS_REQUIRED_GCC_OPTIONS"
+
+) > $COAG
+
+chmod -w $COAG
+
+COUG="config/config_opts_usually.gcc"
+(
+    echo "$USUALLY_REQUIRED_GCC_OPTIONS"
+
+) > $COUG
+
+chmod -w $COUG
+
+LOAG="config/config_opts_always.gccld"
+(
+    echo "$ALWAYS_REQUIRED_GCCLD_OPTIONS"
+
+) > $LOAG
+
+chmod -w $LOAG
+
+USEDOX="for use by 'dox.sh'"
+USEDOXBLD="for use by 'dox.sh' and 'build.sh'"
+USEBLDCLN="for use by 'build.sh' and 'clean.sh'"
+
+CRCD="config/config_roster_c.dox"
+(
+    echo "#"
+    echo "# Roster of source files $USEDOXBLD"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "INPUT=\\"
+    for f in `ls -1 jvm/src/*.c`
+    do
+        echo "    $f \\"
+    done
+    echo ""
+    echo "# EOF"
+
+) > $CRCD
+
+chmod -w $CRCD
+
+CRHD="config/config_roster_h.dox"
+(
+    echo "#"
+    echo "# Roster of header files $USEDOX"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "INPUT+=\\"
+    echo "    config/config.h \\"
+    for f in main/src/main.c `ls -1 jvm/src/*.h`
+    do
+        echo "    $f \\"
+    done
+
+    for f in `ls -1 jvm/include/*.h`
+    do
+        echo "    $f \\"
+    done
+    echo ""
+    echo "# EOF"
+
+) > $CRHD
+
+chmod -w $CRHD
+
+CJCD="config/config_roster_jni_c.dox"
+(
+    echo "#"
+    echo "# Roster of JNI sample C source files $USEDOXBLD"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "INPUT+=\\"
+    for f in `ls -1 jni/src/harmony/generic/0.0/src/*.c`
+    do
+        echo "    $f \\"
+    done
+    echo ""
+    echo "# EOF"
+
+) > $CJCD
+
+chmod -w $CJCD
+
+CJHD="config/config_roster_jni_h.dox"
+(
+    echo "#"
+    echo "# Roster of JNI sample C header files $USEDOX"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "INPUT+=\\"
+    for f in `ls -1 jni/src/harmony/generic/0.0/include/*.h`
+    do
+        echo "    $f \\"
+    done
+    echo ""
+    echo "# EOF"
+
+) > $CJHD
+
+chmod -w $CJHD
+
+CJJD="config/config_roster_jni_java.dox"
+(
+    echo "#"
+    echo "# Roster of JNI sample Java source files $USEDOXBLD"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "INPUT+=\\"
+    for f in \
+        `find jni/src/harmony/generic/0.0/src -name \*.java -print`
+    do
+        echo "    $f \\"
+    done
+    echo ""
+    echo "# EOF"
+
+) > $CJJD
+
+chmod -w $CJJD
+
+CTJD="config/config_roster_test_java.dox"
+(
+    echo "#"
+    echo "# Roster of test Java source files $USEDOXBLD"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "INPUT+=\\"
+    for f in \
+        `find test/src -name \*.java -print`
+    do
+        echo "    $f \\"
+    done
+    echo ""
+    echo "# EOF"
+
+) > $CTJD
+
+chmod -w $CTJD
+
+CUSD="config/config_roster_sh.dox"
+(
+    echo "#"
+    echo "# Roster of shell scripts $USEDOX"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "INPUT+=\\"
+    # Have ./*.sh listed _LAST_ due to Doxygen bug that points
+    # reference to them off to last `basename X` in list.
+    # Unfortunately, this bug also produces blank documentation,
+    # but at least the annotations are present and point to the
+    # right page. The bug has something to do with multiple files
+    # named 'build.sh' et al and having one of these in the top-level
+    # directory.  It wants more path name clarification, but does
+    # not seem to like even absolute path names.  The other scripts
+    # in the top-level directory are properly parsed.
+    #
+    # Notice that 'jvm/*.sh' have the relative path prefix './' attached
+    # to the front of the @@file directive.  This is to avoid an
+    # interesting sensitivity in Doxygen that got confused between
+    # 'jvm/filename.sh' and 'libjvm/filename.sh' and failed to produce
+    # the "File List" entry for the 'jvm/*.sh' files in question,
+    # namely its build scripts.  By marking them './jvm/build.sh' et al,
+    # this behavior went away.  This same comment may be found in each
+    # of those scripts.
+    #
+    # Even with them listed last, the '@ f i l e' directive still
+    # must have an absolute path name for the documentation to
+    # be properly parsed.
+    #
+    for f in `ls -1 */build.sh */clean.sh */common.sh; \
+              ls -1 jni/src/*/*/*/build.sh; \
+              ls -1 jni/src/*/*/*/clean.sh; \
+              ls -1 jni/src/*/*/*/common.sh; \
+              ls -1 $PGMDIR/[ILR]*; \
+              ls -1 $PGMDIR/*.sh`
+    do
+        echo "    $f \\"
+    done
+    echo ""
+    echo "# EOF"
+
+) > $CUSD
+
+chmod -w $CUSD
+
+CBSD="config/config_build_steps.sh"
+(
+    echo "#"
+    echo "# Code build steps configured by user $USEBLDCLN"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "CONFIG_RELEASE_LEVEL=\"$RELEASE_LEVEL\""
+    echo "export CONFIG_RELEASE_LEVEL"
+    echo "CONFIG_BUILD_ALLCODE=$BUILD_ALLCODE"
+    echo "CONFIG_BUILD_JVM=$BUILD_JVM"
+    echo "CONFIG_BUILD_LIB=$BUILD_LIB"
+    echo "CONFIG_BUILD_MAIN=$BUILD_MAIN"
+    echo "CONFIG_BUILD_TEST=$BUILD_TEST"
+    echo "CONFIG_BUILD_JNI=$BUILD_JNI"
+    echo "CONFIG_BUILD_DOX=$BUILD_DOX"
+ echo "CONFIG_BUILD_HTML_ADJUST_NETSCAPE47X=$BUILD_HTML_ADJ_NETSCAPE47X"
+    echo ""
+    echo "# EOF"
+
+) > $CBSD
+
+chmod -w $CBSD
+
+CDSD="config/config_dox_setup.dox"
+(
+    echo "#"
+    echo "# documentation build steps configured by user $USEDOX"
+    echo "#"
+    echo "# Auto-generated by $PGMNAME"
+    echo "# on $THISDATE:"
+    echo "# DO NOT MODIFY!"
+    echo "#"
+    echo "PROJECT_NAME=\"$PROGRAM_NAME: $PROGRAM_DESCRIPTION\""
+    echo "PROJECT_NUMBER=\"$RELEASE_LEVEL\""
+    echo "GENERATE_HTML=$BUILD_HTML"
+    echo "GENERATE_LATEX=$BUILD_LATEX"
+    echo "GENERATE_RTF=$BUILD_RTF"
+    echo "GENERATE_MAN=$BUILD_MAN"
+    echo "GENERATE_XML=$BUILD_XML"
+    echo ""
+    echo "# EOF"
+
+) > $CDSD
+
+chmod -w $CDSD
+
+#############################
+#
+# END set up 'config' directory.
+#
+
+###################################################################
+#
+# Run phase 4: Extract startup classes for system bootstrap
+#
+if test 1 -eq $dosetupboot
+then
+
+    ###
+    echo "$PGMNAME:  Setting up boot class library class area..."
+
+    rm -rf bootclasspath
+    if test -d bootclasspath
+    then
+    echo "$PGMNAME:  Could not remove directory '$PGMDIR/bootclasspath'"
+        exit 16
+    fi
+
+    mkdir bootclasspath
+    if test ! -d bootclasspath
+    then
+       echo "$PGMNAME:  Cannot create '$PGMDIR/bootclasspath' directory"
+        exit 17
+    fi
+
+    echo ""
+    echo "$PGMNAME:  Extracting classes for $PGMDIR/bootclasspath"
+    ###
+
+    # Normally ('true') just extract those that are always referenced
+    # at startup, but if desired ('false'), extract a whole list of
+    # useful and interesting classes, especially those that are
+    # used during JVM initialization.
+    if test 0 -eq $biglib
+    then
+        JAVA_LANG_CLASS_LIST="Object Class String Thread"
+        JAVA_LANG_REF_CLASS_LIST=""
+        JAVA_LANG_REFLECT_CLASS_LIST=""
+        JAVA_UTIL_JAR_CLASS_LIST=""
+        JAVA_UTIL_ZIP_CLASS_LIST=""
+        JAVA_IO_CLASS_LIST=""
+    else
+        JAVA_LANG_CLASS_LIST="Object Class String Thread \
+\
+        ThreadGroup Void Runtime System \
+\
+        SecurityManager ClassLoader \
+\
+        Throwable StackTraceElement \
+\
+        Exception \
+        ClassNotFoundException \
+        CloneNotSupportedException \
+\
+        RuntimeException \
+        ArithmeticException \
+        ArrayIndexOutOfBoundsException \
+        ArrayNegativeSizeException \
+        ArrayStoreSizeException \
+        IllegalArgumentException \
+        IllegalMonitorStateException \
+        IllegalThreadStateException \
+        InterruptedException \
+        IndexOutOfBoundsException \
+        IndexOutOfBoundsException \
+        NullPointerException \
+        SecurityException \
+\
+        Error \
+        ClassFormatError \
+        ClassCircularityError \
+        ExceptionInitializationError \
+        IllegalAccessError \
+        IncompatibleClassChangeError \
+        InstantiationError \
+        InternalError \
+        LinkageError \
+        NoClassDefFoundError \
+        NoSuchFieldError \
+        NoSuchMethodError \
+        OutOfMemoryError \
+        StackOverflowError \
+        UnknownError \
+        UnsatisfiedLinkError \
+        UnsupportedClassVersionError \
+        VerifyError \
+        VirtualMachineError"
+
+        JAVA_LANG_REF_CLASS_LIST="Finalizer"
+
+        JAVA_LANG_REFLECT_CLASS_LIST="Array Constructor Method Field"
+
+        JAVA_UTIL_JAR_CLASS_LIST="JarFile JarEntry Manifest"
+
+        JAVA_UTIL_ZIP_CLASS_LIST="ZipFile ZipEntry"
+
+        JAVA_IO_CLASS_LIST="InputStream IOException \
+        FileNotFoundException \
+\
+        OutputStream FilterOutputStream PrintStream \
+\
+        Serializable"
+    fi
+
+    cd bootclasspath
+    rc=0
+    if test -n "$JAVA_LANG_CLASS_LIST"
+    then
+        for class in $JAVA_LANG_CLASS_LIST
+        do
+            echo "java.lang.$class"
+            $JAVA_HOME/bin/jar xf $CONFIG_RTJARFILE \
+                                  java/lang/$class.class
+
+            if test 0 -ne $rc
+            then
+                rc=1
+            fi
+        done
+    fi
+    if test -n "$JAVA_LANG_REFCLASS_LIST"
+    then
+        for class in $JAVA_LANG_REF_CLASS_LIST
+        do
+            echo "java.lang.ref.$class"
+            $JAVA_HOME/bin/jar xf $CONFIG_RTJARFILE \
+                                  java/lang/ref/$class.class
+
+            if test 0 -ne $rc
+            then
+                rc=1
+            fi
+        done
+    fi
+    if test -n "$JAVA_LANG_REFLECT_CLASS_LIST"
+    then
+        for class in $JAVA_LANG_REFLECT_CLASS_LIST
+        do
+            echo "java.lang.reflect.$class"
+            $JAVA_HOME/bin/jar xf $CONFIG_RTJARFILE \
+                                  java/lang/reflect/$class.class
+
+            if test 0 -ne $rc
+            then
+                rc=1
+            fi
+        done
+    fi
+    if test -n "$JAVA_UTIL_JAR_CLASS_LIST"
+    then
+        for class in $JAVA_UTIL_JAR_CLASS_LIST
+        do
+            echo "java.util.jar.$class"
+            $JAVA_HOME/bin/jar xf $CONFIG_RTJARFILE \
+                                  java/util/jar/$class.class
+    
+        if test 0 -ne $rc
+            then
+                rc=1
+            fi
+        done
+    fi
+    if test -n "$JAVA_UTIL_ZIP_CLASS_LIST"
+    then
+        for class in $JAVA_UTIL_ZIP_CLASS_LIST
+        do
+            echo "java.util.zip.$class"
+                $JAVA_HOME/bin/jar xf $CONFIG_RTJARFILE \
+                                   java/util/zip/$class.class
+
+            if test 0 -ne $rc
+            then
+                rc=1
+            fi
+        done
+    fi
+    if test -n "$JAVA_IO_CLASS_LIST"
+    then
+        for class in $JAVA_IO_CLASS_LIST
+        do
+            echo "java.io.$class"
+            $JAVA_HOME/bin/jar xf $CONFIG_RTJARFILE \
+                                   java/io/$class.class
+
+            if test 0 -ne $rc
+            then
+                rc=1
+            fi
+        done
+    fi
+    if test 0 -ne $rc
+    then
+        echo "$PGMNAME:  Could not extract all startup library classes"
+        exit 18
+    fi
+
+    cd ..
+
+fi
+
+#############################
+#
+# END set up 'bootclasspath' directory.  Now report config results:
+#
+(
+    BLDS="build.sh ... in selected locations"
+    CLNS="clean.sh ... in selected locations"
+    CMNS="common.sh ... in selected locations"
+
+    echo ""
+
+    # Change to 'if true' if auto-generated file result printout desired
+    if false
+    then
+        echo "Auto-generated compile header definitions:"
+        echo ""
+        echo "---"
+        cat $CFGH
+        echo "---"
+        echo ""
+        echo "Auto-generated compiler invocation options:"
+        echo "    "
+        echo "--- GCC options always required:"
+        cat $COAG
+        echo "--- GCC options usually required:"
+        cat $COUG
+        echo "--- GCC linker options always required:"
+        cat $LOAG
+        echo "--- Source files:"
+        cat $CRCD
+        echo "--- Header files"
+        cat $CRHD
+        echo "--- JNI sample C source files:"
+        cat $CJCD
+        echo "--- JNI sample C header files:"
+        cat $CJHD
+        echo "--- JNI sample Java source files:"
+        cat $CJJD
+        echo "--- Test Java source files:"
+        cat $CTJD
+        echo "--- utility shell scripts"
+        cat $CUSD
+        echo "--- code build steps"
+        cat $CBSD
+        echo "--- documentation build steps"
+        cat $CDSD
+        echo "--- project build steps"
+    else
+        echo "$PGMNAME:  Compile configuration:         $CFGH"
+        echo "$PGMNAME:  GCC options always used:       $COAG"
+        echo "$PGMNAME:  GCC options usually used:      $COUG"
+        echo "$PGMNAME:  GCC linker opts (always):      $LOAG"
+        echo "$PGMNAME:  Source files:                  $CRCD"
+        echo "$PGMNAME:  Header files:                  $CRHD"
+        echo "$PGMNAME:  Sample JNI C source files:     $CJCD"
+        echo "$PGMNAME:  Sample JNI C header files:     $CJHD"
+        echo "$PGMNAME:  Sample JNI Java source files:  $CJJD"
+        echo "$PGMNAME:  Test Java source files:        $CTJD"
+        echo "$PGMNAME:  Utility shell scripts:         $CUSD"
+        echo "$PGMNAME:  Code build steps:              $CBSD"
+        echo "$PGMNAME:  Documentation build steps:     $CDSD"
+    fi
+
+    echo "$PGMNAME:  Build scripts:                 $BLDS"
+    echo "$PGMNAME:  Clean build scripts:           $CLNS"
+    echo "$PGMNAME:  Common build scripts:          $CMNS"
+    echo ""
+) | more
+
+
+echo ""
+$echon "$PGMNAME: Starting to build... $echoc"
+sleep 3
+echo ""
+echo ""
+
+###################################################################
+#
+# Run phase 5:  Build binary from source code
+#
+echo  ""
+echo  "$PGMNAME:  Building configured components"
+echo ""
+echo "$PGMNAME:  Cleaning out entire tree of anything left over"
+echo ""
+./clean.sh all
+rc=$?
+
+
+case $buildnow in
+    y|ye|yes|Y|YE|YES)
+        echo ""
+        echo "$PGMNAME:  Building configured components"
+        echo ""
+        ./build.sh cfg
+        rc=$?
+        ;;
+    *)  ;;
+esac
+
+###################################################################
+#
+# Done.  Return with exit code from build script.
+#
+echo ""
+echo "$PGMNAME:  Return from build with exit code $rc"
+echo ""
+
+exit $rc
+#
+# EOF

Propchange: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/config.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/dist-bin.sh
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/dist-bin.sh?rev=307257&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/dist-bin.sh (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/dist-bin.sh Fri Oct  7 21:27:56 2005
@@ -0,0 +1,252 @@
+#!/bin/sh
+#
+#!
+# @file ./dist-bin.sh
+#
+# @brief Distribute Boot JVM binary package, including documentation.
+#
+# Make @e sure to have performed the final build by running
+# @link ./clean.sh clean.sh all@endlink followed by
+# @link ./build.sh build.sh all@endlink.  This will guarantee
+# that everything compiles clean and may be installed and
+# run on all platforms of this CPU type.
+#
+# Use @link ./dist-src.sh dist-src.sh@endlink to distribute
+# the source package.
+#
+# Use @link ./dist-doc.sh dist-doc.sh@endlink to distribute
+# the documentation package.
+#
+# @see @link ./common.sh ./common.sh@endlink
+#
+# @attention  Make @e sure that all Eclipse project files are in
+#             the "open" state when creating a distribution.
+#             This will ensure immediate access to them by
+#             Eclipse users without having to change anything.
+#
+# @todo This script should probably support each and every CPU platform
+#       that implements this code instad of having just a single
+#       output location for each file.  However, that also involves
+#       changes to @link ./build.sh build.sh@endlink and
+#       @link ./clean.sh clean.sh@endlink and
+#       @link ./common.sh common.sh@endlink, as well as
+#       @link ./config.sh config.sh@endlink.  This is left as an
+#       exercise for the project team.  For an example of such a
+#       multi-host script, consider that the original development was
+#       done on a Solaris platform.  Such distribution should be built
+#       using @link ./clean.sh ./clean.sh all@endlink followed by
+#       @link ./build.sh ./build.sh all@endlink and should contain
+#       all formats of documentation.  If no CPU-specific directory
+#       level were implemented, result should look like the current
+#       distribution:
+#
+# <ul>
+#
+#       <li>jvm/bin/bootjvm</li>
+#       <li>libjvm/lib/libjvm.a</li>
+#       <li>main/bin/bootjvm</li>
+#       <li>test/bin/HelloWorld.class</li>
+#       <li>test/bin/harmony/bootjvm/test/MainArgs.class</li>
+#       <li>test/bin/harmony/bootjvm/test/PkgHelloWorld.class</li>
+#       <li>doc/html/...</li>
+#       <li>doc/latex/...</li>
+#       <li>doc/rtf/...</li>
+#       <li>doc/man/man3/...</li>
+#       <li>doc/xml/...</li>
+# </ul>
+#
+# A CPU-specific directory would use the @b CONFIG_@$OSNAME@$WORDWIDTH
+# configuration variable to change the target name to,
+#
+# <ul>
+#       <li>jvm/bin/@${CONFIG_@$OSNAME@$WORDWIDTH}/bootjvm</li>
+# </ul>
+#
+# Namely,
+#
+# <ul>
+#       <li>jvm/bin/solaris32/bootjvm</li>
+#       <li>jvm/bin/solaris64/bootjvm</li>
+#       <li>jvm/bin/linux32/bootjvm</li>
+#       <li>jvm/bin/linux64/bootjvm</li>
+#       <li>jvm/bin/windows32/bootjvm</li>
+#       <li>jvm/bin/windows64/bootjvm</li>
+#       <li>jvm/bin/linux64/bootjvm</li>
+# </ul>
+#
+# and so forth for the other deliverables.
+#
+#
+# @todo A Windows .BAT version of this script needs to be written
+#
+#
+# @section Control
+#
+# \$URL: https://svn.apache.org/path/name/dist-bin.sh $ \$Id: dist-bin.sh 0 09/28/2005 dlydick $
+#
+# Copyright 2005 The Apache Software Foundation
+# or its licensors, as applicable.
+#
+# Licensed under the Apache License, Version 2.0 ("the License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied.
+#
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# @version \$LastChangedRevision: 0 $
+#
+# @date \$LastChangedDate: 09/28/2005 $
+#
+# @author \$LastChangedBy: dlydick $
+#         Original code contributed by Daniel Lydick on 09/28/2005.
+#
+# @section Reference
+#
+#/ /* 
+# (Use  #! and #/ with dox_filter.sh to fool Doxygen into
+# parsing this non-source text file for the documentation set.
+# Use the above open comment to force termination of parsing
+# since it is not a Doxygen-style 'C' comment.)
+#
+#
+###################################################################
+#
+# Script setup.
+#
+. echotest.sh
+
+. common.sh
+
+MSG80="This script must NOT be interrupted.  Last chance to stop it..."
+$echon "$PGMNAME:  $MSG80" $echoc
+sleep 5
+echo ""
+echo ""
+
+# Suppress attempts to interrupt
+trap "" 1 2 3 15
+
+###################################################################
+#
+# Clean up everything and rebuild it.
+#
+./clean.sh all
+
+DistPrep
+
+DistDocPrep
+
+DistTargetBuild all
+
+DistConfigPrep
+
+echo ""
+echo "$PGMNAME: Setting target directory permissions"
+umask 022
+chmod 0755 `find . -type d -print`
+
+# Use same target as source distribution for original docs,
+# that is, they will _not_ be changed.
+if test -d doc.ORIG
+then
+    chmod -R +w doc.ORIG
+    rm -rf doc.ORIG
+fi
+
+./doxunpatch.sh
+
+mv doc doc.ORIG
+
+TARGET_HOME="harmony/bootJVM-$CONFIG_RELEASE_LEVEL"
+cd ../..
+mv harmony/bootJVM $TARGET_HOME
+
+TARGET_FILELIST="$TARGET_HOME/jvm/bin/bootjvm \
+                 $TARGET_HOME/libjvm/lib/libjvm.a \
+                 $TARGET_HOME/main/bin/bootjvm \
+                 $TARGET_HOME/jni/src/harmony/generic/0.0/bin/bootjvm"
+
+TARGET_DIRLIST="$TARGET_HOME/test/bin \
+                $TARGET_HOME/doc.ORIG"
+
+echo ""
+echo "$PGMNAME: Setting target file permissions"
+chmod 0644 $TARGET_FILELIST
+
+TARGET_DIRFILELIST="`find $TARGET_HOME/test/bin -print`; \
+                    `find $TARGET_HOME/doc.ORIG -print`"
+
+# Time stamp all files together
+TMPTIMESTAMPFILE=${TMPDIR:-/tmp}/tmp.$PGMNAME.$$
+rm -f $TMPTIMESTAMPFILE
+touch TMPTIMESTAMPFILE
+for f in $TARGET_FILELIST $TARGET_DIRFILELIST
+do
+    chmod +w $f
+    touch -r TMPTIMESTAMPFILE $f
+    chmod -w $f
+done
+rm -f $TMPTIMESTAMPFILE
+
+echo ""
+echo "$PGMNAME: Creating distribution file '../../$DISTBINTAR'"
+
+rm -f $DISTBINTAR
+tar cf $DISTBINTAR $TARGET_FILELIST $TARGET_DIRLIST
+mv $TARGET_HOME harmony/bootJVM
+
+if test ! -r $DISTBINTAR
+then
+    echo ""
+    echo "$PGMNAME: Directory `cd ../..; pwd` is not writable."
+    echo "$PGMNAME: Please make it writable and try again."
+    exit 4
+fi
+
+echo ""
+echo \
+   "$PGMNAME: Compressing distribution file into '../../$DISTBINTAR.gz'"
+rm -f $DISTBINTAR.gz
+gzip $DISTBINTAR
+if test ! -r $DISTBINTAR.gz
+then
+    echo ""
+    echo "$PGMNAME: Cannot compress into '$DISTBINTAR.gz'"
+    exit 5
+fi
+
+chmod 0444 $DISTBINTAR.gz
+cd harmony/bootJVM
+
+chmod -R +w doc.ORIG
+mv doc.ORIG doc
+
+DistConfigUnPrep
+
+DistDocUnPrep
+
+DistUnPrep
+
+echo ""
+echo "$PGMNAME: Binary distribution tar file created:"
+echo ""
+ls -l ../../$DISTBINTAR.gz
+echo ""
+
+###################################################################
+#
+# Done.
+#
+echo ""
+echo "$PGMNAME: Binary distribution complete"
+
+#
+# EOF

Propchange: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/dist-bin.sh
------------------------------------------------------------------------------
    svn:executable = *