[llvm-commits] [llvm-gcc-4.2] r43913 [74/80] - in /llvm-gcc-4.2/trunk: boehm-gc/ boehm-gc/Mac_files/ boehm-gc/cord/ boehm-gc/doc/ boehm-gc/include/ boehm-gc/include/private/ boehm-gc/tests/ libffi/ libffi/include/ libffi/src/ libffi/src/alpha/ libffi/src/arm/ libffi/src/cris/ libffi/src/frv/ libffi/src/ia64/ libffi/src/m32r/ libffi/src/m68k/ libffi/src/mips/ libffi/src/pa/ libffi/src/powerpc/ libffi/src/s390/ libffi/src/sh/ libffi/src/sh64/ libffi/src/sparc/ libffi/src/x86/ libffi/testsuite/ libffi/testsuite/config/ li...

Bill Wendling isanbard at gmail.com
Thu Nov 8 14:57:11 PST 2007


Added: llvm-gcc-4.2/trunk/libjava/libltdl/ltmain.sh
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/libltdl/ltmain.sh?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/libltdl/ltmain.sh (added)
+++ llvm-gcc-4.2/trunk/libjava/libltdl/ltmain.sh Thu Nov  8 16:56:19 2007
@@ -0,0 +1,6496 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.16
+TIMESTAMP=" (1.1220.2.235 2005/04/25 18:13:26)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+  setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|tr A '\301'` in
+ A) # EBCDIC based system
+  SP2NL="tr '\100' '\n'"
+  NL2SP="tr '\r\n' '\100\100'"
+  ;;
+ *) # Assume ASCII based system
+  SP2NL="tr '\040' '\012'"
+  NL2SP="tr '\015\012' '\040\040'"
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+quote_scanset='[[~#^*{};<>?'"'"' 	]'
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+	sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+      if test "X$win32_nmres" = "Ximport" ; then
+        win32_libid_type="x86 archive import"
+      else
+        win32_libid_type="x86 archive static"
+      fi
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	    # Double-quote args containing other shell metacharacters.
+	    case $arg in
+	      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+
+    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+      exit $EXIT_FAILURE
+    fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xdir="$my_gentop/$my_xlib"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$my_xdir"; then
+	exit $status
+      fi
+      case $host in
+      *-darwin*)
+	$show "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	if test -z "$run"; then
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+	  if test -n "$darwin_arches"; then 
+	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      lipo -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    ${rm}r unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd "$darwin_orig_dir"
+ 	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	fi # $run
+      ;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+        ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+    func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $?
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $?
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $?
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case "$arg_mode" in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	* )
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, and some SunOS ksh mistreat backslash-escaping
+      # in scan sets (worked around with variable expansion),
+      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
+      # at all, so we specify them separately.
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+    case $qlibobj in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	qlibobj="\"$qlibobj\"" ;;
+    esac
+    if test "X$libobj" != "X$qlibobj"; then
+	$echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+	exit $EXIT_FAILURE
+    fi
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo "$srcfile" > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+    case $qsrcfile in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      qsrcfile="\"$qsrcfile\"" ;;
+    esac
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	status=$?
+	if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat $save_arg`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  libobjs="$libobjs $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+        darwin_framework)
+	  compiler_flags="$compiler_flags $arg"
+	  prev=
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework)
+        prev=darwin_framework
+        compiler_flags="$compiler_flags $arg"
+        continue
+        ;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs -framework System"
+	    continue
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      -model)
+	compile_command="$compile_command $arg"
+	compiler_flags="$compiler_flags $arg"
+	finalize_command="$finalize_command $arg"
+	prev=xcompiler
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m* pass through architecture-specific compiler args for GCC
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*)
+
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        if test "$with_gcc" = "yes" ; then
+          compiler_flags="$compiler_flags $arg"
+        fi
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    libobjs="$libobjs $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    compiler_flags="$compiler_flags $deplib"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+	        ;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    valid_a_lib=no
+	    case $deplibs_check_method in
+	      match_pattern*)
+		set dummy $deplibs_check_method
+	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+		if eval $echo \"$deplib\" 2>/dev/null \
+		    | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		  valid_a_lib=yes
+		fi
+		;;
+	      pass_all)
+		valid_a_lib=yes
+		;;
+            esac
+	    if test "$valid_a_lib" != yes; then
+	      $echo
+	      $echo "*** Warning: Trying to link with static lib archive $deplib."
+	      $echo "*** I have the capability to make that library automatically link in when"
+	      $echo "*** you link to this library.  But I can only do this if you have a"
+	      $echo "*** shared version of the library, which you do not appear to have"
+	      $echo "*** because the file extensions .$libext of this argument makes me believe"
+	      $echo "*** that it is just a static archive that I should not used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  fi
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath " in
+	      *" $dir "*) ;;
+	      *" $absdir "*) ;;
+	      *) temp_rpath="$temp_rpath $dir" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
+	    $echo
+	    if test "$linkmode" = prog; then
+	      $echo "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $echo "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+		      $echo "** Warning, lib $linklib is a module, not a shared library"
+		      if test -z "$old_library" ; then
+		        $echo
+		        $echo "** And there doesn't seem to be a static archive available"
+		        $echo "** The link will probably fail, sorry"
+		      else
+		        add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case "$libdir" in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+	        add="$inst_prefix_dir$libdir/$linklib"
+	      else
+	        add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case "$libdir" in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $echo
+	    $echo "*** Warning: This system can not link to static lib archive $lib."
+	    $echo "*** I have the capability to make that library automatically link in when"
+	    $echo "*** you link to this library.  But I can only do this if you have a"
+	    $echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $echo "*** But as you try to build a module library, libtool will still create "
+	      $echo "*** a static module, that should work as long as the dlopening application"
+	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$echo
+		$echo "*** However, this would only work if libtool was able to extract symbol"
+		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$echo "*** not find such a program.  So, this module is probably useless."
+		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor - 1`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$echo "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+	         then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+	deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+	dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+ 	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $LTCC -o conftest conftest.c $deplibs
+	  if test "$?" -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+	        fi
+		if test -n "$i" ; then
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $echo
+		    $echo "*** Warning: dynamic linker does not accept needed library $i."
+		    $echo "*** I have the capability to make that library automatically link in when"
+		    $echo "*** you link to this library.  But I can only do this if you have a"
+		    $echo "*** shared version of the library, which I believe you do not have"
+		    $echo "*** because a test_compile did reveal that the linker did not use it for"
+		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		$LTCC -o conftest conftest.c $i
+		# Did it work?
+		if test "$?" -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval \\$echo \"$libname_spec\"`
+		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		    set dummy $deplib_matches
+		    deplib_match=$2
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $echo
+		      $echo "*** Warning: dynamic linker does not accept needed library $i."
+		      $echo "*** I have the capability to make that library automatically link in when"
+		      $echo "*** you link to this library.  But I can only do this if you have a"
+		      $echo "*** shared version of the library, which you do not appear to have"
+		      $echo "*** because a test_compile did reveal that the linker did not use this one"
+		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $echo
+		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $echo "***  make it link in!  You will probably need to install it or some"
+		  $echo "*** library that it depends on before this library will be fully"
+		  $echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval $echo \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 10q \
+		        | $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	    -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	    done
+	  fi
+	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
+	    | grep . >/dev/null; then
+	    $echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $echo
+	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $echo "*** a static module, that should work as long as the dlopening"
+	    $echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $echo
+	      $echo "*** However, this would only work if libtool was able to extract symbol"
+	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $echo "*** not find such a program.  So, this module is probably useless."
+	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $echo "*** The inter-library dependencies that have been dropped here will be"
+	    $echo "*** automatically added whenever a program is linked with this library"
+	    $echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $echo
+	      $echo "*** Since this library must not contain undefined symbols,"
+	      $echo "*** because either the platform does not support them or"
+	      $echo "*** it was explicitly requested with -no-undefined,"
+	      $echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "using reloadable object file for export list..."
+	        skipped_export=:
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+		case " $convenience " in
+		*" $test_deplib "*) ;;
+		*)
+			tmp_deplibs="$tmp_deplibs $test_deplib"
+			;;
+		esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    libobjs="$libobjs $func_extract_archives_result"
+	  fi
+	fi
+	
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval test_cmds=\"$archive_expsym_cmds\"
+	  cmds=$archive_expsym_cmds
+	else
+	  eval test_cmds=\"$archive_cmds\"
+	  cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$output_la-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*"` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$objlist $obj"
+	    else
+	      # The command $test_cmds is almost too long, add a
+	      # command to the queue.
+	      if test "$k" -eq 1 ; then
+		# The first file doesn't have a previous command to add.
+		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+	      else
+		# All subsequent reloadable object files will link in
+		# the last one created.
+		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+	      fi
+	      last_robj=$output_objdir/$output_la-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$output_la-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    fi
+	  done
+	  # Handle the remaining objects by creating one last
+	  # reloadable object file.  All subsequent reloadable object
+	  # files will link in the last one created.
+	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+	  if ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadable object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+	  done
+
+	  $echo "creating a temporary reloadable object file: $output"
+
+	  # Loop through the commands generated above and execute them.
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $concat_cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    cmds=$archive_expsym_cmds
+	  else
+	    cmds=$archive_cmds
+	    fi
+	  fi
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $run eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$outputname.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+	    case $host in
+	    *cygwin* | *mingw* )
+	  $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs */
+struct {
+"
+	      ;;
+	    * )
+	  $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+	      ;;
+	    esac
+
+
+	  $echo >> "$output_objdir/$dlsyms" "\
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    cwrappersource=`$echo ${objdir}/lt-${outputname}.c`
+	    cwrapper=`$echo ${output}.exe`
+	    $rm $cwrappersource $cwrapper
+	    trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  newargz[0] = "$SHELL";
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+  newargz[1] = fnqualify(argv[0]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha (name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+  size_t size;
+  char *p;
+  char tmp[LT_PATHMAX + 1];
+
+  assert(path != NULL);
+
+  /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha (path[0]) && path[1] == ':')
+    return xstrdup (path);
+#endif
+  if (IS_DIR_SEPARATOR (path[0]))
+    return xstrdup (path);
+
+  /* prepend the current directory */
+  /* doesn't handle '~' */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+  p = XMALLOC(char, size);
+  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+  return p;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+	  # we should really use a build-platform specific compiler
+	  # here, but OTOH, the wrappers (shell script and this C one)
+	  # are only useful if you want to execute the "real" binary.
+	  # Since the "real" binary is built for $host, then this
+	  # wrapper might as well be built for $host, too.
+	  $run $LTCC -s -o $cwrapper $cwrappersource
+	  ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	generated="$generated $gentop"
+
+	func_extract_archives $gentop $addlibs
+	oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  $echo "copying selected object files to avoid basename conflicts..."
+
+	  if test -z "$gentop"; then
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    status=$?
+	    if test "$status" -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	  fi
+
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		counter=`expr $counter + 1`
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      $run ln "$obj" "$gentop/$newobj" ||
+	      $run cp "$obj" "$gentop/$newobj"
+	      oldobjs="$oldobjs $gentop/$newobj"
+	      ;;
+	    *) oldobjs="$oldobjs $obj" ;;
+	    esac
+	  done
+	fi
+
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*"` &&
+	       test "$len" -le "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+	        RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      save_umask=`umask`
+	      umask 0077
+	      if $mkdir "$tmpdir"; then
+	        umask $save_umask
+	      else
+	        umask $save_umask
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "----------------------------------------------------------------------"
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "----------------------------------------------------------------------"
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test "$mode" = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" \
+	     && test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" \
+	     && test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool at gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:

Added: llvm-gcc-4.2/trunk/libjava/libltdl/missing
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/libltdl/missing?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/libltdl/missing (added)
+++ llvm-gcc-4.2/trunk/libjava/libltdl/missing Thu Nov  8 16:56:19 2007
@@ -0,0 +1,353 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2004-09-07.08
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004
+#   Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case "$1" in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake at gnu.org>."
+    exit 0
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit 0
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case "$f" in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f y.tab.h ]; then
+	echo >y.tab.h
+    fi
+    if [ ! -f y.tab.c ]; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f lex.yy.c ]; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+    fi
+    if [ -f "$file" ]; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  tar)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case "$firstarg" in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case "$firstarg" in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:

Propchange: llvm-gcc-4.2/trunk/libjava/libltdl/missing

------------------------------------------------------------------------------
    svn:executable = *

Added: llvm-gcc-4.2/trunk/libjava/libtool-version
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/libtool-version?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/libtool-version (added)
+++ llvm-gcc-4.2/trunk/libjava/libtool-version Thu Nov  8 16:56:19 2007
@@ -0,0 +1,6 @@
+# This file is used to maintain libtool version info for libgcj.  See
+# the libtool manual to understand the meaning of the fields.  This is
+# a separate file so that version updates don't involve re-running
+# automake.
+# CURRENT:REVISION:AGE
+8:0:0

Added: llvm-gcc-4.2/trunk/libjava/link.cc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/link.cc?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/link.cc (added)
+++ llvm-gcc-4.2/trunk/libjava/link.cc Thu Nov  8 16:56:19 2007
@@ -0,0 +1,2004 @@
+// link.cc - Code for linking and resolving classes and pool entries.
+
+/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+/* Author: Kresten Krab Thorup <krab at gnu.org>  */
+
+#include <config.h>
+#include <platform.h>
+
+#include <stdio.h>
+
+#ifdef USE_LIBFFI
+#include <ffi.h>
+#endif
+
+#include <java-interp.h>
+
+// Set GC_DEBUG before including gc.h!
+#ifdef LIBGCJ_GC_DEBUG
+# define GC_DEBUG
+#endif
+#include <gc.h>
+
+#include <jvm.h>
+#include <gcj/cni.h>
+#include <string.h>
+#include <limits.h>
+#include <java-cpool.h>
+#include <execution.h>
+#include <java/lang/Class.h>
+#include <java/lang/String.h>
+#include <java/lang/StringBuffer.h>
+#include <java/lang/Thread.h>
+#include <java/lang/InternalError.h>
+#include <java/lang/VirtualMachineError.h>
+#include <java/lang/VerifyError.h>
+#include <java/lang/NoSuchFieldError.h>
+#include <java/lang/NoSuchMethodError.h>
+#include <java/lang/ClassFormatError.h>
+#include <java/lang/IllegalAccessError.h>
+#include <java/lang/InternalError.h>
+#include <java/lang/AbstractMethodError.h>
+#include <java/lang/NoClassDefFoundError.h>
+#include <java/lang/IncompatibleClassChangeError.h>
+#include <java/lang/VerifyError.h>
+#include <java/lang/VMClassLoader.h>
+#include <java/lang/reflect/Modifier.h>
+#include <java/security/CodeSource.h>
+
+using namespace gcj;
+
+template<typename T>
+struct aligner
+{
+  char c;
+  T field;
+};
+
+#define ALIGNOF(TYPE) (offsetof (aligner<TYPE>, field))
+
+// This returns the alignment of a type as it would appear in a
+// structure.  This can be different from the alignment of the type
+// itself.  For instance on x86 double is 8-aligned but struct{double}
+// is 4-aligned.
+int
+_Jv_Linker::get_alignment_from_class (jclass klass)
+{
+  if (klass == JvPrimClass (byte))
+    return ALIGNOF (jbyte);
+  else if (klass == JvPrimClass (short))
+    return ALIGNOF (jshort);
+  else if (klass == JvPrimClass (int)) 
+    return ALIGNOF (jint);
+  else if (klass == JvPrimClass (long))
+    return ALIGNOF (jlong);
+  else if (klass == JvPrimClass (boolean))
+    return ALIGNOF (jboolean);
+  else if (klass == JvPrimClass (char))
+    return ALIGNOF (jchar);
+  else if (klass == JvPrimClass (float))
+    return ALIGNOF (jfloat);
+  else if (klass == JvPrimClass (double))
+    return ALIGNOF (jdouble);
+  else
+    return ALIGNOF (jobject);
+}
+
+void
+_Jv_Linker::resolve_field (_Jv_Field *field, java::lang::ClassLoader *loader)
+{
+  if (! field->isResolved ())
+    {
+      _Jv_Utf8Const *sig = (_Jv_Utf8Const *) field->type;
+      jclass type = _Jv_FindClassFromSignature (sig->chars(), loader);
+      if (type == NULL)
+	throw new java::lang::NoClassDefFoundError(field->name->toString());
+      field->type = type;
+      field->flags &= ~_Jv_FIELD_UNRESOLVED_FLAG;
+    }
+}
+
+// A helper for find_field that knows how to recursively search
+// superclasses and interfaces.
+_Jv_Field *
+_Jv_Linker::find_field_helper (jclass search, _Jv_Utf8Const *name,
+			       _Jv_Utf8Const *type_name, jclass type,
+			       jclass *declarer)
+{
+  while (search)
+    {
+      // From 5.4.3.2.  First search class itself.
+      for (int i = 0; i < search->field_count; ++i)
+	{
+	  _Jv_Field *field = &search->fields[i];
+	  if (! _Jv_equalUtf8Consts (field->name, name))
+	    continue;
+
+          // Checks for the odd situation where we were able to retrieve the
+          // field's class from signature but the resolution of the field itself
+          // failed which means a different class was resolved.
+          if (type != NULL)
+            {
+              try
+                {
+                  resolve_field (field, search->loader);
+                }
+              catch (java::lang::Throwable *exc)
+                {
+                  java::lang::LinkageError *le = new java::lang::LinkageError
+	            (JvNewStringLatin1 
+                      ("field type mismatch with different loaders"));
+
+                  le->initCause(exc);
+
+                  throw le;
+                }
+            }
+
+	  // Note that we compare type names and not types.  This is
+	  // bizarre, but we do it because we want to find a field
+	  // (and terminate the search) if it has the correct
+	  // descriptor -- but then later reject it if the class
+	  // loader check results in different classes.  We can't just
+	  // pass in the descriptor and check that way, because when
+	  // the field is already resolved there is no easy way to
+	  // find its descriptor again.
+	  if ((field->isResolved ()
+               ? _Jv_equalUtf8Classnames (type_name, field->type->name)
+               : _Jv_equalUtf8Classnames (type_name,
+                                          (_Jv_Utf8Const *) field->type)))
+	    {
+	      *declarer = search;
+	      return field;
+	    }
+	}
+
+      // Next search direct interfaces.
+      for (int i = 0; i < search->interface_count; ++i)
+	{
+	  _Jv_Field *result = find_field_helper (search->interfaces[i], name,
+						 type_name, type, declarer);
+	  if (result)
+	    return result;
+	}
+
+      // Now search superclass.
+      search = search->superclass;
+    }
+
+  return NULL;
+}
+
+bool
+_Jv_Linker::has_field_p (jclass search, _Jv_Utf8Const *field_name)
+{
+  for (int i = 0; i < search->field_count; ++i)
+    {
+      _Jv_Field *field = &search->fields[i];
+      if (_Jv_equalUtf8Consts (field->name, field_name))
+	return true;
+    }
+  return false;
+}
+
+// Find a field.
+// KLASS is the class that is requesting the field.
+// OWNER is the class in which the field should be found.
+// FIELD_TYPE_NAME is the type descriptor for the field.
+// Fill FOUND_CLASS with the address of the class in which the field
+// is actually declared.
+// This function does the class loader type checks, and
+// also access checks.  Returns the field, or throws an
+// exception on error.
+_Jv_Field *
+_Jv_Linker::find_field (jclass klass, jclass owner,
+			jclass *found_class,
+			_Jv_Utf8Const *field_name,
+			_Jv_Utf8Const *field_type_name)
+{
+  // FIXME: this allocates a _Jv_Utf8Const each time.  We should make
+  // it cheaper.
+  // Note: This call will resolve the primitive type names ("Z", "B", ...) to
+  // their Java counterparts ("boolean", "byte", ...) if accessed via
+  // field_type->name later.  Using these variants of the type name is in turn
+  // important for the find_field_helper function.  However if the class
+  // resolution failed then we can only use the already given type name.
+  jclass field_type 
+    = _Jv_FindClassFromSignatureNoException (field_type_name->chars(),
+                                             klass->loader);
+
+  _Jv_Field *the_field
+    = find_field_helper (owner, field_name,
+                         (field_type
+                           ? field_type->name :
+                             field_type_name ),
+                           field_type, found_class);
+
+  if (the_field == 0)
+    {
+      java::lang::StringBuffer *sb = new java::lang::StringBuffer();
+      sb->append(JvNewStringLatin1("field "));
+      sb->append(owner->getName());
+      sb->append(JvNewStringLatin1("."));
+      sb->append(_Jv_NewStringUTF(field_name->chars()));
+      sb->append(JvNewStringLatin1(" was not found."));
+      throw new java::lang::NoSuchFieldError (sb->toString());
+    }
+
+  // Accept it when the field's class could not be resolved.
+  if (field_type == NULL)
+    // Silently ignore that we were not able to retrieve the type to make it
+    // possible to run code which does not access this field.
+    return the_field;
+
+  if (_Jv_CheckAccess (klass, *found_class, the_field->flags))
+    {
+      // Note that the field returned by find_field_helper is always
+      // resolved.  There's no point checking class loaders here,
+      // since we already did the work to look up all the types.
+      // FIXME: being lazy here would be nice.
+      if (the_field->type != field_type)
+	throw new java::lang::LinkageError
+	  (JvNewStringLatin1 
+	   ("field type mismatch with different loaders"));
+    }
+  else
+    {
+      java::lang::StringBuffer *sb
+	= new java::lang::StringBuffer ();
+      sb->append(klass->getName());
+      sb->append(JvNewStringLatin1(": "));
+      sb->append((*found_class)->getName());
+      sb->append(JvNewStringLatin1("."));
+      sb->append(_Jv_NewStringUtf8Const (field_name));
+      throw new java::lang::IllegalAccessError(sb->toString());
+    }
+
+  return the_field;
+}
+
+_Jv_word
+_Jv_Linker::resolve_pool_entry (jclass klass, int index, bool lazy)
+{
+  using namespace java::lang::reflect;
+
+  if (GC_base (klass) && klass->constants.data
+      && ! GC_base (klass->constants.data))
+    {
+      jsize count = klass->constants.size;
+      if (count)
+	{
+	  _Jv_word* constants
+	    = (_Jv_word*) _Jv_AllocRawObj (count * sizeof (_Jv_word));
+	  memcpy ((void*)constants,
+		  (void*)klass->constants.data,
+		  count * sizeof (_Jv_word));
+	  klass->constants.data = constants;
+	}
+    }
+
+  _Jv_Constants *pool = &klass->constants;
+
+  if ((pool->tags[index] & JV_CONSTANT_ResolvedFlag) != 0)
+    return pool->data[index];
+
+  switch (pool->tags[index])
+    {
+    case JV_CONSTANT_Class:
+      {
+	_Jv_Utf8Const *name = pool->data[index].utf8;
+
+	jclass found;
+	if (name->first() == '[')
+	  found = _Jv_FindClassFromSignatureNoException (name->chars(),
+		                                         klass->loader);
+        else
+	  found = _Jv_FindClassNoException (name, klass->loader);
+
+        // If the class could not be loaded a phantom class is created. Any
+        // function that deals with such a class but cannot do something useful
+        // with it should just throw a NoClassDefFoundError with the class'
+        // name.
+	if (! found)
+          if (lazy)
+            {
+              found = _Jv_NewClass(name, NULL, NULL);
+              found->state = JV_STATE_PHANTOM;
+              pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
+              pool->data[index].clazz = found;
+              break;
+            }
+          else
+	    throw new java::lang::NoClassDefFoundError (name->toString());
+
+	// Check accessibility, but first strip array types as
+	// _Jv_ClassNameSamePackage can't handle arrays.
+	jclass check;
+	for (check = found;
+	     check && check->isArray();
+	     check = check->getComponentType())
+	  ;
+	if ((found->accflags & Modifier::PUBLIC) == Modifier::PUBLIC
+	    || (_Jv_ClassNameSamePackage (check->name,
+					  klass->name)))
+	  {
+	    pool->data[index].clazz = found;
+	    pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
+	  }
+	else
+	  {
+	    java::lang::StringBuffer *sb = new java::lang::StringBuffer ();
+	    sb->append(klass->getName());
+	    sb->append(JvNewStringLatin1(" can't access class "));
+	    sb->append(found->getName());
+	    throw new java::lang::IllegalAccessError(sb->toString());
+	  }
+      }
+      break;
+
+    case JV_CONSTANT_String:
+      {
+	jstring str;
+	str = _Jv_NewStringUtf8Const (pool->data[index].utf8);
+	pool->data[index].o = str;
+	pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
+      }
+      break;
+
+    case JV_CONSTANT_Fieldref:
+      {
+	_Jv_ushort class_index, name_and_type_index;
+	_Jv_loadIndexes (&pool->data[index],
+			 class_index,
+			 name_and_type_index);
+	jclass owner = (resolve_pool_entry (klass, class_index, true)).clazz;
+
+        // If a phantom class was resolved our field reference is
+        // unusable because of the missing class.
+        if (owner->state == JV_STATE_PHANTOM)
+          throw new java::lang::NoClassDefFoundError(owner->getName());
+
+	if (owner != klass)
+	  _Jv_InitClass (owner);
+
+	_Jv_ushort name_index, type_index;
+	_Jv_loadIndexes (&pool->data[name_and_type_index],
+			 name_index,
+			 type_index);
+
+	_Jv_Utf8Const *field_name = pool->data[name_index].utf8;
+	_Jv_Utf8Const *field_type_name = pool->data[type_index].utf8;
+
+	jclass found_class = 0;
+	_Jv_Field *the_field = find_field (klass, owner, 
+					   &found_class,
+					   field_name,
+					   field_type_name);
+	if (owner != found_class)
+	  _Jv_InitClass (found_class);
+	pool->data[index].field = the_field;
+	pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
+      }
+      break;
+
+    case JV_CONSTANT_Methodref:
+    case JV_CONSTANT_InterfaceMethodref:
+      {
+	_Jv_ushort class_index, name_and_type_index;
+	_Jv_loadIndexes (&pool->data[index],
+			 class_index,
+			 name_and_type_index);
+	jclass owner = (resolve_pool_entry (klass, class_index)).clazz;
+
+	if (owner != klass)
+	  _Jv_InitClass (owner);
+
+	_Jv_ushort name_index, type_index;
+	_Jv_loadIndexes (&pool->data[name_and_type_index],
+			 name_index,
+			 type_index);
+
+	_Jv_Utf8Const *method_name = pool->data[name_index].utf8;
+	_Jv_Utf8Const *method_signature = pool->data[type_index].utf8;
+
+	_Jv_Method *the_method = 0;
+	jclass found_class = 0;
+
+	// We're going to cache a pointer to the _Jv_Method object
+	// when we find it.  So, to ensure this doesn't get moved from
+	// beneath us, we first put all the needed Miranda methods
+	// into the target class.
+	wait_for_state (klass, JV_STATE_LOADED);
+
+	// First search the class itself.
+	the_method = search_method_in_class (owner, klass,
+					     method_name, method_signature);
+
+	if (the_method != 0)
+	  {
+	    found_class = owner;
+	    goto end_of_method_search;
+	  }
+
+	// If we are resolving an interface method, search the
+	// interface's superinterfaces (A superinterface is not an
+	// interface's superclass - a superinterface is implemented by
+	// the interface).
+	if (pool->tags[index] == JV_CONSTANT_InterfaceMethodref)
+	  {
+	    _Jv_ifaces ifaces;
+	    ifaces.count = 0;
+	    ifaces.len = 4;
+	    ifaces.list = (jclass *) _Jv_Malloc (ifaces.len
+						 * sizeof (jclass *));
+
+	    get_interfaces (owner, &ifaces);
+
+	    for (int i = 0; i < ifaces.count; i++)
+	      {
+		jclass cls = ifaces.list[i];
+		the_method = search_method_in_class (cls, klass, method_name, 
+						     method_signature);
+		if (the_method != 0)
+		  {
+		    found_class = cls;
+		    break;
+		  }
+	      }
+
+	    _Jv_Free (ifaces.list);
+
+	    if (the_method != 0)
+	      goto end_of_method_search;
+	  }
+
+	// Finally, search superclasses.
+	the_method = (search_method_in_superclasses 
+		      (owner->getSuperclass (), klass, method_name, 
+		       method_signature, &found_class));
+	
+      end_of_method_search:
+    
+	// FIXME: if (cls->loader != klass->loader), then we
+	// must actually check that the types of arguments
+	// correspond.  That is, for each argument type, and
+	// the return type, doing _Jv_FindClassFromSignature
+	// with either loader should produce the same result,
+	// i.e., exactly the same jclass object. JVMS 5.4.3.3    
+    
+	if (the_method == 0)
+	  {
+	    java::lang::StringBuffer *sb = new java::lang::StringBuffer();
+	    sb->append(JvNewStringLatin1("method "));
+	    sb->append(owner->getName());
+	    sb->append(JvNewStringLatin1("."));
+	    sb->append(_Jv_NewStringUTF(method_name->chars()));
+	    sb->append(JvNewStringLatin1(" with signature "));
+	    sb->append(_Jv_NewStringUTF(method_signature->chars()));
+	    sb->append(JvNewStringLatin1(" was not found."));
+	    throw new java::lang::NoSuchMethodError (sb->toString());
+	  }
+      
+	pool->data[index].rmethod
+	  = klass->engine->resolve_method(the_method,
+					  found_class,
+					  ((the_method->accflags
+					    & Modifier::STATIC) != 0));
+	pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
+      }
+      break;
+    }
+  return pool->data[index];
+}
+
+// This function is used to lazily locate superclasses and
+// superinterfaces.  This must be called with the class lock held.
+void
+_Jv_Linker::resolve_class_ref (jclass klass, jclass *classref)
+{
+  jclass ret = *classref;
+
+  // If superclass looks like a constant pool entry, resolve it now.
+  if (ret && (uaddr) ret < (uaddr) klass->constants.size)
+    {
+      if (klass->state < JV_STATE_LINKED)
+	{
+	  _Jv_Utf8Const *name = klass->constants.data[(uaddr) *classref].utf8;
+	  ret = _Jv_FindClass (name, klass->loader);
+	  if (! ret)
+	    {
+	      throw new java::lang::NoClassDefFoundError (name->toString());
+	    }
+	}
+      else
+	ret = klass->constants.data[(uaddr) classref].clazz;
+      *classref = ret;
+    }
+}
+
+// Find a method declared in the cls that is referenced from klass and
+// perform access checks if CHECK_PERMS is true.
+_Jv_Method *
+_Jv_Linker::search_method_in_class (jclass cls, jclass klass, 
+				    _Jv_Utf8Const *method_name, 
+				    _Jv_Utf8Const *method_signature,
+				    bool check_perms)
+{
+  using namespace java::lang::reflect;
+
+  for (int i = 0;  i < cls->method_count;  i++)
+    {
+      _Jv_Method *method = &cls->methods[i];
+      if (   (!_Jv_equalUtf8Consts (method->name,
+				    method_name))
+	  || (!_Jv_equalUtf8Consts (method->signature,
+				    method_signature)))
+	continue;
+
+      if (!check_perms || _Jv_CheckAccess (klass, cls, method->accflags))
+	return method;
+      else
+	{
+	  java::lang::StringBuffer *sb = new java::lang::StringBuffer();
+	  sb->append(klass->getName());
+	  sb->append(JvNewStringLatin1(": "));
+	  sb->append(cls->getName());
+	  sb->append(JvNewStringLatin1("."));
+	  sb->append(_Jv_NewStringUTF(method_name->chars()));
+	  sb->append(_Jv_NewStringUTF(method_signature->chars()));
+	  throw new java::lang::IllegalAccessError (sb->toString());
+	}
+    }
+  return 0;
+}
+
+// Like search_method_in_class, but work our way up the superclass
+// chain.
+_Jv_Method *
+_Jv_Linker::search_method_in_superclasses (jclass cls, jclass klass, 
+					   _Jv_Utf8Const *method_name, 
+					   _Jv_Utf8Const *method_signature,
+					   jclass *found_class, bool check_perms)
+{
+  _Jv_Method *the_method = NULL;
+
+  for ( ; cls != 0; cls = cls->getSuperclass ())
+    {
+      the_method = search_method_in_class (cls, klass, method_name,
+					   method_signature, check_perms);
+      if (the_method != 0)
+	{
+	  if (found_class)
+	    *found_class = cls;
+	  break;
+	}
+    }
+  
+  return the_method;
+}
+
+#define INITIAL_IOFFSETS_LEN 4
+#define INITIAL_IFACES_LEN 4
+
+static _Jv_IDispatchTable null_idt = {SHRT_MAX, 0, {}};
+
+// Generate tables for constant-time assignment testing and interface
+// method lookup. This implements the technique described by Per Bothner
+// <per at bothner.com> on the java-discuss mailing list on 1999-09-02:
+// http://gcc.gnu.org/ml/java/1999-q3/msg00377.html
+void
+_Jv_Linker::prepare_constant_time_tables (jclass klass)
+{  
+  if (klass->isPrimitive () || klass->isInterface ())
+    return;
+
+  // Short-circuit in case we've been called already.
+  if ((klass->idt != NULL) || klass->depth != 0)
+    return;
+
+  // Calculate the class depth and ancestor table. The depth of a class 
+  // is how many "extends" it is removed from Object. Thus the depth of 
+  // java.lang.Object is 0, but the depth of java.io.FilterOutputStream 
+  // is 2. Depth is defined for all regular and array classes, but not 
+  // interfaces or primitive types.
+   
+  jclass klass0 = klass;
+  jboolean has_interfaces = 0;
+  while (klass0 != &java::lang::Object::class$)
+    {
+      has_interfaces += klass0->interface_count;
+      klass0 = klass0->superclass;
+      klass->depth++;
+    }
+
+  // We do class member testing in constant time by using a small table 
+  // of all the ancestor classes within each class. The first element is 
+  // a pointer to the current class, and the rest are pointers to the 
+  // classes ancestors, ordered from the current class down by decreasing 
+  // depth. We do not include java.lang.Object in the table of ancestors, 
+  // since it is redundant.  Note that the classes pointed to by
+  // 'ancestors' will always be reachable by other paths.
+
+  klass->ancestors = (jclass *) _Jv_AllocBytes (klass->depth
+						* sizeof (jclass));
+  klass0 = klass;
+  for (int index = 0; index < klass->depth; index++)
+    {
+      klass->ancestors[index] = klass0;
+      klass0 = klass0->superclass;
+    }
+
+  if ((klass->accflags & java::lang::reflect::Modifier::ABSTRACT) != 0)
+    return;
+
+  // Optimization: If class implements no interfaces, use a common
+  // predefined interface table.
+  if (!has_interfaces)
+    {
+      klass->idt = &null_idt;
+      return;
+    }
+
+  _Jv_ifaces ifaces;
+  ifaces.count = 0;
+  ifaces.len = INITIAL_IFACES_LEN;
+  ifaces.list = (jclass *) _Jv_Malloc (ifaces.len * sizeof (jclass *));
+
+  int itable_size = get_interfaces (klass, &ifaces);
+
+  if (ifaces.count > 0)
+    {
+      // The classes pointed to by the itable will always be reachable
+      // via other paths.
+      int idt_bytes = sizeof (_Jv_IDispatchTable) + (itable_size 
+						     * sizeof (void *));
+      klass->idt = (_Jv_IDispatchTable *) _Jv_AllocBytes (idt_bytes);
+      klass->idt->itable_length = itable_size;
+
+      jshort *itable_offsets = 
+	(jshort *) _Jv_Malloc (ifaces.count * sizeof (jshort));
+
+      generate_itable (klass, &ifaces, itable_offsets);
+
+      jshort cls_iindex = find_iindex (ifaces.list, itable_offsets,
+				       ifaces.count);
+
+      for (int i = 0; i < ifaces.count; i++)
+	{
+	  ifaces.list[i]->ioffsets[cls_iindex] = itable_offsets[i];
+	}
+
+      klass->idt->iindex = cls_iindex;	    
+
+      _Jv_Free (ifaces.list);
+      _Jv_Free (itable_offsets);
+    }
+  else 
+    {
+      klass->idt->iindex = SHRT_MAX;
+    }
+}
+
+// Return index of item in list, or -1 if item is not present.
+inline jshort
+_Jv_Linker::indexof (void *item, void **list, jshort list_len)
+{
+  for (int i=0; i < list_len; i++)
+    {
+      if (list[i] == item)
+        return i;
+    }
+  return -1;
+}
+
+// Find all unique interfaces directly or indirectly implemented by klass.
+// Returns the size of the interface dispatch table (itable) for klass, which 
+// is the number of unique interfaces plus the total number of methods that 
+// those interfaces declare. May extend ifaces if required.
+jshort
+_Jv_Linker::get_interfaces (jclass klass, _Jv_ifaces *ifaces)
+{
+  jshort result = 0;
+  
+  for (int i = 0; i < klass->interface_count; i++)
+    {
+      jclass iface = klass->interfaces[i];
+
+      /* Make sure interface is linked.  */
+      wait_for_state(iface, JV_STATE_LINKED);
+
+      if (indexof (iface, (void **) ifaces->list, ifaces->count) == -1)
+        {
+	  if (ifaces->count + 1 >= ifaces->len)
+	    {
+	      /* Resize ifaces list */
+	      ifaces->len = ifaces->len * 2;
+	      ifaces->list
+		= (jclass *) _Jv_Realloc (ifaces->list,
+					  ifaces->len * sizeof(jclass));
+	    }
+	  ifaces->list[ifaces->count] = iface;
+	  ifaces->count++;
+
+	  result += get_interfaces (klass->interfaces[i], ifaces);
+	}
+    }
+
+  if (klass->isInterface())
+    {
+      // We want to add 1 plus the number of interface methods here.
+      // But, we take special care to skip <clinit>.
+      ++result;
+      for (int i = 0; i < klass->method_count; ++i)
+	{
+	  if (klass->methods[i].name->first() != '<')
+	    ++result;
+	}
+    }
+  else if (klass->superclass)
+    result += get_interfaces (klass->superclass, ifaces);
+  return result;
+}
+
+// Fill out itable in klass, resolving method declarations in each ifaces.
+// itable_offsets is filled out with the position of each iface in itable,
+// such that itable[itable_offsets[n]] == ifaces.list[n].
+void
+_Jv_Linker::generate_itable (jclass klass, _Jv_ifaces *ifaces,
+			       jshort *itable_offsets)
+{
+  void **itable = klass->idt->itable;
+  jshort itable_pos = 0;
+
+  for (int i = 0; i < ifaces->count; i++)
+    { 
+      jclass iface = ifaces->list[i];
+      itable_offsets[i] = itable_pos;
+      itable_pos = append_partial_itable (klass, iface, itable, itable_pos);
+
+      /* Create ioffsets table for iface */
+      if (iface->ioffsets == NULL)
+	{
+	  // The first element of ioffsets is its length (itself included).
+	  jshort *ioffsets = (jshort *) _Jv_AllocBytes (INITIAL_IOFFSETS_LEN
+							* sizeof (jshort));
+	  ioffsets[0] = INITIAL_IOFFSETS_LEN;
+	  for (int i = 1; i < INITIAL_IOFFSETS_LEN; i++)
+	    ioffsets[i] = -1;
+
+	  iface->ioffsets = ioffsets;
+	}
+    }
+}
+
+// Format method name for use in error messages.
+jstring
+_Jv_GetMethodString (jclass klass, _Jv_Method *meth,
+		     jclass derived)
+{
+  using namespace java::lang;
+  StringBuffer *buf = new StringBuffer (klass->name->toString());
+  buf->append (jchar ('.'));
+  buf->append (meth->name->toString());
+  buf->append ((jchar) ' ');
+  buf->append (meth->signature->toString());
+  if (derived)
+    {
+      buf->append(JvNewStringLatin1(" in "));
+      buf->append(derived->name->toString());
+    }
+  return buf->toString();
+}
+
+void
+_Jv_ThrowNoSuchMethodError ()
+{
+  throw new java::lang::NoSuchMethodError;
+}
+
+#if defined USE_LIBFFI && FFI_CLOSURES
+// A function whose invocation is prepared using libffi. It gets called
+// whenever a static method of a missing class is invoked. The data argument
+// holds a reference to a String denoting the missing class.
+// The prepared function call is stored in a class' atable.
+void
+_Jv_ThrowNoClassDefFoundErrorTrampoline(ffi_cif *,
+                                        void *,
+                                        void **,
+                                        void *data)
+{
+  throw new java::lang::NoClassDefFoundError(
+    _Jv_NewStringUtf8Const((_Jv_Utf8Const *) data));
+}
+#else
+// A variant of the NoClassDefFoundError throwing method that can
+// be used without libffi.
+void
+_Jv_ThrowNoClassDefFoundError()
+{
+  throw new java::lang::NoClassDefFoundError();
+}
+#endif
+
+// Throw a NoSuchFieldError.  Called by compiler-generated code when
+// an otable entry is zero.  OTABLE_INDEX is the index in the caller's
+// otable that refers to the missing field.  This index may be used to
+// print diagnostic information about the field.
+void
+_Jv_ThrowNoSuchFieldError (int /* otable_index */)
+{
+  throw new java::lang::NoSuchFieldError;
+}
+
+// This is put in empty vtable slots.
+void
+_Jv_ThrowAbstractMethodError ()
+{
+  throw new java::lang::AbstractMethodError();
+}
+
+// Each superinterface of a class (i.e. each interface that the class
+// directly or indirectly implements) has a corresponding "Partial
+// Interface Dispatch Table" whose size is (number of methods + 1) words.
+// The first word is a pointer to the interface (i.e. the java.lang.Class
+// instance for that interface).  The remaining words are pointers to the
+// actual methods that implement the methods declared in the interface,
+// in order of declaration.
+//
+// Append partial interface dispatch table for "iface" to "itable", at
+// position itable_pos.
+// Returns the offset at which the next partial ITable should be appended.
+jshort
+_Jv_Linker::append_partial_itable (jclass klass, jclass iface,
+				   void **itable, jshort pos)
+{
+  using namespace java::lang::reflect;
+
+  itable[pos++] = (void *) iface;
+  _Jv_Method *meth;
+  
+  for (int j=0; j < iface->method_count; j++)
+    {
+      // Skip '<clinit>' here.
+      if (iface->methods[j].name->first() == '<')
+	continue;
+
+      meth = NULL;
+      for (jclass cl = klass; cl; cl = cl->getSuperclass())
+        {
+	  meth = _Jv_GetMethodLocal (cl, iface->methods[j].name,
+				     iface->methods[j].signature);
+		 
+	  if (meth)
+	    break;
+	}
+
+      if (meth)
+        {
+	  if ((meth->accflags & Modifier::STATIC) != 0)
+	    throw new java::lang::IncompatibleClassChangeError
+	      (_Jv_GetMethodString (klass, meth));
+	  if ((meth->accflags & Modifier::PUBLIC) == 0)
+	    throw new java::lang::IllegalAccessError
+	      (_Jv_GetMethodString (klass, meth));
+
+ 	  if ((meth->accflags & Modifier::ABSTRACT) != 0)
+	    itable[pos] = (void *) &_Jv_ThrowAbstractMethodError;
+	  else
+	    itable[pos] = meth->ncode;
+	}
+      else
+        {
+	  // The method doesn't exist in klass. Binary compatibility rules
+	  // permit this, so we delay the error until runtime using a pointer
+	  // to a method which throws an exception.
+	  itable[pos] = (void *) _Jv_ThrowNoSuchMethodError;
+	}
+      pos++;
+    }
+    
+  return pos;
+}
+
+static _Jv_Mutex_t iindex_mutex;
+static bool iindex_mutex_initialized = false;
+
+// We need to find the correct offset in the Class Interface Dispatch 
+// Table for a given interface. Once we have that, invoking an interface 
+// method just requires combining the Method's index in the interface 
+// (known at compile time) to get the correct method.  Doing a type test 
+// (cast or instanceof) is the same problem: Once we have a possible Partial 
+// Interface Dispatch Table, we just compare the first element to see if it 
+// matches the desired interface. So how can we find the correct offset?  
+// Our solution is to keep a vector of candiate offsets in each interface 
+// (ioffsets), and in each class we have an index (idt->iindex) used to
+// select the correct offset from ioffsets.
+//
+// Calculate and return iindex for a new class. 
+// ifaces is a vector of num interfaces that the class implements.
+// offsets[j] is the offset in the interface dispatch table for the
+// interface corresponding to ifaces[j].
+// May extend the interface ioffsets if required.
+jshort
+_Jv_Linker::find_iindex (jclass *ifaces, jshort *offsets, jshort num)
+{
+  int i;
+  int j;
+  
+  // Acquire a global lock to prevent itable corruption in case of multiple 
+  // classes that implement an intersecting set of interfaces being linked
+  // simultaneously. We can assume that the mutex will be initialized
+  // single-threaded.
+  if (! iindex_mutex_initialized)
+    {
+      _Jv_MutexInit (&iindex_mutex);
+      iindex_mutex_initialized = true;
+    }
+  
+  _Jv_MutexLock (&iindex_mutex);
+  
+  for (i=1;; i++)  /* each potential position in ioffsets */
+    {
+      for (j=0;; j++)  /* each iface */
+        {
+	  if (j >= num)
+	    goto found;
+	  if (i >= ifaces[j]->ioffsets[0])
+	    continue;
+	  int ioffset = ifaces[j]->ioffsets[i];
+	  /* We can potentially share this position with another class. */
+	  if (ioffset >= 0 && ioffset != offsets[j])
+	    break; /* Nope. Try next i. */	  
+	}
+    }
+  found:
+  for (j = 0; j < num; j++)
+    {
+      int len = ifaces[j]->ioffsets[0];
+      if (i >= len) 
+	{
+	  // Resize ioffsets.
+	  int newlen = 2 * len;
+	  if (i >= newlen)
+	    newlen = i + 3;
+
+	  jshort *old_ioffsets = ifaces[j]->ioffsets;
+	  jshort *new_ioffsets = (jshort *) _Jv_AllocBytes (newlen
+							    * sizeof(jshort));
+	  memcpy (&new_ioffsets[1], &old_ioffsets[1],
+		  (len - 1) * sizeof (jshort));
+	  new_ioffsets[0] = newlen;
+
+	  while (len < newlen)
+	    new_ioffsets[len++] = -1;
+	  
+	  ifaces[j]->ioffsets = new_ioffsets;
+	}
+      ifaces[j]->ioffsets[i] = offsets[j];
+    }
+
+  _Jv_MutexUnlock (&iindex_mutex);
+
+  return i;
+}
+
+#if defined USE_LIBFFI && FFI_CLOSURES
+// We use a structure of this type to store the closure that
+// represents a missing method.
+struct method_closure
+{
+  // This field must come first, since the address of this field will
+  // be the same as the address of the overall structure.  This is due
+  // to disabling interior pointers in the GC.
+  ffi_closure closure;
+  ffi_cif cif;
+  ffi_type *arg_types[1];
+};
+
+void *
+_Jv_Linker::create_error_method (_Jv_Utf8Const *class_name)
+{
+  method_closure *closure
+    = (method_closure *) _Jv_AllocBytes(sizeof (method_closure));
+
+  closure->arg_types[0] = &ffi_type_void;
+
+  // Initializes the cif and the closure.  If that worked the closure
+  // is returned and can be used as a function pointer in a class'
+  // atable.
+  if (   ffi_prep_cif (&closure->cif,
+                       FFI_DEFAULT_ABI,
+                       1,
+                       &ffi_type_void,
+		       closure->arg_types) == FFI_OK
+      && ffi_prep_closure (&closure->closure,
+                           &closure->cif,
+			   _Jv_ThrowNoClassDefFoundErrorTrampoline,
+			   class_name) == FFI_OK)
+    return &closure->closure;
+  else
+    {
+      java::lang::StringBuffer *buffer = new java::lang::StringBuffer();
+      buffer->append(JvNewStringLatin1("Error setting up FFI closure"
+				       " for static method of"
+				       " missing class: "));
+      buffer->append (_Jv_NewStringUtf8Const(class_name));
+      throw new java::lang::InternalError(buffer->toString());
+    }
+}
+#else
+void *
+_Jv_Linker::create_error_method (_Jv_Utf8Const *)
+{
+  // Codepath for platforms which do not support (or want) libffi.
+  // You have to accept that it is impossible to provide the name
+  // of the missing class then.
+  return (void *) _Jv_ThrowNoClassDefFoundError;
+}
+#endif // USE_LIBFFI && FFI_CLOSURES
+
+// Functions for indirect dispatch (symbolic virtual binding) support.
+
+// There are three tables, atable otable and itable.  atable is an
+// array of addresses, and otable is an array of offsets, and these
+// are used for static and virtual members respectively.  itable is an
+// array of pairs {address, index} where each address is a pointer to
+// an interface.
+
+// {a,o,i}table_syms is an array of _Jv_MethodSymbols.  Each such
+// symbol is a tuple of {classname, member name, signature}.
+
+// Set this to true to enable debugging of indirect dispatch tables/linking.
+static bool debug_link = false;
+
+// link_symbol_table() scans these two arrays and fills in the
+// corresponding atable and otable with the addresses of static
+// members and the offsets of virtual members.
+
+// The offset (in bytes) for each resolved method or field is placed
+// at the corresponding position in the virtual method offset table
+// (klass->otable). 
+
+// The same otable and atable may be shared by many classes.
+
+// This must be called while holding the class lock.
+
+void
+_Jv_Linker::link_symbol_table (jclass klass)
+{
+  int index = 0;
+  _Jv_MethodSymbol sym;
+  if (klass->otable == NULL
+      || klass->otable->state != 0)
+    goto atable;
+   
+  klass->otable->state = 1;
+
+  if (debug_link)
+    fprintf (stderr, "Fixing up otable in %s:\n", klass->name->chars());
+  for (index = 0;
+       (sym = klass->otable_syms[index]).class_name != NULL;
+       ++index)
+    {
+      jclass target_class = _Jv_FindClass (sym.class_name, klass->loader);
+      _Jv_Method *meth = NULL;            
+
+      _Jv_Utf8Const *signature = sym.signature;
+      uaddr special;
+      maybe_adjust_signature (signature, special);
+
+      if (target_class == NULL)
+	throw new java::lang::NoClassDefFoundError 
+	  (_Jv_NewStringUTF (sym.class_name->chars()));
+
+      // We're looking for a field or a method, and we can tell
+      // which is needed by looking at the signature.
+      if (signature->first() == '(' && signature->len() >= 2)
+	{
+	  // Looks like someone is trying to invoke an interface method
+	  if (target_class->isInterface())
+	    {
+	      using namespace java::lang;
+	      StringBuffer *sb = new StringBuffer();
+	      sb->append(JvNewStringLatin1("found interface "));
+	      sb->append(target_class->getName());
+	      sb->append(JvNewStringLatin1(" when searching for a class"));
+	      throw new VerifyError(sb->toString());
+	    }
+
+ 	  // If the target class does not have a vtable_method_count yet, 
+	  // then we can't tell the offsets for its methods, so we must lay 
+	  // it out now.
+	  wait_for_state(target_class, JV_STATE_PREPARED);
+
+	  try
+	    {
+	      meth = (search_method_in_superclasses 
+		      (target_class, klass, sym.name, signature, 
+		       NULL, special == 0));
+	    }
+	  catch (::java::lang::IllegalAccessError *e)
+	    {
+	    }
+
+	  // Every class has a throwNoSuchMethodErrorIndex method that
+	  // it inherits from java.lang.Object.  Find its vtable
+	  // offset.
+	  static int throwNoSuchMethodErrorIndex;
+	  if (throwNoSuchMethodErrorIndex == 0)
+	    {
+	      Utf8Const* name 
+		= _Jv_makeUtf8Const ("throwNoSuchMethodError", 
+				     strlen ("throwNoSuchMethodError"));
+	      _Jv_Method* meth
+		= _Jv_LookupDeclaredMethod (&java::lang::Object::class$, 
+					    name, gcj::void_signature);
+	      throwNoSuchMethodErrorIndex 
+		= _Jv_VTable::idx_to_offset (meth->index);
+	    }
+	  
+	  // If we don't find a nonstatic method, insert the
+	  // vtable index of Object.throwNoSuchMethodError().
+	  // This defers the missing method error until an attempt
+	  // is made to execute it.	  
+	  {
+	    int offset;
+	    
+	    if (meth != NULL)
+	      offset = _Jv_VTable::idx_to_offset (meth->index);
+	    else
+	      offset = throwNoSuchMethodErrorIndex;		    
+	    
+	    if (offset == -1)
+	      JvFail ("Bad method index");
+	    JvAssert (meth->index < target_class->vtable_method_count);
+	    
+	    klass->otable->offsets[index] = offset;
+	  }
+
+	  if (debug_link)
+	    fprintf (stderr, "  offsets[%d] = %d (class %s@%p : %s(%s))\n",
+		     (int)index,
+		     (int)klass->otable->offsets[index],
+		     (const char*)target_class->name->chars(),
+		     target_class,
+		     (const char*)sym.name->chars(),
+		     (const char*)signature->chars());
+	  continue;
+	}
+
+      // Try fields.
+      {
+	wait_for_state(target_class, JV_STATE_PREPARED);
+	jclass found_class;
+	_Jv_Field *the_field = NULL;
+	try
+	  {
+	    the_field = find_field (klass, target_class, &found_class,
+				    sym.name, signature);
+	    if ((the_field->flags & java::lang::reflect::Modifier::STATIC))
+	      throw new java::lang::IncompatibleClassChangeError;
+	    else
+	      klass->otable->offsets[index] = the_field->u.boffset;
+	  }
+	catch (java::lang::NoSuchFieldError *err)
+	  {
+	    klass->otable->offsets[index] = 0;
+	  }
+      }
+    }
+
+ atable:
+  if (klass->atable == NULL || klass->atable->state != 0)
+    goto itable;
+
+  klass->atable->state = 1;
+
+  for (index = 0;
+       (sym = klass->atable_syms[index]).class_name != NULL;
+       ++index)
+    {
+      jclass target_class =
+        _Jv_FindClassNoException (sym.class_name, klass->loader);
+
+      _Jv_Method *meth = NULL;            
+
+      _Jv_Utf8Const *signature = sym.signature;
+      uaddr special;
+      maybe_adjust_signature (signature, special);
+
+      // ??? Setting this pointer to null will at least get us a
+      // NullPointerException
+      klass->atable->addresses[index] = NULL;
+
+      // If the target class is missing we prepare a function call
+      // that throws a NoClassDefFoundError and store the address of
+      // that newly prepared method in the atable. The user can run
+      // code in classes where the missing class is part of the
+      // execution environment as long as it is never referenced.
+      if (target_class == NULL)
+        klass->atable->addresses[index] = create_error_method(sym.class_name);
+      // We're looking for a static field or a static method, and we
+      // can tell which is needed by looking at the signature.
+      else if (signature->first() == '(' && signature->len() >= 2)
+	{
+ 	  // If the target class does not have a vtable_method_count yet, 
+	  // then we can't tell the offsets for its methods, so we must lay 
+	  // it out now.
+	  wait_for_state (target_class, JV_STATE_PREPARED);
+
+	  // Interface methods cannot have bodies.
+	  if (target_class->isInterface())
+	    {
+	      using namespace java::lang;
+	      StringBuffer *sb = new StringBuffer();
+	      sb->append(JvNewStringLatin1("class "));
+	      sb->append(target_class->getName());
+	      sb->append(JvNewStringLatin1(" is an interface: "
+					   "class expected"));
+	      throw new VerifyError(sb->toString());
+	    }
+
+	  try
+	    {
+	      meth = (search_method_in_superclasses 
+		      (target_class, klass, sym.name, signature, 
+		       NULL, special == 0));
+	    }
+	  catch (::java::lang::IllegalAccessError *e)
+	    {
+	    }
+
+	  if (meth != NULL)
+	    {
+	      if (meth->ncode) // Maybe abstract?
+		{
+		  klass->atable->addresses[index] = meth->ncode;
+		  if (debug_link)
+		    fprintf (stderr, "  addresses[%d] = %p (class %s@%p : %s(%s))\n",
+			     index,
+			     &klass->atable->addresses[index],
+			     (const char*)target_class->name->chars(),
+			     klass,
+			     (const char*)sym.name->chars(),
+			     (const char*)signature->chars());
+		}
+	    }
+	  else
+	    klass->atable->addresses[index]
+              = create_error_method(sym.class_name);
+
+	  continue;
+	}
+
+      // Try fields only if the target class exists.
+      if (target_class != NULL)
+      {
+	wait_for_state(target_class, JV_STATE_PREPARED);
+	jclass found_class;
+	_Jv_Field *the_field = find_field (klass, target_class, &found_class,
+					   sym.name, signature);
+	if ((the_field->flags & java::lang::reflect::Modifier::STATIC))
+	  klass->atable->addresses[index] = the_field->u.addr;
+	else
+	  throw new java::lang::IncompatibleClassChangeError;
+      }
+    }
+
+ itable:
+  if (klass->itable == NULL
+      || klass->itable->state != 0)
+    return;
+
+  klass->itable->state = 1;
+
+  for (index = 0;
+       (sym = klass->itable_syms[index]).class_name != NULL; 
+       ++index)
+    {
+      jclass target_class = _Jv_FindClass (sym.class_name, klass->loader);
+
+      _Jv_Utf8Const *signature = sym.signature;
+      uaddr special;
+      maybe_adjust_signature (signature, special);
+
+      jclass cls;
+      int i;
+
+      wait_for_state(target_class, JV_STATE_LOADED);
+      bool found = _Jv_getInterfaceMethod (target_class, cls, i,
+					   sym.name, signature);
+
+      if (found)
+	{
+	  klass->itable->addresses[index * 2] = cls;
+	  klass->itable->addresses[index * 2 + 1] = (void *)(unsigned long) i;
+	  if (debug_link)
+	    {
+	      fprintf (stderr, "  interfaces[%d] = %p (interface %s@%p : %s(%s))\n",
+		       index,
+		       klass->itable->addresses[index * 2],
+		       (const char*)cls->name->chars(),
+		       cls,
+		       (const char*)sym.name->chars(),
+		       (const char*)signature->chars());
+	      fprintf (stderr, "            [%d] = offset %d\n",
+		       index + 1,
+		       (int)(unsigned long)klass->itable->addresses[index * 2 + 1]);
+	    }
+
+	}
+      else
+	throw new java::lang::IncompatibleClassChangeError;
+    }
+
+}
+
+// For each catch_record in the list of caught classes, fill in the
+// address field.
+void 
+_Jv_Linker::link_exception_table (jclass self)
+{
+  struct _Jv_CatchClass *catch_record = self->catch_classes;
+  if (!catch_record || catch_record->classname)
+    return;  
+  catch_record++;
+  while (catch_record->classname)
+    {
+      try
+	{
+	  jclass target_class
+	    = _Jv_FindClass (catch_record->classname,  
+			     self->getClassLoaderInternal ());
+	  *catch_record->address = target_class;
+	}
+      catch (::java::lang::Throwable *t)
+	{
+	  // FIXME: We need to do something better here.
+	  *catch_record->address = 0;
+	}
+      catch_record++;
+    }
+  self->catch_classes->classname = (_Jv_Utf8Const *)-1;
+}
+  
+// Set itable method indexes for members of interface IFACE.
+void
+_Jv_Linker::layout_interface_methods (jclass iface)
+{
+  if (! iface->isInterface())
+    return;
+
+  // itable indexes start at 1. 
+  // FIXME: Static initalizers currently get a NULL placeholder entry in the
+  // itable so they are also assigned an index here.
+  for (int i = 0; i < iface->method_count; i++)
+    iface->methods[i].index = i + 1;
+}
+
+// Prepare virtual method declarations in KLASS, and any superclasses
+// as required, by determining their vtable index, setting
+// method->index, and finally setting the class's vtable_method_count.
+// Must be called with the lock for KLASS held.
+void
+_Jv_Linker::layout_vtable_methods (jclass klass)
+{
+  if (klass->vtable != NULL || klass->isInterface() 
+      || klass->vtable_method_count != -1)
+    return;
+
+  jclass superclass = klass->getSuperclass();
+
+  if (superclass != NULL && superclass->vtable_method_count == -1)
+    {
+      JvSynchronize sync (superclass);
+      layout_vtable_methods (superclass);
+    }
+
+  int index = (superclass == NULL ? 0 : superclass->vtable_method_count);
+
+  for (int i = 0; i < klass->method_count; ++i)
+    {
+      _Jv_Method *meth = &klass->methods[i];
+      _Jv_Method *super_meth = NULL;
+
+      if (! _Jv_isVirtualMethod (meth))
+	continue;
+
+      if (superclass != NULL)
+	{
+	  jclass declarer;
+	  super_meth = _Jv_LookupDeclaredMethod (superclass, meth->name,
+						 meth->signature, &declarer);
+	  // See if this method actually overrides the other method
+	  // we've found.
+	  if (super_meth)
+	    {
+	      if (! _Jv_isVirtualMethod (super_meth)
+		  || ! _Jv_CheckAccess (klass, declarer,
+					super_meth->accflags))
+		super_meth = NULL;
+	      else if ((super_meth->accflags
+			& java::lang::reflect::Modifier::FINAL) != 0)
+		{
+		  using namespace java::lang;
+		  StringBuffer *sb = new StringBuffer();
+		  sb->append(JvNewStringLatin1("method "));
+		  sb->append(_Jv_GetMethodString(klass, meth));
+		  sb->append(JvNewStringLatin1(" overrides final method "));
+		  sb->append(_Jv_GetMethodString(declarer, super_meth));
+		  throw new VerifyError(sb->toString());
+		}
+	    }
+	}
+
+      if (super_meth)
+        meth->index = super_meth->index;
+      else
+	meth->index = index++;
+    }
+
+  klass->vtable_method_count = index;
+}
+
+// Set entries in VTABLE for virtual methods declared in KLASS.
+void
+_Jv_Linker::set_vtable_entries (jclass klass, _Jv_VTable *vtable)
+{
+  for (int i = klass->method_count - 1; i >= 0; i--)
+    {
+      using namespace java::lang::reflect;
+
+      _Jv_Method *meth = &klass->methods[i];
+      if (meth->index == (_Jv_ushort) -1)
+	continue;
+      if ((meth->accflags & Modifier::ABSTRACT))
+	// FIXME: it might be nice to have a libffi trampoline here,
+	// so we could pass in the method name and other information.
+	vtable->set_method(meth->index,
+			   (void *) &_Jv_ThrowAbstractMethodError);
+      else
+	vtable->set_method(meth->index, meth->ncode);
+    }
+}
+
+// Allocate and lay out the virtual method table for KLASS.  This will
+// also cause vtables to be generated for any non-abstract
+// superclasses, and virtual method layout to occur for any abstract
+// superclasses.  Must be called with monitor lock for KLASS held.
+void
+_Jv_Linker::make_vtable (jclass klass)
+{
+  using namespace java::lang::reflect;  
+
+  // If the vtable exists, or for interface classes, do nothing.  All
+  // other classes, including abstract classes, need a vtable.
+  if (klass->vtable != NULL || klass->isInterface())
+    return;
+
+  // Ensure all the `ncode' entries are set.
+  klass->engine->create_ncode(klass);
+
+  // Class must be laid out before we can create a vtable. 
+  if (klass->vtable_method_count == -1)
+    layout_vtable_methods (klass);
+
+  // Allocate the new vtable.
+  _Jv_VTable *vtable = _Jv_VTable::new_vtable (klass->vtable_method_count);
+  klass->vtable = vtable;
+
+  // Copy the vtable of the closest superclass.
+  jclass superclass = klass->superclass;
+  {
+    JvSynchronize sync (superclass);
+    make_vtable (superclass);
+  }
+  for (int i = 0; i < superclass->vtable_method_count; ++i)
+    vtable->set_method (i, superclass->vtable->get_method (i));
+
+  // Set the class pointer and GC descriptor.
+  vtable->clas = klass;
+  vtable->gc_descr = _Jv_BuildGCDescr (klass);
+
+  // For each virtual declared in klass, set new vtable entry or
+  // override an old one.
+  set_vtable_entries (klass, vtable);
+
+  // Note that we don't check for abstract methods here.  We used to,
+  // but there is a JVMS clarification that indicates that a check
+  // here would be too eager.  And, a simple test case confirms this.
+}
+
+// Lay out the class, allocating space for static fields and computing
+// offsets of instance fields.  The class lock must be held by the
+// caller.
+void
+_Jv_Linker::ensure_fields_laid_out (jclass klass)
+{  
+  if (klass->size_in_bytes != -1)
+    return;
+
+  // Compute the alignment for this type by searching through the
+  // superclasses and finding the maximum required alignment.  We
+  // could consider caching this in the Class.
+  int max_align = __alignof__ (java::lang::Object);
+  jclass super = klass->getSuperclass();
+  while (super != NULL)
+    {
+      // Ensure that our super has its super installed before
+      // recursing.
+      wait_for_state(super, JV_STATE_LOADING);
+      ensure_fields_laid_out(super);
+      int num = JvNumInstanceFields (super);
+      _Jv_Field *field = JvGetFirstInstanceField (super);
+      while (num > 0)
+	{
+	  int field_align = get_alignment_from_class (field->type);
+	  if (field_align > max_align)
+	    max_align = field_align;
+	  ++field;
+	  --num;
+	}
+      super = super->getSuperclass();
+    }
+
+  int instance_size;
+  // This is the size of the 'static' non-reference fields.
+  int non_reference_size = 0;
+  // This is the size of the 'static' reference fields.  We count
+  // these separately to make it simpler for the GC to scan them.
+  int reference_size = 0;
+
+  // Although java.lang.Object is never interpreted, an interface can
+  // have a null superclass.  Note that we have to lay out an
+  // interface because it might have static fields.
+  if (klass->superclass)
+    instance_size = klass->superclass->size();
+  else
+    instance_size = java::lang::Object::class$.size();
+
+  klass->engine->allocate_field_initializers (klass); 
+
+  for (int i = 0; i < klass->field_count; i++)
+    {
+      int field_size;
+      int field_align;
+
+      _Jv_Field *field = &klass->fields[i];
+
+      if (! field->isRef ())
+	{
+	  // It is safe to resolve the field here, since it's a
+	  // primitive class, which does not cause loading to happen.
+	  resolve_field (field, klass->loader);
+	  field_size = field->type->size ();
+	  field_align = get_alignment_from_class (field->type);
+	}
+      else 
+	{
+	  field_size = sizeof (jobject);
+	  field_align = __alignof__ (jobject);
+	}
+
+      field->bsize = field_size;
+
+      if ((field->flags & java::lang::reflect::Modifier::STATIC))
+	{
+	  if (field->u.addr == NULL)
+	    {
+	      // This computes an offset into a region we'll allocate
+	      // shortly, and then adds this offset to the start
+	      // address.
+	      if (field->isRef())
+		{
+		  reference_size = ROUND (reference_size, field_align);
+		  field->u.boffset = reference_size;
+		  reference_size += field_size;
+		}
+	      else
+		{
+		  non_reference_size = ROUND (non_reference_size, field_align);
+		  field->u.boffset = non_reference_size;
+		  non_reference_size += field_size;
+		}
+	    }
+	}
+      else
+	{
+	  instance_size      = ROUND (instance_size, field_align);
+	  field->u.boffset   = instance_size;
+	  instance_size     += field_size;
+	  if (field_align > max_align)
+	    max_align = field_align;
+	}
+    }
+
+  if (reference_size != 0 || non_reference_size != 0)
+    klass->engine->allocate_static_fields (klass, reference_size,
+					   non_reference_size);
+
+  // Set the instance size for the class.  Note that first we round it
+  // to the alignment required for this object; this keeps us in sync
+  // with our current ABI.
+  instance_size = ROUND (instance_size, max_align);
+  klass->size_in_bytes = instance_size;
+}
+
+// This takes the class to state JV_STATE_LINKED.  The class lock must
+// be held when calling this.
+void
+_Jv_Linker::ensure_class_linked (jclass klass)
+{
+  if (klass->state >= JV_STATE_LINKED)
+    return;
+
+  int state = klass->state;
+  try
+    {
+      // Short-circuit, so that mutually dependent classes are ok.
+      klass->state = JV_STATE_LINKED;
+
+      _Jv_Constants *pool = &klass->constants;
+
+      // Compiled classes require that their class constants be
+      // resolved here.  However, interpreted classes need their
+      // constants to be resolved lazily.  If we resolve an
+      // interpreted class' constants eagerly, we can end up with
+      // spurious IllegalAccessErrors when the constant pool contains
+      // a reference to a class we can't access.  This can validly
+      // occur in an obscure case involving the InnerClasses
+      // attribute.
+      if (! _Jv_IsInterpretedClass (klass))
+	{
+	  // Resolve class constants first, since other constant pool
+	  // entries may rely on these.
+	  for (int index = 1; index < pool->size; ++index)
+	    {
+	      if (pool->tags[index] == JV_CONSTANT_Class)
+                // Lazily resolve the entries.
+		resolve_pool_entry (klass, index, true);
+	    }
+	}
+
+      // Resolve the remaining constant pool entries.
+      for (int index = 1; index < pool->size; ++index)
+	{
+	  if (pool->tags[index] == JV_CONSTANT_String)
+	    {
+	      jstring str;
+
+	      str = _Jv_NewStringUtf8Const (pool->data[index].utf8);
+	      pool->data[index].o = str;
+	      pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
+	    }
+	}
+
+      if (klass->engine->need_resolve_string_fields())
+	{
+	  jfieldID f = JvGetFirstStaticField (klass);
+	  for (int n = JvNumStaticFields (klass); n > 0; --n)
+	    {
+	      int mod = f->getModifiers ();
+	      // If we have a static String field with a non-null initial
+	      // value, we know it points to a Utf8Const.
+
+              // Finds out whether we have to initialize a String without the
+              // need to resolve the field.
+              if ((f->isResolved()
+                   ? (f->type == &java::lang::String::class$)
+                   : _Jv_equalUtf8Classnames((_Jv_Utf8Const *) f->type,
+                                             java::lang::String::class$.name))
+		  && (mod & java::lang::reflect::Modifier::STATIC) != 0)
+		{
+		  jstring *strp = (jstring *) f->u.addr;
+		  if (*strp)
+		    *strp = _Jv_NewStringUtf8Const ((_Jv_Utf8Const *) *strp);
+		}
+	      f = f->getNextField ();
+	    }
+	}
+
+      klass->notifyAll ();
+
+      _Jv_PushClass (klass);
+    }
+  catch (java::lang::Throwable *t)
+    {
+      klass->state = state;
+      throw t;
+    }
+}
+
+// This ensures that symbolic superclass and superinterface references
+// are resolved for the indicated class.  This must be called with the
+// class lock held.
+void
+_Jv_Linker::ensure_supers_installed (jclass klass)
+{
+  resolve_class_ref (klass, &klass->superclass);
+  // An interface won't have a superclass.
+  if (klass->superclass)
+    wait_for_state (klass->superclass, JV_STATE_LOADING);
+
+  for (int i = 0; i < klass->interface_count; ++i)
+    {
+      resolve_class_ref (klass, &klass->interfaces[i]);
+      wait_for_state (klass->interfaces[i], JV_STATE_LOADING);
+    }
+}
+
+// This adds missing `Miranda methods' to a class.
+void
+_Jv_Linker::add_miranda_methods (jclass base, jclass iface_class)
+{
+  // Note that at this point, all our supers, and the supers of all
+  // our superclasses and superinterfaces, will have been installed.
+
+  for (int i = 0; i < iface_class->interface_count; ++i)
+    {
+      jclass interface = iface_class->interfaces[i];
+
+      for (int j = 0; j < interface->method_count; ++j)
+	{
+ 	  _Jv_Method *meth = &interface->methods[j];
+	  // Don't bother with <clinit>.
+	  if (meth->name->first() == '<')
+	    continue;
+	  _Jv_Method *new_meth = _Jv_LookupDeclaredMethod (base, meth->name,
+							   meth->signature);
+	  if (! new_meth)
+	    {
+	      // We assume that such methods are very unlikely, so we
+	      // just reallocate the method array each time one is
+	      // found.  This greatly simplifies the searching --
+	      // otherwise we have to make sure that each such method
+	      // found is really unique among all superinterfaces.
+	      int new_count = base->method_count + 1;
+	      _Jv_Method *new_m
+		= (_Jv_Method *) _Jv_AllocRawObj (sizeof (_Jv_Method)
+						  * new_count);
+	      memcpy (new_m, base->methods,
+		      sizeof (_Jv_Method) * base->method_count);
+
+	      // Add new method.
+	      new_m[base->method_count] = *meth;
+	      new_m[base->method_count].index = (_Jv_ushort) -1;
+	      new_m[base->method_count].accflags
+		|= java::lang::reflect::Modifier::INVISIBLE;
+
+	      base->methods = new_m;
+	      base->method_count = new_count;
+	    }
+	}
+
+      wait_for_state (interface, JV_STATE_LOADED);
+      add_miranda_methods (base, interface);
+    }
+}
+
+// This ensures that the class' method table is "complete".  This must
+// be called with the class lock held.
+void
+_Jv_Linker::ensure_method_table_complete (jclass klass)
+{
+  if (klass->vtable != NULL)
+    return;
+
+  // We need our superclass to have its own Miranda methods installed.
+  if (! klass->isInterface())
+    wait_for_state (klass->getSuperclass (), JV_STATE_LOADED);
+
+  // A class might have so-called "Miranda methods".  This is a method
+  // that is declared in an interface and not re-declared in an
+  // abstract class.  Some compilers don't emit declarations for such
+  // methods in the class; this will give us problems since we expect
+  // a declaration for any method requiring a vtable entry.  We handle
+  // this here by searching for such methods and constructing new
+  // internal declarations for them.  Note that we do this
+  // unconditionally, and not just for abstract classes, to correctly
+  // account for cases where a class is modified to be concrete and
+  // still incorrectly inherits an abstract method.
+  int pre_count = klass->method_count;
+  add_miranda_methods (klass, klass);
+
+  // Let the execution engine know that we've added methods.
+  if (klass->method_count != pre_count)
+    klass->engine->post_miranda_hook(klass);
+}
+
+// Verify a class.  Must be called with class lock held.
+void
+_Jv_Linker::verify_class (jclass klass)
+{
+  klass->engine->verify(klass);
+}
+
+// Check the assertions contained in the type assertion table for KLASS.
+// This is the equivilent of bytecode verification for native, BC-ABI code.
+void
+_Jv_Linker::verify_type_assertions (jclass klass)
+{
+  if (debug_link)
+    fprintf (stderr, "Evaluating type assertions for %s:\n",
+	     klass->name->chars());
+
+  if (klass->assertion_table == NULL)
+    return;
+
+  for (int i = 0;; i++)
+    {
+      int assertion_code = klass->assertion_table[i].assertion_code;
+      _Jv_Utf8Const *op1 = klass->assertion_table[i].op1;
+      _Jv_Utf8Const *op2 = klass->assertion_table[i].op2;
+      
+      if (assertion_code == JV_ASSERT_END_OF_TABLE)
+        return;
+      else if (assertion_code == JV_ASSERT_TYPES_COMPATIBLE)
+        {
+	  if (debug_link)
+	    {
+	      fprintf (stderr, "  code=%i, operand A=%s B=%s\n",
+		       assertion_code, op1->chars(), op2->chars());
+	    }
+	
+	  // The operands are class signatures. op1 is the source, 
+	  // op2 is the target.
+	  jclass cl1 = _Jv_FindClassFromSignature (op1->chars(), 
+	    klass->getClassLoaderInternal());
+	  jclass cl2 = _Jv_FindClassFromSignature (op2->chars(),
+	    klass->getClassLoaderInternal());
+	    
+	  // If the class doesn't exist, ignore the assertion. An exception
+	  // will be thrown later if an attempt is made to actually 
+	  // instantiate the class.
+	  if (cl1 == NULL || cl2 == NULL)
+	    continue;
+
+          if (! _Jv_IsAssignableFromSlow (cl1, cl2))
+	    {
+	      jstring s = JvNewStringUTF ("Incompatible types: In class ");
+	      s = s->concat (klass->getName());
+	      s = s->concat (JvNewStringUTF (": "));
+	      s = s->concat (cl1->getName());
+	      s = s->concat (JvNewStringUTF (" is not assignable to "));
+	      s = s->concat (cl2->getName());
+	      throw new java::lang::VerifyError (s);
+	    }
+	}
+      else if (assertion_code == JV_ASSERT_IS_INSTANTIABLE)
+        {
+	  // TODO: Implement this.
+	}
+      // Unknown assertion codes are ignored, for forwards-compatibility.
+    }
+}
+   
+void
+_Jv_Linker::print_class_loaded (jclass klass)
+{
+  char *codesource = NULL;
+  if (klass->protectionDomain != NULL)
+    {
+      java::security::CodeSource *cs
+	= klass->protectionDomain->getCodeSource();
+      if (cs != NULL)
+	{
+	  jstring css = cs->toString();
+	  int len = JvGetStringUTFLength(css);
+	  codesource = (char *) _Jv_AllocBytes(len + 1);
+	  JvGetStringUTFRegion(css, 0, css->length(), codesource);
+	  codesource[len] = '\0';
+	}
+    }
+  if (codesource == NULL)
+    codesource = (char *) "<no code source>";
+
+  const char *abi;
+  if (_Jv_IsInterpretedClass (klass))
+    abi = "bytecode";
+  else if (_Jv_IsBinaryCompatibilityABI (klass))
+    abi = "BC-compiled";
+  else
+    abi = "pre-compiled";
+
+  fprintf (stderr, "[Loaded (%s) %s from %s]\n", abi, klass->name->chars(),
+	   codesource);
+}
+
+// FIXME: mention invariants and stuff.
+void
+_Jv_Linker::wait_for_state (jclass klass, int state)
+{
+  if (klass->state >= state)
+    return;
+
+  JvSynchronize sync (klass);
+
+  // This is similar to the strategy for class initialization.  If we
+  // already hold the lock, just leave.
+  java::lang::Thread *self = java::lang::Thread::currentThread();
+  while (klass->state <= state
+	 && klass->thread 
+	 && klass->thread != self)
+    klass->wait ();
+
+  java::lang::Thread *save = klass->thread;
+  klass->thread = self;
+
+  // Allocate memory for static fields and constants.
+  if (GC_base (klass) && klass->fields && ! GC_base (klass->fields))
+    {
+      jsize count = klass->field_count;
+      if (count)
+	{
+	  _Jv_Field* fields 
+	    = (_Jv_Field*) _Jv_AllocRawObj (count * sizeof (_Jv_Field));
+	  memcpy ((void*)fields,
+		  (void*)klass->fields,
+		  count * sizeof (_Jv_Field));
+	  klass->fields = fields;
+	}
+    }
+      
+  // Print some debugging info if requested.  Interpreted classes are
+  // handled in defineclass, so we only need to handle the two
+  // pre-compiled cases here.
+  if (gcj::verbose_class_flag
+      && (klass->state == JV_STATE_COMPILED
+	  || klass->state == JV_STATE_PRELOADING)
+      && ! _Jv_IsInterpretedClass (klass))
+    print_class_loaded (klass);
+
+  try
+    {
+      if (state >= JV_STATE_LOADING && klass->state < JV_STATE_LOADING)
+	{
+	  ensure_supers_installed (klass);
+	  klass->set_state(JV_STATE_LOADING);
+	}
+
+      if (state >= JV_STATE_LOADED && klass->state < JV_STATE_LOADED)
+	{
+	  ensure_method_table_complete (klass);
+	  klass->set_state(JV_STATE_LOADED);
+	}
+
+      if (state >= JV_STATE_PREPARED && klass->state < JV_STATE_PREPARED)
+	{
+	  ensure_fields_laid_out (klass);
+	  make_vtable (klass);
+	  layout_interface_methods (klass);
+	  prepare_constant_time_tables (klass);
+	  klass->set_state(JV_STATE_PREPARED);
+	}
+
+      if (state >= JV_STATE_LINKED && klass->state < JV_STATE_LINKED)
+	{
+	  if (gcj::verifyClasses)
+	    verify_class (klass);
+
+	  ensure_class_linked (klass);
+	  link_exception_table (klass);
+	  link_symbol_table (klass);
+	  klass->set_state(JV_STATE_LINKED);
+	}
+    }
+  catch (java::lang::Throwable *exc)
+    {
+      klass->thread = save;
+      klass->set_state(JV_STATE_ERROR);
+      throw exc;
+    }
+
+  klass->thread = save;
+
+  if (klass->state == JV_STATE_ERROR)
+    throw new java::lang::LinkageError;
+}

Added: llvm-gcc-4.2/trunk/libjava/mauve-libgcj
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/mauve-libgcj?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/mauve-libgcj (added)
+++ llvm-gcc-4.2/trunk/libjava/mauve-libgcj Thu Nov  8 16:56:19 2007
@@ -0,0 +1,25 @@
+# Config file that tells mauve about the `libgcj' tag.
+JDK1.0
+JDK1.1
+JDK1.2
+JDK1.3
+JDK1.4
+JLS1.0
+JLS1.1
+JLS1.2
+JDBC1.0
+JDBC2.0
+
+# The following tests seem to hang or crash the testsuite.
+# This a problem when running Mauve "standalone".
+!java.lang.reflect.Array.newInstance
+
+# These are almost certainly buggy test cases.
+# The behaviour of the garbarge collector cannot be predicted.
+# Note the . at the end so we do test java.lang.reflect
+!java.lang.ref.
+
+# Tests for not yet implemented classes and/or methods.
+!java.awt.event.MouseEvent.modifiersEx
+!org.omg.
+!javax.rmi

Added: llvm-gcc-4.2/trunk/libjava/mingwld.m4
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/mingwld.m4?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/mingwld.m4 (added)
+++ llvm-gcc-4.2/trunk/libjava/mingwld.m4 Thu Nov  8 16:56:19 2007
@@ -0,0 +1,22 @@
+AC_DEFUN([CHECK_FOR_BROKEN_MINGW_LD],
+[
+AC_MSG_CHECKING(whether 'ld' is at least 2.13)
+LD_PROG=`$CC --print-prog-name=ld`
+LD_VERSION=`$LD_PROG --version`
+LD_VERSION_MAJOR=`echo "$LD_VERSION" | head -1 | cut -d '.' -f 1 | cut -d ' ' -f 4`
+LD_VERSION_MINOR=`echo "$LD_VERSION" | head -1 | cut -d '.' -f 2`
+if expr "$LD_VERSION_MAJOR" \> 2 > /dev/null; then
+  LD_OK="ok"
+else
+  if expr "$LD_VERSION_MAJOR" = 2 && expr "$LD_VERSION_MINOR" \>= 13 > /dev/null; then
+    LD_OK="ok"
+  fi
+fi
+if test "x$LD_OK" != x; then
+  AC_MSG_RESULT([yes; major=$LD_VERSION_MAJOR, minor=$LD_VERSION_MINOR])
+else
+  AC_MSG_RESULT([no; major=$LD_VERSION_MAJOR, minor=$LD_VERSION_MINOR])
+  AC_MSG_WARN([ld <2.13 detected; enabling JV_LINKER_CANNOT_8BYTE_ALIGN_STATICS hack...])
+  AC_DEFINE(JV_LINKER_CANNOT_8BYTE_ALIGN_STATICS, 1,
+            [Indicate that linker is not able to 8-byte align static data])
+fi])

Added: llvm-gcc-4.2/trunk/libjava/no-threads.cc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/no-threads.cc?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/no-threads.cc (added)
+++ llvm-gcc-4.2/trunk/libjava/no-threads.cc Thu Nov  8 16:56:19 2007
@@ -0,0 +1,33 @@
+// no-thread.cc - Implementation of `no threads' threads.
+
+/* Copyright (C) 1998, 1999, 2001  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#include <config.h>
+
+#include <gcj/cni.h>
+#include <jvm.h>
+#include <java/lang/Thread.h>
+#include <java/lang/InternalError.h>
+
+java::lang::Thread *_Jv_OnlyThread = NULL;
+
+_Jv_Thread_t *
+_Jv_ThreadInitData (java::lang::Thread *thread)
+{
+  // It is ok to create a new Thread object, as long as it isn't started.
+  if (_Jv_OnlyThread == NULL)
+    _Jv_OnlyThread = thread;
+  return NULL;
+}
+
+void
+_Jv_ThreadStart (java::lang::Thread *, _Jv_Thread_t *, _Jv_ThreadStartFunc *)
+{
+  throw new java::lang::InternalError (JvNewStringLatin1 ("Thread.start called but threads not available"));
+}

Added: llvm-gcc-4.2/trunk/libjava/nogc.cc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/nogc.cc?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/nogc.cc (added)
+++ llvm-gcc-4.2/trunk/libjava/nogc.cc Thu Nov  8 16:56:19 2007
@@ -0,0 +1,177 @@
+// nogc.cc - Implement null garbage collector.
+
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <gcj/cni.h>
+#include <jvm.h>
+
+// Total amount of memory allocated.
+static long total = 0;
+
+void *
+_Jv_BuildGCDescr(jclass)
+{
+  return 0;
+}
+
+void *
+_Jv_AllocObj (jsize size, jclass klass)
+{
+  total += size;
+  void *obj = calloc (size, 1);
+  if (!obj) _Jv_ThrowNoMemory();
+  *((_Jv_VTable **) obj) = klass->vtable;
+  return obj;
+}
+
+void *
+_Jv_AllocPtrFreeObj (jsize size, jclass klass)
+{
+  total += size;
+  void *obj = calloc (size, 1);
+  if (!obj) _Jv_ThrowNoMemory();
+  *((_Jv_VTable **) obj) = klass->vtable;
+  return obj;
+}
+
+void *
+_Jv_AllocArray (jsize size, jclass klass)
+{
+  total += size;
+  void *obj = calloc (size, 1);
+  if (!obj) _Jv_ThrowNoMemory();
+  *((_Jv_VTable **) obj) = klass->vtable;
+  return obj;
+}
+
+void *
+_Jv_AllocBytes (jsize size)
+{
+  total += size;
+  void *obj = calloc (size, 1);
+  if (!obj) _Jv_ThrowNoMemory();
+  return obj;
+}
+
+void *
+_Jv_AllocRawObj (jsize size)
+{
+  total += size;
+  return calloc (size, 1);
+}
+
+void
+_Jv_RegisterFinalizer (void *, _Jv_FinalizerFunc *)
+{
+  // FIXME: should actually register so that finalizers can be run on
+  // exit.
+}
+
+void
+_Jv_RunFinalizers (void)
+{
+}
+
+void
+_Jv_RunAllFinalizers (void)
+{
+  // FIXME: should still run all finalizers.
+}
+
+void
+_Jv_GCInitializeFinalizers (void (*) (void))
+{
+}
+
+void
+_Jv_RunGC (void)
+{
+}
+
+long
+_Jv_GCTotalMemory (void)
+{
+  return total;
+}
+
+long
+_Jv_GCFreeMemory (void)
+{
+  return 0;
+}
+
+void
+_Jv_GCSetInitialHeapSize (size_t)
+{
+}
+
+void
+_Jv_GCSetMaximumHeapSize (size_t)
+{
+}
+
+void
+_Jv_DisableGC (void)
+{
+}
+
+void
+_Jv_EnableGC (void)
+{
+}
+
+void
+_Jv_InitGC (void)
+{
+}
+
+void
+_Jv_GCRegisterDisappearingLink (jobject *)
+{
+}
+
+jboolean
+_Jv_GCCanReclaimSoftReference (jobject)
+{
+  // For now, always reclaim soft references.  FIXME.
+  return true;
+}
+
+#ifdef JV_HASH_SYNCHRONIZATION
+void *
+_Jv_AllocTraceOne (jsize size /* includes vtable slot */) 
+{
+  void *obj = calloc(size, 1);
+  if (!obj) _Jv_ThrowNoMemory();
+  return result;
+}
+
+void *
+_Jv_AllocTraceTwo (jsize size /* includes vtable slot */) 
+{
+  void *obj = calloc(size, 1);
+  if (!obj) _Jv_ThrowNoMemory();
+  return result;
+}
+#endif /* JV_HASH_SYNCHRONIZATION */
+
+void
+_Jv_SuspendThread (_Jv_Thread_t *thread)
+{
+}
+
+void
+_Jv_ResumeThread (_Jv_Thread_t *thread)
+{
+}

Added: llvm-gcc-4.2/trunk/libjava/pkg.m4
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/pkg.m4?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/pkg.m4 (added)
+++ llvm-gcc-4.2/trunk/libjava/pkg.m4 Thu Nov  8 16:56:19 2007
@@ -0,0 +1,57 @@
+
+dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
+dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
+dnl also defines GSTUFF_PKG_ERRORS on error
+AC_DEFUN([PKG_CHECK_MODULES], [
+  succeeded=no
+
+  if test -z "$PKG_CONFIG"; then
+    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+  fi
+
+  if test "$PKG_CONFIG" = "no" ; then
+     echo "*** The pkg-config script could not be found. Make sure it is"
+     echo "*** in your path, or set the PKG_CONFIG environment variable"
+     echo "*** to the full path to pkg-config."
+     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        AC_MSG_CHECKING(for $2)
+
+        if $PKG_CONFIG --exists "$2" ; then
+            AC_MSG_RESULT(yes)
+            succeeded=yes
+
+            AC_MSG_CHECKING($1_CFLAGS)
+            $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
+            AC_MSG_RESULT($$1_CFLAGS)
+
+            AC_MSG_CHECKING($1_LIBS)
+            $1_LIBS=`$PKG_CONFIG --libs "$2"`
+            AC_MSG_RESULT($$1_LIBS)
+        else
+            $1_CFLAGS=""
+            $1_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but 
+            ## do set a variable so people can do so.
+            $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+            ifelse([$4], ,echo $$1_PKG_ERRORS,)
+        fi
+
+        AC_SUBST($1_CFLAGS)
+        AC_SUBST($1_LIBS)
+     else
+        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+        echo "*** See http://www.freedesktop.org/software/pkgconfig"
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     ifelse([$3], , :, [$3])
+  else
+     ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
+  fi
+])
+
+

Added: llvm-gcc-4.2/trunk/libjava/posix-threads.cc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/posix-threads.cc?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/posix-threads.cc (added)
+++ llvm-gcc-4.2/trunk/libjava/posix-threads.cc Thu Nov  8 16:56:19 2007
@@ -0,0 +1,538 @@
+// posix-threads.cc - interface between libjava and POSIX threads.
+
+/* Copyright (C) 1998, 1999, 2000, 2001, 2004, 2006  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+// TO DO:
+// * Document signal handling limitations
+
+#include <config.h>
+
+#include "posix.h"
+
+// If we're using the Boehm GC, then we need to override some of the
+// thread primitives.  This is fairly gross.
+#ifdef HAVE_BOEHM_GC
+#include <gc.h>
+#endif /* HAVE_BOEHM_GC */
+
+#include <stdlib.h>
+#include <time.h>
+#include <signal.h>
+#include <errno.h>
+#include <limits.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>	// To test for _POSIX_THREAD_PRIORITY_SCHEDULING
+#endif
+
+#include <gcj/cni.h>
+#include <jvm.h>
+#include <java/lang/Thread.h>
+#include <java/lang/System.h>
+#include <java/lang/Long.h>
+#include <java/lang/OutOfMemoryError.h>
+#include <java/lang/InternalError.h>
+
+// This is used to implement thread startup.
+struct starter
+{
+  _Jv_ThreadStartFunc *method;
+  _Jv_Thread_t *data;
+};
+
+// This is the key used to map from the POSIX thread value back to the
+// Java object representing the thread.  The key is global to all
+// threads, so it is ok to make it a global here.
+pthread_key_t _Jv_ThreadKey;
+
+// This is the key used to map from the POSIX thread value back to the
+// _Jv_Thread_t* representing the thread.
+pthread_key_t _Jv_ThreadDataKey;
+
+// We keep a count of all non-daemon threads which are running.  When
+// this reaches zero, _Jv_ThreadWait returns.
+static pthread_mutex_t daemon_mutex;
+static pthread_cond_t daemon_cond;
+static int non_daemon_count;
+
+// The signal to use when interrupting a thread.
+#if defined(LINUX_THREADS) || defined(FREEBSD_THREADS)
+  // LinuxThreads (prior to glibc 2.1) usurps both SIGUSR1 and SIGUSR2.
+  // GC on FreeBSD uses both SIGUSR1 and SIGUSR2.
+#  define INTR SIGHUP
+#else /* LINUX_THREADS */
+#  define INTR SIGUSR2
+#endif /* LINUX_THREADS */
+
+//
+// These are the flags that can appear in _Jv_Thread_t.
+//
+
+// Thread started.
+#define FLAG_START   0x01
+// Thread is daemon.
+#define FLAG_DAEMON  0x02
+
+
+
+// Wait for the condition variable "CV" to be notified. 
+// Return values:
+// 0: the condition was notified, or the timeout expired.
+// _JV_NOT_OWNER: the thread does not own the mutex "MU".   
+// _JV_INTERRUPTED: the thread was interrupted. Its interrupted flag is set.   
+int
+_Jv_CondWait (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu,
+	      jlong millis, jint nanos)
+{
+  pthread_t self = pthread_self();
+  if (mu->owner != self)
+    return _JV_NOT_OWNER;
+
+  struct timespec ts;
+
+  if (millis > 0 || nanos > 0)
+    {
+      // Calculate the abstime corresponding to the timeout.
+      unsigned long long seconds;
+      unsigned long usec;
+
+      // For better accuracy, should use pthread_condattr_setclock
+      // and clock_gettime.
+#ifdef HAVE_GETTIMEOFDAY
+      timeval tv;
+      gettimeofday (&tv, NULL);
+      usec = tv.tv_usec;
+      seconds = tv.tv_sec;
+#else
+      unsigned long long startTime = java::lang::System::currentTimeMillis();
+      seconds = startTime / 1000;
+      /* Assume we're about half-way through this millisecond.  */
+      usec = (startTime % 1000) * 1000 + 500;
+#endif
+      /* These next two statements cannot overflow.  */
+      usec += nanos / 1000;
+      usec += (millis % 1000) * 1000;
+      /* These two statements could overflow only if tv.tv_sec was
+	 insanely large.  */
+      seconds += millis / 1000;
+      seconds += usec / 1000000;
+
+      ts.tv_sec = seconds;
+      if (ts.tv_sec < 0 || (unsigned long long)ts.tv_sec != seconds)
+        {
+          // We treat a timeout that won't fit into a struct timespec
+          // as a wait forever.
+          millis = nanos = 0;
+        }
+      else
+	/* This next statement also cannot overflow.  */
+	ts.tv_nsec = (usec % 1000000) * 1000 + (nanos % 1000);
+    }
+
+  _Jv_Thread_t *current = _Jv_ThreadCurrentData ();
+  java::lang::Thread *current_obj = _Jv_ThreadCurrent ();
+
+  pthread_mutex_lock (&current->wait_mutex);
+
+  // Now that we hold the wait mutex, check if this thread has been 
+  // interrupted already.
+  if (current_obj->interrupt_flag)
+    {
+      pthread_mutex_unlock (&current->wait_mutex);
+      return _JV_INTERRUPTED;
+    }
+
+  // Add this thread to the cv's wait set.
+  current->next = NULL;
+
+  if (cv->first == NULL)
+    cv->first = current;
+  else
+    for (_Jv_Thread_t *t = cv->first;; t = t->next)
+      {
+        if (t->next == NULL)
+          {
+            t->next = current;
+            break;
+          }
+      }
+
+  // Record the current lock depth, so it can be restored when we re-aquire it.
+  int count = mu->count;
+
+  // Release the monitor mutex.
+  mu->count = 0;
+  mu->owner = 0;
+  pthread_mutex_unlock (&mu->mutex);
+  
+  int r = 0;
+  bool done_sleeping = false;
+
+  while (! done_sleeping)
+    {
+      if (millis == 0 && nanos == 0)
+	r = pthread_cond_wait (&current->wait_cond, &current->wait_mutex);
+      else
+	r = pthread_cond_timedwait (&current->wait_cond, &current->wait_mutex, 
+				    &ts);
+
+      // In older glibc's (prior to 2.1.3), the cond_wait functions may 
+      // spuriously wake up on a signal. Catch that here.
+      if (r != EINTR)
+        done_sleeping = true;
+    }
+  
+  // Check for an interrupt *before* releasing the wait mutex.
+  jboolean interrupted = current_obj->interrupt_flag;
+  
+  pthread_mutex_unlock (&current->wait_mutex);
+
+  //  Reaquire the monitor mutex, and restore the lock count.
+  pthread_mutex_lock (&mu->mutex);
+  mu->owner = self;
+  mu->count = count;
+
+  // If we were interrupted, or if a timeout occurred, remove ourself from
+  // the cv wait list now. (If we were notified normally, notify() will have
+  // already taken care of this)
+  if (r == ETIMEDOUT || interrupted)
+    {
+      _Jv_Thread_t *prev = NULL;
+      for (_Jv_Thread_t *t = cv->first; t != NULL; t = t->next)
+        {
+	  if (t == current)
+	    {
+	      if (prev != NULL)
+		prev->next = t->next;
+	      else
+	        cv->first = t->next;
+	      t->next = NULL;
+	      break;
+	    }
+	  prev = t;
+	}
+      if (interrupted)
+	return _JV_INTERRUPTED;
+    }
+  
+  return 0;
+}
+
+int
+_Jv_CondNotify (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu)
+{
+  if (_Jv_MutexCheckMonitor (mu))
+    return _JV_NOT_OWNER;
+
+  _Jv_Thread_t *target;
+  _Jv_Thread_t *prev = NULL;
+
+  for (target = cv->first; target != NULL; target = target->next)
+    {
+      pthread_mutex_lock (&target->wait_mutex);
+
+      if (target->thread_obj->interrupt_flag)
+        {
+	  // Don't notify a thread that has already been interrupted.
+	  pthread_mutex_unlock (&target->wait_mutex);
+          prev = target;
+	  continue;
+	}
+
+      pthread_cond_signal (&target->wait_cond);
+      pthread_mutex_unlock (&target->wait_mutex);
+
+      // Two concurrent notify() calls must not be delivered to the same 
+      // thread, so remove the target thread from the cv wait list now.
+      if (prev == NULL)
+	cv->first = target->next;
+      else
+        prev->next = target->next;
+		
+      target->next = NULL;
+      
+      break;
+    }
+
+  return 0;
+}
+
+int
+_Jv_CondNotifyAll (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu)
+{
+  if (_Jv_MutexCheckMonitor (mu))
+    return _JV_NOT_OWNER;
+
+  _Jv_Thread_t *target;
+  _Jv_Thread_t *prev = NULL;
+
+  for (target = cv->first; target != NULL; target = target->next)
+    {
+      pthread_mutex_lock (&target->wait_mutex);
+      pthread_cond_signal (&target->wait_cond);
+      pthread_mutex_unlock (&target->wait_mutex);
+
+      if (prev != NULL)
+	prev->next = NULL;
+      prev = target;
+    }
+  if (prev != NULL)
+    prev->next = NULL;
+    
+  cv->first = NULL;
+
+  return 0;
+}
+
+void
+_Jv_ThreadInterrupt (_Jv_Thread_t *data)
+{
+  pthread_mutex_lock (&data->wait_mutex);
+
+  // Set the thread's interrupted flag *after* aquiring its wait_mutex. This
+  // ensures that there are no races with the interrupt flag being set after 
+  // the waiting thread checks it and before pthread_cond_wait is entered.
+  data->thread_obj->interrupt_flag = true;
+
+  // Interrupt blocking system calls using a signal.
+  pthread_kill (data->thread, INTR);
+  
+  pthread_cond_signal (&data->wait_cond);
+  
+  pthread_mutex_unlock (&data->wait_mutex);
+}
+
+static void
+handle_intr (int)
+{
+  // Do nothing.
+}
+
+static void
+block_sigchld()
+{
+  sigset_t mask;
+  sigemptyset (&mask);
+  sigaddset (&mask, SIGCHLD);
+  int c = pthread_sigmask (SIG_BLOCK, &mask, NULL);
+  if (c != 0)
+    JvFail (strerror (c));
+}
+
+void
+_Jv_InitThreads (void)
+{
+  pthread_key_create (&_Jv_ThreadKey, NULL);
+  pthread_key_create (&_Jv_ThreadDataKey, NULL);
+  pthread_mutex_init (&daemon_mutex, NULL);
+  pthread_cond_init (&daemon_cond, 0);
+  non_daemon_count = 0;
+
+  // Arrange for the interrupt signal to interrupt system calls.
+  struct sigaction act;
+  act.sa_handler = handle_intr;
+  sigemptyset (&act.sa_mask);
+  act.sa_flags = 0;
+  sigaction (INTR, &act, NULL);
+
+  // Block SIGCHLD here to ensure that any non-Java threads inherit the new 
+  // signal mask.
+  block_sigchld();
+
+  // Check/set the thread stack size.
+  size_t min_ss = 32 * 1024;
+  
+  if (sizeof (void *) == 8)
+    // Bigger default on 64-bit systems.
+    min_ss *= 2;
+
+#ifdef PTHREAD_STACK_MIN
+  if (min_ss < PTHREAD_STACK_MIN)
+    min_ss = PTHREAD_STACK_MIN;
+#endif
+  
+  if (gcj::stack_size > 0 && gcj::stack_size < min_ss)
+    gcj::stack_size = min_ss;
+}
+
+_Jv_Thread_t *
+_Jv_ThreadInitData (java::lang::Thread *obj)
+{
+  _Jv_Thread_t *data = (_Jv_Thread_t *) _Jv_Malloc (sizeof (_Jv_Thread_t));
+  data->flags = 0;
+  data->thread_obj = obj;
+
+  pthread_mutex_init (&data->wait_mutex, NULL);
+  pthread_cond_init (&data->wait_cond, NULL);
+
+  return data;
+}
+
+void
+_Jv_ThreadDestroyData (_Jv_Thread_t *data)
+{
+  pthread_mutex_destroy (&data->wait_mutex);
+  pthread_cond_destroy (&data->wait_cond);
+  _Jv_Free ((void *)data);
+}
+
+void
+_Jv_ThreadSetPriority (_Jv_Thread_t *data, jint prio)
+{
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+  if (data->flags & FLAG_START)
+    {
+      struct sched_param param;
+
+      param.sched_priority = prio;
+      pthread_setschedparam (data->thread, SCHED_OTHER, &param);
+    }
+#endif
+}
+
+void
+_Jv_ThreadRegister (_Jv_Thread_t *data)
+{
+  pthread_setspecific (_Jv_ThreadKey, data->thread_obj);
+  pthread_setspecific (_Jv_ThreadDataKey, data);
+
+  // glibc 2.1.3 doesn't set the value of `thread' until after start_routine
+  // is called. Since it may need to be accessed from the new thread, work 
+  // around the potential race here by explicitly setting it again.
+  data->thread = pthread_self ();
+
+# ifdef SLOW_PTHREAD_SELF
+    // Clear all self cache slots that might be needed by this thread.
+    int dummy;
+    int low_index = SC_INDEX(&dummy) + SC_CLEAR_MIN;
+    int high_index = SC_INDEX(&dummy) + SC_CLEAR_MAX;
+    for (int i = low_index; i <= high_index; ++i) 
+      {
+        int current_index = i;
+	if (current_index < 0)
+	  current_index += SELF_CACHE_SIZE;
+	if (current_index >= SELF_CACHE_SIZE)
+	  current_index -= SELF_CACHE_SIZE;
+	_Jv_self_cache[current_index].high_sp_bits = BAD_HIGH_SP_VALUE;
+      }
+# endif
+  // Block SIGCHLD which is used in natPosixProcess.cc.
+  block_sigchld();
+}
+
+void
+_Jv_ThreadUnRegister ()
+{
+  pthread_setspecific (_Jv_ThreadKey, NULL);
+  pthread_setspecific (_Jv_ThreadDataKey, NULL);
+}
+
+// This function is called when a thread is started.  We don't arrange
+// to call the `run' method directly, because this function must
+// return a value.
+static void *
+really_start (void *x)
+{
+  struct starter *info = (struct starter *) x;
+
+  _Jv_ThreadRegister (info->data);
+
+  info->method (info->data->thread_obj);
+
+  if (! (info->data->flags & FLAG_DAEMON))
+    {
+      pthread_mutex_lock (&daemon_mutex);
+      --non_daemon_count;
+      if (! non_daemon_count)
+	pthread_cond_signal (&daemon_cond);
+      pthread_mutex_unlock (&daemon_mutex);
+    }
+
+  return NULL;
+}
+
+void
+_Jv_ThreadStart (java::lang::Thread *thread, _Jv_Thread_t *data,
+		 _Jv_ThreadStartFunc *meth)
+{
+  struct sched_param param;
+  pthread_attr_t attr;
+  struct starter *info;
+
+  if (data->flags & FLAG_START)
+    return;
+  data->flags |= FLAG_START;
+
+  // Block SIGCHLD which is used in natPosixProcess.cc.
+  // The current mask is inherited by the child thread.
+  block_sigchld();
+
+  param.sched_priority = thread->getPriority();
+
+  pthread_attr_init (&attr);
+  pthread_attr_setschedparam (&attr, &param);
+  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+  
+  // Set stack size if -Xss option was given.
+  if (gcj::stack_size > 0)
+    {
+      int e = pthread_attr_setstacksize (&attr, gcj::stack_size);
+      if (e != 0)
+	JvFail (strerror (e));
+    }
+
+  info = (struct starter *) _Jv_AllocBytes (sizeof (struct starter));
+  info->method = meth;
+  info->data = data;
+
+  if (! thread->isDaemon())
+    {
+      pthread_mutex_lock (&daemon_mutex);
+      ++non_daemon_count;
+      pthread_mutex_unlock (&daemon_mutex);
+    }
+  else
+    data->flags |= FLAG_DAEMON;
+  int r = pthread_create (&data->thread, &attr, really_start, (void *) info);
+  
+  pthread_attr_destroy (&attr);
+
+  if (r)
+    {
+      const char* msg = "Cannot create additional threads";
+      throw new java::lang::OutOfMemoryError (JvNewStringUTF (msg));
+    }
+}
+
+void
+_Jv_ThreadWait (void)
+{
+  pthread_mutex_lock (&daemon_mutex);
+  if (non_daemon_count)
+    pthread_cond_wait (&daemon_cond, &daemon_mutex);
+  pthread_mutex_unlock (&daemon_mutex);
+}
+
+#if defined(SLOW_PTHREAD_SELF)
+
+#include "sysdep/locks.h"
+
+// Support for pthread_self() lookup cache.
+volatile self_cache_entry _Jv_self_cache[SELF_CACHE_SIZE];
+
+_Jv_ThreadId_t
+_Jv_ThreadSelf_out_of_line(volatile self_cache_entry *sce, size_t high_sp_bits)
+{
+  pthread_t self = pthread_self();
+  sce -> high_sp_bits = high_sp_bits;
+  write_barrier();
+  sce -> self = self;
+  return self;
+}
+
+#endif /* SLOW_PTHREAD_SELF */

Added: llvm-gcc-4.2/trunk/libjava/posix.cc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/posix.cc?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/posix.cc (added)
+++ llvm-gcc-4.2/trunk/libjava/posix.cc Thu Nov  8 16:56:19 2007
@@ -0,0 +1,246 @@
+// posix.cc -- Helper functions for POSIX-flavored OSs.
+
+/* Copyright (C) 2000, 2001, 2002, 2006  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#include <config.h>
+
+#include "posix.h"
+
+#include <stdlib.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <jvm.h>
+#include <java-stack.h>
+#include <java/lang/Thread.h>
+#include <java/io/InterruptedIOException.h>
+#include <java/util/Properties.h>
+
+#if defined (ECOS)
+extern "C" unsigned long long _clock (void);
+#endif
+
+#if defined(HAVE_PROC_SELF_EXE)
+static char exec_name[20];
+  // initialized in _Jv_platform_initialize()
+#endif
+
+const char *_Jv_ThisExecutable (void)
+{
+#if defined(DISABLE_MAIN_ARGS)
+  return "[Embedded App]";
+#elif defined(HAVE_PROC_SELF_EXE)
+  return exec_name;
+    // initialized in _Jv_platform_initialize()
+#else
+  return _Jv_GetSafeArg (0);
+#endif
+}
+
+// gettimeofday implementation.
+jlong
+_Jv_platform_gettimeofday ()
+{
+#if defined (HAVE_GETTIMEOFDAY)
+  timeval tv;
+  gettimeofday (&tv, NULL);
+  return (tv.tv_sec * 1000LL) + (tv.tv_usec / 1000LL);
+#elif defined (HAVE_TIME)
+  return time (NULL) * 1000LL;
+#elif defined (HAVE_FTIME)
+  struct timeb t;
+  ftime (&t);
+  return (t.time * 1000LL) + t.millitm;
+#elif defined (ECOS)
+  // FIXME.
+  return _clock();
+#else
+  // In the absence of any function, time remains forever fixed.
+  return 23000;
+#endif
+}
+
+jlong
+_Jv_platform_nanotime ()
+{
+#ifdef HAVE_CLOCK_GETTIME
+  struct timespec now;
+  clockid_t id;
+#ifdef CLOCK_MONOTONIC
+  id = CLOCK_MONOTONIC;
+#elif defined (CLOCK_HIGHRES)
+  id = CLOCK_HIGHRES;
+#else
+  id = CLOCK_REALTIME;
+#endif
+  if (clock_gettime (id, &now) == 0)
+    {
+      jlong result = (jlong) now.tv_sec;
+      result = result * 1000000000LL + now.tv_nsec;
+      return result;
+    }
+  // clock_gettime failed, but we can fall through.
+#endif // HAVE_CLOCK_GETTIME
+#if defined (HAVE_GETTIMEOFDAY)
+ {
+   timeval tv;
+   gettimeofday (&tv, NULL);
+   return (tv.tv_sec * 1000000000LL) + tv.tv_usec * 1000LL;
+ }
+#else
+  return _Jv_platform_gettimeofday () * 1000000LL;
+#endif
+}
+
+// Platform-specific VM initialization.
+void
+_Jv_platform_initialize (void)
+{
+#if defined (HAVE_SIGACTION)
+  // We only want this on POSIX systems.
+  struct sigaction act;
+  act.sa_handler = SIG_IGN;
+  sigemptyset (&act.sa_mask);
+  act.sa_flags = 0;
+  sigaction (SIGPIPE, &act, NULL);
+#else
+  signal (SIGPIPE, SIG_IGN);
+#endif
+
+#if defined (HAVE_PROC_SELF_EXE)
+  // Compute our executable name
+  sprintf (exec_name, "/proc/%d/exe", getpid ());
+#endif
+}
+
+// Set platform-specific System properties.
+void
+_Jv_platform_initProperties (java::util::Properties* newprops)
+{
+  // A convenience define.
+#define SET(Prop,Val) \
+  newprops->put(JvNewStringLatin1 (Prop), JvNewStringLatin1 (Val))
+
+  SET ("file.separator", "/");
+  SET ("path.separator", ":");
+  SET ("line.separator", "\n");
+  const char *tmpdir = ::getenv("TMPDIR");
+  if (! tmpdir)
+    tmpdir = "/tmp";
+  SET ("java.io.tmpdir", tmpdir);
+}
+
+static inline void
+internal_gettimeofday (struct timeval *result)
+{
+#if defined (HAVE_GETTIMEOFDAY)
+  gettimeofday (result, NULL);
+#else
+  jlong val = _Jv_platform_gettimeofday ();
+  result->tv_sec = val / 1000;
+  result->tv_usec = (val % 1000) * 1000;
+#endif /* HAVE_GETTIMEOFDAY */
+}
+
+// A wrapper for select() which ignores EINTR.
+int
+_Jv_select (int n, fd_set *readfds, fd_set  *writefds,
+	    fd_set *exceptfds, struct timeval *timeout)
+{
+#ifdef HAVE_SELECT
+  // If we have a timeout, compute the absolute ending time.
+  struct timeval end, delay;
+  if (timeout)
+    {
+      internal_gettimeofday (&end);
+      end.tv_usec += timeout->tv_usec;
+      if (end.tv_usec >= 1000000)
+	{
+	  ++end.tv_sec;
+	  end.tv_usec -= 1000000;
+	}
+      end.tv_sec += timeout->tv_sec;
+      delay = *timeout;
+    }
+  else
+    {
+      // Placate compiler.
+      delay.tv_sec = delay.tv_usec = 0;
+    }
+
+  while (1)
+    {
+      int r = select (n, readfds, writefds, exceptfds,
+		      timeout ? &delay : NULL);
+      if (r != -1 || errno != EINTR)
+	return r;
+
+      // Here we know we got EINTR.
+      if (java::lang::Thread::interrupted ())
+	throw new java::io::InterruptedIOException (JvNewStringLatin1 ("select interrupted"));
+
+      struct timeval after;
+      if (timeout)
+	{
+	  internal_gettimeofday (&after);
+	  // Now compute new timeout argument.
+	  delay.tv_usec = end.tv_usec - after.tv_usec;
+	  delay.tv_sec = end.tv_sec - after.tv_sec;
+	  if (delay.tv_usec < 0)
+	    {
+	      --delay.tv_sec;
+	      delay.tv_usec += 1000000;
+	    }
+	  if (delay.tv_sec < 0)
+	    {
+	      // We assume that the user wants a valid select() call
+	      // more than precise timing.  So if we get a series of
+	      // EINTR we just keep trying with delay 0 until we get a
+	      // valid result.
+	      delay.tv_sec = 0;
+	    }
+	}
+    }
+#else /* HAVE_SELECT */
+  return 0;
+#endif
+}
+
+// Given an address, find the object that defines it and the nearest
+// defined symbol to that address.  Returns 0 if no object defines this
+// address.
+int
+_Jv_platform_dladdr (void *addr, _Jv_AddrInfo *info)
+{
+  int ret_val = 0;
+
+#if defined (HAVE_DLFCN_H) && defined (HAVE_DLADDR)
+  Dl_info addr_info;
+  ret_val = dladdr (addr, &addr_info);
+  if (ret_val != 0)
+    {
+      info->file_name = addr_info.dli_fname;
+      info->base = addr_info.dli_fbase;
+      info->sym_name = addr_info.dli_sname;
+      info->sym_addr = addr_info.dli_saddr;
+    }
+#else
+  info->file_name = NULL;
+  info->base = NULL;
+  info->sym_name = NULL;
+  info->sym_addr = NULL;
+#endif
+
+  return ret_val;
+}

Added: llvm-gcc-4.2/trunk/libjava/prims.cc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/prims.cc?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/prims.cc (added)
+++ llvm-gcc-4.2/trunk/libjava/prims.cc Thu Nov  8 16:56:19 2007
@@ -0,0 +1,1810 @@
+// prims.cc - Code for core of runtime environment.
+
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#include <config.h>
+#include <platform.h>
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <signal.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <gcj/cni.h>
+#include <jvm.h>
+#include <java-signal.h>
+#include <java-threads.h>
+#include <java-interp.h>
+
+#ifdef ENABLE_JVMPI
+#include <jvmpi.h>
+#include <java/lang/ThreadGroup.h>
+#endif
+
+#ifndef DISABLE_GETENV_PROPERTIES
+#include <ctype.h>
+#include <java-props.h>
+#define PROCESS_GCJ_PROPERTIES process_gcj_properties()
+#else
+#define PROCESS_GCJ_PROPERTIES
+#endif // DISABLE_GETENV_PROPERTIES
+
+#include <java/lang/Class.h>
+#include <java/lang/ClassLoader.h>
+#include <java/lang/Runtime.h>
+#include <java/lang/String.h>
+#include <java/lang/Thread.h>
+#include <java/lang/ThreadGroup.h>
+#include <java/lang/ArrayIndexOutOfBoundsException.h>
+#include <java/lang/ArithmeticException.h>
+#include <java/lang/ClassFormatError.h>
+#include <java/lang/ClassNotFoundException.h>
+#include <java/lang/InternalError.h>
+#include <java/lang/NegativeArraySizeException.h>
+#include <java/lang/NoClassDefFoundError.h>
+#include <java/lang/NullPointerException.h>
+#include <java/lang/OutOfMemoryError.h>
+#include <java/lang/System.h>
+#include <java/lang/VMClassLoader.h>
+#include <java/lang/reflect/Modifier.h>
+#include <java/io/PrintStream.h>
+#include <java/lang/UnsatisfiedLinkError.h>
+#include <java/lang/VirtualMachineError.h>
+#include <gnu/gcj/runtime/ExtensionClassLoader.h>
+#include <gnu/gcj/runtime/FinalizerThread.h>
+#include <execution.h>
+#include <gnu/classpath/jdwp/Jdwp.h>
+#include <gnu/classpath/jdwp/VMVirtualMachine.h>
+#include <gnu/classpath/jdwp/event/VmDeathEvent.h>
+#include <gnu/classpath/jdwp/event/VmInitEvent.h>
+#include <gnu/java/lang/MainThread.h>
+
+#ifdef USE_LTDL
+#include <ltdl.h>
+#endif
+
+// Execution engine for compiled code.
+_Jv_CompiledEngine _Jv_soleCompiledEngine;
+
+// Execution engine for code compiled with -findirect-classes
+_Jv_IndirectCompiledEngine _Jv_soleIndirectCompiledEngine;
+
+// We allocate a single OutOfMemoryError exception which we keep
+// around for use if we run out of memory.
+static java::lang::OutOfMemoryError *no_memory;
+
+// Number of bytes in largest array object we create.  This could be
+// increased to the largest size_t value, so long as the appropriate
+// functions are changed to take a size_t argument instead of jint.
+#define MAX_OBJECT_SIZE ((1<<31) - 1)
+
+// Properties set at compile time.
+const char **_Jv_Compiler_Properties = NULL;
+int _Jv_Properties_Count = 0;
+
+#ifndef DISABLE_GETENV_PROPERTIES
+// Property key/value pairs.
+property_pair *_Jv_Environment_Properties;
+#endif
+
+// Stash the argv pointer to benefit native libraries that need it.
+const char **_Jv_argv;
+int _Jv_argc;
+
+// Debugging options
+static bool remoteDebug = false;
+static char *jdwpOptions = "";
+
+// Argument support.
+int
+_Jv_GetNbArgs (void)
+{
+  // _Jv_argc is 0 if not explicitly initialized.
+  return _Jv_argc;
+}
+
+const char *
+_Jv_GetSafeArg (int index)
+{
+  if (index >=0 && index < _Jv_GetNbArgs ())
+    return _Jv_argv[index];
+  else
+    return "";
+}
+
+void
+_Jv_SetArgs (int argc, const char **argv)
+{
+  _Jv_argc = argc;
+  _Jv_argv = argv;
+}
+
+#ifdef ENABLE_JVMPI
+// Pointer to JVMPI notification functions.
+void (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (JVMPI_Event *event);
+void (*_Jv_JVMPI_Notify_THREAD_START) (JVMPI_Event *event);
+void (*_Jv_JVMPI_Notify_THREAD_END) (JVMPI_Event *event);
+#endif
+
+
+#if defined (HANDLE_SEGV) || defined(HANDLE_FPE)
+/* Unblock a signal.  Unless we do this, the signal may only be sent
+   once.  */
+static void 
+unblock_signal (int signum __attribute__ ((__unused__)))
+{
+#ifdef _POSIX_VERSION
+  sigset_t sigs;
+
+  sigemptyset (&sigs);
+  sigaddset (&sigs, signum);
+  sigprocmask (SIG_UNBLOCK, &sigs, NULL);
+#endif
+}
+#endif
+
+#ifdef HANDLE_SEGV
+SIGNAL_HANDLER (catch_segv)
+{
+  unblock_signal (SIGSEGV);
+  MAKE_THROW_FRAME (nullp);
+  java::lang::NullPointerException *nullp 
+    = new java::lang::NullPointerException;
+  throw nullp;
+}
+#endif
+
+#ifdef HANDLE_FPE
+SIGNAL_HANDLER (catch_fpe)
+{
+  unblock_signal (SIGFPE);
+#ifdef HANDLE_DIVIDE_OVERFLOW
+  HANDLE_DIVIDE_OVERFLOW;
+#else
+  MAKE_THROW_FRAME (arithexception);
+#endif
+  java::lang::ArithmeticException *arithexception 
+    = new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));
+  throw arithexception;
+}
+#endif
+
+
+jboolean
+_Jv_equalUtf8Consts (const Utf8Const* a, const Utf8Const *b)
+{
+  int len;
+  const _Jv_ushort *aptr, *bptr;
+  if (a == b)
+    return true;
+  if (a->hash != b->hash)
+    return false;
+  len = a->length;
+  if (b->length != len)
+    return false;
+  aptr = (const _Jv_ushort *)a->data;
+  bptr = (const _Jv_ushort *)b->data;
+  len = (len + 1) >> 1;
+  while (--len >= 0)
+    if (*aptr++ != *bptr++)
+      return false;
+  return true;
+}
+
+/* True iff A is equal to STR.
+   HASH is STR->hashCode().  
+*/
+
+jboolean
+_Jv_equal (Utf8Const* a, jstring str, jint hash)
+{
+  if (a->hash != (_Jv_ushort) hash)
+    return false;
+  jint len = str->length();
+  jint i = 0;
+  jchar *sptr = _Jv_GetStringChars (str);
+  unsigned char* ptr = (unsigned char*) a->data;
+  unsigned char* limit = ptr + a->length;
+  for (;; i++, sptr++)
+    {
+      int ch = UTF8_GET (ptr, limit);
+      if (i == len)
+	return ch < 0;
+      if (ch != *sptr)
+	return false;
+    }
+  return true;
+}
+
+/* Like _Jv_equal, but stop after N characters.  */
+jboolean
+_Jv_equaln (Utf8Const *a, jstring str, jint n)
+{
+  jint len = str->length();
+  jint i = 0;
+  jchar *sptr = _Jv_GetStringChars (str);
+  unsigned char* ptr = (unsigned char*) a->data;
+  unsigned char* limit = ptr + a->length;
+  for (; n-- > 0; i++, sptr++)
+    {
+      int ch = UTF8_GET (ptr, limit);
+      if (i == len)
+	return ch < 0;
+      if (ch != *sptr)
+	return false;
+    }
+  return true;
+}
+
+// Determines whether the given Utf8Const object contains
+// a type which is primitive or some derived form of it, eg.
+// an array or multi-dimensional array variant.
+jboolean
+_Jv_isPrimitiveOrDerived(const Utf8Const *a)
+{
+  unsigned char *aptr = (unsigned char *) a->data;
+  unsigned char *alimit = aptr + a->length;
+  int ac = UTF8_GET(aptr, alimit);
+
+  // Skips any leading array marks.
+  while (ac == '[')
+    ac = UTF8_GET(aptr, alimit);
+
+  // There should not be another character. This implies that
+  // the type name is only one character long.
+  if (UTF8_GET(aptr, alimit) == -1)
+    switch ( ac )
+      {
+        case 'Z':
+        case 'B':
+        case 'C':
+        case 'S':
+        case 'I':
+        case 'J':
+        case 'F':
+        case 'D':
+          return true;
+        default:
+          break;
+       }
+
+   return false;
+}
+
+// Find out whether two _Jv_Utf8Const candidates contain the same
+// classname.
+// The method is written to handle the different formats of classnames.
+// Eg. "Ljava/lang/Class;", "Ljava.lang.Class;", "java/lang/Class" and
+// "java.lang.Class" will be seen as equal.
+// Warning: This function is not smart enough to declare "Z" and "boolean"
+// and similar cases as equal (and is not meant to be used this way)!
+jboolean
+_Jv_equalUtf8Classnames (const Utf8Const *a, const Utf8Const *b)
+{
+  // If the class name's length differs by two characters
+  // it is possible that we have candidates which are given
+  // in the two different formats ("Lp1/p2/cn;" vs. "p1/p2/cn")
+  switch (a->length - b->length)
+    {
+      case -2:
+      case 0:
+      case 2:
+        break;
+      default:
+        return false;
+    }
+
+  unsigned char *aptr = (unsigned char *) a->data;
+  unsigned char *alimit = aptr + a->length;
+  unsigned char *bptr = (unsigned char *) b->data;
+  unsigned char *blimit = bptr + b->length;
+
+  if (alimit[-1] == ';')
+    alimit--;
+
+  if (blimit[-1] == ';')
+    blimit--;
+
+  int ac = UTF8_GET(aptr, alimit);
+  int bc = UTF8_GET(bptr, blimit);
+
+  // Checks whether both strings have the same amount of leading [ characters.
+  while (ac == '[')
+    {
+      if (bc == '[')
+        {
+          ac = UTF8_GET(aptr, alimit);
+          bc = UTF8_GET(bptr, blimit);
+          continue;
+        }
+
+      return false;
+    }
+
+  // Skips leading L character.
+  if (ac == 'L')
+    ac = UTF8_GET(aptr, alimit);
+        
+  if (bc == 'L')
+    bc = UTF8_GET(bptr, blimit);
+
+  // Compares the remaining characters.
+  while (ac != -1 && bc != -1)
+    {
+      // Replaces package separating dots with slashes.
+      if (ac == '.')
+        ac = '/';
+
+      if (bc == '.')
+        bc = '/';
+      
+      // Now classnames differ if there is at least one non-matching
+      // character.
+      if (ac != bc)
+        return false;
+
+      ac = UTF8_GET(aptr, alimit);
+      bc = UTF8_GET(bptr, blimit);
+    }
+
+  return (ac == bc);
+}
+
+/* Count the number of Unicode chars encoded in a given Ut8 string. */
+int
+_Jv_strLengthUtf8(const char* str, int len)
+{
+  unsigned char* ptr;
+  unsigned char* limit;
+  int str_length;
+
+  ptr = (unsigned char*) str;
+  limit = ptr + len;
+  str_length = 0;
+  for (; ptr < limit; str_length++)
+    {
+      if (UTF8_GET (ptr, limit) < 0)
+	return (-1);
+    }
+  return (str_length);
+}
+
+/* Calculate a hash value for a string encoded in Utf8 format.
+ * This returns the same hash value as specified or java.lang.String.hashCode.
+ */
+jint
+_Jv_hashUtf8String (const char* str, int len)
+{
+  unsigned char* ptr = (unsigned char*) str;
+  unsigned char* limit = ptr + len;
+  jint hash = 0;
+
+  for (; ptr < limit;)
+    {
+      int ch = UTF8_GET (ptr, limit);
+      /* Updated specification from
+	 http://www.javasoft.com/docs/books/jls/clarify.html. */
+      hash = (31 * hash) + ch;
+    }
+  return hash;
+}
+
+void
+_Jv_Utf8Const::init(const char *s, int len)
+{
+  ::memcpy (data, s, len);
+  data[len] = 0;
+  length = len;
+  hash = _Jv_hashUtf8String (s, len) & 0xFFFF;
+}
+
+_Jv_Utf8Const *
+_Jv_makeUtf8Const (const char* s, int len)
+{
+  if (len < 0)
+    len = strlen (s);
+  Utf8Const* m
+    = (Utf8Const*) _Jv_AllocBytes (_Jv_Utf8Const::space_needed(s, len));
+  m->init(s, len);
+  return m;
+}
+
+_Jv_Utf8Const *
+_Jv_makeUtf8Const (jstring string)
+{
+  jint hash = string->hashCode ();
+  jint len = _Jv_GetStringUTFLength (string);
+
+  Utf8Const* m = (Utf8Const*)
+    _Jv_AllocBytes (sizeof(Utf8Const) + len + 1);
+
+  m->hash = hash;
+  m->length = len;
+
+  _Jv_GetStringUTFRegion (string, 0, string->length (), m->data);
+  m->data[len] = 0;
+  
+  return m;
+}
+
+
+
+#ifdef DEBUG
+void
+_Jv_Abort (const char *function, const char *file, int line,
+	   const char *message)
+#else
+void
+_Jv_Abort (const char *, const char *, int, const char *message)
+#endif
+{
+#ifdef DEBUG
+  fprintf (stderr,
+	   "libgcj failure: %s\n   in function %s, file %s, line %d\n",
+	   message, function, file, line);
+#else
+  fprintf (stderr, "libgcj failure: %s\n", message);
+#endif
+  abort ();
+}
+
+static void
+fail_on_finalization (jobject)
+{
+  JvFail ("object was finalized");
+}
+
+void
+_Jv_GCWatch (jobject obj)
+{
+  _Jv_RegisterFinalizer (obj, fail_on_finalization);
+}
+
+void
+_Jv_ThrowBadArrayIndex(jint bad_index)
+{
+  throw new java::lang::ArrayIndexOutOfBoundsException
+    (java::lang::String::valueOf (bad_index));
+}
+
+void
+_Jv_ThrowNullPointerException ()
+{
+  throw new java::lang::NullPointerException;
+}
+
+// Resolve an entry in the constant pool and return the target
+// address.
+void *
+_Jv_ResolvePoolEntry (jclass this_class, jint index)
+{
+  _Jv_Constants *pool = &this_class->constants;
+
+  if ((pool->tags[index] & JV_CONSTANT_ResolvedFlag) != 0)
+    return pool->data[index].field->u.addr;
+
+  JvSynchronize sync (this_class);
+  return (_Jv_Linker::resolve_pool_entry (this_class, index))
+    .field->u.addr;
+}
+
+
+// Explicitly throw a no memory exception.
+// The collector calls this when it encounters an out-of-memory condition.
+void _Jv_ThrowNoMemory()
+{
+  throw no_memory;
+}
+
+#ifdef ENABLE_JVMPI
+# define JVMPI_NOTIFY_ALLOC(klass,size,obj) \
+    if (__builtin_expect (_Jv_JVMPI_Notify_OBJECT_ALLOC != 0, false)) \
+      jvmpi_notify_alloc(klass,size,obj);
+static void
+jvmpi_notify_alloc(jclass klass, jint size, jobject obj)
+{
+  // Service JVMPI allocation request.
+  JVMPI_Event event;
+
+  event.event_type = JVMPI_EVENT_OBJECT_ALLOC;
+  event.env_id = NULL;
+  event.u.obj_alloc.arena_id = 0;
+  event.u.obj_alloc.class_id = (jobjectID) klass;
+  event.u.obj_alloc.is_array = 0;
+  event.u.obj_alloc.size = size;
+  event.u.obj_alloc.obj_id = (jobjectID) obj;
+
+  // FIXME:  This doesn't look right for the Boehm GC.  A GC may
+  // already be in progress.  _Jv_DisableGC () doesn't wait for it.
+  // More importantly, I don't see the need for disabling GC, since we
+  // blatantly have a pointer to obj on our stack, ensuring that the
+  // object can't be collected.  Even for a nonconservative collector,
+  // it appears to me that this must be true, since we are about to
+  // return obj. Isn't this whole approach way too intrusive for
+  // a useful profiling interface?			- HB
+  _Jv_DisableGC ();
+  (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (&event);
+  _Jv_EnableGC ();
+}
+#else /* !ENABLE_JVMPI */
+# define JVMPI_NOTIFY_ALLOC(klass,size,obj) /* do nothing */
+#endif
+
+// Allocate a new object of class KLASS.
+// First a version that assumes that we have no finalizer, and that
+// the class is already initialized.
+// If we know that JVMPI is disabled, this can be replaced by a direct call
+// to the allocator for the appropriate GC.
+jobject
+_Jv_AllocObjectNoInitNoFinalizer (jclass klass)
+{
+  jint size = klass->size ();
+  jobject obj = (jobject) _Jv_AllocObj (size, klass);
+  JVMPI_NOTIFY_ALLOC (klass, size, obj);
+  return obj;
+}
+
+// And now a version that initializes if necessary.
+jobject
+_Jv_AllocObjectNoFinalizer (jclass klass)
+{
+  if (_Jv_IsPhantomClass(klass) )
+    throw new java::lang::NoClassDefFoundError(klass->getName());
+
+  _Jv_InitClass (klass);
+  jint size = klass->size ();
+  jobject obj = (jobject) _Jv_AllocObj (size, klass);
+  JVMPI_NOTIFY_ALLOC (klass, size, obj);
+  return obj;
+}
+
+// And now the general version that registers a finalizer if necessary.
+jobject
+_Jv_AllocObject (jclass klass)
+{
+  jobject obj = _Jv_AllocObjectNoFinalizer (klass);
+  
+  // We assume that the compiler only generates calls to this routine
+  // if there really is an interesting finalizer.
+  // Unfortunately, we still have to the dynamic test, since there may
+  // be cni calls to this routine.
+  // Note that on IA64 get_finalizer() returns the starting address of the
+  // function, not a function pointer.  Thus this still works.
+  if (klass->vtable->get_finalizer ()
+      != java::lang::Object::class$.vtable->get_finalizer ())
+    _Jv_RegisterFinalizer (obj, _Jv_FinalizeObject);
+  return obj;
+}
+
+// Allocate a String, including variable length storage.
+jstring
+_Jv_AllocString(jsize len)
+{
+  using namespace java::lang;
+
+  jsize sz = sizeof(java::lang::String) + len * sizeof(jchar);
+
+  // We assert that for strings allocated this way, the data field
+  // will always point to the object itself.  Thus there is no reason
+  // for the garbage collector to scan any of it.
+  // Furthermore, we're about to overwrite the string data, so
+  // initialization of the object is not an issue.
+
+  // String needs no initialization, and there is no finalizer, so
+  // we can go directly to the collector's allocator interface.
+  jstring obj = (jstring) _Jv_AllocPtrFreeObj(sz, &String::class$);
+
+  obj->data = obj;
+  obj->boffset = sizeof(java::lang::String);
+  obj->count = len;
+  obj->cachedHashCode = 0;
+
+  JVMPI_NOTIFY_ALLOC (&String::class$, sz, obj);
+  
+  return obj;
+}
+
+// A version of the above that assumes the object contains no pointers,
+// and requires no finalization.  This can't happen if we need pointers
+// to locks.
+#ifdef JV_HASH_SYNCHRONIZATION
+jobject
+_Jv_AllocPtrFreeObject (jclass klass)
+{
+  _Jv_InitClass (klass);
+  jint size = klass->size ();
+
+  jobject obj = (jobject) _Jv_AllocPtrFreeObj (size, klass);
+
+  JVMPI_NOTIFY_ALLOC (klass, size, obj);
+
+  return obj;
+}
+#endif /* JV_HASH_SYNCHRONIZATION */
+
+
+// Allocate a new array of Java objects.  Each object is of type
+// `elementClass'.  `init' is used to initialize each slot in the
+// array.
+jobjectArray
+_Jv_NewObjectArray (jsize count, jclass elementClass, jobject init)
+{
+  // Creating an array of an unresolved type is impossible. So we throw
+  // the NoClassDefFoundError.
+  if ( _Jv_IsPhantomClass(elementClass) )
+    throw new java::lang::NoClassDefFoundError(elementClass->getName());
+
+  if (__builtin_expect (count < 0, false))
+    throw new java::lang::NegativeArraySizeException;
+
+  JvAssert (! elementClass->isPrimitive ());
+
+  // Ensure that elements pointer is properly aligned.
+  jobjectArray obj = NULL;
+  size_t size = (size_t) elements (obj);
+  // Check for overflow.
+  if (__builtin_expect ((size_t) count > 
+			(MAX_OBJECT_SIZE - 1 - size) / sizeof (jobject), false))
+    throw no_memory;
+
+  size += count * sizeof (jobject);
+
+  jclass klass = _Jv_GetArrayClass (elementClass,
+				    elementClass->getClassLoaderInternal());
+
+  obj = (jobjectArray) _Jv_AllocArray (size, klass);
+  // Cast away const.
+  jsize *lp = const_cast<jsize *> (&obj->length);
+  *lp = count;
+  // We know the allocator returns zeroed memory.  So don't bother
+  // zeroing it again.
+  if (init)
+    {
+      jobject *ptr = elements(obj);
+      while (--count >= 0)
+	*ptr++ = init;
+    }
+  return obj;
+}
+
+// Allocate a new array of primitives.  ELTYPE is the type of the
+// element, COUNT is the size of the array.
+jobject
+_Jv_NewPrimArray (jclass eltype, jint count)
+{
+  int elsize = eltype->size();
+  if (__builtin_expect (count < 0, false))
+    throw new java::lang::NegativeArraySizeException;
+
+  JvAssert (eltype->isPrimitive ());
+  jobject dummy = NULL;
+  size_t size = (size_t) _Jv_GetArrayElementFromElementType (dummy, eltype);
+
+  // Check for overflow.
+  if (__builtin_expect ((size_t) count > 
+			(MAX_OBJECT_SIZE - size) / elsize, false))
+    throw no_memory;
+
+  jclass klass = _Jv_GetArrayClass (eltype, 0);
+
+# ifdef JV_HASH_SYNCHRONIZATION
+  // Since the vtable is always statically allocated,
+  // these are completely pointerfree!  Make sure the GC doesn't touch them.
+  __JArray *arr =
+    (__JArray*) _Jv_AllocPtrFreeObj (size + elsize * count, klass);
+  memset((char *)arr + size, 0, elsize * count);
+# else
+  __JArray *arr = (__JArray*) _Jv_AllocObj (size + elsize * count, klass);
+  // Note that we assume we are given zeroed memory by the allocator.
+# endif
+  // Cast away const.
+  jsize *lp = const_cast<jsize *> (&arr->length);
+  *lp = count;
+
+  return arr;
+}
+
+jobject
+_Jv_NewArray (jint type, jint size)
+{
+  switch (type)
+    {
+      case  4:  return JvNewBooleanArray (size);
+      case  5:  return JvNewCharArray (size);
+      case  6:  return JvNewFloatArray (size);
+      case  7:  return JvNewDoubleArray (size);
+      case  8:  return JvNewByteArray (size);
+      case  9:  return JvNewShortArray (size);
+      case 10:  return JvNewIntArray (size);
+      case 11:  return JvNewLongArray (size);
+    }
+  throw new java::lang::InternalError
+    (JvNewStringLatin1 ("invalid type code in _Jv_NewArray"));
+}
+
+// Allocate a possibly multi-dimensional array but don't check that
+// any array length is <0.
+static jobject
+_Jv_NewMultiArrayUnchecked (jclass type, jint dimensions, jint *sizes)
+{
+  JvAssert (type->isArray());
+  jclass element_type = type->getComponentType();
+  jobject result;
+  if (element_type->isPrimitive())
+    result = _Jv_NewPrimArray (element_type, sizes[0]);
+  else
+    result = _Jv_NewObjectArray (sizes[0], element_type, NULL);
+
+  if (dimensions > 1)
+    {
+      JvAssert (! element_type->isPrimitive());
+      JvAssert (element_type->isArray());
+      jobject *contents = elements ((jobjectArray) result);
+      for (int i = 0; i < sizes[0]; ++i)
+	contents[i] = _Jv_NewMultiArrayUnchecked (element_type, dimensions - 1,
+						  sizes + 1);
+    }
+
+  return result;
+}
+
+jobject
+_Jv_NewMultiArray (jclass type, jint dimensions, jint *sizes)
+{
+  for (int i = 0; i < dimensions; ++i)
+    if (sizes[i] < 0)
+      throw new java::lang::NegativeArraySizeException;
+
+  return _Jv_NewMultiArrayUnchecked (type, dimensions, sizes);
+}
+
+jobject
+_Jv_NewMultiArray (jclass array_type, jint dimensions, ...)
+{
+  // Creating an array of an unresolved type is impossible. So we throw
+  // the NoClassDefFoundError.
+  if (_Jv_IsPhantomClass(array_type))
+    throw new java::lang::NoClassDefFoundError(array_type->getName());
+
+  va_list args;
+  jint sizes[dimensions];
+  va_start (args, dimensions);
+  for (int i = 0; i < dimensions; ++i)
+    {
+      jint size = va_arg (args, jint);
+      if (size < 0)
+	throw new java::lang::NegativeArraySizeException;
+      sizes[i] = size;
+    }
+  va_end (args);
+
+  return _Jv_NewMultiArrayUnchecked (array_type, dimensions, sizes);
+}
+
+
+
+// Ensure 8-byte alignment, for hash synchronization.
+#define DECLARE_PRIM_TYPE(NAME)			\
+  java::lang::Class _Jv_##NAME##Class __attribute__ ((aligned (8)));
+
+DECLARE_PRIM_TYPE(byte)
+DECLARE_PRIM_TYPE(short)
+DECLARE_PRIM_TYPE(int)
+DECLARE_PRIM_TYPE(long)
+DECLARE_PRIM_TYPE(boolean)
+DECLARE_PRIM_TYPE(char)
+DECLARE_PRIM_TYPE(float)
+DECLARE_PRIM_TYPE(double)
+DECLARE_PRIM_TYPE(void)
+
+void
+_Jv_InitPrimClass (jclass cl, const char *cname, char sig, int len)
+{    
+  using namespace java::lang::reflect;
+
+  // We must set the vtable for the class; the Java constructor
+  // doesn't do this.
+  (*(_Jv_VTable **) cl) = java::lang::Class::class$.vtable;
+
+  // Initialize the fields we care about.  We do this in the same
+  // order they are declared in Class.h.
+  cl->name = _Jv_makeUtf8Const ((char *) cname, -1);
+  cl->accflags = Modifier::PUBLIC | Modifier::FINAL | Modifier::ABSTRACT;
+  cl->method_count = sig;
+  cl->size_in_bytes = len;
+  cl->vtable = JV_PRIMITIVE_VTABLE;
+  cl->state = JV_STATE_DONE;
+  cl->depth = -1;
+}
+
+jclass
+_Jv_FindClassFromSignature (char *sig, java::lang::ClassLoader *loader,
+			    char **endp)
+{
+  // First count arrays.
+  int array_count = 0;
+  while (*sig == '[')
+    {
+      ++sig;
+      ++array_count;
+    }
+
+  jclass result = NULL;
+  switch (*sig)
+    {
+    case 'B':
+      result = JvPrimClass (byte);
+      break;
+    case 'S':
+      result = JvPrimClass (short);
+      break;
+    case 'I':
+      result = JvPrimClass (int);
+      break;
+    case 'J':
+      result = JvPrimClass (long);
+      break;
+    case 'Z':
+      result = JvPrimClass (boolean);
+      break;
+    case 'C':
+      result = JvPrimClass (char);
+      break;
+    case 'F':
+      result = JvPrimClass (float);
+      break;
+    case 'D':
+      result = JvPrimClass (double);
+      break;
+    case 'V':
+      result = JvPrimClass (void);
+      break;
+    case 'L':
+      {
+	char *save = ++sig;
+	while (*sig && *sig != ';')
+	  ++sig;
+	// Do nothing if signature appears to be malformed.
+	if (*sig == ';')
+	  {
+	    _Jv_Utf8Const *name = _Jv_makeUtf8Const (save, sig - save);
+	    result = _Jv_FindClass (name, loader);
+	  }
+	break;
+      }
+    default:
+      // Do nothing -- bad signature.
+      break;
+    }
+
+  if (endp)
+    {
+      // Not really the "end", but the last valid character that we
+      // looked at.
+      *endp = sig;
+    }
+
+  if (! result)
+    return NULL;
+
+  // Find arrays.
+  while (array_count-- > 0)
+    result = _Jv_GetArrayClass (result, loader);
+  return result;
+}
+
+
+jclass
+_Jv_FindClassFromSignatureNoException (char *sig, java::lang::ClassLoader *loader,
+                                       char **endp)
+{
+  jclass klass;
+
+  try
+    {
+      klass = _Jv_FindClassFromSignature(sig, loader, endp);
+    }
+  catch (java::lang::NoClassDefFoundError *ncdfe)
+    {
+      return NULL;
+    }
+  catch (java::lang::ClassNotFoundException *cnfe)
+    {
+      return NULL;
+    }
+
+  return klass;
+}
+
+JArray<jstring> *
+JvConvertArgv (int argc, const char **argv)
+{
+  if (argc < 0)
+    argc = 0;
+  jobjectArray ar = JvNewObjectArray(argc, &java::lang::String::class$, NULL);
+  jobject *ptr = elements(ar);
+  jbyteArray bytes = NULL;
+  for (int i = 0;  i < argc;  i++)
+    {
+      const char *arg = argv[i];
+      int len = strlen (arg);
+      if (bytes == NULL || bytes->length < len)
+	bytes = JvNewByteArray (len);
+      jbyte *bytePtr = elements (bytes);
+      // We assume jbyte == char.
+      memcpy (bytePtr, arg, len);
+
+      // Now convert using the default encoding.
+      *ptr++ = new java::lang::String (bytes, 0, len);
+    }
+  return (JArray<jstring>*) ar;
+}
+
+// FIXME: These variables are static so that they will be
+// automatically scanned by the Boehm collector.  This is needed
+// because with qthreads the collector won't scan the initial stack --
+// it will only scan the qthreads stacks.
+
+// Command line arguments.
+static JArray<jstring> *arg_vec;
+
+// The primary thread.
+static java::lang::Thread *main_thread;
+
+#ifndef DISABLE_GETENV_PROPERTIES
+
+static char *
+next_property_key (char *s, size_t *length)
+{
+  size_t l = 0;
+
+  JvAssert (s);
+
+  // Skip over whitespace
+  while (isspace (*s))
+    s++;
+
+  // If we've reached the end, return NULL.  Also return NULL if for
+  // some reason we've come across a malformed property string.
+  if (*s == 0
+      || *s == ':'
+      || *s == '=')
+    return NULL;
+
+  // Determine the length of the property key.
+  while (s[l] != 0
+	 && ! isspace (s[l])
+	 && s[l] != ':'
+	 && s[l] != '=')
+    {
+      if (s[l] == '\\'
+	  && s[l+1] != 0)
+	l++;
+      l++;
+    }
+
+  *length = l;
+
+  return s;
+}
+
+static char *
+next_property_value (char *s, size_t *length)
+{
+  size_t l = 0;
+
+  JvAssert (s);
+
+  while (isspace (*s))
+    s++;
+
+  if (*s == ':'
+      || *s == '=')
+    s++;
+
+  while (isspace (*s))
+    s++;
+
+  // Determine the length of the property value.
+  while (s[l] != 0
+	 && ! isspace (s[l])
+	 && s[l] != ':'
+	 && s[l] != '=')
+    {
+      if (s[l] == '\\'
+	  && s[l+1] != 0)
+	l += 2;
+      else
+	l++;
+    }
+
+  *length = l;
+
+  return s;
+}
+
+static void
+process_gcj_properties ()
+{
+  char *props = getenv("GCJ_PROPERTIES");
+
+  if (NULL == props)
+    return;
+
+  // Later on we will write \0s into this string.  It is simplest to
+  // just duplicate it here.
+  props = strdup (props);
+
+  char *p = props;
+  size_t length;
+  size_t property_count = 0;
+
+  // Whip through props quickly in order to count the number of
+  // property values.
+  while (p && (p = next_property_key (p, &length)))
+    {
+      // Skip to the end of the key
+      p += length;
+
+      p = next_property_value (p, &length);
+      if (p)
+	p += length;
+      
+      property_count++;
+    }
+
+  // Allocate an array of property value/key pairs.
+  _Jv_Environment_Properties = 
+    (property_pair *) malloc (sizeof(property_pair) 
+			      * (property_count + 1));
+
+  // Go through the properties again, initializing _Jv_Properties
+  // along the way.
+  p = props;
+  property_count = 0;
+  while (p && (p = next_property_key (p, &length)))
+    {
+      _Jv_Environment_Properties[property_count].key = p;
+      _Jv_Environment_Properties[property_count].key_length = length;
+
+      // Skip to the end of the key
+      p += length;
+
+      p = next_property_value (p, &length);
+      
+      _Jv_Environment_Properties[property_count].value = p;
+      _Jv_Environment_Properties[property_count].value_length = length;
+
+      if (p)
+	p += length;
+
+      property_count++;
+    }
+  memset ((void *) &_Jv_Environment_Properties[property_count], 
+	  0, sizeof (property_pair));
+
+  // Null terminate the strings.
+  for (property_pair *prop = &_Jv_Environment_Properties[0];
+       prop->key != NULL;
+       prop++)
+    {
+      prop->key[prop->key_length] = 0;
+      prop->value[prop->value_length] = 0;
+    }
+}
+#endif // DISABLE_GETENV_PROPERTIES
+
+namespace gcj
+{
+  _Jv_Utf8Const *void_signature;
+  _Jv_Utf8Const *clinit_name;
+  _Jv_Utf8Const *init_name;
+  _Jv_Utf8Const *finit_name;
+  
+  bool runtimeInitialized = false;
+  
+  // When true, print debugging information about class loading.
+  bool verbose_class_flag;
+  
+  // When true, enable the bytecode verifier and BC-ABI type verification. 
+  bool verifyClasses = true;
+
+  // Thread stack size specified by the -Xss runtime argument.
+  size_t stack_size = 0;
+}
+
+// We accept all non-standard options accepted by Sun's java command,
+// for compatibility with existing application launch scripts.
+static jint
+parse_x_arg (char* option_string)
+{
+  if (strlen (option_string) <= 0)
+    return -1;
+
+  if (! strcmp (option_string, "int"))
+    {
+      // FIXME: this should cause the vm to never load shared objects
+    }
+  else if (! strcmp (option_string, "mixed"))
+    {
+      // FIXME: allow interpreted and native code
+    }
+  else if (! strcmp (option_string, "batch"))
+    {
+      // FIXME: disable background JIT'ing
+    }
+  else if (! strcmp (option_string, "debug"))
+    {
+      remoteDebug = true;
+    }
+  else if (! strncmp (option_string, "runjdwp:", 8))
+    {
+      if (strlen (option_string) > 8)
+	  jdwpOptions = &option_string[8];
+      else
+	{
+	  fprintf (stderr,
+		   "libgcj: argument required for JDWP options");
+	  return -1;
+	}
+    }
+  else if (! strncmp (option_string, "bootclasspath:", 14))
+    {
+      // FIXME: add a parse_bootclasspath_arg function
+    }
+  else if (! strncmp (option_string, "bootclasspath/a:", 16))
+    {
+    }
+  else if (! strncmp (option_string, "bootclasspath/p:", 16))
+    {
+    }
+  else if (! strcmp (option_string, "check:jni"))
+    {
+      // FIXME: enable strict JNI checking
+    }
+  else if (! strcmp (option_string, "future"))
+    {
+      // FIXME: enable strict class file format checks
+    }
+  else if (! strcmp (option_string, "noclassgc"))
+    {
+      // FIXME: disable garbage collection for classes
+    }
+  else if (! strcmp (option_string, "incgc"))
+    {
+      // FIXME: incremental garbage collection
+    }
+  else if (! strncmp (option_string, "loggc:", 6))
+    {
+      if (option_string[6] == '\0')
+        {
+          fprintf (stderr,
+                   "libgcj: filename argument expected for loggc option\n");
+          return -1;
+        }
+      // FIXME: set gc logging filename
+    }
+  else if (! strncmp (option_string, "ms", 2))
+    {
+      // FIXME: ignore this option until PR 20699 is fixed.
+      // _Jv_SetInitialHeapSize (option_string + 2);
+    }
+  else if (! strncmp (option_string, "mx", 2))
+    _Jv_SetMaximumHeapSize (option_string + 2);
+  else if (! strcmp (option_string, "prof"))
+    {
+      // FIXME: enable profiling of program running in vm
+    }
+  else if (! strncmp (option_string, "runhprof:", 9))
+    {
+      // FIXME: enable specific type of vm profiling.  add a
+      // parse_runhprof_arg function
+    }
+  else if (! strcmp (option_string, "rs"))
+    {
+      // FIXME: reduced system signal usage.  disable thread dumps,
+      // only terminate in response to user-initiated calls,
+      // e.g. System.exit()
+    }
+  else if (! strncmp (option_string, "ss", 2))
+    {
+      _Jv_SetStackSize (option_string + 2);
+    }
+  else if (! strcmp (option_string, "X:+UseAltSigs"))
+    {
+      // FIXME: use signals other than SIGUSR1 and SIGUSR2
+    }
+  else if (! strcmp (option_string, "share:off"))
+    {
+      // FIXME: don't share class data
+    }
+  else if (! strcmp (option_string, "share:auto"))
+    {
+      // FIXME: share class data where possible
+    }
+  else if (! strcmp (option_string, "share:on"))
+    {
+      // FIXME: fail if impossible to share class data
+    }
+
+  return 0;
+}
+
+static jint
+parse_verbose_args (char* option_string,
+                    bool ignore_unrecognized)
+{
+  size_t len = sizeof ("-verbose") - 1;
+
+  if (strlen (option_string) < len)
+    return -1;
+
+  if (option_string[len] == ':'
+      && option_string[len + 1] != '\0')
+    {
+      char* verbose_args = option_string + len + 1;
+
+      do
+	{
+	  if (! strncmp (verbose_args,
+			 "gc", sizeof ("gc") - 1))
+            {
+              if (verbose_args[sizeof ("gc") - 1] == '\0'
+                  || verbose_args[sizeof ("gc") - 1] == ',')
+                {
+                  // FIXME: we should add functions to boehm-gc that
+                  // toggle GC_print_stats, GC_PRINT_ADDRESS_MAP and
+                  // GC_print_back_height.
+                  verbose_args += sizeof ("gc") - 1;
+                }
+              else
+                {
+                verbose_arg_err:
+                  fprintf (stderr, "libgcj: unknown verbose option: %s\n",
+                           option_string);
+                  return -1;
+                }
+            }
+	  else if (! strncmp (verbose_args,
+			      "class",
+			      sizeof ("class") - 1))
+            {
+              if (verbose_args[sizeof ("class") - 1] == '\0'
+                  || verbose_args[sizeof ("class") - 1] == ',')
+                {
+                  gcj::verbose_class_flag = true;
+                  verbose_args += sizeof ("class") - 1;
+                }
+              else
+                goto verbose_arg_err;
+            }
+	  else if (! strncmp (verbose_args, "jni",
+			      sizeof ("jni") - 1))
+            {
+              if (verbose_args[sizeof ("jni") - 1] == '\0'
+                  || verbose_args[sizeof ("jni") - 1] == ',')
+                {
+                  // FIXME: enable JNI messages.
+                  verbose_args += sizeof ("jni") - 1;
+                }
+              else
+                goto verbose_arg_err;
+            }
+	  else if (ignore_unrecognized
+		   && verbose_args[0] == 'X')
+	    {
+	      // ignore unrecognized non-standard verbose option
+	      while (verbose_args[0] != '\0'
+		     && verbose_args[0] != ',')
+                verbose_args++;
+	    }
+          else if (verbose_args[0] == ',')
+            {
+              verbose_args++;
+            }
+          else
+            goto verbose_arg_err;
+
+          if (verbose_args[0] == ',')
+            verbose_args++;
+	}
+      while (verbose_args[0] != '\0');
+    }
+  else if (option_string[len] == 'g'
+	   && option_string[len + 1] == 'c'
+	   && option_string[len + 2] == '\0')
+    {
+      // FIXME: we should add functions to boehm-gc that
+      // toggle GC_print_stats, GC_PRINT_ADDRESS_MAP and
+      // GC_print_back_height.
+      return 0;
+    }
+  else if (option_string[len] == '\0')
+    {
+      gcj::verbose_class_flag = true;
+      return 0;
+    }
+  else
+    {
+      // unrecognized option beginning with -verbose
+      return -1;
+    }
+  return 0;
+}
+
+static jint
+parse_init_args (JvVMInitArgs* vm_args)
+{
+  // if _Jv_Compiler_Properties is non-NULL then it needs to be
+  // re-allocated dynamically.
+  if (_Jv_Compiler_Properties)
+    {
+      const char** props = _Jv_Compiler_Properties;
+      _Jv_Compiler_Properties = NULL;
+
+      for (int i = 0; props[i]; i++)
+	{
+	  _Jv_Compiler_Properties = (const char**) _Jv_Realloc
+	    (_Jv_Compiler_Properties,
+	     (_Jv_Properties_Count + 1) * sizeof (const char*));
+	  _Jv_Compiler_Properties[_Jv_Properties_Count++] = props[i];
+	}
+    }
+
+  if (vm_args == NULL)
+    return 0;
+
+  for (int i = 0; i < vm_args->nOptions; ++i)
+    {
+      char* option_string = vm_args->options[i].optionString;
+      if (! strcmp (option_string, "vfprintf")
+	  || ! strcmp (option_string, "exit")
+	  || ! strcmp (option_string, "abort"))
+	{
+	  // FIXME: we are required to recognize these, but for
+	  // now we don't handle them in any way.
+	  continue;
+	}
+      else if (! strncmp (option_string,
+			  "-verbose", sizeof ("-verbose") - 1))
+	{
+	  jint result = parse_verbose_args (option_string,
+                                            vm_args->ignoreUnrecognized);
+	  if (result < 0)
+	    return result;
+	}
+      else if (! strncmp (option_string, "-D", 2))
+	{
+	  _Jv_Compiler_Properties = (const char**) _Jv_Realloc
+	    (_Jv_Compiler_Properties,
+	     (_Jv_Properties_Count + 1) * sizeof (char*));
+
+	  _Jv_Compiler_Properties[_Jv_Properties_Count++] =
+	    strdup (option_string + 2);
+
+	  continue;
+	}
+      else if (vm_args->ignoreUnrecognized)
+        {
+          if (option_string[0] == '_')
+            parse_x_arg (option_string + 1);
+          else if (! strncmp (option_string, "-X", 2))
+            parse_x_arg (option_string + 2);
+          else
+            {
+            unknown_option:
+              fprintf (stderr, "libgcj: unknown option: %s\n", option_string);
+              return -1;
+            }
+	}
+      else
+        goto unknown_option;
+    }
+  return 0;
+}
+
+jint
+_Jv_CreateJavaVM (JvVMInitArgs* vm_args)
+{
+  using namespace gcj;
+
+  if (runtimeInitialized)
+    return -1;
+
+  jint result = parse_init_args (vm_args);
+  if (result < 0)
+    return -1;
+
+  PROCESS_GCJ_PROPERTIES;
+
+  /* Threads must be initialized before the GC, so that it inherits the
+     signal mask.  */
+  _Jv_InitThreads ();
+  _Jv_InitGC ();
+  _Jv_InitializeSyncMutex ();
+  
+#ifdef INTERPRETER
+  _Jv_InitInterpreter ();
+#endif  
+
+#ifdef HANDLE_SEGV
+  INIT_SEGV;
+#endif
+
+#ifdef HANDLE_FPE
+  INIT_FPE;
+#endif
+
+  /* Initialize Utf8 constants declared in jvm.h. */
+  void_signature = _Jv_makeUtf8Const ("()V", 3);
+  clinit_name = _Jv_makeUtf8Const ("<clinit>", 8);
+  init_name = _Jv_makeUtf8Const ("<init>", 6);
+  finit_name = _Jv_makeUtf8Const ("finit$", 6);
+
+  /* Initialize built-in classes to represent primitive TYPEs. */
+  _Jv_InitPrimClass (&_Jv_byteClass,    "byte",    'B', 1);
+  _Jv_InitPrimClass (&_Jv_shortClass,   "short",   'S', 2);
+  _Jv_InitPrimClass (&_Jv_intClass,     "int",     'I', 4);
+  _Jv_InitPrimClass (&_Jv_longClass,    "long",    'J', 8);
+  _Jv_InitPrimClass (&_Jv_booleanClass, "boolean", 'Z', 1);
+  _Jv_InitPrimClass (&_Jv_charClass,    "char",    'C', 2);
+  _Jv_InitPrimClass (&_Jv_floatClass,   "float",   'F', 4);
+  _Jv_InitPrimClass (&_Jv_doubleClass,  "double",  'D', 8);
+  _Jv_InitPrimClass (&_Jv_voidClass,    "void",    'V', 0);
+
+  // We have to initialize this fairly early, to avoid circular class
+  // initialization.  In particular we want to start the
+  // initialization of ClassLoader before we start the initialization
+  // of VMClassLoader.
+  _Jv_InitClass (&java::lang::ClassLoader::class$);
+
+  // Set up the system class loader and the bootstrap class loader.
+  gnu::gcj::runtime::ExtensionClassLoader::initialize();
+  java::lang::VMClassLoader::initialize(JvNewStringLatin1(TOOLEXECLIBDIR));
+
+  _Jv_RegisterBootstrapPackages();
+
+  no_memory = new java::lang::OutOfMemoryError;
+
+#ifdef USE_LTDL
+  LTDL_SET_PRELOADED_SYMBOLS ();
+#endif
+
+  _Jv_platform_initialize ();
+
+  _Jv_JNI_Init ();
+  _Jv_JVMTI_Init ();
+
+  _Jv_GCInitializeFinalizers (&::gnu::gcj::runtime::FinalizerThread::finalizerReady);
+
+  // Start the GC finalizer thread.  A VirtualMachineError can be
+  // thrown by the runtime if, say, threads aren't available.
+  try
+    {
+      using namespace gnu::gcj::runtime;
+      FinalizerThread *ft = new FinalizerThread ();
+      ft->start ();
+    }
+  catch (java::lang::VirtualMachineError *ignore)
+    {
+    }
+
+  runtimeInitialized = true;
+
+  return 0;
+}
+
+void
+_Jv_RunMain (JvVMInitArgs *vm_args, jclass klass, const char *name, int argc,
+             const char **argv, bool is_jar)
+{
+#ifndef DISABLE_MAIN_ARGS
+  _Jv_SetArgs (argc, argv);
+#endif
+
+  java::lang::Runtime *runtime = NULL;
+
+  try
+    {
+      if (_Jv_CreateJavaVM (vm_args) < 0)
+	{
+	  fprintf (stderr, "libgcj: couldn't create virtual machine\n");
+	  exit (1);
+	}
+
+      // Get the Runtime here.  We want to initialize it before searching
+      // for `main'; that way it will be set up if `main' is a JNI method.
+      runtime = java::lang::Runtime::getRuntime ();
+
+#ifdef DISABLE_MAIN_ARGS
+      arg_vec = JvConvertArgv (0, 0);
+#else      
+      arg_vec = JvConvertArgv (argc - 1, argv + 1);
+#endif
+
+      using namespace gnu::java::lang;
+      if (klass)
+	main_thread = new MainThread (klass, arg_vec);
+      else
+	main_thread = new MainThread (JvNewStringUTF (name),
+				      arg_vec, is_jar);
+      _Jv_AttachCurrentThread (main_thread);
+
+      // Start JDWP
+      if (remoteDebug)
+	{
+	  using namespace gnu::classpath::jdwp;
+	  VMVirtualMachine::initialize ();
+	  Jdwp *jdwp = new Jdwp ();
+	  jdwp->setDaemon (true);
+	  jdwp->configure (JvNewStringLatin1 (jdwpOptions));
+	  jdwp->start ();
+
+	  // Wait for JDWP to initialize and start
+	  jdwp->join ();
+	}
+
+      // Send VmInit
+      gnu::classpath::jdwp::event::VmInitEvent *event;
+      event = new gnu::classpath::jdwp::event::VmInitEvent (main_thread);
+      gnu::classpath::jdwp::Jdwp::notify (event);
+    }
+  catch (java::lang::Throwable *t)
+    {
+      java::lang::System::err->println (JvNewStringLatin1 
+        ("Exception during runtime initialization"));
+      t->printStackTrace();
+      if (runtime)
+	java::lang::Runtime::exitNoChecksAccessor (1);
+      // In case the runtime creation failed.
+      ::exit (1);
+    }
+
+  _Jv_ThreadRun (main_thread);
+
+  // Notify debugger of VM's death
+  if (gnu::classpath::jdwp::Jdwp::isDebugging)
+    {
+      using namespace gnu::classpath::jdwp;
+      event::VmDeathEvent *event = new event::VmDeathEvent ();
+      Jdwp::notify (event);
+    }
+
+  // If we got here then something went wrong, as MainThread is not
+  // supposed to terminate.
+  ::exit (1);
+}
+
+void
+_Jv_RunMain (jclass klass, const char *name, int argc, const char **argv, 
+	     bool is_jar)
+{
+  _Jv_RunMain (NULL, klass, name, argc, argv, is_jar);
+}
+
+void
+JvRunMain (jclass klass, int argc, const char **argv)
+{
+  _Jv_RunMain (klass, NULL, argc, argv, false);
+}
+
+
+
+// Parse a string and return a heap size.
+static size_t
+parse_memory_size (const char *spec)
+{
+  char *end;
+  unsigned long val = strtoul (spec, &end, 10);
+  if (*end == 'k' || *end == 'K')
+    val *= 1024;
+  else if (*end == 'm' || *end == 'M')
+    val *= 1048576;
+  return (size_t) val;
+}
+
+// Set the initial heap size.  This might be ignored by the GC layer.
+// This must be called before _Jv_RunMain.
+void
+_Jv_SetInitialHeapSize (const char *arg)
+{
+  size_t size = parse_memory_size (arg);
+  _Jv_GCSetInitialHeapSize (size);
+}
+
+// Set the maximum heap size.  This might be ignored by the GC layer.
+// This must be called before _Jv_RunMain.
+void
+_Jv_SetMaximumHeapSize (const char *arg)
+{
+  size_t size = parse_memory_size (arg);
+  _Jv_GCSetMaximumHeapSize (size);
+}
+
+void
+_Jv_SetStackSize (const char *arg)
+{
+  size_t size = parse_memory_size (arg);
+  gcj::stack_size = size;
+}
+
+void *
+_Jv_Malloc (jsize size)
+{
+  if (__builtin_expect (size == 0, false))
+    size = 1;
+  void *ptr = malloc ((size_t) size);
+  if (__builtin_expect (ptr == NULL, false))
+    throw no_memory;
+  return ptr;
+}
+
+void *
+_Jv_Realloc (void *ptr, jsize size)
+{
+  if (__builtin_expect (size == 0, false))
+    size = 1;
+  ptr = realloc (ptr, (size_t) size);
+  if (__builtin_expect (ptr == NULL, false))
+    throw no_memory;
+  return ptr;
+}
+
+void *
+_Jv_MallocUnchecked (jsize size)
+{
+  if (__builtin_expect (size == 0, false))
+    size = 1;
+  return malloc ((size_t) size);
+}
+
+void
+_Jv_Free (void* ptr)
+{
+  return free (ptr);
+}
+
+
+
+// In theory, these routines can be #ifdef'd away on machines which
+// support divide overflow signals.  However, we never know if some
+// code might have been compiled with "-fuse-divide-subroutine", so we
+// always include them in libgcj.
+
+jint
+_Jv_divI (jint dividend, jint divisor)
+{
+  if (__builtin_expect (divisor == 0, false))
+    {
+      java::lang::ArithmeticException *arithexception 
+	= new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));      
+      throw arithexception;
+    }
+  
+  if (dividend == (jint) 0x80000000L && divisor == -1)
+    return dividend;
+
+  return dividend / divisor;
+}
+
+jint
+_Jv_remI (jint dividend, jint divisor)
+{
+  if (__builtin_expect (divisor == 0, false))
+    {
+      java::lang::ArithmeticException *arithexception 
+	= new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));      
+      throw arithexception;
+    }
+  
+  if (dividend == (jint) 0x80000000L && divisor == -1)
+    return 0;
+  
+  return dividend % divisor;
+}
+
+jlong
+_Jv_divJ (jlong dividend, jlong divisor)
+{
+  if (__builtin_expect (divisor == 0, false))
+    {
+      java::lang::ArithmeticException *arithexception 
+	= new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));      
+      throw arithexception;
+    }
+
+  if (dividend == (jlong) 0x8000000000000000LL && divisor == -1)
+    return dividend;
+
+  return dividend / divisor;
+}
+
+jlong
+_Jv_remJ (jlong dividend, jlong divisor)
+{
+  if (__builtin_expect (divisor == 0, false))
+    {
+      java::lang::ArithmeticException *arithexception 
+	= new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));      
+      throw arithexception;
+    }
+
+  if (dividend == (jlong) 0x8000000000000000LL && divisor == -1)
+    return 0;
+
+  return dividend % divisor;
+}
+
+
+
+// Return true if SELF_KLASS can access a field or method in
+// OTHER_KLASS.  The field or method's access flags are specified in
+// FLAGS.
+jboolean
+_Jv_CheckAccess (jclass self_klass, jclass other_klass, jint flags)
+{
+  using namespace java::lang::reflect;
+  return ((self_klass == other_klass)
+	  || ((flags & Modifier::PUBLIC) != 0)
+	  || (((flags & Modifier::PROTECTED) != 0)
+	      && _Jv_IsAssignableFromSlow (self_klass, other_klass))
+	  || (((flags & Modifier::PRIVATE) == 0)
+	      && _Jv_ClassNameSamePackage (self_klass->name,
+					   other_klass->name)));
+}
+
+// Prepend GCJ_VERSIONED_LIBDIR to a module search path stored in a C
+// char array, if the path is not already prefixed by
+// GCJ_VERSIONED_LIBDIR.  Return a newly JvMalloc'd char buffer.  The
+// result should be freed using JvFree.
+char*
+_Jv_PrependVersionedLibdir (char* libpath)
+{
+  char* retval = 0;
+
+  if (libpath && libpath[0] != '\0')
+    {
+      if (! strncmp (libpath,
+                     GCJ_VERSIONED_LIBDIR,
+                     sizeof (GCJ_VERSIONED_LIBDIR) - 1))
+        {
+          // LD_LIBRARY_PATH is already prefixed with
+          // GCJ_VERSIONED_LIBDIR.
+          retval = (char*) _Jv_Malloc (strlen (libpath) + 1);
+          strcpy (retval, libpath);
+        }
+      else
+        {
+          // LD_LIBRARY_PATH is not prefixed with
+          // GCJ_VERSIONED_LIBDIR.
+	  char path_sep[2];
+	  path_sep[0] = (char) _Jv_platform_path_separator;
+	  path_sep[1] = '\0';
+          jsize total = ((sizeof (GCJ_VERSIONED_LIBDIR) - 1)
+			 + 1 /* path separator */ + strlen (libpath) + 1);
+          retval = (char*) _Jv_Malloc (total);
+          strcpy (retval, GCJ_VERSIONED_LIBDIR);
+          strcat (retval, path_sep);
+          strcat (retval, libpath);
+        }
+    }
+  else
+    {
+      // LD_LIBRARY_PATH was not specified or is empty.
+      retval = (char*) _Jv_Malloc (sizeof (GCJ_VERSIONED_LIBDIR));
+      strcpy (retval, GCJ_VERSIONED_LIBDIR);
+    }
+
+  return retval;
+}

Added: llvm-gcc-4.2/trunk/libjava/scripts/MakeCharTables.java
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/MakeCharTables.java?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/MakeCharTables.java (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/MakeCharTables.java Thu Nov  8 16:56:19 2007
@@ -0,0 +1,212 @@
+/* MakeCharTables.java - converts gnu.java.lang.CharData into
+                         include/java-chartables.h
+   Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+import gnu.java.lang.CharData;
+
+public class MakeCharTables implements CharData
+{
+  public static void main(String[] args)
+  {
+    System.out.println("/* java-chartables.h -- Character tables for java.lang.Character -*- c++ -*-\n"
+                       + "   Copyright (C) 2002 Free Software Foundation, Inc.\n"
+                       + "   *** This file is generated by scripts/MakeCharTables.java ***\n"
+                       + "\n"
+                       + "This file is part of GNU Classpath.\n"
+                       + "\n"
+                       + "GNU Classpath is free software; you can redistribute it and/or modify\n"
+                       + "it under the terms of the GNU General Public License as published by\n"
+                       + "the Free Software Foundation; either version 2, or (at your option)\n"
+                       + "any later version.\n"
+                       + "\n"
+                       + "GNU Classpath is distributed in the hope that it will be useful, but\n"
+                       + "WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+                       + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+                       + "General Public License for more details.\n"
+                       + "\n"
+                       + "You should have received a copy of the GNU General Public License\n"
+                       + "along with GNU Classpath; see the file COPYING.  If not, write to the\n"
+                       + "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\n"
+                       + "02110-1301 USA.\n"
+                       + "\n"
+                       + "Linking this library statically or dynamically with other modules is\n"
+                       + "making a combined work based on this library.  Thus, the terms and\n"
+                       + "conditions of the GNU General Public License cover the whole\n"
+                       + "combination.\n"
+                       + "\n"
+                       + "As a special exception, the copyright holders of this library give you\n"
+                       + "permission to link this library with independent modules to produce an\n"
+                       + "executable, regardless of the license terms of these independent\n"
+                       + "modules, and to copy and distribute the resulting executable under\n"
+                       + "terms of your choice, provided that you also meet, for each linked\n"
+                       + "independent module, the terms and conditions of the license of that\n"
+                       + "module.  An independent module is a module which is not derived from\n"
+                       + "or based on this library.  If you modify this library, you may extend\n"
+                       + "this exception to your version of the library, but you are not\n"
+                       + "obligated to do so.  If you do not wish to do so, delete this\n"
+                       + "exception statement from your version. */\n"
+                       + "\n"
+                       + "#ifndef __JAVA_CHARTABLES_H__\n"
+                       + "#define __JAVA_CHARTABLES_H__\n"
+                       + "\n"
+                       + "// These tables are automatically generated by scripts/MakeCharTables.java.\n"
+                       + "// This is in turn parsing gnu.java.lang.CharData, which is generated by\n"
+                       + "// scripts/unicode-muncher.pl.  The Unicode data comes from\n"
+                       + "// www.unicode.org; this header is based on\n"
+                       + "// " + SOURCE + ". JDK 1.4 uses Unicode version 3.0.0.\n"
+                       + "// DO NOT EDIT the tables.  Instead, fix the upstream scripts and run\n"
+                       + "// them again.\n"
+                       + "\n"
+                       + "// The data is stored in C style arrays of the appropriate CNI types, to\n"
+                       + "// guarantee that the data is constant and non-relocatable.  The field\n"
+                       + "// <code>blocks</code> stores the offset of a block of 2<supSHIFT</sup>\n"
+                       + "// characters within <code>data</code>. The data field, in turn, stores\n"
+                       + "// information about each character in the low order bits, and an offset\n"
+                       + "// into the attribute tables <code>upper</code>, <code>lower</code>,\n"
+                       + "// <code>numValue</code>, and <code>direction</code>.  Notice that the\n"
+                       + "// attribute tables are much smaller than 0xffff entries; as many characters\n"
+                       + "// in Unicode share common attributes.  Finally, there is a listing for\n"
+                       + "// <code>title</code> exceptions (most characters just have the same title\n"
+                       + "// case as upper case).\n"
+                       + "\n"
+                       + "// This file should only be included by natCharacter.cc\n"
+                       + "\n"
+                       + "/**\n"
+                       + " * The character shift amount to look up the block offset. In other words,\n"
+                       + " * <code>(char) (blocks[ch >> SHIFT] + ch)</code> is the index where\n"
+                       + " * <code>ch</code> is described in <code>data</code>.\n"
+                       + " */\n"
+                       + "#define SHIFT " + SHIFT);
+
+    convertString("/**\n"
+                  + " * The mapping of character blocks to their location in <code>data</code>.\n"
+                  + " * Each entry has been adjusted so that a modulo 16 sum with the desired\n"
+                  + " * character gives the actual index into <code>data</code>.\n"
+                  + " */",
+                  char.class, "blocks", BLOCKS);
+
+    convertString("/**\n"
+                  + " * Information about each character.  The low order 5 bits form the\n"
+                  + " * character type, the next bit is a flag for non-breaking spaces, and the\n"
+                  + " * next bit is a flag for mirrored directionality.  The high order 9 bits\n"
+                  + " * form the offset into the attribute tables.  Note that this limits the\n"
+                  + " * number of unique character attributes to 512, which is not a problem\n"
+                  + " * as of Unicode version 3.2.0, but may soon become one.\n"
+                  + " */",
+                  char.class, "data", DATA);
+
+    convertString("/**\n"
+                  + " * This is the attribute table for computing the numeric value of a\n"
+                  + " * character.  The value is -1 if Unicode does not define a value, -2\n"
+                  + " * if the value is not a positive integer, otherwise it is the value.\n"
+                  + " */",
+                  short.class, "numValue", NUM_VALUE);
+
+    convertString("/**\n"
+                  + " * This is the attribute table for computing the uppercase representation\n"
+                  + " * of a character.  The value is the difference between the character and\n"
+                  + " * its uppercase version.\n"
+                  + " */",
+                  short.class, "upper", UPPER);
+
+    convertString("/**\n"
+                  + " * This is the attribute table for computing the lowercase representation\n"
+                  + " * of a character.  The value is the difference between the character and\n"
+                  + " * its lowercase version.\n"
+                  + " */",
+                  short.class, "lower", LOWER);
+
+    convertString("/**\n"
+                  + " * This is the attribute table for computing the directionality class\n"
+                  + " * of a character.  At present, the value is in the range 0 - 18 if the\n"
+                  + " * character has a direction, otherwise it is -1.\n"
+                  + " */",
+                  byte.class, "direction", DIRECTION);
+
+    convertString("/**\n"
+                  + " * This is the listing of titlecase special cases (all other character\n"
+                  + " * can use <code>upper</code> to determine their titlecase).  The listing\n"
+                  + " * is a sequence of character pairs; converting the first character of the\n"
+                  + " * pair to titlecase produces the second character.\n"
+                  + " */",
+                  char.class, "title", TITLE);
+
+    System.out.println();
+    System.out.println("#endif /* __JAVA_CHARTABLES_H__ */");
+  }
+
+  private static void convertString(String header, Class type,
+                                    String name, String field)
+  {
+    System.out.println();
+    System.out.println(header);
+    System.out.println("static const j" + type.getName() + " " + name
+                       + "[] = {");
+    char[] data = field.toCharArray();
+    int wrap;
+    if (type == char.class)
+      wrap = 10;
+    else if (type == byte.class)
+      wrap = 21;
+    else if (type == short.class)
+      wrap = 13;
+    else
+      throw new Error("Unexpeced type");
+    for (int i = 0; i < data.length; i += wrap)
+      {
+        System.out.print("   ");
+        for (int j = 0; j < wrap; j++)
+          {
+            if (i + j >= data.length)
+              break;
+            System.out.print(" ");
+            if (type == char.class)
+              System.out.print((int) data[i + j]);
+            else if (type == byte.class)
+              System.out.print((byte) data[i + j]);
+            else if (type == short.class)
+              System.out.print((short) data[i + j]);
+            System.out.print(",");
+          }
+        System.out.println();
+      }
+    System.out.println("  };\n"
+                       + "/** Length of " + name + ". */\n"
+                       + "static const int " + name + "_length = "
+                       + data.length + ";");
+  }
+}

Added: llvm-gcc-4.2/trunk/libjava/scripts/MakeDefaultMimeTypes.java
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/MakeDefaultMimeTypes.java?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/MakeDefaultMimeTypes.java (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/MakeDefaultMimeTypes.java Thu Nov  8 16:56:19 2007
@@ -0,0 +1,77 @@
+/* Copyright (C) 2000, 2003  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+import gnu.gcj.io.MimeTypes;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+
+public class MakeDefaultMimeTypes
+{
+  private static void fatal (String message)
+  {
+    System.err.println ("MakeDefaultMimeTypes Error: " + message);
+    System.exit (-1);
+  }
+  
+  public static void main (String[] args)
+  {
+    Hashtable mime_table = new Hashtable ();
+    
+    if (args.length != 1)
+      fatal ("missing mime type filename");
+
+    try {
+      MimeTypes.fillFromFile (mime_table, args[0]);
+    } catch (FileNotFoundException ex) {
+      fatal ("can't open " + args[0]);
+    } catch (IOException ex) {
+      fatal ("error reading " + args[0]);
+    }
+
+    System.out.println ("// Do not edit this file!  Create a new version with MakeDefaultMimeTypes.\n\n/* Copyright (C) 2000  Free Software Foundation\n\n   This file is part of libgcj.\n\nThis software is copyrighted work licensed under the terms of the\nLibgcj License.  Please consult the file \"LIBGCJ_LICENSE\" for\ndetails.  */\n\npackage gnu.gcj.io; \n\npublic class DefaultMimeTypes\n{\n  public static final String[] types = {");
+
+    Enumeration keys = mime_table.keys();
+    Enumeration values = mime_table.elements();
+    
+    // Prepend first element with open bracket
+    StringBuffer result = new StringBuffer("");
+    
+    try
+      {
+	result.append("      \"" 
+		      + keys.nextElement().toString() 
+		      + "\",\t\"" 
+		      + values.nextElement().toString()
+		      + "\"\n");
+      }
+    catch (NoSuchElementException ex)
+      {
+      }
+    
+    // Prepend subsequent elements with ", "
+    try
+      {
+	while (true)
+	  result.append("    , \"" 
+			+ keys.nextElement().toString() 
+			+ "\",\t\"" 
+			+ values.nextElement().toString()
+			+ "\"\n");
+      }
+    catch (NoSuchElementException ex)
+      {
+      }
+    
+    // Append last element with closing bracket
+    result.append("  };\n}\n");
+    System.out.println(result);
+  }
+}

Added: llvm-gcc-4.2/trunk/libjava/scripts/classes.pl
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/classes.pl?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/classes.pl (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/classes.pl Thu Nov  8 16:56:19 2007
@@ -0,0 +1,91 @@
+# classes.pl - A perl program to generate most of the contents of
+# javaprims.h automatically.
+
+# Copyright (C) 1998, 1999, 2000, 2002, 2005  Free Software Foundation
+#
+# This file is part of libgcj.
+#
+# This software is copyrighted work licensed under the terms of the
+# Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+# details.
+
+# Usage: cd <build>/classpath/lib ; perl classes.pl.
+
+use DirHandle;
+
+if (-d 'java')
+{
+    # Ok here.
+}
+elsif (-d '../java')
+{
+    chdir ('..');
+}
+else
+{
+    die "couldn't find java directory\n";
+}
+
+&scan ('java', 2);
+
+exit 0;
+
+sub scan
+{
+    local ($dir, $indent) = @_;
+    local (@subdirs) = ();
+    local (%classes) = ();
+
+    local ($d) = new DirHandle $dir;
+    local (*JFILE);
+    local ($name);
+    if (defined $d)
+    {
+	while (defined ($name = $d->read))
+	{
+	    next if $name eq 'CVS';
+	    next if $name eq '.';
+	    next if $name eq '..';
+	    if ($dir eq 'java'
+		&& $name ne 'lang'
+		&& $name ne 'util'
+		&& $name ne 'io')
+	    {
+		# We only generate decls for java.lang, java.io, and
+		# java.util.
+		next;
+	    }
+	    if (-d ($dir . '/' . $name))
+	    {
+		push (@subdirs, $name);
+		next;
+	    }
+	    next unless $name =~ s/\.class$//;
+	    $classes{$name} = 1;
+	}
+
+	undef $d;
+    }
+
+    local ($spaces) = ' ' x $indent;
+    local ($classname);
+    ($classname = $dir) =~ s/^.*\///;
+    print $spaces, "namespace ", $classname, "\n";
+    print $spaces, "{\n";
+
+    foreach (sort keys %classes)
+    {
+	print $spaces, "  class ", $_, ";\n";
+    }
+    print "\n" if scalar @classes > 0 && scalar @subdirs > 0;
+
+    local ($first) = 1;
+    foreach (sort @subdirs)
+    {
+	print "\n" unless $first;
+	$first = 0;
+	&scan ("$dir/$_", $indent + 2);
+    }
+
+    print $spaces, "}\n";
+}

Added: llvm-gcc-4.2/trunk/libjava/scripts/encodings.pl
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/encodings.pl?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/encodings.pl (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/encodings.pl Thu Nov  8 16:56:19 2007
@@ -0,0 +1,79 @@
+# encodings.pl - Download IANA text and compute alias list.
+# Assumes you are running this program from gnu/gcj/convert/.
+# Output suitable for direct inclusion in IOConverter.java.
+
+# Map IANA canonical names onto our canonical names.
+%map = (
+	'ANSI_X3.4-1968' => 'ASCII',
+	'ISO_8859-1:1987' => '8859_1',
+	'UTF-8' => 'UTF8',
+	'Shift_JIS' => 'SJIS',
+	'Extended_UNIX_Code_Packed_Format_for_Japanese' => 'EUCJIS',
+	'UTF16-LE' => 'UnicodeLittle',
+	'UTF16-BE' => 'UnicodeBig' 
+	);
+
+if ($ARGV[0] eq '')
+{
+    $file = 'character-sets';
+    if (! -f $file)
+    {
+	# Too painful to figure out how to get Perl to do it.
+	system 'wget -o .wget-log http://www.iana.org/assignments/character-sets';
+    }
+}
+else
+{
+    $file = $ARGV[0];
+}
+
+# Include canonical names in the output.
+foreach $key (keys %map)
+{
+    $output{lc ($key)} = $map{$key};
+}
+
+open (INPUT, "< $file") || die "couldn't open $file: $!";
+
+$body = 0;
+$current = '';
+while (<INPUT>)
+{
+    chop;
+    $body = 1 if /^Name:/;
+    next unless $body;
+
+    if (/^$/)
+    {
+	$current = '';
+	next;
+    }
+
+    ($type, $name) = split (/\s+/);
+    # Encoding names are case-insensitive.  We do all processing on
+    # the lower-case form.
+    my $lower = lc ($name);
+    if ($type eq 'Name:')
+    {
+	$current = $map{$name};
+	if ($current)
+	{
+	    $output{$lower} = $current;
+	}
+    }
+    elsif ($type eq 'Alias:')
+    {
+	# The IANA list has some ugliness.
+	if ($name ne '' && $lower ne 'none' && $current)
+	{
+	    $output{$lower} = $current;
+	}
+    }
+}
+
+close (INPUT);
+
+foreach $key (sort keys %output)
+{
+    print "    hash.put (\"$key\", \"$output{$key}\");\n";
+}

Added: llvm-gcc-4.2/trunk/libjava/scripts/jar.in
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/jar.in?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/jar.in (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/jar.in Thu Nov  8 16:56:19 2007
@@ -0,0 +1,524 @@
+#! @SHELL@
+# Copyright (C) 2006  Free Software Foundation
+# Written by Paolo Bonzini.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation; either version 2 of the License,
+# or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+
+# POSIX and NLS nuisances, taken from autoconf.
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+
+# Also make sure CDPATH is empty, and IFS is space, tab, \n in that order.
+# Be careful to avoid that editors munge IFS
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+IFS=" ""	""
+"
+
+: ${TMPDIR=/tmp}
+: ${ZIP="@ZIP@"}
+: ${UNZIP="@UNZIP@"}
+progname="$0"
+
+# Emit a usage message and exit with error status 1
+usage () {
+  cat >&2 <<EOF
+Usage: $0 {ctxu}[vfm0Mi@] [jar-file] [manifest-file] {[-C dir] files} ...
+Options:
+    -c  create new archive
+    -t  list table of contents for archive
+    -x  extract named (or all) files from archive
+    -u  update existing archive
+    -v  generate verbose output on standard output
+    -f  specify archive file name
+    -m  include manifest information from specified manifest file
+    -0  store only; use no ZIP compression
+    -M  do not create a manifest file for the entries
+    -i  generate index information for the specified jar files
+    -@  instead of {[-C dir] files} ... accept one or more response files,
+        each containing one command-line argument
+    -C  change to the specified directory and include the following file
+If any file is a directory then it is processed recursively.
+The manifest file name and the archive file name needs to be specified
+in the same order the 'm' and 'f' flags are specified.
+
+Example 1: to archive two class files into an archive called classes.jar: 
+       jar cvf classes.jar Foo.class Bar.class 
+Example 2: use an existing manifest file 'mymanifest' and archive all the
+           files in the foo/ directory into 'classes.jar': 
+       jar cvfm classes.jar mymanifest -C foo/ .
+
+EOF
+  (exit 1); exit 1
+}
+
+# Emit an error message and exit with error status 1
+error () {
+  echo "$progname: $*" >&2
+  (exit 1); exit 1
+}
+
+# Usage: copy SRC DEST
+# Copy file SRC to directory DEST, which is the staging area of the jar file.
+# Fail if it is already present or if it is not a regular file.
+copy () {
+  if test -f "$1"; then
+    # A simple optimization.  Optimistically assuming that ln will work
+    # cuts 60% of the run-time!
+    if ln "$1" "$2"/"$1" > /dev/null 2>&1; then
+      return 0
+    fi
+
+    if test -e "$2"/"$1"; then
+      error "$1": Duplicate entry.
+    fi
+    dir=`dirname "$1"`
+    $mkdir_p "$2"/"$dir"
+    ln "$1" "$2"/"$1" > /dev/null 2>&1 || cp "$1" "$2"/"$1"
+  elif test -e "$1"; then
+    error "$1": Invalid file type.
+  else
+    error "$1": File not found.
+  fi
+}
+
+# Make a temporary directory and store its name in the JARTMP variable.
+make_tmp () {
+  test -n "$JARTMP" && return
+
+  {
+    JARTMP=`(umask 077 && mktemp -d "$TMPDIR/jarXXXXXX") 2>/dev/null` &&
+      test -n "$JARTMP" && test -d "$JARTMP"
+  } || {
+    JARTMP=$TMPDIR/jar$$-$RANDOM
+    (umask 077 && mkdir "$JARTMP")
+  } || exit $?
+
+  trap 'exit_status=$?
+        if test -n "$JARTMP"; then rm -rf "$JARTMP"; fi
+        exit $exit_status' 0
+}
+
+# Usage: make_manifest destfile kind [source-manifest]
+# Create a manifest file and store it in destfile.  KIND can be "default",
+# or "user", in which case SOURCE-MANIFEST must be specified as well.
+make_manifest () {
+  dir=`dirname "$1"`
+  $mkdir_p "$dir"
+  case $2 in
+    default)
+      cat > "$1" <<\EOF
+Manifest-Version: 1.0
+Created-By: @VERSION@
+
+EOF
+      ;;
+    user)
+      cp "$3" "$1"
+      ;;
+  esac
+}
+
+# Usage: set_var var [value]
+# Exit with an error if set_var was already called for the same VAR.  Else
+# set the variable VAR to the value VALUE (or the empty value if no parameter
+# is given).
+set_var () {
+  if eval test x\$set_$1 = xset; then
+    error Incompatible or repeated options.
+  else
+    eval $1=\$2
+    eval set_$1=set
+  fi
+}
+
+# Process the arguments, including -C options, and copy the whole tree
+# to $JARTMP/files so that zip can be invoked later from there.
+make_files () {
+  change=false
+  if $process_response_files; then
+    if test $# = 0; then
+      while read arg; do
+        make_files_1 "$arg"
+      done
+    else
+      for infile
+      do
+        exec 5<&0
+        exec 0< $infile
+        while read arg; do
+          make_files_1 "$arg"
+        done
+        exec 0<&5
+        exec 5<&-
+      done
+    fi
+  else
+    for arg
+    do
+      make_files_1 "$arg"
+    done
+  fi
+  cd "$old_dir"
+}
+
+# Usage: make_files_1 ARG
+# Process one argument, ARG.
+make_files_1 () {
+  if $change; then
+    change=false
+    if cd "$1"; then
+      return
+    else
+      (exit 1); exit 1
+    fi
+  fi
+  case "$1" in
+    -C)
+      change=:
+      ;;
+    -C*)
+      cd `expr "$1" : '-C\(.*\)' `
+      return
+      ;;
+    *)
+      if test -d "$1"; then
+        $mkdir_p "$JARTMP"/files/"$1"
+        find "$1" | while read file; do
+          if test -d "$file"; then
+            $mkdir_p "$JARTMP"/files/"$file"
+          else
+            copy "$file" "$JARTMP"/files
+          fi
+        done
+      else
+        copy "$1" "$JARTMP"/files
+      fi
+      ;;
+  esac
+  cd "$old_dir"
+}
+
+# Same as "jar tf $1".
+jar_list () {
+  $UNZIP -l "$1" | \
+    sed '1,/^ ----/d;/^ ----/,$d;s/^ *[0-9]*  ..-..-.. ..:..   //'
+}
+
+# Same as "jar tvf $1".
+jar_list_verbose () {
+  $UNZIP -l "$1" | \
+    @AWK@ 'BEGIN { yes = 0 }
+	 /^ ----/ { yes = !yes; next }
+	 yes {
+	   size=$1
+	   split ($2, d, "-")
+	   split ($3, t, ":")
+	   d[3] += (d[3] < 80) ? 2000 : 1900
+	   timestamp=d[3] " " d[1] " " d[2] " " t[1] " " t[2] " 00"
+	   gsub (/^ *[0-9]*  ..-..-.. ..:..   /, "")
+	   printf "%6d %s %s\n", size, strftime ("%a %b %d %H:%M:%S %Z %Y", mktime (timestamp)), $0
+	 }'
+}
+
+# mkdir -p emulation based on the mkinstalldirs script.
+mkdir_p ()
+{
+  for file
+  do
+    case $file in
+      /*) pathcomp=/ ;;
+      *)  pathcomp= ;;
+    esac
+    oIFS=$IFS
+    IFS=/
+    set fnord $file
+    shift
+    IFS=$oIFS
+
+    errstatus=0
+    for d
+    do
+      test "x$d" = x && continue
+      pathcomp=$pathcomp$d
+      case $pathcomp in
+        -*) pathcomp=./$pathcomp ;;
+      esac
+
+      if test ! -d "$pathcomp"; then
+        mkdir "$pathcomp" || lasterr=$?
+        test -d "$pathcomp" || errstatus=$lasterr
+      fi
+      pathcomp=$pathcomp/
+    done
+  done
+  return "$errstatus"
+}
+
+# Detect mkdir -p
+# On NextStep and OpenStep, the `mkdir' command does not
+# recognize any option.  It will interpret all options as
+# directories to create, and then abort because `.' already
+# exists.
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+  mkdir_p='mkdir -p'
+else
+  mkdir_p='mkdir_p'
+  test -d ./-p && rmdir ./-p
+  test -d ./--version && rmdir ./--version
+fi
+
+# Process the first command line option.
+case "$1" in
+  -*) commands=`echo X"$1" | sed 's/^X-//' ` ;;
+  *) commands="$1"
+esac
+shift
+
+# Operation to perform on the JAR file
+mode=unknown
+
+# First -C option on the command line
+cur_dir=.
+
+# Base directory for -C options
+old_dir=`pwd`
+# JAR file to operate on
+jarfile=
+
+# default for no {m,M} option, user for "m" option, none for "M" option
+manifest_kind=default
+
+# "-0" if the "0" option was given
+store=
+
+# true if the "v" option was given
+verbose=false
+
+# true if the non-standard "@" option was given
+process_response_files=false
+
+# An exec command if we need to redirect the zip/unzip commands' output
+out_redirect=:
+
+while test -n "$commands"; do
+  # Process a letter at a time
+  command=`expr "$commands" : '\(.\)'`
+  commands=`expr "$commands" : '.\(.*\)'`
+  case "$command" in
+    c)
+      set_var mode create
+      ;;
+    t)
+      set_var mode list
+      ;;
+    x)
+      set_var mode extract
+      ;;
+    u)
+      set_var mode update
+      ;;
+
+    f)
+      test $# = 0 && usage
+      # Multiple "f" options are accepted by Sun's JAR tool.
+      jarfile="$1"
+      test -z "$jarfile" && usage
+      shift
+      ;;
+    m)
+      test $# = 0 && usage
+      # Multiple "m" options are accepted by Sun's JAR tool, but
+      # M always overrides m.
+      test "$manifest_kind" = default && manifest_kind=user
+      manifest_file="$1"
+      test -z "$manifest_file" && usage
+      shift
+      ;;
+    0)
+      store=-0
+      ;;
+    v)
+      verbose=:
+      ;;
+    i)
+      # Not yet implemented, and probably never will.
+      ;;
+    M)
+      manifest_kind=none
+      ;;
+    C)
+      test $# = 0 && usage
+      cur_dir="$1"
+      shift
+      ;;
+    @)
+      process_response_files=: ;;
+    *)
+      usage ;;
+  esac
+done
+
+set -e
+
+case "X$jarfile" in
+  X)
+    # Work on stdin/stdout.  Messages go to stderr, and if we need an input
+    # JAR file we save it temporarily in the temporary directory.
+    make_tmp
+    $mkdir_p "$JARTMP"/out
+    jarfile="$JARTMP"/out/tmp-stdin.jar
+    out_redirect='exec >&2'
+    case $mode in
+      update|extract|list)
+        if $process_response_files && test $# = 0; then
+	  error Cannot use stdin for response file.
+	fi
+	cat > "$JARTMP"/out/tmp-stdin.jar
+	;;
+    esac
+    ;;
+
+  X*/*)
+    # Make an absolute path.
+    dir=`dirname "$jarfile"`
+    jarfile=`cd $dir && pwd`/`basename "$jarfile"`
+    ;;
+
+  X*)
+    # Make an absolute path from a filename in the current directory.
+    jarfile=`pwd`/`basename "$jarfile"`
+    ;;
+esac
+
+# Perform a -C option if given right away.
+cd "$cur_dir"
+
+case $mode in
+  unknown)
+    usage
+    ;;
+
+  extract)
+    make_tmp
+
+    # Extract the list of files in the JAR file
+    jar_list "$jarfile" > "$JARTMP"/list
+
+    # If there are files on the command line, expand directories and skip -C
+    # command line arguments
+    for arg
+    do
+      if $skip; then
+        skip=false
+	continue
+      fi
+      case "$arg" in
+	-C) skip=: ;;
+	-C*) ;;
+	*)
+	  escaped=`echo "X$arg" | sed 's/^X//; s/[].[^$\\*]/\\\\&/g' `
+	  grep "^$escaped/" "$JARTMP"/list >> "$JARTMP"/chosen || :
+	  grep "^$escaped\$" "$JARTMP"/list >> "$JARTMP"/chosen || :
+      esac
+    done
+    test -f "$JARTMP"/chosen || cp "$JARTMP"/list "$JARTMP"/chosen
+
+    # Really execute unzip
+    if $verbose; then
+      sort < "$JARTMP"/chosen | uniq | xargs $UNZIP -o "$jarfile" | \
+	sed -ne 's/^   creating/  created/p' -e 's/^  inflating/extracted/p'
+    else
+      sort < "$JARTMP"/chosen | uniq | xargs $UNZIP -o "$jarfile" > /dev/null
+    fi
+    ;;
+
+  create)
+    make_tmp
+    $mkdir_p "$JARTMP"/out
+    $mkdir_p "$JARTMP"/files
+
+    # Do not overwrite the JAR file if something goes wrong
+    tmp_jarfile="$JARTMP"/out/`basename "$jarfile"`
+
+    # Prepare the files in the temporary directory.  This is necessary to
+    # support -C and still save relative paths in the JAR file.
+    make_files ${1+"$@"}
+    if test $manifest_kind != none; then
+      make_manifest "$JARTMP"/files/META-INF/MANIFEST.MF $manifest_kind "$manifest_file"
+    fi
+
+    # Really execute zip
+    if $verbose; then
+      (eval $out_redirect; cd "$JARTMP"/files && $ZIP -rv "$tmp_jarfile" $store .)
+    else
+      (cd "$JARTMP/files" && $ZIP -r "$tmp_jarfile" $store . > /dev/null)
+    fi
+    test "$jarfile" = "$tmp_jarfile" || mv "$tmp_jarfile" "$jarfile"
+    ;;
+
+  update)
+    make_tmp
+    $mkdir_p "$JARTMP"/files
+    make_files ${1+"$@"}
+
+    # Same as above, but zip takes care of not overwriting the file
+    case $manifest_kind in
+      none)
+	$verbose && (eval $out_redirect; echo removing manifest)
+	$ZIP -d "$jarfile" META-INF/MANIFEST.MF > /dev/null 2>&1 || :
+	;;
+      *)
+	make_manifest "$JARTMP"/files/META-INF/MANIFEST.MF $manifest_kind "$manifest_file"
+	;;
+    esac
+    if $verbose; then
+      (eval $out_redirect; cd "$JARTMP"/files && $ZIP -ruv "$jarfile" $store .)
+    else
+      (cd "$JARTMP"/files && $ZIP -ru "$jarfile" $store . > /dev/null)
+    fi
+    ;;
+
+  list)
+    # Everything's done in the functions
+    if $verbose; then
+      jar_list_verbose "$jarfile"
+    else
+      jar_list "$jarfile"
+    fi ;;
+esac
+
+if test "$out_redirect" != :; then
+  # Cat back to stdout if necessary
+  case $mode in
+    create|update) cat "$JARTMP"/out/tmp-stdin.jar ;;
+  esac
+fi
+exit 0

Added: llvm-gcc-4.2/trunk/libjava/scripts/makemake.tcl
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/makemake.tcl?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/makemake.tcl (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/makemake.tcl Thu Nov  8 16:56:19 2007
@@ -0,0 +1,412 @@
+#!/usr/bin/tclsh
+
+# Helper to enforce array-ness.
+proc makearray {name} {
+  upvar $name ary
+  set ary(_) 1
+  unset ary(_)
+}
+
+global is_verbose
+set is_verbose 0
+
+# Verbose printer.
+proc verbose {text} {
+  global is_verbose
+  if {$is_verbose} {
+    puts stderr $text
+  }
+}
+
+# This maps a name to its style:
+# * bc    objects in this package and all its sub-packages
+#         are to be compiled with the BC ABI.  It is an error
+#         for sub-packages to also appear in the map.
+# * package
+#         objects in this package (and possibly sub-packages,
+#         if they do not appear in the map) will be compiled en masse
+#         from source into a single object, using the C++ ABI.
+# * ordinary
+#         objects in this package (and possibly sub-packages
+#         if they do not appear in the map) will be compiled one at
+#         a time into separate .o files.
+# * ignore
+#         objects in this package are not used.  Note however that
+#         most ignored files are actually handled by listing them in
+#         'standard.omit'
+#
+# If a package does not appear in the map, the default is 'package'.
+global package_map
+set package_map(.) package
+
+# These are ignored in Classpath.
+set package_map(gnu/test) ignore
+set package_map(gnu/javax/swing/plaf/gtk) ignore
+
+set package_map(gnu/java/awt/peer/swing) bc
+
+set package_map(gnu/xml) bc
+set package_map(javax/imageio) bc
+set package_map(javax/xml) bc
+set package_map(gnu/java/beans) bc
+set package_map(gnu/java/util/prefs/gconf) bc
+set package_map(gnu/java/awt/peer/gtk) bc
+set package_map(gnu/java/awt/dnd/peer/gtk) bc
+set package_map(gnu/java/awt/peer/qt) bc
+set package_map(gnu/javax/sound/midi) bc
+set package_map(org/xml) bc
+set package_map(org/w3c) bc
+set package_map(org/relaxng) bc
+set package_map(javax/rmi) bc
+set package_map(org/omg) bc
+set package_map(gnu/CORBA) bc
+set package_map(gnu/javax/rmi) bc
+
+# This is handled specially by the Makefile.
+# We still want it byte-compiled so it isn't in the .omit file.
+set package_map(gnu/gcj/tools/gcj_dbtool/Main.java) ignore
+
+# These are handled specially.  If we list Class.java with other files
+# in java.lang, we hit a compiler bug.
+set package_map(java/lang/Class.java) ignore
+set package_map(java/lang/Object.java) ignore
+
+# More special cases.  These end up in their own library.
+# Note that if we BC-compile AWT we must update these as well.
+set package_map(gnu/gcj/xlib) package
+set package_map(gnu/awt/xlib) package
+
+# Some BC ABI packages have classes which must not be compiled BC.
+# This maps such packages to a grep expression for excluding such
+# classes.
+global exclusion_map
+makearray exclusion_map
+# set exclusion_map(java/awt) AWTPermission
+
+# This maps a package name to a list of corresponding .java file base
+# names.  The package name will either appear as a key in package_map,
+# or it will be '.' for the default.
+global name_map
+makearray name_map
+
+# This maps a java file base name, like 'java/lang/Object.java', to
+# the source directory in which it resides.  We keep a layer of
+# indirection here so that we can override sources in Classpath with
+# our own sources.
+global dir_map
+makearray dir_map
+
+# An entry in this map means that all .properties files in the
+# corresponding directory should be ignored.
+global properties_map
+makearray properties_map
+
+# logging.properties is installed and is editable.
+set properties_map(java/util/logging) _
+# We haven't merged locale resources yet.
+set properties_map(gnu/java/locale) _
+
+
+# List of all properties files.
+set properties_files {}
+
+# List of all '@' files that we are going to compile.
+set package_files {}
+
+# List of all header file variables.
+set header_vars {}
+
+# List of all BC object files.
+set bc_objects {}
+
+# List of regexps for matching ignored files.
+set ignore_rx_list {}
+
+
+# Return true if a given file should be ignored.
+# The argument is the path name including the package part.
+proc ignore_file_p {file} {
+  global ignore_rx_list
+  foreach rx $ignore_rx_list {
+    if {[regexp -- $rx $file]} {
+      verbose "ignoring $file for $rx"
+      return 1
+    }
+  }
+  return 0
+}
+
+# Read a '.omit' file and update the internal data structures.
+proc read_omit_file {name} {
+  global ignore_rx_list
+  set fd [open $name r]
+  while {! [eof $fd]} {
+    set line [gets $fd]
+
+    # Classpath's entries bogusly start with "../".
+    if {[string match ../* $line]} {
+      set line [string range $line 3 end]
+    }
+
+    if {$line != ""} {
+      lappend ignore_rx_list $line
+    }
+  }
+  close $fd
+}
+
+# Classify a single source file.
+proc classify_source_file {basedir file} {
+  global package_map name_map dir_map
+
+  if {[ignore_file_p $file]} {
+    return
+  }
+
+  set seen [info exists dir_map($file)]
+  set dir_map($file) $basedir
+  set pkg $file
+  while {1} {
+    if {[info exists package_map($pkg)]} {
+      # If the entry is 'package', then set up a new entry for the
+      # file's package.
+      if {$package_map($pkg) == "package"} {
+	set pkg [file dirname $file]
+	set package_map($pkg) package
+      }
+      verbose "classify succeeded: $file -> $pkg"
+      if {! $seen} {
+	lappend name_map($pkg) $file
+      }
+      return
+    }
+    set pkg [file dirname $pkg]
+  }
+  error "can't happen"
+}
+
+# Scan a directory and its subdirectories for .java source files or
+# .properties files.  Note that we keep basedir and subdir separate so
+# we can properly update our global data structures.
+proc scan_directory {basedir subdir} {
+  global dir_map properties_map properties_files
+
+  set subdirs {}
+  set files {}
+  set here [pwd]
+  cd $basedir/$subdir
+  foreach file [lsort [glob -nocomplain *]] {
+    if {[string match *.java $file]} {
+      lappend files $subdir/$file
+    } elseif {[string match *.properties $file]} {
+      if {! [info exists properties_map($subdir)]} {
+	# We assume there aren't any overrides.
+	lappend properties_files $basedir/$subdir/$file
+      }
+    } elseif {[file isdirectory $file]} {
+      lappend subdirs $subdir/$file
+    } elseif {$subdir == "META-INF/services"} {
+      # All service files are included as properties.
+      lappend properties_files $basedir/$subdir/$file
+    }
+  }
+  cd $here
+
+  # Recurse first, so that we don't create new packages too eagerly.
+  foreach dir $subdirs {
+    scan_directory $basedir $dir
+  }
+
+  foreach file $files {
+    classify_source_file $basedir $file
+  }
+}
+
+# Scan known packages beneath the base directory for .java source
+# files.
+proc scan_packages {basedir} {
+  foreach subdir {gnu java javax org META-INF} {
+    if {[file exists $basedir/$subdir]} {
+      scan_directory $basedir $subdir
+    }
+  }
+}
+
+# Emit a rule for a 'bc' package.
+proc emit_bc_rule {package} {
+  global package_map exclusion_map bc_objects
+
+  if {$package == "."} {
+    set pkgname ordinary
+  } else {
+    set pkgname $package
+  }
+  set varname [join [split $pkgname /] _]_source_files
+  set loname [join [split $pkgname /] -].lo
+  set tname [join [split $pkgname /] -].list
+
+  puts "$loname: \$($varname)"
+  # Create a temporary list file and then compile it.  This works
+  # around the libtool problem mentioned in PR 21058.  classpath was
+  # built first, so the class files are to be found there.
+  set omit ""
+  if {[info exists exclusion_map($package)]} {
+    set omit "| grep -v $exclusion_map($package)"
+  }
+  puts  "\t at find classpath/lib/$package -name '*.class'${omit} > $tname"
+  puts "\t\$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o $loname @$tname"
+  puts "\t at rm -f $tname"
+  puts ""
+
+  lappend bc_objects $loname
+}
+
+# Emit a rule for a 'package' package.
+proc emit_package_rule {package} {
+  global package_map exclusion_map package_files
+
+  if {$package == "."} {
+    set pkgname ordinary
+  } else {
+    set pkgname $package
+  }
+  set varname [join [split $pkgname /] _]_source_files
+  set base $pkgname
+  set lname $base.list
+  set dname $base.deps
+
+  # A rule to make the phony file we are going to compile.
+  puts "$lname: \$($varname)"
+  puts "\t@\$(mkinstalldirs) \$(dir \$@)"
+  puts "\t at for file in \$($varname); do \\"
+  puts "\t  if test -f \$(srcdir)/\$\$file; then \\"
+  puts "\t    echo \$(srcdir)/\$\$file; \\"
+  puts "\t  else echo \$\$file; fi; \\"
+  puts "\tdone > $lname"
+  puts ""
+  puts "-include $dname"
+  puts ""
+  puts ""
+
+  if {$pkgname != "gnu/gcj/xlib" && $pkgname != "gnu/awt/xlib"} {
+    lappend package_files $lname
+  }
+}
+
+# Emit a source file variable for a package, and corresponding header
+# file variable, if needed.
+proc emit_source_var {package} {
+  global package_map name_map dir_map header_vars
+
+  if {$package == "."} {
+    set pkgname ordinary
+  } else {
+    set pkgname $package
+  }
+  set uname [join [split $pkgname /] _]
+  set varname ${uname}_source_files
+  puts -nonewline "$varname ="
+
+  makearray dirs
+  foreach base [lsort $name_map($package)] {
+    # Terminate previous line.
+    puts " \\"
+    # Having files start with './' is ugly and confuses the automake
+    # "dirstamp" code; see automake PR 461.
+    set ndir $dir_map($base)/
+    if {$ndir == "./"} {
+      set ndir ""
+    }
+    puts -nonewline "${ndir}${base}"
+    set dirs($dir_map($base)) 1
+  }
+  puts ""
+  puts ""
+
+  if {$package_map($package) != "bc"} {
+    # Ugly code to build up the appropriate patsubst.
+    set result "\$(patsubst %.java,%.h,\$($varname))"
+    foreach dir [lsort [array names dirs]] {
+      if {$dir != "."} {
+	set result "\$(patsubst $dir/%,%,$result)"
+      }
+    }
+
+    if {$package == "." || $package == "java/lang"} {
+      # Ugly hack.
+      set result "\$(filter-out java/lang/Object.h java/lang/Class.h,$result)"
+    }
+
+    puts "${uname}_header_files = $result"
+    puts ""
+    if {$pkgname != "gnu/gcj/xlib" && $pkgname != "gnu/awt/xlib"} {
+      lappend header_vars "${uname}_header_files"
+    }
+  }
+}
+
+# Pretty-print a Makefile variable.
+proc pp_var {name valueList {pre ""} {post ""}} {
+  puts ""
+  puts -nonewline "$name ="
+  foreach val $valueList {
+    puts " \\"
+    puts -nonewline "  ${pre}${val}${post}"
+  }
+  puts ""
+}
+
+global argv
+if {[llength $argv] > 0 && [lindex $argv 0] == "-verbose"} {
+  set is_verbose 1
+}
+
+# Read the proper .omit files.
+read_omit_file standard.omit.in
+read_omit_file classpath/lib/standard.omit
+
+# Scan classpath first.
+scan_packages classpath
+scan_packages classpath/external/sax
+scan_packages classpath/external/w3c_dom
+scan_packages classpath/external/relaxngDatatype
+# Resource files.
+scan_packages classpath/resource
+# Now scan our own files; this will correctly override decisions made
+# when scanning classpath.
+scan_packages .
+# Files created by the build.
+classify_source_file . java/lang/ConcreteProcess.java
+classify_source_file classpath gnu/java/locale/LocaleData.java
+classify_source_file classpath gnu/classpath/Configuration.java
+classify_source_file classpath gnu/java/security/Configuration.java
+
+puts "## This file was automatically generated by scripts/makemake.tcl"
+puts "## Do not edit!"
+puts ""
+
+foreach package [lsort [array names package_map]] {
+  if {$package_map($package) == "ignore"} {
+    continue
+  }
+  if {! [info exists name_map($package)]} {
+    continue
+  }
+
+  emit_source_var $package
+
+  if {$package_map($package) == "bc"} {
+    emit_bc_rule $package
+  } elseif {$package_map($package) == "ordinary"} {
+    # Nothing in particular to do here.
+  } elseif {$package_map($package) == "package"} {
+    emit_package_rule $package
+  } else {
+    error "unrecognized type: $package_map($package)"
+  }
+}
+
+pp_var all_packages_source_files $package_files
+pp_var ordinary_header_files $header_vars "\$(" ")"
+pp_var bc_objects $bc_objects
+pp_var property_files $properties_files

Propchange: llvm-gcc-4.2/trunk/libjava/scripts/makemake.tcl

------------------------------------------------------------------------------
    svn:executable = *

Added: llvm-gcc-4.2/trunk/libjava/scripts/mime.types
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/mime.types?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/mime.types (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/mime.types Thu Nov  8 16:56:19 2007
@@ -0,0 +1,276 @@
+# This is the default mime.types file from the Apache web server distribution
+
+# This file controls what Internet media types are sent to the client for
+# given file extension(s).  Sending the correct media type to the client
+# is important so they know how to handle the content of the file.
+# Extra types can either be added here or by using an AddType directive
+# in your config files. For more information about Internet media types,
+# please read RFC 2045, 2046, 2047, 2048, and 2077.  The Internet media type
+# registry is at <ftp://ftp.iana.org/in-notes/iana/assignments/media-types/>.
+
+# MIME type			Extension
+application/EDI-Consent
+application/EDI-X12
+application/EDIFACT
+application/activemessage
+application/andrew-inset	ez
+application/applefile
+application/atomicmail
+application/cals-1840
+application/commonground
+application/cybercash
+application/dca-rft
+application/dec-dx
+application/eshop
+application/hyperstudio
+application/iges
+application/mac-binhex40	hqx
+application/mac-compactpro	cpt
+application/macwriteii
+application/marc
+application/mathematica
+application/msword		doc
+application/news-message-id
+application/news-transmission
+application/octet-stream	bin dms lha lzh exe class
+application/oda			oda
+application/pdf			pdf
+application/pgp-encrypted
+application/pgp-keys
+application/pgp-signature
+application/pkcs10
+application/pkcs7-mime
+application/pkcs7-signature
+application/postscript		ai eps ps
+application/prs.alvestrand.titrax-sheet
+application/prs.cww
+application/prs.nprend
+application/remote-printing
+application/riscos
+application/rtf			rtf
+application/set-payment
+application/set-payment-initiation
+application/set-registration
+application/set-registration-initiation
+application/sgml
+application/sgml-open-catalog
+application/slate
+application/smil		smi smil
+application/vemmi
+application/vnd.3M.Post-it-Notes
+application/vnd.FloGraphIt
+application/vnd.acucobol
+application/vnd.anser-web-certificate-issue-initiation
+application/vnd.anser-web-funds-transfer-initiation
+application/vnd.audiograph
+application/vnd.businessobjects
+application/vnd.claymore
+application/vnd.comsocaller
+application/vnd.dna
+application/vnd.dxr
+application/vnd.ecdis-update
+application/vnd.ecowin.chart
+application/vnd.ecowin.filerequest
+application/vnd.ecowin.fileupdate
+application/vnd.ecowin.series
+application/vnd.ecowin.seriesrequest
+application/vnd.ecowin.seriesupdate
+application/vnd.enliven
+application/vnd.epson.salt
+application/vnd.fdf
+application/vnd.ffsns
+application/vnd.framemaker
+application/vnd.fujitsu.oasys
+application/vnd.fujitsu.oasys2
+application/vnd.fujitsu.oasys3
+application/vnd.fujitsu.oasysgp
+application/vnd.fujitsu.oasysprs
+application/vnd.fujixerox.docuworks
+application/vnd.hp-HPGL
+application/vnd.hp-PCL
+application/vnd.hp-PCLXL
+application/vnd.hp-hps
+application/vnd.ibm.MiniPay
+application/vnd.ibm.modcap
+application/vnd.intercon.formnet
+application/vnd.intertrust.digibox
+application/vnd.intertrust.nncp
+application/vnd.is-xpr
+application/vnd.japannet-directory-service
+application/vnd.japannet-jpnstore-wakeup
+application/vnd.japannet-payment-wakeup
+application/vnd.japannet-registration
+application/vnd.japannet-registration-wakeup
+application/vnd.japannet-setstore-wakeup
+application/vnd.japannet-verification
+application/vnd.japannet-verification-wakeup
+application/vnd.koan
+application/vnd.lotus-1-2-3
+application/vnd.lotus-approach
+application/vnd.lotus-freelance
+application/vnd.lotus-organizer
+application/vnd.lotus-screencam
+application/vnd.lotus-wordpro
+application/vnd.meridian-slingshot
+application/vnd.mif		mif
+application/vnd.minisoft-hp3000-save
+application/vnd.mitsubishi.misty-guard.trustweb
+application/vnd.ms-artgalry
+application/vnd.ms-asf
+application/vnd.ms-excel
+application/vnd.ms-powerpoint	ppt
+application/vnd.ms-project
+application/vnd.ms-tnef
+application/vnd.ms-works
+application/vnd.music-niff
+application/vnd.musician
+application/vnd.netfpx
+application/vnd.noblenet-directory
+application/vnd.noblenet-sealer
+application/vnd.noblenet-web
+application/vnd.novadigm.EDM
+application/vnd.novadigm.EDX
+application/vnd.novadigm.EXT
+application/vnd.osa.netdeploy
+application/vnd.powerbuilder6
+application/vnd.powerbuilder6-s
+application/vnd.rapid
+application/vnd.seemail
+application/vnd.shana.informed.formtemplate
+application/vnd.shana.informed.interchange
+application/vnd.shana.informed.package
+application/vnd.street-stream
+application/vnd.svd
+application/vnd.swiftview-ics
+application/vnd.truedoc
+application/vnd.visio
+application/vnd.webturbo
+application/vnd.wrq-hp3000-labelled
+application/vnd.wt.stf
+application/vnd.xara
+application/vnd.yellowriver-custom-menu
+application/wita
+application/wordperfect5.1
+application/x-bcpio		bcpio
+application/x-cdlink		vcd
+application/x-chess-pgn		pgn
+application/x-compress
+application/x-cpio		cpio
+application/x-csh		csh
+application/x-director		dcr dir dxr
+application/x-dvi		dvi
+application/x-futuresplash	spl
+application/x-gtar		gtar
+application/x-gzip
+application/x-hdf		hdf
+application/x-javascript	js
+application/x-koan		skp skd skt skm
+application/x-latex		latex
+application/x-netcdf		nc cdf
+# The standard is that rpm is audio/x-pn-realaudio-plugin... oh well...
+application/x-rpm		rpm
+application/x-sh		sh
+application/x-shar		shar
+application/x-shockwave-flash	swf
+application/x-stuffit		sit
+application/x-sv4cpio		sv4cpio
+application/x-sv4crc		sv4crc
+application/x-tar		tar
+application/x-tcl		tcl
+application/x-tex		tex
+application/x-texinfo		texinfo texi
+application/x-troff		t tr roff
+application/x-troff-man		man
+application/x-troff-me		me
+application/x-troff-ms		ms
+application/x-ustar		ustar
+application/x-wais-source	src
+application/x400-bp
+application/xml
+application/zip			zip
+audio/32kadpcm
+audio/basic			au snd
+audio/midi			mid midi kar
+audio/mpeg			mpga mp2 mp3
+audio/vnd.qcelp
+audio/x-aiff			aif aiff aifc
+audio/x-pn-realaudio		ram rm
+audio/x-realaudio		ra
+audio/x-wav			wav
+chemical/x-pdb			pdb xyz
+image/cgm
+image/g3fax
+image/gif			gif
+image/ief			ief
+image/jpeg			jpeg jpg jpe
+image/naplps
+image/png			png
+image/prs.btif
+image/tiff			tiff tif
+image/vnd.dwg
+image/vnd.dxf
+image/vnd.fpx
+image/vnd.net-fpx
+image/vnd.svf
+image/vnd.xiff
+image/x-cmu-raster		ras
+image/x-portable-anymap		pnm
+image/x-portable-bitmap		pbm
+image/x-portable-graymap	pgm
+image/x-portable-pixmap		ppm
+image/x-rgb			rgb
+image/x-xbitmap			xbm
+image/x-xpixmap			xpm
+image/x-xwindowdump		xwd
+message/delivery-status
+message/disposition-notification
+message/external-body
+message/http
+message/news
+message/partial
+message/rfc822
+model/iges			igs iges
+model/mesh			msh mesh silo
+model/vnd.dwf
+model/vrml			wrl vrml
+multipart/alternative
+multipart/appledouble
+multipart/byteranges
+multipart/digest
+multipart/encrypted
+multipart/form-data
+multipart/header-set
+multipart/mixed
+multipart/parallel
+multipart/related
+multipart/report
+multipart/signed
+multipart/voice-message
+text/css			css
+text/directory
+text/enriched
+text/html			html htm
+text/plain			asc txt
+text/prs.lines.tag
+text/rfc822-headers
+text/richtext			rtx
+text/rtf			rtf
+text/sgml			sgml sgm
+text/tab-separated-values	tsv
+text/uri-list
+text/vnd.abc
+text/vnd.flatland.3dml
+text/vnd.fmi.flexstor
+text/vnd.in3d.3dml
+text/vnd.in3d.spot
+text/vnd.latex-z
+text/x-setext			etx
+text/xml			xml
+video/mpeg			mpeg mpg mpe
+video/quicktime			qt mov
+video/vnd.motorola.video
+video/vnd.motorola.videop
+video/vnd.vivo
+video/x-msvideo			avi
+video/x-sgi-movie		movie
+x-conference/x-cooltalk		ice

Added: llvm-gcc-4.2/trunk/libjava/scripts/showval.java
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/showval.java?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/showval.java (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/showval.java Thu Nov  8 16:56:19 2007
@@ -0,0 +1,41 @@
+// Show a value given class name and constant name.
+
+/* Copyright (C) 2000  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+/* Written by Tom Tromey <tromey at redhat.com>.  */
+
+// Use like this to print a `static final' value (integers only, not
+// strings yet):
+//   java showval java.awt.geom.AffineTransform.TYPE_IDENTITY
+// Prints result like:
+//   TYPE_IDENTITY = 0
+// In conjunction with a keyboard macro you can do a number of
+// constants very easily.
+
+import java.lang.reflect.*;
+
+public class showval
+{
+  public static void main (String[] args)
+  {
+    int ch = args[0].lastIndexOf ('.');
+    String className = args[0].substring (0, ch);
+    String constName = args[0].substring (ch + 1);
+    try
+      {
+	Class klass = Class.forName (className);
+	Field field = klass.getField (constName);
+	System.out.println (constName + " = " + field.getInt (null));
+      }
+    catch (Throwable _)
+      {
+	System.out.println (_);
+      }
+  }
+}

Added: llvm-gcc-4.2/trunk/libjava/scripts/unicode-blocks.pl
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/unicode-blocks.pl?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/unicode-blocks.pl (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/unicode-blocks.pl Thu Nov  8 16:56:19 2007
@@ -0,0 +1,210 @@
+#!/usr/bin/perl -w
+# unicode-blocks.pl -- Script to generate java.lang.Character.UnicodeBlock
+# Copyright (C) 2002 Free Software Foundation, Inc.
+#
+# This file is part of GNU Classpath.
+#
+# GNU Classpath is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Classpath is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Classpath; see the file COPYING.  If not, write to the
+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA.
+#
+# Linking this library statically or dynamically with other modules is
+# making a combined work based on this library.  Thus, the terms and
+# conditions of the GNU General Public License cover the whole
+# combination.
+#
+# As a special exception, the copyright holders of this library give you
+# permission to link this library with independent modules to produce an
+# executable, regardless of the license terms of these independent
+# modules, and to copy and distribute the resulting executable under
+# terms of your choice, provided that you also meet, for each linked
+# independent module, the terms and conditions of the license of that
+# module.  An independent module is a module which is not derived from
+# or based on this library.  If you modify this library, you may extend
+# this exception to your version of the library, but you are not
+# obligated to do so.  If you do not wish to do so, delete this
+# exception statement from your version.
+
+
+# Code for reading Blocks.txt and generating (to standard out) the code for
+# java.lang.Character.UnicodeBlock, for pasting into java/lang/Character.java.
+# You should probably check that the results are accurate to the
+# specification, but I made sure it works OOB for Unicode 3.0.0 and JDK 1.4.
+# As the grammar for the Blocks.txt file is changing in Unicode 3.2.0, you
+# will have to tweak this some for future use.  For now, the relevant
+# Unicode definition files are found in libjava/gnu/gcj/convert/.
+#
+# author Eric Blake <ebb9 at email.byu.edu>
+#
+# usage: unicode-blocks.pl <blocks.txt>
+#    where <blocks.txt> is obtained from www.unicode.org (named Blocks-3.txt
+#    for Unicode version 3.0.0).
+
+
+die "Usage: $0 <blocks.txt>" unless @ARGV == 1;
+open (BLOCKS, $ARGV[0]) || die "Can't open Unicode block file: $!\n";
+
+# A hash of added fields and the JDK they were added in, to automatically
+# print @since tags.  Maintaining this is optional (and tedious), but nice.
+my %additions = ("SYRIAC" => "1.4",
+                 "THAANA" => "1.4",
+                 "SINHALA" => "1.4",
+                 "MYANMAR" => "1.4",
+                 "ETHIOPIC" => "1.4",
+                 "CHEROKEE" => "1.4",
+                 "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" => "1.4",
+                 "OGHAM" => "1.4",
+                 "RUNIC" => "1.4",
+                 "KHMER" => "1.4",
+                 "MONGOLIAN" => "1.4",
+                 "BRAILLE_PATTERNS" => "1.4",
+                 "CJK_RADICALS_SUPPLEMENT" => "1.4",
+                 "KANGXI_RADICALS" => "1.4",
+                 "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" => "1.4",
+                 "BOPOMOFO_EXTENDED" => "1.4",
+                 "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" => "1.4",
+                 "YI_SYLLABLES" => "1.4",
+                 "YI_RADICALS" => "1.4",
+                 );
+
+print <<'EOF';
+  /**
+   * A family of character subsets in the Unicode specification. A character
+   * is in at most one of these blocks.
+   *
+   * This inner class was generated automatically from
+   * <code>$ARGV[0]</code>, by some perl scripts.
+   * This Unicode definition file can be found on the
+   * <a href="http://www.unicode.org">http://www.unicode.org</a> website.
+   * JDK 1.4 uses Unicode version 3.0.0.
+   *
+   * @author scripts/unicode-blocks.pl (written by Eric Blake)
+   * @since 1.2
+   */
+  public static final class UnicodeBlock extends Subset
+  {
+    /** The start of the subset. */
+    private final char start;
+
+    /** The end of the subset. */
+    private final char end;
+
+    /**
+     * Constructor for strictly defined blocks.
+     *
+     * @param start the start character of the range
+     * @param end the end character of the range
+     * @param name the block name
+     */
+    private UnicodeBlock(char start, char end, String name)
+    {
+      super(name);
+      this.start = start;
+      this.end = end;
+    }
+
+    /**
+     * Returns the Unicode character block which a character belongs to.
+     *
+     * @param ch the character to look up
+     * @return the set it belongs to, or null if it is not in one
+     */
+    public static UnicodeBlock of(char ch)
+    {
+      // Special case, since SPECIALS contains two ranges.
+      if (ch == '\uFEFF')
+        return SPECIALS;
+      // Simple binary search for the correct block.
+      int low = 0;
+      int hi = sets.length - 1;
+      while (low <= hi)
+        {
+          int mid = (low + hi) >> 1;
+          UnicodeBlock b = sets[mid];
+          if (ch < b.start)
+            hi = mid - 1;
+          else if (ch > b.end)
+            low = mid + 1;
+          else
+            return b;
+        }
+      return null;
+    }
+EOF
+
+my $seenSpecials = 0;
+my $seenSurrogates = 0;
+my $surrogateStart = 0;
+my @names = ();
+while (<BLOCKS>) {
+    next if /^\#/;
+    my ($start, $end, $block) = split(/; /);
+    next unless defined $block;
+    chomp $block;
+    $block =~ s/ *$//;
+    if (! $seenSpecials and $block =~ /Specials/) {
+        # Special case SPECIALS, since it is two disjoint ranges
+        $seenSpecials = 1;
+        next;              
+    }
+    if ($block =~ /Surrogates/) {
+        # Special case SURROGATES_AREA, since it one range, not three
+        # consecutive, in Java
+        $seenSurrogates++;
+        if ($seenSurrogates == 1) {
+            $surrogateStart = $start;
+            next;
+        } elsif ($seenSurrogates == 2) {
+            next;
+        } else {
+            $start = $surrogateStart;
+            $block = "Surrogates Area";
+        }
+    }
+    # Special case the name of PRIVATE_USE_AREA.
+    $block =~ s/(Private Use)/$1 Area/;
+
+    (my $name = $block) =~ tr/a-z -/A-Z__/;
+    push @names, $name;
+    my $since = (defined $additions{$name}
+                 ? "\n     * \@since $additions{$name}" : "");
+    my $extra = ($block =~ /Specials/ ? "'\\uFEFF', " : "");
+    print <<EOF;
+
+    /**
+     * $block.
+     * $extra'\\u$start' - '\\u$end'.$since
+     */
+    public static final UnicodeBlock $name
+      = new UnicodeBlock('\\u$start', '\\u$end',
+                         "$name");
+EOF
+}
+
+print <<EOF;
+
+    /**
+     * The defined subsets.
+     */
+    private static final UnicodeBlock sets[] = {
+EOF
+
+foreach (@names) {
+    print "      $_,\n";
+}
+
+print <<EOF;
+    };
+  } // class UnicodeBlock
+EOF

Propchange: llvm-gcc-4.2/trunk/libjava/scripts/unicode-blocks.pl

------------------------------------------------------------------------------
    svn:executable = *

Added: llvm-gcc-4.2/trunk/libjava/scripts/unicode-decomp.pl
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/unicode-decomp.pl?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/unicode-decomp.pl (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/unicode-decomp.pl Thu Nov  8 16:56:19 2007
@@ -0,0 +1,146 @@
+#!/usr/bin/perl -w
+# unicode-decomp.pl - script to generate database for java.text.Collator
+# Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+#
+# This file is part of libjava.
+# 
+# This software is copyrighted work licensed under the terms of the
+# Libjava License.  Please consult the file "LIBJAVA_LICENSE" for
+# details.
+
+# Code for reading UnicodeData.txt and generating the code for
+# gnu.java.lang.CharData.  For now, the relevant Unicode definition files
+# are found in libjava/gnu/gcj/convert/.
+#
+# Usage: ./unicode-decomp.pl [-n] <UnicodeData.txt> <decomp.h>
+#   where <UnicodeData.txt> is obtained from www.unicode.org (named
+#   UnicodeData-3.0.0.txt for Unicode version 3.0.0), and <CharData.java>
+#   is the final location of include/java-chardecomp.h.
+#   As of JDK 1.4, use Unicode version 3.0.0 for best results.
+#
+# If this exits with nonzero status, then you must investigate the
+# cause of the problem.
+# Diagnostics and other information to stderr.
+# With -n, the files are not created, but all processing still occurs.
+
+# These maps characters to their decompositions.
+my %canonical_decomposition = ();
+my %full_decomposition = ();
+
+# Handle `-n' and open output files.
+if ($ARGV[0] && $ARGV[0] eq '-n')
+{
+    shift @ARGV;
+    $ARGV[1] = '/dev/null';
+}
+die "Usage: $0 <UnicodeData.txt> <java-chardecomp.h>" unless @ARGV == 2;
+open (UNICODE, "< $ARGV[0]") || die "Can't open Unicode attribute file: $!\n";
+
+# Process the Unicode file.
+$| = 1;
+my $count = 0;
+print STDERR "Parsing attributes file";
+while (<UNICODE>)
+{
+    print STDERR "." unless $count++ % 1000;
+    chomp;
+    s/\r//g;
+    my ($ch, undef, undef, undef, undef, $decomp) = split ';';
+    $ch = hex($ch);
+
+    if ($decomp ne '')
+    {
+        my $is_full = 0;
+        my @decomp = ();
+        foreach (split (' ', $decomp))
+        {
+            if (/^\<.*\>$/)
+            {
+                $is_full = 1;
+                next;
+            }
+	    push (@decomp, hex ($_));
+	}
+        my $s = pack "n*", @decomp;
+        if ($is_full)
+        {
+            $full_decomposition{$ch} = $s;
+        }
+        else
+        {
+            $canonical_decomposition{$ch} = $s;
+        }
+    }
+}
+
+# Now generate decomposition tables.
+open DECOMP, "> $ARGV[1]" or die "Can't open output file: $!\n";
+print STDERR "\nGenerating tables\n";
+print DECOMP <<EOF;
+// java-chardecomp.h - Decomposition character tables -*- c++ -*-
+
+#ifndef __JAVA_CHARDECOMP_H__
+#define __JAVA_CHARDECOMP_H__
+
+
+// These tables are automatically generated by the $0
+// script.  DO NOT EDIT the tables.  Instead, fix the script
+// and run it again.
+
+// This file should only be included by natCollator.cc
+
+struct decomp_entry
+{
+  jchar key;
+  const char *value;
+};
+
+EOF
+
+&write_decompositions;
+
+print DECOMP "#endif /* __JAVA_CHARDECOMP_H__ */\n";
+
+close(DECOMP);
+print STDERR "Done\n";
+exit;
+
+
+# Write a single decomposition table.
+sub write_single_decomposition($$%)
+{
+    my ($name, $is_canon, %table) = @_;
+    my $first_line = 1;
+    print DECOMP "static const decomp_entry ${name}_decomposition[] =\n{\n";
+
+    for my $key (0 .. 0xffff)
+    {
+	next if ! defined $table{$key};
+        print DECOMP ",\n" unless $first_line;
+	$first_line = 0;
+
+	printf DECOMP "  { 0x%04x, \"", $key;
+
+	# We represent the expansion as a series of bytes, terminated
+	# with a double nul.  This is ugly, but relatively
+	# space-efficient.  Most expansions are short, but there are a
+	# few that are very long (e.g. \uFDFA).  This means that if we
+	# chose a fixed-space representation we would waste a lot of
+	# space.
+	my @expansion = unpack "n*", $table{$key};
+	foreach my $char (@expansion)
+	{
+	    printf DECOMP "\\x%02x\\x%02x", ($char / 256), ($char % 256);
+	}
+
+	print DECOMP "\" }";
+    }
+
+    print DECOMP "\n};\n\n";
+}
+
+sub write_decompositions()
+{
+    &write_single_decomposition ('canonical', 1, %canonical_decomposition);
+    &write_single_decomposition ('full', 0, %full_decomposition);
+}

Propchange: llvm-gcc-4.2/trunk/libjava/scripts/unicode-decomp.pl

------------------------------------------------------------------------------
    svn:executable = *

Added: llvm-gcc-4.2/trunk/libjava/scripts/unicode-muncher.pl
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/unicode-muncher.pl?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/unicode-muncher.pl (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/unicode-muncher.pl Thu Nov  8 16:56:19 2007
@@ -0,0 +1,642 @@
+#!/usr/bin/perl -w
+# unicode-muncher.pl -- generate Unicode database for java.lang.Character
+# Copyright (C) 1998, 2002, 2004  Free Software Foundation, Inc.
+#
+# This file is part of GNU Classpath.
+#
+# GNU Classpath is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Classpath is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Classpath; see the file COPYING.  If not, write to the
+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA.
+#
+# Linking this library statically or dynamically with other modules is
+# making a combined work based on this library.  Thus, the terms and
+# conditions of the GNU General Public License cover the whole
+# combination.
+#
+# As a special exception, the copyright holders of this library give you
+# permission to link this library with independent modules to produce an
+# executable, regardless of the license terms of these independent
+# modules, and to copy and distribute the resulting executable under
+# terms of your choice, provided that you also meet, for each linked
+# independent module, the terms and conditions of the license of that
+# module.  An independent module is a module which is not derived from
+# or based on this library.  If you modify this library, you may extend
+# this exception to your version of the library, but you are not
+# obligated to do so.  If you do not wish to do so, delete this
+# exception statement from your version.
+
+# Code for reading UnicodeData-3.0.0.txt and SpecialCasing-2.txt to generate
+# the code for gnu.java.lang.CharData. The relevant files can be found here:
+#
+#   http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt
+#   http://www.unicode.org/Public/3.0-Update/SpecialCasing-2.txt
+#
+# Inspired by code from Jochen Hoenicke.
+# author Eric Blake <ebb9 at email.byu.edu>
+#
+# Usage: ./unicode-muncher <UnicodeData.txt> <SpecialCasing> <CharData.java>
+#   where <UnicodeData.txt> is obtained from www.unicode.org (named
+#   UnicodeData-3.0.0.txt for Unicode version 3.0.0), <SpecialCasing>
+#   is obtained from www.unicode too (named SpecialCasing-2.txt for Unicode
+#   version 3.0.0), and <CharData.java> is the final location for the Java
+#   interface gnu.java.lang.CharData. As of JDK 1.4, use Unicode version 3.0.0
+#   for best results.
+
+##
+## Convert a 16-bit integer to a Java source code String literal character
+##
+sub javaChar($) {
+    my ($char) = @_;
+    die "Out of range: $char\n" if $char < -0x8000 or $char > 0xffff;
+    $char += 0x10000 if $char < 0;
+    # Special case characters that must be escaped, or are shorter as ASCII
+    return sprintf("\\%03o", $char) if $char < 0x20;
+    return "\\\"" if $char == 0x22;
+    return "\\\\" if $char == 0x5c;
+    return pack("C", $char) if $char < 0x7f;
+    return sprintf("\\u%04x", $char);
+}
+
+##
+## Convert the text UnicodeData file from www.unicode.org into a Java
+## interface with string constants holding the compressed information.
+##
+my @TYPECODES = qw(Cn Lu Ll Lt Lm Lo Mn Me Mc Nd Nl No Zs Zl Zp Cc Cf
+                   SKIPPED Co Cs Pd Ps Pe Pc Po Sm Sc Sk So Pi Pf);
+my @DIRCODES = qw(L R AL EN ES ET AN CS NSM BN B S WS ON LRE LRO RLE RLO PDF);
+
+my $NOBREAK_FLAG  = 32;
+my $MIRRORED_FLAG = 64;
+
+my %special = ();
+my @info = ();
+my $titlecase = "";
+my $count = 0;
+my $range = 0;
+
+die "Usage: $0 <UnicodeData.txt> <SpecialCasing.txt> <CharData.java>"
+    unless @ARGV == 3;
+$| = 1;
+print "GNU Classpath Unicode Attribute Database Generator 2.1\n";
+print "Copyright (C) 1998, 2002 Free Software Foundation, Inc.\n";
+
+# Stage 0: Parse the special casing file
+print "Parsing special casing file\n";
+open (SPECIAL, "< $ARGV[1]") || die "Can't open special casing file: $!\n";
+while (<SPECIAL>) {
+    next if /^\#/;
+    my ($ch, undef, undef, $upper) = split / *; */;
+
+    # This grabs only the special casing for multi-char uppercase. Note that
+    # there are no multi-char lowercase, and that Sun ignores multi-char
+    # titlecase rules. This script omits 3 special cases in Unicode 3.0.0,
+    # which must be hardcoded in java.lang.String:
+    #  \u03a3 (Sun ignores this special case)
+    #  \u0049 - lowercases to \u0131, but only in Turkish locale
+    #  \u0069 - uppercases to \u0130, but only in Turkish locale
+    next unless defined $upper and $upper =~ / /;
+    $special{hex $ch} = [map {hex} split ' ', $upper];
+}
+
+close SPECIAL;
+
+# Stage 1: Parse the attribute file
+print "Parsing attributes file";
+open (UNICODE, "< $ARGV[0]") || die "Can't open Unicode attribute file: $!\n";
+while (<UNICODE>) {
+    print "." unless $count++ % 1000;
+    chomp;
+    s/\r//g;
+    my ($ch, $name, $category, undef, $bidir, $decomp, undef, undef, $numeric,
+        $mirrored, undef, undef, $upcase, $lowcase, $title) = split ';';
+    $ch = hex($ch);
+    next if $ch > 0xffff; # Ignore surrogate pairs, since Java does
+
+    my ($type, $numValue, $upperchar, $lowerchar, $direction);
+
+    $type = 0;
+    while ($category !~ /^$TYPECODES[$type]$/) {
+        if (++$type == @TYPECODES) {
+            die "$ch: Unknown type: $category";
+        }
+    }
+    $type |= $NOBREAK_FLAG if ($decomp =~ /noBreak/);
+    $type |= $MIRRORED_FLAG if ($mirrored =~ /Y/);
+
+    if ($numeric =~ /^[0-9]+$/) {
+        $numValue = $numeric;
+        die "numValue too big: $ch, $numValue\n" if $numValue >= 0x7fff;
+    } elsif ($numeric eq "") {
+        # Special case sequences of 'a'-'z'
+        if ($ch >= 0x0041 && $ch <= 0x005a) {
+            $numValue = $ch - 0x0037;
+        } elsif ($ch >= 0x0061 && $ch <= 0x007a) {
+            $numValue = $ch - 0x0057;
+        } elsif ($ch >= 0xff21 && $ch <= 0xff3a) {
+            $numValue = $ch - 0xff17;
+        } elsif ($ch >= 0xff41 && $ch <= 0xff5a) {
+            $numValue = $ch - 0xff37;
+        } else {
+            $numValue = -1;
+        }
+    } else {
+        $numValue = -2;
+    }
+
+    $upperchar = $upcase ? hex($upcase) - $ch : 0;
+    $lowerchar = $lowcase ? hex($lowcase) - $ch : 0;
+    if ($title ne $upcase) {
+        my $titlechar = $title ? hex($title) : $ch;
+        $titlecase .= pack("n2", $ch, $titlechar);
+    }
+
+    $direction = 0;
+    while ($bidir !~ /^$DIRCODES[$direction]$/) {
+        if (++$direction == @DIRCODES) {
+            $direction = -1;
+            last;
+        }
+    }
+    $direction <<= 2;
+    $direction += $#{$special{$ch}} if defined $special{$ch};
+
+    if ($range) {
+        die "Expecting end of range at $ch\n" unless $name =~ /Last>$/;
+        for ($range + 1 .. $ch - 1) {
+            $info[$_] = pack("n5", $type, $numValue, $upperchar,
+                             $lowerchar, $direction);
+        }
+        $range = 0;
+    } elsif ($name =~ /First>$/) {
+        $range = $ch;
+    }
+    $info[$ch] = pack("n5", $type, $numValue, $upperchar, $lowerchar,
+                      $direction);
+}
+close UNICODE;
+
+# Stage 2: Compress the data structures
+printf "\nCompressing data structures";
+$count = 0;
+my $info = ();
+my %charhash = ();
+my @charinfo = ();
+
+for my $ch (0 .. 0xffff) {
+    print "." unless $count++ % 0x1000;
+    $info[$ch] = pack("n5", 0, -1, 0, 0, -4) unless defined $info[$ch];
+
+    my ($type, $numVal, $upper, $lower, $direction) = unpack("n5", $info[$ch]);
+    if (! exists $charhash{$info[$ch]}) {
+        push @charinfo, [ $numVal, $upper, $lower, $direction ];
+        $charhash{$info[$ch]} = $#charinfo;
+    }
+    $info .= pack("n", ($charhash{$info[$ch]} << 7) | $type);
+}
+
+my $charlen = @charinfo;
+my $bestshift;
+my $bestest = 1000000;
+my $bestblkstr;
+die "Too many unique character entries: $charlen\n" if $charlen > 512;
+print "\nUnique character entries: $charlen\n";
+
+for my $i (3 .. 8) {
+    my $blksize = 1 << $i;
+    my %blocks = ();
+    my @blkarray = ();
+    my ($j, $k);
+    print "shift: $i";
+
+    for ($j = 0; $j < 0x10000; $j += $blksize) {
+        my $blkkey = substr $info, 2 * $j, 2 * $blksize;
+        if (! exists $blocks{$blkkey}) {
+            push @blkarray, $blkkey;
+            $blocks{$blkkey} = $#blkarray;
+        }
+    }
+    my $blknum = @blkarray;
+    my $blocklen = $blknum * $blksize;
+    printf " before %5d", $blocklen;
+
+    # Now we try to pack the blkarray as tight as possible by finding matching
+    # heads and tails.
+    for ($j = $blksize - 1; $j > 0; $j--) {
+        my %tails = ();
+        for $k (0 .. $#blkarray) {
+            next unless defined $blkarray[$k];
+            my $len = length $blkarray[$k];
+            my $tail = substr $blkarray[$k], $len - $j * 2;
+            if (exists $tails{$tail}) {
+                push @{$tails{$tail}}, $k;
+            } else {
+                $tails{$tail} = [ $k ];
+            }
+        }
+
+        # tails are calculated, now calculate the heads and merge.
+      BLOCK:
+        for $k (0 .. $#blkarray) {
+            next unless defined $blkarray[$k];
+            my $tomerge = $k;
+            while (1) {
+                my $head = substr($blkarray[$tomerge], 0, $j * 2);
+                my $entry = $tails{$head};
+                next BLOCK unless defined $entry;
+
+                my $other = shift @{$entry};
+                if ($other == $tomerge) {
+                    if (@{$entry}) {
+                        push @{$entry}, $other;
+                        $other = shift @{$entry};
+                    } else {
+                        push @{$entry}, $other;
+                        next BLOCK;
+                    }
+                }
+                if (@{$entry} == 0) {
+                    delete $tails{$head};
+                }
+
+                # a match was found
+                my $merge = $blkarray[$other]
+                    . substr($blkarray[$tomerge], $j * 2);
+                $blocklen -= $j;
+                $blknum--;
+
+                if ($other < $tomerge) {
+                    $blkarray[$tomerge] = undef;
+                    $blkarray[$other] = $merge;
+                    my $len = length $merge;
+                    my $tail = substr $merge, $len - $j * 2;
+                    $tails{$tail} = [ map { $_ == $tomerge ? $other : $_ }
+                                      @{$tails{$tail}} ];
+                    next BLOCK;
+                }
+                $blkarray[$tomerge] = $merge;
+                $blkarray[$other] = undef;
+            }
+        }
+    }
+    my $blockstr;
+    for $k (0 .. $#blkarray) {
+        $blockstr .= $blkarray[$k] if defined $blkarray[$k];
+    }
+
+    die "Unexpected $blocklen" if length($blockstr) != 2 * $blocklen;
+    my $estimate = 2 * $blocklen + (0x20000 >> $i);
+
+    printf " after merge %5d: %6d bytes\n", $blocklen, $estimate;
+    if ($estimate < $bestest) {
+        $bestest = $estimate;
+        $bestshift = $i;
+        $bestblkstr = $blockstr;
+    }
+}
+
+my @blocks;
+my $blksize = 1 << $bestshift;
+for (my $j = 0; $j < 0x10000; $j += $blksize) {
+    my $blkkey = substr $info, 2 * $j, 2 * $blksize;
+    my $index = index $bestblkstr, $blkkey;
+    while ($index & 1) {
+        die "not found: $j" if $index == -1;
+        $index = index $bestblkstr, $blkkey, $index + 1;
+    }
+    push @blocks, ($index / 2 - $j) & 0xffff;
+}
+
+# Phase 3: Generate the file
+die "UTF-8 limit of blocks may be exceeded: " . scalar(@blocks) . "\n"
+    if @blocks > 0xffff / 3;
+die "UTF-8 limit of data may be exceeded: " . length($bestblkstr) . "\n"
+    if length($bestblkstr) > 0xffff / 3;
+{
+    print "Generating $ARGV[2] with shift of $bestshift";
+    my ($i, $j);
+
+    open OUTPUT, "> $ARGV[2]" or die "Failed creating output file: $!\n";
+    print OUTPUT <<EOF;
+/* gnu/java/lang/CharData -- Database for java.lang.Character Unicode info
+   Copyright (C) 2002 Free Software Foundation, Inc.
+   *** This file is generated by scripts/unicode-muncher.pl ***
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.java.lang;
+
+/**
+ * This contains the info about the unicode characters, that
+ * java.lang.Character needs.  It is generated automatically from
+ * <code>$ARGV[0]</code> and
+ * <code>$ARGV[1]</code>, by some
+ * perl scripts. These Unicode definition files can be found on the
+ * <a href="http://www.unicode.org">http://www.unicode.org</a> website.
+ * JDK 1.4 uses Unicode version 3.0.0.
+ *
+ * The data is stored as string constants, but Character will convert these
+ * Strings to their respective <code>char[]</code> components.  The field
+ * <code>BLOCKS</code> stores the offset of a block of 2<sup>SHIFT</sup>
+ * characters within <code>DATA</code>.  The DATA field, in turn, stores
+ * information about each character in the low order bits, and an offset
+ * into the attribute tables <code>UPPER</code>, <code>LOWER</code>,
+ * <code>NUM_VALUE</code>, and <code>DIRECTION</code>.  Notice that the
+ * attribute tables are much smaller than 0xffff entries; as many characters
+ * in Unicode share common attributes.  The DIRECTION table also contains
+ * a field for detecting characters with multi-character uppercase expansions.
+ * Next, there is a listing for <code>TITLE</code> exceptions (most characters
+ * just have the same title case as upper case).  Finally, there are two
+ * tables for multi-character capitalization, <code>UPPER_SPECIAL</code>
+ * which lists the characters which are special cased, and
+ * <code>UPPER_EXPAND</code>, which lists their expansion.
+ *
+ * \@author scripts/unicode-muncher.pl (written by Jochen Hoenicke,
+ *         Eric Blake)
+ * \@see Character
+ * \@see String
+ */
+public interface CharData
+{
+  /**
+   * The Unicode definition file that was parsed to build this database.
+   */
+  String SOURCE = \"$ARGV[0]\";
+
+  /**
+   * The character shift amount to look up the block offset. In other words,
+   * <code>(char) (BLOCKS.value[ch >> SHIFT] + ch)</code> is the index where
+   * <code>ch</code> is described in <code>DATA</code>.
+   */
+  int SHIFT = $bestshift;
+
+  /**
+   * The mapping of character blocks to their location in <code>DATA</code>.
+   * Each entry has been adjusted so that the 16-bit sum with the desired
+   * character gives the actual index into <code>DATA</code>.
+   */
+  String BLOCKS
+EOF
+
+    for ($i = 0; $i < @blocks / 11; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 10) {
+            last if @blocks <= $i * 11 + $j;
+            my $val = $blocks[$i * 11 + $j];
+            print OUTPUT javaChar($val);
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT <<EOF;
+;
+
+  /**
+   * Information about each character.  The low order 5 bits form the
+   * character type, the next bit is a flag for non-breaking spaces, and the
+   * next bit is a flag for mirrored directionality.  The high order 9 bits
+   * form the offset into the attribute tables.  Note that this limits the
+   * number of unique character attributes to 512, which is not a problem
+   * as of Unicode version 3.2.0, but may soon become one.
+   */
+  String DATA
+EOF
+
+    my $len = length($bestblkstr) / 2;
+    for ($i = 0; $i < $len / 11; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 10) {
+            last if $len <= $i * 11 + $j;
+            my $val = unpack "n", substr($bestblkstr, 2 * ($i * 11 + $j), 2);
+            print OUTPUT javaChar($val);
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT <<EOF;
+;
+
+  /**
+   * This is the attribute table for computing the numeric value of a
+   * character.  The value is -1 if Unicode does not define a value, -2
+   * if the value is not a positive integer, otherwise it is the value.
+   * Note that this is a signed value, but stored as an unsigned char
+   * since this is a String literal.
+   */
+  String NUM_VALUE
+EOF
+
+    $len = @charinfo;
+    for ($i = 0; $i < $len / 11; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 10) {
+            last if $len <= $i * 11 + $j;
+            my $val = $charinfo[$i * 11 + $j][0];
+            print OUTPUT javaChar($val);
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT <<EOF;
+;
+
+  /**
+   * This is the attribute table for computing the single-character uppercase
+   * representation of a character.  The value is the signed difference
+   * between the character and its uppercase version.  Note that this is
+   * stored as an unsigned char since this is a String literal.  When
+   * capitalizing a String, you must first check if a multi-character uppercase
+   * sequence exists before using this character.
+   */
+  String UPPER
+EOF
+
+    $len = @charinfo;
+    for ($i = 0; $i < $len / 11; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 10) {
+            last if $len <= $i * 11 + $j;
+            my $val = $charinfo[$i * 11 + $j][1];
+            print OUTPUT javaChar($val);
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT <<EOF;
+;
+
+  /**
+   * This is the attribute table for computing the lowercase representation
+   * of a character.  The value is the signed difference between the
+   * character and its lowercase version.  Note that this is stored as an
+   * unsigned char since this is a String literal.
+   */
+  String LOWER
+EOF
+
+    $len = @charinfo;
+    for ($i = 0; $i < $len / 13; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 12) {
+            last if $len <= $i * 13 + $j;
+            my $val = $charinfo[$i * 13 + $j][2];
+            print OUTPUT javaChar($val);
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT <<EOF;
+;
+
+  /**
+   * This is the attribute table for computing the directionality class
+   * of a character, as well as a marker of characters with a multi-character
+   * capitalization.  The direction is taken by performing a signed shift
+   * right by 2 (where a result of -1 means an unknown direction, such as
+   * for undefined characters). The lower 2 bits form a count of the
+   * additional characters that will be added to a String when performing
+   * multi-character uppercase expansion. This count is also used, along with
+   * the offset in UPPER_SPECIAL, to determine how much of UPPER_EXPAND to use
+   * when performing the case conversion. Note that this information is stored
+   * as an unsigned char since this is a String literal.
+   */
+  String DIRECTION
+EOF
+
+    $len = @charinfo;
+    for ($i = 0; $i < $len / 17; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 16) {
+            last if $len <= $i * 17 + $j;
+            my $val = $charinfo[$i * 17 + $j][3];
+            print OUTPUT javaChar($val);
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT <<EOF;
+;
+
+  /**
+   * This is the listing of titlecase special cases (all other characters
+   * can use <code>UPPER</code> to determine their titlecase).  The listing
+   * is a sorted sequence of character pairs; converting the first character
+   * of the pair to titlecase produces the second character.
+   */
+  String TITLE
+EOF
+
+    $len = length($titlecase) / 2;
+    for ($i = 0; $i < $len / 11; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 10) {
+            last if $len <= $i * 11 + $j;
+            my $val = unpack "n", substr($titlecase, 2 * ($i * 11 + $j), 2);
+            print OUTPUT javaChar($val);
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT <<EOF;
+;
+
+  /**
+   * This is a listing of characters with multi-character uppercase sequences.
+   * A character appears in this list exactly when it has a non-zero entry
+   * in the low-order 2-bit field of DIRECTION.  The listing is a sorted
+   * sequence of pairs (hence a binary search on the even elements is an
+   * efficient way to lookup a character). The first element of a pair is the
+   * character with the expansion, and the second is the index into
+   * UPPER_EXPAND where the expansion begins. Use the 2-bit field of
+   * DIRECTION to determine where the expansion ends.
+   */
+  String UPPER_SPECIAL
+EOF
+
+    my @list = sort {$a <=> $b} keys %special;
+    my $expansion = "";
+    my $offset = 0;
+    $len = @list;
+    for ($i = 0; $i < $len / 5; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 4) {
+            last if $len <= $i * 5 + $j;
+            my $ch = $list[$i * 5 + $j];
+            print OUTPUT javaChar($ch);
+            print OUTPUT javaChar($offset);
+            $offset += @{$special{$ch}};
+            $expansion .= pack "n*", @{$special{$ch}};
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT <<EOF;
+;
+
+  /**
+   * This is the listing of special case multi-character uppercase sequences.
+   * Characters listed in UPPER_SPECIAL index into this table to find their
+   * uppercase expansion. Remember that you must also perform special-casing
+   * on two single-character sequences in the Turkish locale, which are not
+   * covered here in CharData.
+   */
+  String UPPER_EXPAND
+EOF
+
+    $len = length($expansion) / 2;
+    for ($i = 0; $i < $len / 11; $i++) {
+        print OUTPUT $i ? "\n    + \"" : "    = \"";
+        for $j (0 .. 10) {
+            last if $len <= $i * 11 + $j;
+            my $val = unpack "n", substr($expansion, 2 * ($i * 11 + $j), 2);
+            print OUTPUT javaChar($val);
+        }
+        print OUTPUT "\"";
+    }
+
+    print OUTPUT ";\n}\n";
+    close OUTPUT;
+}
+print "\nDone.\n";

Propchange: llvm-gcc-4.2/trunk/libjava/scripts/unicode-muncher.pl

------------------------------------------------------------------------------
    svn:executable = *

Added: llvm-gcc-4.2/trunk/libjava/scripts/unicode-to-chartables.pl
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/scripts/unicode-to-chartables.pl?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/scripts/unicode-to-chartables.pl (added)
+++ llvm-gcc-4.2/trunk/libjava/scripts/unicode-to-chartables.pl Thu Nov  8 16:56:19 2007
@@ -0,0 +1,802 @@
+#!/usr/bin/perl -w
+# unicode-to-chartables.pl -- generate Unicode database for java.lang.Character
+# Copyright (C) 1998, 2002, 2004, 2006  Free Software Foundation, Inc.
+#
+# This file is part of GNU Classpath.
+#
+# GNU Classpath is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Classpath is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Classpath; see the file COPYING.  If not, write to the
+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA.
+#
+# Linking this library statically or dynamically with other modules is
+# making a combined work based on this library.  Thus, the terms and
+# conditions of the GNU General Public License cover the whole
+# combination.
+#
+# As a special exception, the copyright holders of this library give you
+# permission to link this library with independent modules to produce an
+# executable, regardless of the license terms of these independent
+# modules, and to copy and distribute the resulting executable under
+# terms of your choice, provided that you also meet, for each linked
+# independent module, the terms and conditions of the license of that
+# module.  An independent module is a module which is not derived from
+# or based on this library.  If you modify this library, you may extend
+# this exception to your version of the library, but you are not
+# obligated to do so.  If you do not wish to do so, delete this
+# exception statement from your version.
+
+# Code for reading UnicodeData-4.0.0.txt and SpecialCasing-4.0.0.txt to generate
+# the code for java-chartables.h. The relevant files can be found here:
+#
+#   http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt
+#   http://www.unicode.org/Public/4.0-Update/SpecialCasing-4.0.0.txt
+#
+# Inspired by code from Jochen Hoenicke.
+# author Eric Blake <ebb9 at email.byu.edu>
+# Unicode 4.0.0 support by Anthony Balkissoon <abalkiss at redhat.com>
+#
+# Usage: ./unicode-to-chartables.pl <UnicodeData> <SpecialCasing> <tables>
+#   where <UnicodeData.txt> is obtained from www.unicode.org (named
+#   UnicodeData-4.0.0.txt for Unicode version 4.0.0), <SpecialCasing>
+#   is obtained from www.unicode too (named SpecialCasing-4.0.0.txt for Unicode
+#   version 4.0.0), and <tables> is the final location for the header file
+#   java-chartables.h. As of JDK 1.5, use Unicode version 4.0.0
+#   for best results.
+
+
+##
+## Return the given variable interpreted as a 16 bit signed number.
+##
+sub cShort($) {
+    my ($char) = @_;
+    return unpack "s", pack "I", $char;
+}
+
+##
+## Convert the text UnicodeData file from www.unicode.org into a header file
+## interface with arrays holding the compressed information.
+##
+my @TYPECODES = qw(Cn Lu Ll Lt Lm Lo Mn Me Mc Nd Nl No Zs Zl Zp Cc Cf
+                   SKIPPED Co Cs Pd Ps Pe Pc Po Sm Sc Sk So Pi Pf);
+my @DIRCODES = qw(L R AL EN ES ET AN CS NSM BN B S WS ON LRE LRO RLE RLO PDF);
+
+my $NOBREAK_FLAG  = 32;
+my $MIRRORED_FLAG = 64;
+
+my %special = ();
+
+# infoArray is an array where each element is a list of character information
+# for characters in a plane.  The index of each list is equal to the plane 
+# that it corresponds to even though most of these lists will currently be
+# empty.  This is done so that that this script can be easily modified to 
+# accomodate future versions of Unicode.
+my @infoArray = \((), (), (), (), (), (), (), (), 
+    (), (), (), (), (), (), (), (), ());
+
+# info is a reference to one of the lists in infoArray, depending on which 
+# plane we're currently parsing.
+my $info;
+
+# largeNums is an array of numerical values that are too large to fit 
+# into the 16 bit char where most numerical values are stored.  
+# What is stored in the char then is a number N such that (-N - 3) is 
+# the index into largeNums where the numerical value can be found.
+my @largeNums = ();
+
+my $titlecase = "";
+my $count = 0;
+my $range = 0;
+
+die "Usage: $0 <UnicodeData.txt> <SpecialCasing.txt> <java-chartables.h>"
+    unless @ARGV == 3;
+$| = 1;
+print "GNU Classpath Unicode Attribute Database Generator 2.1\n";
+print "Copyright (C) 1998, 2002 Free Software Foundation, Inc.\n";
+
+
+################################################################################
+################################################################################
+# Stage 0: Parse the special casing file
+print "Parsing special casing file\n";
+open (SPECIAL, "< $ARGV[1]") || die "Can't open special casing file: $!\n";
+while (<SPECIAL>) {
+    next if /^\#/;
+    my ($ch, undef, undef, $upper) = split / *; */;
+
+    # This grabs only the special casing for multi-char uppercase. Note that
+    # there are no multi-char lowercase, and that Sun ignores multi-char
+    # titlecase rules. This script omits 3 special cases in Unicode 3.0.0,
+    # which must be hardcoded in java.lang.String:
+    #  \u03a3 (Sun ignores this special case)
+    #  \u0049 - lowercases to \u0131, but only in Turkish locale
+    #  \u0069 - uppercases to \u0130, but only in Turkish locale
+    next unless defined $upper and $upper =~ / /;
+    $special{hex $ch} = [map {hex} split ' ', $upper];
+}
+
+close SPECIAL;
+
+
+################################################################################
+################################################################################
+## Stage 1: Parse the attribute file
+print "Parsing attributes file";
+open (UNICODE, "< $ARGV[0]") || die "Can't open Unicode attribute file: $!\n";
+while (<UNICODE>) {
+    print "." unless $count++ % 1000;
+    chomp;
+    s/\r//g;
+    my ($ch, $name, $category, undef, $bidir, $decomp, undef, undef, $numeric,
+        $mirrored, undef, undef, $upcase, $lowcase, $title) = split ';';
+    $ch = hex($ch);
+
+    # plane tells us which Unicode code plane we're currently in and is an
+    # index into infoArray.
+    my $plane = int($ch / 0x10000);
+    my $planeBase = $plane * 0x10000;
+    $info = \@{$infoArray[$plane]};
+
+    my ($type, $numValue, $upperchar, $lowerchar, $direction);
+
+    $type = 0;
+    while ($category !~ /^$TYPECODES[$type]$/) {
+        if (++$type == @TYPECODES) {
+            die "$ch: Unknown type: $category";
+        }
+    }
+    $type |= $NOBREAK_FLAG if ($decomp =~ /noBreak/);
+    $type |= $MIRRORED_FLAG if ($mirrored =~ /Y/);
+
+    if ($numeric =~ /^[0-9]+$/) {
+        $numValue = $numeric;
+        # If numeric takes more than 16 bits to store we want to store that 
+	# number in a separate array and store a number N in numValue such 
+	# that (-N - 3) is the offset into the separate array containing the
+	# large numerical value.
+	if ($numValue >= 0x7fff) {
+	    $numValue = -3 - @largeNums;
+	    push @largeNums, $numeric;	    
+	}
+    } elsif ($numeric eq "") {
+        # Special case sequences of 'a'-'z'
+        if ($ch >= 0x0041 && $ch <= 0x005a) {
+            $numValue = $ch - 0x0037;
+        } elsif ($ch >= 0x0061 && $ch <= 0x007a) {
+            $numValue = $ch - 0x0057;
+        } elsif ($ch >= 0xff21 && $ch <= 0xff3a) {
+            $numValue = $ch - 0xff17;
+        } elsif ($ch >= 0xff41 && $ch <= 0xff5a) {
+            $numValue = $ch - 0xff37;
+        } else {
+            $numValue = -1;
+        }
+    } else {
+        $numValue = -2;
+    }
+
+    $upperchar = $upcase ? hex($upcase) - $ch : 0;
+    $lowerchar = $lowcase ? hex($lowcase) - $ch : 0;
+    if ($title ne $upcase) {
+        my $titlechar = $title ? hex($title) : $ch;
+        $titlecase .= pack("n2", $ch, $titlechar);
+    }
+
+    $direction = 0;
+    while ($bidir !~ /^$DIRCODES[$direction]$/) {
+        if (++$direction == @DIRCODES) {
+            $direction = -1;
+            last;
+        }
+    }
+    $direction <<= 2;
+    $direction += $#{$special{$ch}} if defined $special{$ch};
+
+    if ($range) {
+        die "Expecting end of range at $ch\n" unless $name =~ /Last>$/;
+        for ($range + 1 .. $ch - 1) {
+            $info->[$_ - $planeBase] = pack("n5", $type, $numValue, $upperchar,
+                             $lowerchar, $direction);
+        }
+        $range = 0;
+    } elsif ($name =~ /First>$/) {
+        $range = $ch;
+    }
+    # Store all this parsed information into the element in infoArray that info
+    # points to.
+    $info->[$ch - $planeBase] = pack("n5", $type, $numValue, $upperchar, $lowerchar,
+                      $direction);
+}
+close UNICODE;
+
+
+################################################################################
+################################################################################
+## Stage 2: Compress the data structures
+printf "\nCompressing data structures";
+$count = 0;
+
+# data is a String that will be used to create the DATA String containing 
+# character information and offsets into the attribute tables.
+my @data = ();
+
+# charhashArray is an array of hashtables used so that we can reuse character
+# attributes when characters share the same attributes ... this makes our
+# attribute tables smaller.  charhash is a pointer into this array.
+my @charhashArray = ({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {});
+my $charhash = ();
+
+# charinfoArray is an array of arrays, one per plane, for storing character 
+# information.  charinfo is a pointer into this array.
+my @charinfoArray = \((), (), (), (), (), (), (), (), 
+    (), (), (), (), (), (), (), (), ());
+my $charinfo;
+
+# charlen is an array, one element per plane, that tells us how many unique
+# character attributes there are for that plane.
+my @charlen = ();
+
+for my $plane (0 .. 0x10) {
+    $info = \@{$infoArray[$plane]};
+    my $planeBase = $plane * 0x10000;
+    $charhash = \%{$charhashArray[$plane]};
+    $charinfo = \@{$charinfoArray[$plane]};
+
+    for my $ch ($planeBase .. $planeBase + 0xffff) {
+	my $index = $ch - $planeBase;
+	print "." unless $count++ % 0x1000;
+	$info->[$index] = pack("n5", 0, -1, 0, 0, -4) unless defined $info->[$index];
+	
+	my ($type, $numVal, $upper, $lower, $direction) = unpack("n5", $info->[$index]);
+	if (! exists $charhash->{$info->[$index]}) {
+	    # If we entered this loop that means the character we're looking at 
+	    # now has attributes that are unique from those that we've looked
+	    # at so far for this plane.  So we push its attributes into charinfo
+	    # and store in charhash the offset into charinfo where these
+	    # attributes can later be found.
+	    push @{$charinfo}, [ $numVal, $upper, $lower, $direction ];
+	    $charhash->{$info->[$index]} = @{$charinfo} - 1;
+	    # When the file is generaged, the number we just stored in charhas
+	    # will be the upper 9 bits in the DATA String that are an offset
+	    # into the attribute tables.
+	}
+	$data[$plane] .= pack("n", ($charhash->{$info->[$index]} << 7) | $type);
+    }
+    $charlen[$plane] = scalar(@{$charinfoArray[$plane]});
+}
+
+# the shift that results in the best compression of the table.  This is an array
+# because different shifts are better for the different tables for each plane.
+my @bestshift;
+
+# an initial guess.
+my $bestest = 1000000;
+my @bestblkstr;
+my @blksize = ();
+
+for my $plane (0 .. 0x10) {
+    print "\n\nplane: $plane\n";
+    print "Unique character entries: $charlen[$plane]\n";
+    $bestest = 1000000;
+    for my $i (3 .. 8) {
+        my $blksize = 1 << $i;
+        my %blocks = ();
+        my @blkarray = ();
+        my ($j, $k);
+        print "shift: $i";
+
+        for ($j = 0; $j < 0x10000; $j += $blksize) {
+            my $blkkey = substr $data[$plane], 2 * $j, 2 * $blksize;
+            if (! exists $blocks{$blkkey}) {
+	        push @blkarray, $blkkey;
+                $blocks{$blkkey} = $#blkarray;
+            }
+        }
+
+        my $blknum = @blkarray;
+        my $blocklen = $blknum * $blksize;
+        printf " before %5d", $blocklen;
+
+        # Now we try to pack the blkarray as tight as possible by finding matching
+        # heads and tails.
+        for ($j = $blksize - 1; $j > 0; $j--) {
+            my %tails = ();
+            for $k (0 .. $#blkarray) {
+                next unless defined $blkarray[$k];
+                my $len = length $blkarray[$k];
+                my $tail = substr $blkarray[$k], $len - $j * 2;
+                if (exists $tails{$tail}) {
+                    push @{$tails{$tail}}, $k;
+                } else {
+                    $tails{$tail} = [ $k ];
+                }
+            }
+
+            # tails are calculated, now calculate the heads and merge.
+          BLOCK:
+            for $k (0 .. $#blkarray) {
+                next unless defined $blkarray[$k];
+                my $tomerge = $k;
+                while (1) {
+                    my $head = substr($blkarray[$tomerge], 0, $j * 2);
+                    my $entry = $tails{$head};
+                    next BLOCK unless defined $entry;
+
+                    my $other = shift @{$entry};
+                    if ($other == $tomerge) {
+                        if (@{$entry}) {
+                            push @{$entry}, $other;
+                            $other = shift @{$entry};
+                        } else {
+                            push @{$entry}, $other;
+                            next BLOCK;
+                        }
+                    }
+                    if (@{$entry} == 0) {
+                        delete $tails{$head};
+                    }
+
+                    # a match was found
+                    my $merge = $blkarray[$other]
+                        . substr($blkarray[$tomerge], $j * 2);
+                    $blocklen -= $j;
+                    $blknum--;
+
+                    if ($other < $tomerge) {
+                        $blkarray[$tomerge] = undef;
+                        $blkarray[$other] = $merge;
+                        my $len = length $merge;
+                        my $tail = substr $merge, $len - $j * 2;
+                        $tails{$tail} = [ map { $_ == $tomerge ? $other : $_ }
+                                          @{$tails{$tail}} ];
+                        next BLOCK;
+                    }
+                    $blkarray[$tomerge] = $merge;
+                    $blkarray[$other] = undef;
+                }
+            }
+        }
+        my $blockstr;
+        for $k (0 .. $#blkarray) {
+            $blockstr .= $blkarray[$k] if defined $blkarray[$k];
+        }
+
+        die "Unexpected $blocklen" if length($blockstr) != 2 * $blocklen;
+        my $estimate = 2 * $blocklen + (0x20000 >> $i);
+  
+        printf " after merge %5d: %6d bytes\n", $blocklen, $estimate;
+        if ($estimate < $bestest) {
+            $bestest = $estimate;
+            $bestshift[$plane] = $i;
+            $bestblkstr[$plane] = $blockstr;
+        }
+    }
+    $blksize[$plane] = 1 << $bestshift[$plane];
+    print "best shift: ", $bestshift[$plane];
+    print "     blksize: ", $blksize[$plane];
+}
+my @blocksArray = \((), (), (), (), (), (), (), (), 
+    (), (), (), (), (), (), (), (), ());
+
+for my $plane (0 .. 0x10) {
+    for (my $j = 0; $j < 0x10000; $j += $blksize[$plane]) {
+	my $blkkey = substr $data[$plane], 2 * $j, 2 * $blksize[$plane];
+        my $index = index $bestblkstr[$plane], $blkkey;
+        while ($index & 1) {
+            die "not found: $j" if $index == -1;
+            $index = index $bestblkstr[$plane], $blkkey, $index + 1;
+        }
+        push @{$blocksArray[$plane]}, ($index / 2 - $j) & 0xffff;
+    }
+}
+
+
+################################################################################
+################################################################################
+## Stage 3: Generate the file
+for my $plane (0 .. 0x10) {
+    die "UTF-8 limit of blocks may be exceeded for plane $plane: " . scalar(@{$blocksArray[$plane]}) . "\n"
+        if @{$blocksArray[$plane]} > 0xffff / 3;
+    die "UTF-8 limit of data may be exceeded for plane $plane: " . length($bestblkstr[$plane]) . "\n"
+        if length($bestblkstr[$plane]) > 0xffff / 3;
+}
+
+{
+    print "\nGenerating $ARGV[2].";
+    my ($i, $j);
+
+    open OUTPUT, "> $ARGV[2]" or die "Failed creating output file: $!\n";
+    print OUTPUT <<EOF;
+/* java-chartables.h -- Character tables for java.lang.Character -*- c++ -*-
+   Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+   *** This file is generated by scripts/unicode-to-chartables.pl ***
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+#ifndef __JAVA_CHARTABLES_H__
+#define __JAVA_CHARTABLES_H__
+
+// These tables are automatically generated by scripts/unicode_to_chartables.pl.
+// The Unicode data comes from www.unicode.org; this header is based on
+// UnicodeData-4.0.0.txt. JDK 1.5 uses Unicode version 4.0.0.
+// DO NOT EDIT the tables.  Instead, fix the upstream scripts and run
+// them again.
+
+// The data is stored in C style arrays of the appropriate CNI types, to
+// guarantee that the data is constant and non-relocatable.  The field
+// <code>blocks</code> stores the offset of a block of 2<sup>SHIFT</sup>
+// characters within <code>data</code>. The data field, in turn, stores
+// information about each character in the low order bits, and an offset
+// into the attribute tables <code>upper</code>, <code>lower</code>,
+// <code>numValue</code>, and <code>direction</code>.  Notice that the
+// attribute tables are much smaller than 0xffff entries; as many characters
+// in Unicode share common attributes.  Finally, there is a listing for
+// <code>title</code> exceptions (most characters just have the same title
+// case as upper case).
+
+// This file should only be included by natCharacter.cc
+
+/**
+ * The array containing the numeric values that are too large to be stored as
+ * chars in NUM_VALUE.  NUM_VALUE in this case will contain a negative integer
+ * N such that LARGENUMS[-N - 3] contains the correct numeric value.
+ */
+EOF
+  print OUTPUT "static const jint largenums[] = {\n    ";
+  for ($i = 0; $i < @largeNums; $i++) {
+      print OUTPUT $largeNums[$i], ", ";
+  }
+  print OUTPUT "}";
+  print OUTPUT <<EOF;
+;
+
+/**
+ * The character shift amount to look up the block offset. In other words,
+ * <code>(char) (blocks[p][off >> SHIFT[p]] + off)</code> is the index where
+ * <code>ch</code> is described in <code>data</code>, where <code>off</code>
+ * is ch & 0xffff and <code>p</code> is the plane the character belongs to.
+ */
+EOF
+  print OUTPUT "static const int shift[] = {\n    ";
+  for ($i = 0; $i < @bestshift; $i++) {
+      print OUTPUT $bestshift[$i], ", ";
+  }
+  print OUTPUT "}";
+  print OUTPUT <<EOF;
+;
+
+/**
+ * The mapping of character blocks to their location in <code>data</code>.
+ * Each entry has been adjusted so that a modulo 16 sum with the desired
+ * character gives the actual index into <code>data</code>.
+ */
+EOF
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      # The following if statement handles the cases of unassigned planes
+      # specially so we don't waste space with unused Strings.  As of 
+      # Unicode version 4.0.0 only planes 0, 1, 2, and 14 are used.  If
+      # you are updating this script to work with a later version of 
+      # Unicode you may have to alter this if statement.
+      next if ($plane > 2 && $plane != 14) ;
+      
+      print OUTPUT "static const jchar blocks", $plane, "[] = {\n";
+      for ($i = 0; $i < @{$blocksArray[$plane]} / 10; $i++) {
+	  print OUTPUT "    ";
+	  for $j (0 .. 9) {
+	      last if @{$blocksArray[$plane]} <= $i * 10 + $j;
+	      my $val = $blocksArray[$plane]->[$i * 10 + $j];
+	      print OUTPUT $val, ", ";
+	  }
+	  print OUTPUT "\n";
+      }
+      print OUTPUT "};\n\n";
+  }
+  print OUTPUT "static const int blocks_length[] = {\n    ";
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      if ($plane > 2 && $plane != 14){
+	  print OUTPUT "-1, ";
+      }
+      else {
+	  print OUTPUT scalar(@{$blocksArray[$plane]}), ", ";
+      }
+  }
+  print OUTPUT "};\n";
+  print OUTPUT <<EOF;
+static const jchar* blocks[] = {
+    blocks0, blocks1, blocks2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
+    NULL, NULL, NULL, NULL, blocks14, NULL, NULL};
+
+/**
+ * Information about each character.  The low order 5 bits form the
+ * character type, the next bit is a flag for non-breaking spaces, and the
+ * next bit is a flag for mirrored directionality.  The high order 9 bits
+ * form the offset into the attribute tables.  Note that this limits the
+ * number of unique character attributes per plane to 512, which is not a 
+ * problem as of Unicode version 4.0.0, but may soon become one.
+ */
+EOF
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      # The following if statement handles the cases of unassigned planes
+      # specially so we don't waste space with unused Strings.  As of 
+      # Unicode version 4.0.0 only planes 0, 1, 2, and 14 are used.  If
+      # you are updating this script to work with a later version of 
+      # Unicode you may have to alter this if statement.
+      next if ($plane > 2 && $plane != 14);
+      
+      print OUTPUT "static const jchar data", $plane, "[] = {\n";
+      my $len = length($bestblkstr[$plane]) / 2;
+      for ($i = 0; $i < $len / 10; $i++) {
+	  print OUTPUT "    ";
+	  for $j (0 .. 9) {
+	      last if $len <= $i * 10 + $j;
+	      my $val = unpack "n", substr($bestblkstr[$plane], 2 * ($i * 10 + $j), 2);
+	      print OUTPUT $val, ", ";
+	  }
+	  print OUTPUT "\n";
+      }
+      print OUTPUT "};\n\n";
+  }
+  print OUTPUT "static const int data_length[] = {\n    ";
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      if ($plane > 2 && $plane != 14){
+	  print OUTPUT "-1, ";
+      }
+      else {
+	  print OUTPUT length($bestblkstr[$plane]) / 2, ", ";
+      }
+  }
+  print OUTPUT "};\n";
+  print OUTPUT <<EOF;
+static const jchar* data[] = {
+    data0, data1, data2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
+    NULL, NULL, NULL, NULL, data14, NULL, NULL};
+
+
+/**
+ * This is the attribute table for computing the numeric value of a
+ * character.  The value is -1 if Unicode does not define a value, -2
+ * if the value is not a positive integer, otherwise it is the value.
+ */
+EOF
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      # The following if statement handles the cases of unassigned planes
+      # specially so we don't waste space with unused Strings.  As of 
+      # Unicode version 4.0.0 only planes 0, 1, 2, and 14 are used.  If
+      # you are updating this script to work with a later version of 
+      # Unicode you may have to alter this if statement.
+      next if ($plane > 2 && $plane != 14);
+      
+      print OUTPUT "static const jshort numValue", $plane, "[] = {\n";
+      $len = @{$charinfoArray[$plane]};
+      for ($i = 0; $i < $len / 13; $i++) {
+	  print OUTPUT "    ";
+	  for $j (0 .. 12) {
+	      last if $len <= $i * 13 + $j;
+	      my $val = $charinfoArray[$plane]->[$i * 13 + $j][0];
+	      print OUTPUT cShort($val), ", ";
+	  }
+	  print OUTPUT "\n";
+      }
+      print OUTPUT "};\n\n";
+  }
+  print OUTPUT "static const int numValue_length[] = {\n    ";
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      if ($plane > 2 && $plane != 14){
+	  print OUTPUT "-1, ";
+      }
+      else {
+	  print OUTPUT scalar(@{$charinfoArray[$plane]}), ", ";
+      }
+  }
+  print OUTPUT "};\n";
+  print OUTPUT <<EOF;
+static const jshort* numValue[] = {
+    numValue0, numValue1, numValue2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
+    NULL, NULL, NULL, NULL, numValue14, NULL, NULL};
+
+
+
+/**
+ * This is the attribute table for computing the uppercase representation
+ * of a character.  The value is the difference between the character and
+ * its uppercase version.
+ */
+EOF
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      # The following if statement handles the cases of unassigned planes
+      # specially so we don't waste space with unused Strings.  As of 
+      # Unicode version 4.0.0 only planes 0, 1, 2, and 14 are used.  If
+      # you are updating this script to work with a later version of 
+      # Unicode you may have to alter this if statement.
+      next if ($plane > 2 && $plane != 14);
+      
+      print OUTPUT "static const jshort upper", $plane, "[] = {\n";
+      $len = @{$charinfoArray[$plane]};
+      for ($i = 0; $i < $len / 13; $i++) {
+	  print OUTPUT "    ";
+	  for $j (0 .. 12) {
+	      last if $len <= $i * 13 + $j;
+	      my $val = $charinfoArray[$plane]->[$i * 13 + $j][1];
+	      print OUTPUT cShort($val), ", ";
+	  }
+	  print OUTPUT "\n";
+      }
+      print OUTPUT "};\n\n";
+  }
+  print OUTPUT "static const int upper_length[] = {\n    ";
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      if ($plane > 2 && $plane != 14){
+	  print OUTPUT "-1, ";
+      }
+      else {
+	  print OUTPUT scalar(@{$charinfoArray[$plane]}), ", ";
+      }
+  }
+  print OUTPUT "};\n";
+  print OUTPUT <<EOF;
+static const jshort* upper[] = {
+    upper0, upper1, upper2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
+    NULL, NULL, NULL, NULL, upper14, NULL, NULL};
+
+
+/**
+ * This is the attribute table for computing the lowercase representation
+ * of a character.  The value is the difference between the character and
+ * its lowercase version.
+ */
+EOF
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      # The following if statement handles the cases of unassigned planes
+      # specially so we don't waste space with unused Strings.  As of 
+      # Unicode version 4.0.0 only planes 0, 1, 2, and 14 are used.  If
+      # you are updating this script to work with a later version of 
+      # Unicode you may have to alter this if statement.
+      next if ($plane > 2 && $plane != 14);
+      
+      print OUTPUT "static const jshort lower", $plane, "[] = {\n";
+      $len = @{$charinfoArray[$plane]};
+      for ($i = 0; $i < $len / 13; $i++) {
+	  print OUTPUT "    ";
+	  for $j (0 .. 12) {
+	      last if $len <= $i * 13 + $j;
+	      my $val = $charinfoArray[$plane]->[$i * 13 + $j][2];
+	      print OUTPUT cShort($val), ", ";
+	  }
+	  print OUTPUT "\n";
+      }
+      print OUTPUT "};\n\n";
+  }
+  print OUTPUT "static const int lower_length[] = {\n    ";
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      if ($plane > 2 && $plane != 14){
+	  print OUTPUT "-1, ";
+      }
+      else {
+	  print OUTPUT scalar(@{$charinfoArray[$plane]}), ", ";
+      }
+  }
+  print OUTPUT "};\n";
+  print OUTPUT <<EOF;
+static const jshort* lower[] = {
+    lower0, lower1, lower2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
+    NULL, NULL, NULL, NULL, lower14, NULL, NULL};
+
+
+/**
+ * This is the attribute table for computing the directionality class
+ * of a character.  At present, the value is in the range 0 - 18 if the
+ * character has a direction, otherwise it is -1.
+ */
+EOF
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      # The following if statement handles the cases of unassigned planes
+      # specially so we don't waste space with unused Strings.  As of 
+      # Unicode version 4.0.0 only planes 0, 1, 2, and 14 are used.  If
+      # you are updating this script to work with a later version of 
+      # Unicode you may have to alter this if statement.
+      next if ($plane > 2 && $plane != 14);
+      
+      print OUTPUT "static const jbyte direction", $plane, "[] = {\n";
+      $len = @{$charinfoArray[$plane]};
+      for ($i = 0; $i < $len / 19; $i++) {
+	  print OUTPUT "    ";
+	  for $j (0 .. 18) {
+	      last if $len <= $i * 19 + $j;
+	      my $val = $charinfoArray[$plane]->[$i * 19 + $j][3];
+	      $val >>= 2;
+	      if ($val < 0 || $val > 18){
+		  $val = -1;
+	      }
+	      print OUTPUT cShort($val), ", ";
+	  }
+	  print OUTPUT "\n";
+      }
+      print OUTPUT "};\n\n";
+  }
+  print OUTPUT "static const int direction_length[] = {\n    ";
+  for ($plane = 0; $plane <= 0x10; $plane++) {
+      if ($plane > 2 && $plane != 14){
+	  print OUTPUT "-1, ";
+      }
+      else {
+	  print OUTPUT scalar(@{$charinfoArray[$plane]}), ", ";
+      }
+  }
+  print OUTPUT "};\n";
+  print OUTPUT <<EOF;
+static const jbyte* direction[] = {
+    direction0, direction1, direction2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
+    NULL, NULL, NULL, NULL, direction14, NULL, NULL};
+
+
+/**
+ * This is the listing of titlecase special cases (all other character
+ * can use <code>upper</code> to determine their titlecase).  The listing
+ * is a sequence of character pairs; converting the first character of the
+ * pair to titlecase produces the second character.
+ */
+static const jchar title[] = {
+EOF
+
+  $len = length($titlecase) / 2;
+  for ($i = 0; $i < $len / 10; $i++) {
+      print OUTPUT $i ? "\n    " : "    ";
+      for $j (0 .. 9) {
+	  last if $len <= $i * 10 + $j;
+	  my $val = unpack "n", substr($titlecase, 2 * ($i * 10 + $j), 2);
+	  print OUTPUT $val, ", ";
+      }
+  }
+
+  print OUTPUT "\n  };";
+  print OUTPUT "\n/** Length of title. */\nstatic const int title_length = ", $len;
+  print OUTPUT <<EOF;
+;
+
+#endif /* __JAVA_CHARTABLES_H__ */
+EOF
+  close OUTPUT;
+}
+print "\nDone.\n";

Propchange: llvm-gcc-4.2/trunk/libjava/scripts/unicode-to-chartables.pl

------------------------------------------------------------------------------
    svn:executable = *

Added: llvm-gcc-4.2/trunk/libjava/shlibpath.m4
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/shlibpath.m4?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/shlibpath.m4 (added)
+++ llvm-gcc-4.2/trunk/libjava/shlibpath.m4 Thu Nov  8 16:56:19 2007
@@ -0,0 +1,553 @@
+# shlibpath.m4 - Define LTDL_SHLIBPATH_VAR. -*-Autoconf-*-
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2005
+## Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+##
+## As a special exception to the GNU General Public License, if you
+## distribute this file as part of a program that contains a
+## configuration script generated by Autoconf, you may include it under
+## the same distribution terms that you use for the rest of that program.
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then 
+  sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*|k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+# AC_LTDL_SHLIBPATH
+# -----------------
+AC_DEFUN([AC_LTDL_SHLIBPATH],
+[AC_REQUIRE([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
+AC_CACHE_CHECK([which variable specifies run-time library path],
+  [libltdl_cv_shlibpath_var], [libltdl_cv_shlibpath_var="$shlibpath_var"])
+if test -n "$libltdl_cv_shlibpath_var"; then
+  AC_DEFINE_UNQUOTED(LTDL_SHLIBPATH_VAR, "$libltdl_cv_shlibpath_var",
+    [Define to the name of the environment variable that determines the dynamic library search path.])
+fi
+])# AC_LTDL_SHLIBPATH

Added: llvm-gcc-4.2/trunk/libjava/sources.am
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sources.am?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sources.am (added)
+++ llvm-gcc-4.2/trunk/libjava/sources.am Thu Nov  8 16:56:19 2007
@@ -0,0 +1,9283 @@
+## This file was automatically generated by scripts/makemake.tcl
+## Do not edit!
+
+gnu_CORBA_source_files = \
+classpath/gnu/CORBA/Asynchron.java \
+classpath/gnu/CORBA/BigDecimalHelper.java \
+classpath/gnu/CORBA/ByteArrayComparator.java \
+classpath/gnu/CORBA/CDR/AbstractCdrInput.java \
+classpath/gnu/CORBA/CDR/AbstractCdrOutput.java \
+classpath/gnu/CORBA/CDR/AbstractDataInput.java \
+classpath/gnu/CORBA/CDR/AbstractDataOutput.java \
+classpath/gnu/CORBA/CDR/AligningInput.java \
+classpath/gnu/CORBA/CDR/AligningOutput.java \
+classpath/gnu/CORBA/CDR/ArrayValueHelper.java \
+classpath/gnu/CORBA/CDR/BigEndianInputStream.java \
+classpath/gnu/CORBA/CDR/BigEndianOutputStream.java \
+classpath/gnu/CORBA/CDR/BufferedCdrOutput.java \
+classpath/gnu/CORBA/CDR/BufferredCdrInput.java \
+classpath/gnu/CORBA/CDR/EncapsulationStream.java \
+classpath/gnu/CORBA/CDR/HeadlessInput.java \
+classpath/gnu/CORBA/CDR/IDLTypeHelper.java \
+classpath/gnu/CORBA/CDR/LittleEndianInputStream.java \
+classpath/gnu/CORBA/CDR/LittleEndianOutputStream.java \
+classpath/gnu/CORBA/CDR/UnknownExceptionCtxHandler.java \
+classpath/gnu/CORBA/CDR/VMVio.java \
+classpath/gnu/CORBA/CDR/Vio.java \
+classpath/gnu/CORBA/CDR/gnuRuntime.java \
+classpath/gnu/CORBA/CDR/gnuValueStream.java \
+classpath/gnu/CORBA/CdrEncapsCodecImpl.java \
+classpath/gnu/CORBA/Connected_objects.java \
+classpath/gnu/CORBA/CorbaList.java \
+classpath/gnu/CORBA/DefaultSocketFactory.java \
+classpath/gnu/CORBA/DefinitionKindHolder.java \
+classpath/gnu/CORBA/DuplicateNameHolder.java \
+classpath/gnu/CORBA/DynAn/AbstractAny.java \
+classpath/gnu/CORBA/DynAn/DivideableAny.java \
+classpath/gnu/CORBA/DynAn/NameValuePairHolder.java \
+gnu/CORBA/DynAn/RecordAny.java \
+classpath/gnu/CORBA/DynAn/UndivideableAny.java \
+classpath/gnu/CORBA/DynAn/ValueChangeListener.java \
+classpath/gnu/CORBA/DynAn/gnuDynAny.java \
+classpath/gnu/CORBA/DynAn/gnuDynAnyFactory.java \
+classpath/gnu/CORBA/DynAn/gnuDynArray.java \
+classpath/gnu/CORBA/DynAn/gnuDynEnum.java \
+classpath/gnu/CORBA/DynAn/gnuDynFixed.java \
+classpath/gnu/CORBA/DynAn/gnuDynSequence.java \
+classpath/gnu/CORBA/DynAn/gnuDynStruct.java \
+classpath/gnu/CORBA/DynAn/gnuDynUnion.java \
+gnu/CORBA/DynAn/gnuDynValue.java \
+classpath/gnu/CORBA/DynAn/gnuDynValueBox.java \
+classpath/gnu/CORBA/DynAnySeqHolder.java \
+classpath/gnu/CORBA/EmptyExceptionHolder.java \
+classpath/gnu/CORBA/ForwardRequestHelper.java \
+classpath/gnu/CORBA/GIOP/CancelHeader.java \
+classpath/gnu/CORBA/GIOP/CharSets_OSF.java \
+classpath/gnu/CORBA/GIOP/CloseMessage.java \
+classpath/gnu/CORBA/GIOP/CodeSetServiceContext.java \
+classpath/gnu/CORBA/GIOP/ContextHandler.java \
+classpath/gnu/CORBA/GIOP/ErrorMessage.java \
+classpath/gnu/CORBA/GIOP/MessageHeader.java \
+classpath/gnu/CORBA/GIOP/ReplyHeader.java \
+classpath/gnu/CORBA/GIOP/RequestHeader.java \
+classpath/gnu/CORBA/GIOP/ServiceContext.java \
+classpath/gnu/CORBA/GIOP/v1_0/CancelHeader.java \
+classpath/gnu/CORBA/GIOP/v1_0/ReplyHeader.java \
+classpath/gnu/CORBA/GIOP/v1_0/RequestHeader.java \
+classpath/gnu/CORBA/GIOP/v1_2/ReplyHeader.java \
+classpath/gnu/CORBA/GIOP/v1_2/RequestHeader.java \
+classpath/gnu/CORBA/GeneralHolder.java \
+classpath/gnu/CORBA/HolderLocator.java \
+classpath/gnu/CORBA/IOR.java \
+classpath/gnu/CORBA/Interceptor/ClientRequestInterceptors.java \
+classpath/gnu/CORBA/Interceptor/ForwardRequestHolder.java \
+classpath/gnu/CORBA/Interceptor/IORInterceptors.java \
+classpath/gnu/CORBA/Interceptor/Registrator.java \
+classpath/gnu/CORBA/Interceptor/ServerRequestInterceptors.java \
+classpath/gnu/CORBA/Interceptor/gnuClientRequestInfo.java \
+classpath/gnu/CORBA/Interceptor/gnuIcCurrent.java \
+classpath/gnu/CORBA/Interceptor/gnuIorInfo.java \
+classpath/gnu/CORBA/Interceptor/gnuServerRequestInfo.java \
+classpath/gnu/CORBA/IorDelegate.java \
+classpath/gnu/CORBA/IorObject.java \
+classpath/gnu/CORBA/IorProvider.java \
+classpath/gnu/CORBA/Minor.java \
+classpath/gnu/CORBA/NameDynAnyPairHolder.java \
+classpath/gnu/CORBA/NameDynAnyPairSeqHolder.java \
+classpath/gnu/CORBA/NameValuePairHolder.java \
+classpath/gnu/CORBA/NameValuePairSeqHolder.java \
+classpath/gnu/CORBA/NamingService/Binding_iterator_impl.java \
+classpath/gnu/CORBA/NamingService/Ext.java \
+classpath/gnu/CORBA/NamingService/NameComponentComparator.java \
+classpath/gnu/CORBA/NamingService/NameParser.java \
+classpath/gnu/CORBA/NamingService/NameTransformer.java \
+classpath/gnu/CORBA/NamingService/NameValidator.java \
+classpath/gnu/CORBA/NamingService/NamingMap.java \
+classpath/gnu/CORBA/NamingService/NamingServiceTransient.java \
+classpath/gnu/CORBA/NamingService/TransientContext.java \
+gnu/CORBA/ObjectCreator.java \
+classpath/gnu/CORBA/OctetHolder.java \
+classpath/gnu/CORBA/OrbFocused.java \
+classpath/gnu/CORBA/OrbFunctional.java \
+classpath/gnu/CORBA/OrbRestricted.java \
+classpath/gnu/CORBA/Poa/AOM.java \
+classpath/gnu/CORBA/Poa/AccessiblePolicy.java \
+classpath/gnu/CORBA/Poa/DynamicImpHandler.java \
+classpath/gnu/CORBA/Poa/ForwardRequestHolder.java \
+classpath/gnu/CORBA/Poa/ForwardedServant.java \
+classpath/gnu/CORBA/Poa/InvalidPolicyHolder.java \
+classpath/gnu/CORBA/Poa/LocalDelegate.java \
+classpath/gnu/CORBA/Poa/LocalRequest.java \
+classpath/gnu/CORBA/Poa/LocalServerRequest.java \
+classpath/gnu/CORBA/Poa/ORB_1_4.java \
+classpath/gnu/CORBA/Poa/ServantDelegateImpl.java \
+classpath/gnu/CORBA/Poa/StandardPolicies.java \
+classpath/gnu/CORBA/Poa/gnuAdapterActivator.java \
+classpath/gnu/CORBA/Poa/gnuForwardRequest.java \
+classpath/gnu/CORBA/Poa/gnuIdAssignmentPolicy.java \
+classpath/gnu/CORBA/Poa/gnuIdUniquenessPolicy.java \
+classpath/gnu/CORBA/Poa/gnuImplicitActivationPolicy.java \
+classpath/gnu/CORBA/Poa/gnuLifespanPolicy.java \
+classpath/gnu/CORBA/Poa/gnuPOA.java \
+classpath/gnu/CORBA/Poa/gnuPOAManager.java \
+classpath/gnu/CORBA/Poa/gnuPoaCurrent.java \
+classpath/gnu/CORBA/Poa/gnuRequestProcessingPolicy.java \
+classpath/gnu/CORBA/Poa/gnuServantObject.java \
+classpath/gnu/CORBA/Poa/gnuServantRetentionPolicy.java \
+classpath/gnu/CORBA/Poa/gnuThreadPolicy.java \
+classpath/gnu/CORBA/RawReply.java \
+classpath/gnu/CORBA/ResponseHandlerImpl.java \
+classpath/gnu/CORBA/ServiceDetailHolder.java \
+classpath/gnu/CORBA/ServiceRequestAdapter.java \
+classpath/gnu/CORBA/SetOverrideTypeHolder.java \
+classpath/gnu/CORBA/SimpleDelegate.java \
+classpath/gnu/CORBA/SocketRepository.java \
+classpath/gnu/CORBA/StreamBasedRequest.java \
+classpath/gnu/CORBA/StreamHolder.java \
+classpath/gnu/CORBA/StubLocator.java \
+classpath/gnu/CORBA/TypeCodeHelper.java \
+classpath/gnu/CORBA/TypeKindNamer.java \
+classpath/gnu/CORBA/Unexpected.java \
+classpath/gnu/CORBA/Version.java \
+classpath/gnu/CORBA/WCharHolder.java \
+classpath/gnu/CORBA/WStringHolder.java \
+classpath/gnu/CORBA/_PolicyImplBase.java \
+classpath/gnu/CORBA/gnuAny.java \
+classpath/gnu/CORBA/gnuCodecFactory.java \
+classpath/gnu/CORBA/gnuContext.java \
+classpath/gnu/CORBA/gnuContextList.java \
+classpath/gnu/CORBA/gnuEnvironment.java \
+classpath/gnu/CORBA/gnuExceptionList.java \
+classpath/gnu/CORBA/gnuNVList.java \
+classpath/gnu/CORBA/gnuNamedValue.java \
+classpath/gnu/CORBA/gnuRequest.java \
+classpath/gnu/CORBA/gnuValueHolder.java \
+classpath/gnu/CORBA/interfaces/SocketFactory.java \
+classpath/gnu/CORBA/typecodes/AliasTypeCode.java \
+classpath/gnu/CORBA/typecodes/ArrayTypeCode.java \
+classpath/gnu/CORBA/typecodes/FixedTypeCode.java \
+classpath/gnu/CORBA/typecodes/GeneralTypeCode.java \
+classpath/gnu/CORBA/typecodes/PrimitiveTypeCode.java \
+classpath/gnu/CORBA/typecodes/RecordTypeCode.java \
+classpath/gnu/CORBA/typecodes/RecursiveTypeCode.java \
+classpath/gnu/CORBA/typecodes/StringTypeCode.java
+
+gnu-CORBA.lo: $(gnu_CORBA_source_files)
+	@find classpath/lib/gnu/CORBA -name '*.class' > gnu-CORBA.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-CORBA.lo @gnu-CORBA.list
+	@rm -f gnu-CORBA.list
+
+gnu_awt_source_files = \
+gnu/awt/LightweightRedirector.java
+
+gnu_awt_header_files = $(patsubst %.java,%.h,$(gnu_awt_source_files))
+
+gnu/awt.list: $(gnu_awt_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_awt_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/awt.list
+
+-include gnu/awt.deps
+
+
+gnu_awt_j2d_source_files = \
+gnu/awt/j2d/AbstractGraphicsState.java \
+gnu/awt/j2d/DirectRasterGraphics.java \
+gnu/awt/j2d/Graphics2DImpl.java \
+gnu/awt/j2d/IntegerGraphicsState.java \
+gnu/awt/j2d/MappedRaster.java
+
+gnu_awt_j2d_header_files = $(patsubst %.java,%.h,$(gnu_awt_j2d_source_files))
+
+gnu/awt/j2d.list: $(gnu_awt_j2d_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_awt_j2d_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/awt/j2d.list
+
+-include gnu/awt/j2d.deps
+
+
+gnu_awt_xlib_source_files = \
+gnu/awt/xlib/XCanvasPeer.java \
+gnu/awt/xlib/XEventLoop.java \
+gnu/awt/xlib/XEventQueue.java \
+gnu/awt/xlib/XFontMetrics.java \
+gnu/awt/xlib/XFontPeer.java \
+gnu/awt/xlib/XFramePeer.java \
+gnu/awt/xlib/XGraphics.java \
+gnu/awt/xlib/XGraphicsConfiguration.java \
+gnu/awt/xlib/XGraphicsDevice.java \
+gnu/awt/xlib/XGraphicsEnvironment.java \
+gnu/awt/xlib/XOffScreenImage.java \
+gnu/awt/xlib/XPanelPeer.java \
+gnu/awt/xlib/XToolkit.java
+
+gnu_awt_xlib_header_files = $(patsubst %.java,%.h,$(gnu_awt_xlib_source_files))
+
+gnu/awt/xlib.list: $(gnu_awt_xlib_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_awt_xlib_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/awt/xlib.list
+
+-include gnu/awt/xlib.deps
+
+
+gnu_classpath_source_files = \
+classpath/gnu/classpath/Configuration.java \
+classpath/gnu/classpath/NotImplementedException.java \
+classpath/gnu/classpath/Pointer.java \
+classpath/gnu/classpath/Pointer32.java \
+classpath/gnu/classpath/Pointer64.java \
+classpath/gnu/classpath/ServiceFactory.java \
+classpath/gnu/classpath/ServiceProviderLoadingAction.java \
+gnu/classpath/SystemProperties.java
+
+gnu_classpath_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_source_files)))
+
+gnu/classpath.list: $(gnu_classpath_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath.list
+
+-include gnu/classpath.deps
+
+
+gnu_classpath_debug_source_files = \
+classpath/gnu/classpath/debug/Component.java \
+classpath/gnu/classpath/debug/PreciseFilter.java \
+classpath/gnu/classpath/debug/Simple1LineFormatter.java \
+classpath/gnu/classpath/debug/SystemLogger.java \
+classpath/gnu/classpath/debug/TeeInputStream.java \
+classpath/gnu/classpath/debug/TeeOutputStream.java \
+classpath/gnu/classpath/debug/TeeReader.java \
+classpath/gnu/classpath/debug/TeeWriter.java
+
+gnu_classpath_debug_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_debug_source_files)))
+
+gnu/classpath/debug.list: $(gnu_classpath_debug_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_debug_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/debug.list
+
+-include gnu/classpath/debug.deps
+
+
+gnu_classpath_jdwp_source_files = \
+classpath/gnu/classpath/jdwp/Jdwp.java \
+classpath/gnu/classpath/jdwp/JdwpConstants.java \
+gnu/classpath/jdwp/VMFrame.java \
+gnu/classpath/jdwp/VMIdManager.java \
+gnu/classpath/jdwp/VMMethod.java \
+gnu/classpath/jdwp/VMVirtualMachine.java
+
+gnu_classpath_jdwp_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_source_files)))
+
+gnu/classpath/jdwp.list: $(gnu_classpath_jdwp_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_jdwp_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/jdwp.list
+
+-include gnu/classpath/jdwp.deps
+
+
+gnu_classpath_jdwp_event_source_files = \
+classpath/gnu/classpath/jdwp/event/BreakpointEvent.java \
+classpath/gnu/classpath/jdwp/event/ClassPrepareEvent.java \
+classpath/gnu/classpath/jdwp/event/ClassUnloadEvent.java \
+classpath/gnu/classpath/jdwp/event/Event.java \
+classpath/gnu/classpath/jdwp/event/EventManager.java \
+classpath/gnu/classpath/jdwp/event/EventRequest.java \
+classpath/gnu/classpath/jdwp/event/ExceptionEvent.java \
+classpath/gnu/classpath/jdwp/event/MethodEntryEvent.java \
+classpath/gnu/classpath/jdwp/event/MethodExitEvent.java \
+classpath/gnu/classpath/jdwp/event/SingleStepEvent.java \
+classpath/gnu/classpath/jdwp/event/ThreadEndEvent.java \
+classpath/gnu/classpath/jdwp/event/ThreadStartEvent.java \
+classpath/gnu/classpath/jdwp/event/VmDeathEvent.java \
+classpath/gnu/classpath/jdwp/event/VmInitEvent.java
+
+gnu_classpath_jdwp_event_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_event_source_files)))
+
+gnu/classpath/jdwp/event.list: $(gnu_classpath_jdwp_event_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_jdwp_event_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/jdwp/event.list
+
+-include gnu/classpath/jdwp/event.deps
+
+
+gnu_classpath_jdwp_event_filters_source_files = \
+classpath/gnu/classpath/jdwp/event/filters/ClassExcludeFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/ClassMatchFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/ClassOnlyFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/ConditionalFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/CountFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/ExceptionOnlyFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/FieldOnlyFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/IEventFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/InstanceOnlyFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/LocationOnlyFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/StepFilter.java \
+classpath/gnu/classpath/jdwp/event/filters/ThreadOnlyFilter.java
+
+gnu_classpath_jdwp_event_filters_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_event_filters_source_files)))
+
+gnu/classpath/jdwp/event/filters.list: $(gnu_classpath_jdwp_event_filters_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_jdwp_event_filters_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/jdwp/event/filters.list
+
+-include gnu/classpath/jdwp/event/filters.deps
+
+
+gnu_classpath_jdwp_exception_source_files = \
+classpath/gnu/classpath/jdwp/exception/InvalidClassException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidClassLoaderException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidCountException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidEventTypeException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidFieldException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidLocationException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidMethodException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidObjectException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidStringException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidThreadException.java \
+classpath/gnu/classpath/jdwp/exception/InvalidThreadGroupException.java \
+classpath/gnu/classpath/jdwp/exception/JdwpException.java \
+classpath/gnu/classpath/jdwp/exception/JdwpIllegalArgumentException.java \
+classpath/gnu/classpath/jdwp/exception/JdwpInternalErrorException.java \
+classpath/gnu/classpath/jdwp/exception/NativeMethodException.java \
+classpath/gnu/classpath/jdwp/exception/NotImplementedException.java \
+classpath/gnu/classpath/jdwp/exception/VmDeadException.java
+
+gnu_classpath_jdwp_exception_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_exception_source_files)))
+
+gnu/classpath/jdwp/exception.list: $(gnu_classpath_jdwp_exception_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_jdwp_exception_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/jdwp/exception.list
+
+-include gnu/classpath/jdwp/exception.deps
+
+
+gnu_classpath_jdwp_id_source_files = \
+classpath/gnu/classpath/jdwp/id/ArrayId.java \
+classpath/gnu/classpath/jdwp/id/ArrayReferenceTypeId.java \
+classpath/gnu/classpath/jdwp/id/ClassLoaderId.java \
+classpath/gnu/classpath/jdwp/id/ClassObjectId.java \
+classpath/gnu/classpath/jdwp/id/ClassReferenceTypeId.java \
+classpath/gnu/classpath/jdwp/id/InterfaceReferenceTypeId.java \
+classpath/gnu/classpath/jdwp/id/JdwpId.java \
+classpath/gnu/classpath/jdwp/id/ObjectId.java \
+classpath/gnu/classpath/jdwp/id/ReferenceTypeId.java \
+classpath/gnu/classpath/jdwp/id/StringId.java \
+classpath/gnu/classpath/jdwp/id/ThreadGroupId.java \
+classpath/gnu/classpath/jdwp/id/ThreadId.java
+
+gnu_classpath_jdwp_id_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_id_source_files)))
+
+gnu/classpath/jdwp/id.list: $(gnu_classpath_jdwp_id_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_jdwp_id_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/jdwp/id.list
+
+-include gnu/classpath/jdwp/id.deps
+
+
+gnu_classpath_jdwp_processor_source_files = \
+classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/ArrayTypeCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/ClassLoaderReferenceCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/ClassObjectReferenceCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/ClassTypeCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/CommandSet.java \
+classpath/gnu/classpath/jdwp/processor/EventRequestCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/FieldCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/InterfaceTypeCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/MethodCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/PacketProcessor.java \
+classpath/gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/StackFrameCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/StringReferenceCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java \
+classpath/gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java
+
+gnu_classpath_jdwp_processor_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_processor_source_files)))
+
+gnu/classpath/jdwp/processor.list: $(gnu_classpath_jdwp_processor_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_jdwp_processor_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/jdwp/processor.list
+
+-include gnu/classpath/jdwp/processor.deps
+
+
+gnu_classpath_jdwp_transport_source_files = \
+classpath/gnu/classpath/jdwp/transport/ITransport.java \
+classpath/gnu/classpath/jdwp/transport/JdwpCommandPacket.java \
+classpath/gnu/classpath/jdwp/transport/JdwpConnection.java \
+classpath/gnu/classpath/jdwp/transport/JdwpPacket.java \
+classpath/gnu/classpath/jdwp/transport/JdwpReplyPacket.java \
+classpath/gnu/classpath/jdwp/transport/SocketTransport.java \
+classpath/gnu/classpath/jdwp/transport/TransportException.java \
+classpath/gnu/classpath/jdwp/transport/TransportFactory.java
+
+gnu_classpath_jdwp_transport_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_transport_source_files)))
+
+gnu/classpath/jdwp/transport.list: $(gnu_classpath_jdwp_transport_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_jdwp_transport_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/jdwp/transport.list
+
+-include gnu/classpath/jdwp/transport.deps
+
+
+gnu_classpath_jdwp_util_source_files = \
+classpath/gnu/classpath/jdwp/util/JdwpString.java \
+classpath/gnu/classpath/jdwp/util/LineTable.java \
+classpath/gnu/classpath/jdwp/util/Location.java \
+classpath/gnu/classpath/jdwp/util/MethodResult.java \
+classpath/gnu/classpath/jdwp/util/Signature.java \
+classpath/gnu/classpath/jdwp/util/Value.java \
+classpath/gnu/classpath/jdwp/util/VariableTable.java
+
+gnu_classpath_jdwp_util_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_classpath_jdwp_util_source_files)))
+
+gnu/classpath/jdwp/util.list: $(gnu_classpath_jdwp_util_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_classpath_jdwp_util_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/classpath/jdwp/util.list
+
+-include gnu/classpath/jdwp/util.deps
+
+
+gnu_gcj_source_files = \
+gnu/gcj/Core.java \
+gnu/gcj/RawData.java \
+gnu/gcj/RawDataManaged.java
+
+gnu_gcj_header_files = $(patsubst %.java,%.h,$(gnu_gcj_source_files))
+
+gnu/gcj.list: $(gnu_gcj_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_gcj_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/gcj.list
+
+-include gnu/gcj.deps
+
+
+gnu_gcj_convert_source_files = \
+gnu/gcj/convert/BytesToCharsetAdaptor.java \
+gnu/gcj/convert/BytesToUnicode.java \
+gnu/gcj/convert/CharsetToBytesAdaptor.java \
+gnu/gcj/convert/Convert.java \
+gnu/gcj/convert/IOConverter.java \
+gnu/gcj/convert/Input_8859_1.java \
+gnu/gcj/convert/Input_ASCII.java \
+gnu/gcj/convert/Input_EUCJIS.java \
+gnu/gcj/convert/Input_JavaSrc.java \
+gnu/gcj/convert/Input_SJIS.java \
+gnu/gcj/convert/Input_UTF8.java \
+gnu/gcj/convert/Input_UnicodeBig.java \
+gnu/gcj/convert/Input_UnicodeLittle.java \
+gnu/gcj/convert/Input_iconv.java \
+gnu/gcj/convert/Output_8859_1.java \
+gnu/gcj/convert/Output_ASCII.java \
+gnu/gcj/convert/Output_EUCJIS.java \
+gnu/gcj/convert/Output_JavaSrc.java \
+gnu/gcj/convert/Output_SJIS.java \
+gnu/gcj/convert/Output_UTF8.java \
+gnu/gcj/convert/Output_UnicodeLittleUnmarked.java \
+gnu/gcj/convert/Output_iconv.java \
+gnu/gcj/convert/UnicodeToBytes.java
+
+gnu_gcj_convert_header_files = $(patsubst %.java,%.h,$(gnu_gcj_convert_source_files))
+
+gnu/gcj/convert.list: $(gnu_gcj_convert_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_gcj_convert_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/gcj/convert.list
+
+-include gnu/gcj/convert.deps
+
+
+gnu_gcj_io_source_files = \
+gnu/gcj/io/DefaultMimeTypes.java \
+gnu/gcj/io/MimeTypes.java \
+gnu/gcj/io/SimpleSHSStream.java
+
+gnu_gcj_io_header_files = $(patsubst %.java,%.h,$(gnu_gcj_io_source_files))
+
+gnu/gcj/io.list: $(gnu_gcj_io_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_gcj_io_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/gcj/io.list
+
+-include gnu/gcj/io.deps
+
+
+gnu_gcj_runtime_source_files = \
+gnu/gcj/runtime/BootClassLoader.java \
+gnu/gcj/runtime/ExtensionClassLoader.java \
+gnu/gcj/runtime/FinalizerThread.java \
+gnu/gcj/runtime/HelperClassLoader.java \
+gnu/gcj/runtime/JNIWeakRef.java \
+gnu/gcj/runtime/NameFinder.java \
+gnu/gcj/runtime/PersistentByteMap.java \
+gnu/gcj/runtime/SharedLibHelper.java \
+gnu/gcj/runtime/SharedLibLoader.java \
+gnu/gcj/runtime/StringBuffer.java \
+gnu/gcj/runtime/SystemClassLoader.java
+
+gnu_gcj_runtime_header_files = $(patsubst %.java,%.h,$(gnu_gcj_runtime_source_files))
+
+gnu/gcj/runtime.list: $(gnu_gcj_runtime_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_gcj_runtime_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/gcj/runtime.list
+
+-include gnu/gcj/runtime.deps
+
+
+gnu_gcj_util_source_files = \
+gnu/gcj/util/Debug.java
+
+gnu_gcj_util_header_files = $(patsubst %.java,%.h,$(gnu_gcj_util_source_files))
+
+gnu/gcj/util.list: $(gnu_gcj_util_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_gcj_util_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/gcj/util.list
+
+-include gnu/gcj/util.deps
+
+
+gnu_gcj_xlib_source_files = \
+gnu/gcj/xlib/Clip.java \
+gnu/gcj/xlib/Colormap.java \
+gnu/gcj/xlib/Display.java \
+gnu/gcj/xlib/Drawable.java \
+gnu/gcj/xlib/Font.java \
+gnu/gcj/xlib/GC.java \
+gnu/gcj/xlib/Pixmap.java \
+gnu/gcj/xlib/Screen.java \
+gnu/gcj/xlib/Visual.java \
+gnu/gcj/xlib/WMSizeHints.java \
+gnu/gcj/xlib/Window.java \
+gnu/gcj/xlib/WindowAttributes.java \
+gnu/gcj/xlib/XAnyEvent.java \
+gnu/gcj/xlib/XButtonEvent.java \
+gnu/gcj/xlib/XColor.java \
+gnu/gcj/xlib/XConfigureEvent.java \
+gnu/gcj/xlib/XConnectException.java \
+gnu/gcj/xlib/XEvent.java \
+gnu/gcj/xlib/XException.java \
+gnu/gcj/xlib/XExposeEvent.java \
+gnu/gcj/xlib/XID.java \
+gnu/gcj/xlib/XImage.java \
+gnu/gcj/xlib/XUnmapEvent.java
+
+gnu_gcj_xlib_header_files = $(patsubst %.java,%.h,$(gnu_gcj_xlib_source_files))
+
+gnu/gcj/xlib.list: $(gnu_gcj_xlib_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_gcj_xlib_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/gcj/xlib.list
+
+-include gnu/gcj/xlib.deps
+
+
+gnu_java_awt_source_files = \
+classpath/gnu/java/awt/AWTUtilities.java \
+classpath/gnu/java/awt/BitMaskExtent.java \
+classpath/gnu/java/awt/BitwiseXORComposite.java \
+classpath/gnu/java/awt/Buffers.java \
+classpath/gnu/java/awt/ClasspathToolkit.java \
+classpath/gnu/java/awt/ComponentDataBlitOp.java \
+classpath/gnu/java/awt/EmbeddedWindow.java \
+classpath/gnu/java/awt/EventModifier.java \
+classpath/gnu/java/awt/GradientPaintContext.java
+
+gnu_java_awt_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_source_files)))
+
+gnu/java/awt.list: $(gnu_java_awt_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt.list
+
+-include gnu/java/awt.deps
+
+
+gnu_java_awt_color_source_files = \
+classpath/gnu/java/awt/color/CieXyzConverter.java \
+classpath/gnu/java/awt/color/ClutProfileConverter.java \
+classpath/gnu/java/awt/color/ColorLookUpTable.java \
+classpath/gnu/java/awt/color/ColorSpaceConverter.java \
+classpath/gnu/java/awt/color/GrayProfileConverter.java \
+classpath/gnu/java/awt/color/GrayScaleConverter.java \
+classpath/gnu/java/awt/color/LinearRGBConverter.java \
+classpath/gnu/java/awt/color/ProfileHeader.java \
+classpath/gnu/java/awt/color/PyccConverter.java \
+classpath/gnu/java/awt/color/RgbProfileConverter.java \
+classpath/gnu/java/awt/color/SrgbConverter.java \
+classpath/gnu/java/awt/color/TagEntry.java \
+classpath/gnu/java/awt/color/ToneReproductionCurve.java
+
+gnu_java_awt_color_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_color_source_files)))
+
+gnu/java/awt/color.list: $(gnu_java_awt_color_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_color_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/color.list
+
+-include gnu/java/awt/color.deps
+
+
+gnu_java_awt_dnd_source_files = \
+classpath/gnu/java/awt/dnd/GtkMouseDragGestureRecognizer.java
+
+gnu_java_awt_dnd_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_dnd_source_files)))
+
+gnu/java/awt/dnd.list: $(gnu_java_awt_dnd_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_dnd_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/dnd.list
+
+-include gnu/java/awt/dnd.deps
+
+
+gnu_java_awt_dnd_peer_gtk_source_files = \
+classpath/gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java \
+classpath/gnu/java/awt/dnd/peer/gtk/GtkDropTargetContextPeer.java \
+classpath/gnu/java/awt/dnd/peer/gtk/GtkDropTargetPeer.java
+
+gnu-java-awt-dnd-peer-gtk.lo: $(gnu_java_awt_dnd_peer_gtk_source_files)
+	@find classpath/lib/gnu/java/awt/dnd/peer/gtk -name '*.class' > gnu-java-awt-dnd-peer-gtk.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-java-awt-dnd-peer-gtk.lo @gnu-java-awt-dnd-peer-gtk.list
+	@rm -f gnu-java-awt-dnd-peer-gtk.list
+
+gnu_java_awt_font_source_files = \
+classpath/gnu/java/awt/font/FontDelegate.java \
+classpath/gnu/java/awt/font/FontFactory.java \
+classpath/gnu/java/awt/font/GNUGlyphVector.java
+
+gnu_java_awt_font_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_font_source_files)))
+
+gnu/java/awt/font.list: $(gnu_java_awt_font_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_font_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/font.list
+
+-include gnu/java/awt/font.deps
+
+
+gnu_java_awt_font_opentype_source_files = \
+classpath/gnu/java/awt/font/opentype/CharGlyphMap.java \
+classpath/gnu/java/awt/font/opentype/GlyphNamer.java \
+classpath/gnu/java/awt/font/opentype/MacResourceFork.java \
+classpath/gnu/java/awt/font/opentype/NameDecoder.java \
+classpath/gnu/java/awt/font/opentype/OpenTypeFont.java \
+classpath/gnu/java/awt/font/opentype/OpenTypeFontFactory.java \
+classpath/gnu/java/awt/font/opentype/Scaler.java
+
+gnu_java_awt_font_opentype_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_font_opentype_source_files)))
+
+gnu/java/awt/font/opentype.list: $(gnu_java_awt_font_opentype_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_font_opentype_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/font/opentype.list
+
+-include gnu/java/awt/font/opentype.deps
+
+
+gnu_java_awt_font_opentype_truetype_source_files = \
+classpath/gnu/java/awt/font/opentype/truetype/Fixed.java \
+classpath/gnu/java/awt/font/opentype/truetype/GlyphLoader.java \
+classpath/gnu/java/awt/font/opentype/truetype/GlyphLocator.java \
+classpath/gnu/java/awt/font/opentype/truetype/GlyphMeasurer.java \
+classpath/gnu/java/awt/font/opentype/truetype/TrueTypeScaler.java \
+classpath/gnu/java/awt/font/opentype/truetype/VirtualMachine.java \
+classpath/gnu/java/awt/font/opentype/truetype/Zone.java \
+classpath/gnu/java/awt/font/opentype/truetype/ZonePathIterator.java
+
+gnu_java_awt_font_opentype_truetype_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_font_opentype_truetype_source_files)))
+
+gnu/java/awt/font/opentype/truetype.list: $(gnu_java_awt_font_opentype_truetype_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_font_opentype_truetype_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/font/opentype/truetype.list
+
+-include gnu/java/awt/font/opentype/truetype.deps
+
+
+gnu_java_awt_image_source_files = \
+classpath/gnu/java/awt/image/ImageDecoder.java \
+classpath/gnu/java/awt/image/XBMDecoder.java
+
+gnu_java_awt_image_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_image_source_files)))
+
+gnu/java/awt/image.list: $(gnu_java_awt_image_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_image_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/image.list
+
+-include gnu/java/awt/image.deps
+
+
+gnu_java_awt_java2d_source_files = \
+classpath/gnu/java/awt/java2d/AbstractGraphics2D.java \
+classpath/gnu/java/awt/java2d/AlphaCompositeContext.java \
+classpath/gnu/java/awt/java2d/CubicSegment.java \
+classpath/gnu/java/awt/java2d/ImagePaint.java \
+classpath/gnu/java/awt/java2d/LineSegment.java \
+classpath/gnu/java/awt/java2d/PolyEdge.java \
+classpath/gnu/java/awt/java2d/PolyEdgeComparator.java \
+classpath/gnu/java/awt/java2d/QuadSegment.java \
+classpath/gnu/java/awt/java2d/RasterGraphics.java \
+classpath/gnu/java/awt/java2d/Segment.java \
+classpath/gnu/java/awt/java2d/TexturePaintContext.java
+
+gnu_java_awt_java2d_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_java2d_source_files)))
+
+gnu/java/awt/java2d.list: $(gnu_java_awt_java2d_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_java2d_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/java2d.list
+
+-include gnu/java/awt/java2d.deps
+
+
+gnu_java_awt_peer_source_files = \
+classpath/gnu/java/awt/peer/ClasspathFontPeer.java \
+classpath/gnu/java/awt/peer/EmbeddedWindowPeer.java \
+classpath/gnu/java/awt/peer/GLightweightPeer.java
+
+gnu_java_awt_peer_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_peer_source_files)))
+
+gnu/java/awt/peer.list: $(gnu_java_awt_peer_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_peer_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/peer.list
+
+-include gnu/java/awt/peer.deps
+
+
+gnu_java_awt_peer_gtk_source_files = \
+classpath/gnu/java/awt/peer/gtk/BufferedImageGraphics.java \
+classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java \
+classpath/gnu/java/awt/peer/gtk/CairoSurface.java \
+classpath/gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java \
+classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java \
+classpath/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java \
+classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java \
+classpath/gnu/java/awt/peer/gtk/GThreadMutex.java \
+classpath/gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java \
+classpath/gnu/java/awt/peer/gtk/GdkFontMetrics.java \
+classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java \
+classpath/gnu/java/awt/peer/gtk/GdkGraphicsConfiguration.java \
+classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java \
+classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java \
+classpath/gnu/java/awt/peer/gtk/GdkRobotPeer.java \
+classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java \
+classpath/gnu/java/awt/peer/gtk/GtkButtonPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkCanvasPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkChoicePeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkClipboard.java \
+classpath/gnu/java/awt/peer/gtk/GtkClipboardNotifier.java \
+classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkContainerPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkCursor.java \
+classpath/gnu/java/awt/peer/gtk/GtkDialogPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkEmbeddedWindowPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkFramePeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkGenericPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkImage.java \
+classpath/gnu/java/awt/peer/gtk/GtkImageConsumer.java \
+classpath/gnu/java/awt/peer/gtk/GtkLabelPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkListPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkMenuPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkPanelPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkPopupMenuPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkSelection.java \
+classpath/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java \
+classpath/gnu/java/awt/peer/gtk/GtkToolkit.java \
+classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java \
+classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java \
+classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
+
+gnu-java-awt-peer-gtk.lo: $(gnu_java_awt_peer_gtk_source_files)
+	@find classpath/lib/gnu/java/awt/peer/gtk -name '*.class' > gnu-java-awt-peer-gtk.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-java-awt-peer-gtk.lo @gnu-java-awt-peer-gtk.list
+	@rm -f gnu-java-awt-peer-gtk.list
+
+gnu_java_awt_peer_qt_source_files = \
+classpath/gnu/java/awt/peer/qt/MainQtThread.java \
+classpath/gnu/java/awt/peer/qt/NativeWrapper.java \
+classpath/gnu/java/awt/peer/qt/QMatrix.java \
+classpath/gnu/java/awt/peer/qt/QPainterPath.java \
+classpath/gnu/java/awt/peer/qt/QPen.java \
+classpath/gnu/java/awt/peer/qt/QtAudioClip.java \
+classpath/gnu/java/awt/peer/qt/QtButtonPeer.java \
+classpath/gnu/java/awt/peer/qt/QtCanvasPeer.java \
+classpath/gnu/java/awt/peer/qt/QtCheckboxPeer.java \
+classpath/gnu/java/awt/peer/qt/QtChoicePeer.java \
+classpath/gnu/java/awt/peer/qt/QtComponentGraphics.java \
+classpath/gnu/java/awt/peer/qt/QtComponentPeer.java \
+classpath/gnu/java/awt/peer/qt/QtContainerPeer.java \
+classpath/gnu/java/awt/peer/qt/QtDialogPeer.java \
+classpath/gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java \
+classpath/gnu/java/awt/peer/qt/QtFileDialogPeer.java \
+classpath/gnu/java/awt/peer/qt/QtFontMetrics.java \
+classpath/gnu/java/awt/peer/qt/QtFontPeer.java \
+classpath/gnu/java/awt/peer/qt/QtFramePeer.java \
+classpath/gnu/java/awt/peer/qt/QtGraphics.java \
+classpath/gnu/java/awt/peer/qt/QtGraphicsEnvironment.java \
+classpath/gnu/java/awt/peer/qt/QtImage.java \
+classpath/gnu/java/awt/peer/qt/QtImageConsumer.java \
+classpath/gnu/java/awt/peer/qt/QtImageDirectGraphics.java \
+classpath/gnu/java/awt/peer/qt/QtImageGraphics.java \
+classpath/gnu/java/awt/peer/qt/QtLabelPeer.java \
+classpath/gnu/java/awt/peer/qt/QtListPeer.java \
+classpath/gnu/java/awt/peer/qt/QtMenuBarPeer.java \
+classpath/gnu/java/awt/peer/qt/QtMenuComponentPeer.java \
+classpath/gnu/java/awt/peer/qt/QtMenuItemPeer.java \
+classpath/gnu/java/awt/peer/qt/QtMenuPeer.java \
+classpath/gnu/java/awt/peer/qt/QtPanelPeer.java \
+classpath/gnu/java/awt/peer/qt/QtPopupMenuPeer.java \
+classpath/gnu/java/awt/peer/qt/QtRepaintThread.java \
+classpath/gnu/java/awt/peer/qt/QtScreenDevice.java \
+classpath/gnu/java/awt/peer/qt/QtScreenDeviceConfiguration.java \
+classpath/gnu/java/awt/peer/qt/QtScrollPanePeer.java \
+classpath/gnu/java/awt/peer/qt/QtScrollbarPeer.java \
+classpath/gnu/java/awt/peer/qt/QtTextAreaPeer.java \
+classpath/gnu/java/awt/peer/qt/QtTextFieldPeer.java \
+classpath/gnu/java/awt/peer/qt/QtToolkit.java \
+classpath/gnu/java/awt/peer/qt/QtVolatileImage.java \
+classpath/gnu/java/awt/peer/qt/QtWindowPeer.java
+
+gnu-java-awt-peer-qt.lo: $(gnu_java_awt_peer_qt_source_files)
+	@find classpath/lib/gnu/java/awt/peer/qt -name '*.class' > gnu-java-awt-peer-qt.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-java-awt-peer-qt.lo @gnu-java-awt-peer-qt.list
+	@rm -f gnu-java-awt-peer-qt.list
+
+gnu_java_awt_peer_swing_source_files = \
+classpath/gnu/java/awt/peer/swing/SwingButtonPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingCanvasPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingComponent.java \
+classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingFramePeer.java \
+classpath/gnu/java/awt/peer/swing/SwingLabelPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingMenuBarPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingMenuItemPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingMenuPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingPanelPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingTextFieldPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingToolkit.java \
+classpath/gnu/java/awt/peer/swing/SwingWindowPeer.java
+
+gnu-java-awt-peer-swing.lo: $(gnu_java_awt_peer_swing_source_files)
+	@find classpath/lib/gnu/java/awt/peer/swing -name '*.class' > gnu-java-awt-peer-swing.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-java-awt-peer-swing.lo @gnu-java-awt-peer-swing.list
+	@rm -f gnu-java-awt-peer-swing.list
+
+gnu_java_awt_print_source_files = \
+classpath/gnu/java/awt/print/JavaPrinterGraphics.java \
+classpath/gnu/java/awt/print/JavaPrinterJob.java \
+classpath/gnu/java/awt/print/PostScriptGraphics2D.java \
+classpath/gnu/java/awt/print/SpooledDocument.java
+
+gnu_java_awt_print_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_awt_print_source_files)))
+
+gnu/java/awt/print.list: $(gnu_java_awt_print_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_awt_print_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/awt/print.list
+
+-include gnu/java/awt/print.deps
+
+
+gnu_java_beans_source_files = \
+classpath/gnu/java/beans/BeanInfoEmbryo.java \
+classpath/gnu/java/beans/DefaultExceptionListener.java \
+classpath/gnu/java/beans/DummyAppletContext.java \
+classpath/gnu/java/beans/DummyAppletStub.java \
+classpath/gnu/java/beans/ExplicitBeanInfo.java \
+classpath/gnu/java/beans/IntrospectionIncubator.java \
+classpath/gnu/java/beans/decoder/AbstractContext.java \
+classpath/gnu/java/beans/decoder/AbstractCreatableObjectContext.java \
+classpath/gnu/java/beans/decoder/AbstractElementHandler.java \
+classpath/gnu/java/beans/decoder/AbstractObjectContext.java \
+classpath/gnu/java/beans/decoder/ArrayContext.java \
+classpath/gnu/java/beans/decoder/ArrayHandler.java \
+classpath/gnu/java/beans/decoder/AssemblyException.java \
+classpath/gnu/java/beans/decoder/BooleanHandler.java \
+classpath/gnu/java/beans/decoder/ByteHandler.java \
+classpath/gnu/java/beans/decoder/CharHandler.java \
+classpath/gnu/java/beans/decoder/ClassHandler.java \
+classpath/gnu/java/beans/decoder/ConstructorContext.java \
+classpath/gnu/java/beans/decoder/Context.java \
+classpath/gnu/java/beans/decoder/DecoderContext.java \
+classpath/gnu/java/beans/decoder/DoubleHandler.java \
+classpath/gnu/java/beans/decoder/DummyContext.java \
+classpath/gnu/java/beans/decoder/DummyHandler.java \
+classpath/gnu/java/beans/decoder/ElementHandler.java \
+classpath/gnu/java/beans/decoder/FloatHandler.java \
+classpath/gnu/java/beans/decoder/GrowableArrayContext.java \
+classpath/gnu/java/beans/decoder/IndexContext.java \
+classpath/gnu/java/beans/decoder/IntHandler.java \
+classpath/gnu/java/beans/decoder/JavaHandler.java \
+classpath/gnu/java/beans/decoder/LongHandler.java \
+classpath/gnu/java/beans/decoder/MethodContext.java \
+classpath/gnu/java/beans/decoder/MethodFinder.java \
+classpath/gnu/java/beans/decoder/NullHandler.java \
+classpath/gnu/java/beans/decoder/ObjectContext.java \
+classpath/gnu/java/beans/decoder/ObjectHandler.java \
+classpath/gnu/java/beans/decoder/PersistenceParser.java \
+classpath/gnu/java/beans/decoder/PropertyContext.java \
+classpath/gnu/java/beans/decoder/ShortHandler.java \
+classpath/gnu/java/beans/decoder/SimpleHandler.java \
+classpath/gnu/java/beans/decoder/StaticMethodContext.java \
+classpath/gnu/java/beans/decoder/StringHandler.java \
+classpath/gnu/java/beans/decoder/VoidHandler.java \
+classpath/gnu/java/beans/editors/ColorEditor.java \
+classpath/gnu/java/beans/editors/FontEditor.java \
+classpath/gnu/java/beans/editors/NativeBooleanEditor.java \
+classpath/gnu/java/beans/editors/NativeByteEditor.java \
+classpath/gnu/java/beans/editors/NativeDoubleEditor.java \
+classpath/gnu/java/beans/editors/NativeFloatEditor.java \
+classpath/gnu/java/beans/editors/NativeIntEditor.java \
+classpath/gnu/java/beans/editors/NativeLongEditor.java \
+classpath/gnu/java/beans/editors/NativeShortEditor.java \
+classpath/gnu/java/beans/editors/StringEditor.java \
+classpath/gnu/java/beans/encoder/ArrayPersistenceDelegate.java \
+classpath/gnu/java/beans/encoder/ClassPersistenceDelegate.java \
+classpath/gnu/java/beans/encoder/CollectionPersistenceDelegate.java \
+classpath/gnu/java/beans/encoder/Context.java \
+classpath/gnu/java/beans/encoder/GenericScannerState.java \
+classpath/gnu/java/beans/encoder/IgnoringScannerState.java \
+classpath/gnu/java/beans/encoder/MapPersistenceDelegate.java \
+classpath/gnu/java/beans/encoder/ObjectId.java \
+classpath/gnu/java/beans/encoder/PrimitivePersistenceDelegate.java \
+classpath/gnu/java/beans/encoder/ReportingScannerState.java \
+classpath/gnu/java/beans/encoder/Root.java \
+classpath/gnu/java/beans/encoder/ScanEngine.java \
+classpath/gnu/java/beans/encoder/ScannerState.java \
+classpath/gnu/java/beans/encoder/StAXWriter.java \
+classpath/gnu/java/beans/encoder/Writer.java \
+classpath/gnu/java/beans/encoder/elements/ArrayInstantiation.java \
+classpath/gnu/java/beans/encoder/elements/Array_Get.java \
+classpath/gnu/java/beans/encoder/elements/Array_Set.java \
+classpath/gnu/java/beans/encoder/elements/ClassResolution.java \
+classpath/gnu/java/beans/encoder/elements/Element.java \
+classpath/gnu/java/beans/encoder/elements/List_Get.java \
+classpath/gnu/java/beans/encoder/elements/List_Set.java \
+classpath/gnu/java/beans/encoder/elements/MethodInvocation.java \
+classpath/gnu/java/beans/encoder/elements/NullObject.java \
+classpath/gnu/java/beans/encoder/elements/ObjectInstantiation.java \
+classpath/gnu/java/beans/encoder/elements/ObjectReference.java \
+classpath/gnu/java/beans/encoder/elements/PrimitiveInstantiation.java \
+classpath/gnu/java/beans/encoder/elements/StaticFieldAccess.java \
+classpath/gnu/java/beans/encoder/elements/StaticMethodInvocation.java \
+classpath/gnu/java/beans/encoder/elements/StringReference.java
+
+gnu-java-beans.lo: $(gnu_java_beans_source_files)
+	@find classpath/lib/gnu/java/beans -name '*.class' > gnu-java-beans.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-java-beans.lo @gnu-java-beans.list
+	@rm -f gnu-java-beans.list
+
+gnu_java_io_source_files = \
+classpath/gnu/java/io/ASN1ParsingException.java \
+classpath/gnu/java/io/Base64InputStream.java \
+classpath/gnu/java/io/ClassLoaderObjectInputStream.java \
+classpath/gnu/java/io/NullOutputStream.java \
+classpath/gnu/java/io/ObjectIdentityWrapper.java \
+classpath/gnu/java/io/PlatformHelper.java
+
+gnu_java_io_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_io_source_files)))
+
+gnu/java/io.list: $(gnu_java_io_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_io_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/io.list
+
+-include gnu/java/io.deps
+
+
+gnu_java_lang_source_files = \
+classpath/gnu/java/lang/ArrayHelper.java \
+classpath/gnu/java/lang/CharData.java \
+classpath/gnu/java/lang/ClassHelper.java \
+classpath/gnu/java/lang/InstrumentationImpl.java \
+gnu/java/lang/MainThread.java \
+gnu/java/lang/VMInstrumentationImpl.java
+
+gnu_java_lang_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_lang_source_files)))
+
+gnu/java/lang.list: $(gnu_java_lang_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_lang_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/lang.list
+
+-include gnu/java/lang.deps
+
+
+gnu_java_lang_management_source_files = \
+classpath/gnu/java/lang/management/BeanImpl.java \
+classpath/gnu/java/lang/management/ClassLoadingMXBeanImpl.java \
+classpath/gnu/java/lang/management/CompilationMXBeanImpl.java \
+classpath/gnu/java/lang/management/GarbageCollectorMXBeanImpl.java \
+classpath/gnu/java/lang/management/MemoryMXBeanImpl.java \
+classpath/gnu/java/lang/management/MemoryManagerMXBeanImpl.java \
+classpath/gnu/java/lang/management/MemoryPoolMXBeanImpl.java \
+classpath/gnu/java/lang/management/OperatingSystemMXBeanImpl.java \
+classpath/gnu/java/lang/management/RuntimeMXBeanImpl.java \
+classpath/gnu/java/lang/management/ThreadMXBeanImpl.java \
+gnu/java/lang/management/VMClassLoadingMXBeanImpl.java \
+gnu/java/lang/management/VMCompilationMXBeanImpl.java \
+gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java \
+gnu/java/lang/management/VMMemoryMXBeanImpl.java \
+gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java \
+gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java \
+gnu/java/lang/management/VMRuntimeMXBeanImpl.java \
+gnu/java/lang/management/VMThreadMXBeanImpl.java
+
+gnu_java_lang_management_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_lang_management_source_files)))
+
+gnu/java/lang/management.list: $(gnu_java_lang_management_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_lang_management_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/lang/management.list
+
+-include gnu/java/lang/management.deps
+
+
+gnu_java_lang_reflect_source_files = \
+classpath/gnu/java/lang/reflect/ClassSignatureParser.java \
+classpath/gnu/java/lang/reflect/FieldSignatureParser.java \
+classpath/gnu/java/lang/reflect/GenericSignatureParser.java \
+classpath/gnu/java/lang/reflect/MethodSignatureParser.java \
+classpath/gnu/java/lang/reflect/TypeImpl.java \
+classpath/gnu/java/lang/reflect/TypeSignature.java
+
+gnu_java_lang_reflect_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_lang_reflect_source_files)))
+
+gnu/java/lang/reflect.list: $(gnu_java_lang_reflect_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_lang_reflect_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/lang/reflect.list
+
+-include gnu/java/lang/reflect.deps
+
+
+gnu_java_locale_source_files = \
+gnu/java/locale/Calendar.java \
+gnu/java/locale/Calendar_de.java \
+gnu/java/locale/Calendar_en.java \
+gnu/java/locale/Calendar_nl.java \
+classpath/gnu/java/locale/LocaleData.java \
+classpath/gnu/java/locale/LocaleHelper.java \
+gnu/java/locale/LocaleInformation.java \
+gnu/java/locale/LocaleInformation_af_ZA.java \
+gnu/java/locale/LocaleInformation_ar_AE.java \
+gnu/java/locale/LocaleInformation_ar_BH.java \
+gnu/java/locale/LocaleInformation_ar_DZ.java \
+gnu/java/locale/LocaleInformation_ar_EG.java \
+gnu/java/locale/LocaleInformation_ar_IN.java \
+gnu/java/locale/LocaleInformation_ar_IQ.java \
+gnu/java/locale/LocaleInformation_ar_JO.java \
+gnu/java/locale/LocaleInformation_ar_KW.java \
+gnu/java/locale/LocaleInformation_ar_LB.java \
+gnu/java/locale/LocaleInformation_ar_LY.java \
+gnu/java/locale/LocaleInformation_ar_MA.java \
+gnu/java/locale/LocaleInformation_ar_OM.java \
+gnu/java/locale/LocaleInformation_ar_QA.java \
+gnu/java/locale/LocaleInformation_ar_SD.java \
+gnu/java/locale/LocaleInformation_ar_SY.java \
+gnu/java/locale/LocaleInformation_ar_TN.java \
+gnu/java/locale/LocaleInformation_ar_YE.java \
+gnu/java/locale/LocaleInformation_be_BY.java \
+gnu/java/locale/LocaleInformation_bn_IN.java \
+gnu/java/locale/LocaleInformation_br_FR.java \
+gnu/java/locale/LocaleInformation_bs_BA.java \
+gnu/java/locale/LocaleInformation_ca_ES.java \
+gnu/java/locale/LocaleInformation_cs_CZ.java \
+gnu/java/locale/LocaleInformation_cy_GB.java \
+gnu/java/locale/LocaleInformation_da_DK.java \
+gnu/java/locale/LocaleInformation_de.java \
+gnu/java/locale/LocaleInformation_de_AT.java \
+gnu/java/locale/LocaleInformation_de_BE.java \
+gnu/java/locale/LocaleInformation_de_CH.java \
+gnu/java/locale/LocaleInformation_de_DE.java \
+gnu/java/locale/LocaleInformation_de_LU.java \
+gnu/java/locale/LocaleInformation_el_GR.java \
+gnu/java/locale/LocaleInformation_en.java \
+gnu/java/locale/LocaleInformation_en_AU.java \
+gnu/java/locale/LocaleInformation_en_BW.java \
+gnu/java/locale/LocaleInformation_en_CA.java \
+gnu/java/locale/LocaleInformation_en_DK.java \
+gnu/java/locale/LocaleInformation_en_GB.java \
+gnu/java/locale/LocaleInformation_en_HK.java \
+gnu/java/locale/LocaleInformation_en_IE.java \
+gnu/java/locale/LocaleInformation_en_IN.java \
+gnu/java/locale/LocaleInformation_en_NZ.java \
+gnu/java/locale/LocaleInformation_en_PH.java \
+gnu/java/locale/LocaleInformation_en_SG.java \
+gnu/java/locale/LocaleInformation_en_US.java \
+gnu/java/locale/LocaleInformation_en_ZA.java \
+gnu/java/locale/LocaleInformation_en_ZW.java \
+gnu/java/locale/LocaleInformation_es_AR.java \
+gnu/java/locale/LocaleInformation_es_BO.java \
+gnu/java/locale/LocaleInformation_es_CL.java \
+gnu/java/locale/LocaleInformation_es_CO.java \
+gnu/java/locale/LocaleInformation_es_CR.java \
+gnu/java/locale/LocaleInformation_es_DO.java \
+gnu/java/locale/LocaleInformation_es_EC.java \
+gnu/java/locale/LocaleInformation_es_ES.java \
+gnu/java/locale/LocaleInformation_es_GT.java \
+gnu/java/locale/LocaleInformation_es_HN.java \
+gnu/java/locale/LocaleInformation_es_MX.java \
+gnu/java/locale/LocaleInformation_es_NI.java \
+gnu/java/locale/LocaleInformation_es_PA.java \
+gnu/java/locale/LocaleInformation_es_PE.java \
+gnu/java/locale/LocaleInformation_es_PR.java \
+gnu/java/locale/LocaleInformation_es_PY.java \
+gnu/java/locale/LocaleInformation_es_SV.java \
+gnu/java/locale/LocaleInformation_es_US.java \
+gnu/java/locale/LocaleInformation_es_UY.java \
+gnu/java/locale/LocaleInformation_es_VE.java \
+gnu/java/locale/LocaleInformation_et_EE.java \
+gnu/java/locale/LocaleInformation_eu_ES.java \
+gnu/java/locale/LocaleInformation_fa_IR.java \
+gnu/java/locale/LocaleInformation_fi_FI.java \
+gnu/java/locale/LocaleInformation_fo_FO.java \
+gnu/java/locale/LocaleInformation_fr_BE.java \
+gnu/java/locale/LocaleInformation_fr_CA.java \
+gnu/java/locale/LocaleInformation_fr_CH.java \
+gnu/java/locale/LocaleInformation_fr_FR.java \
+gnu/java/locale/LocaleInformation_fr_LU.java \
+gnu/java/locale/LocaleInformation_ga_IE.java \
+gnu/java/locale/LocaleInformation_gd_GB.java \
+gnu/java/locale/LocaleInformation_gl_ES.java \
+gnu/java/locale/LocaleInformation_gv_GB.java \
+gnu/java/locale/LocaleInformation_he_IL.java \
+gnu/java/locale/LocaleInformation_hi_IN.java \
+gnu/java/locale/LocaleInformation_hr_HR.java \
+gnu/java/locale/LocaleInformation_hu_HU.java \
+gnu/java/locale/LocaleInformation_id_ID.java \
+gnu/java/locale/LocaleInformation_it_CH.java \
+gnu/java/locale/LocaleInformation_it_IT.java \
+gnu/java/locale/LocaleInformation_iw_IL.java \
+gnu/java/locale/LocaleInformation_ja_JP.java \
+gnu/java/locale/LocaleInformation_ka_GE.java \
+gnu/java/locale/LocaleInformation_kl_GL.java \
+gnu/java/locale/LocaleInformation_ko_KR.java \
+gnu/java/locale/LocaleInformation_kw_GB.java \
+gnu/java/locale/LocaleInformation_lt_LT.java \
+gnu/java/locale/LocaleInformation_lv_LV.java \
+gnu/java/locale/LocaleInformation_mi_NZ.java \
+gnu/java/locale/LocaleInformation_mk_MK.java \
+gnu/java/locale/LocaleInformation_mr_IN.java \
+gnu/java/locale/LocaleInformation_mt_MT.java \
+gnu/java/locale/LocaleInformation_nl.java \
+gnu/java/locale/LocaleInformation_nl_BE.java \
+gnu/java/locale/LocaleInformation_nl_NL.java \
+gnu/java/locale/LocaleInformation_nn_NO.java \
+gnu/java/locale/LocaleInformation_no_NO.java \
+gnu/java/locale/LocaleInformation_oc_FR.java \
+gnu/java/locale/LocaleInformation_pl_PL.java \
+gnu/java/locale/LocaleInformation_pt_BR.java \
+gnu/java/locale/LocaleInformation_pt_PT.java \
+gnu/java/locale/LocaleInformation_ro_RO.java \
+gnu/java/locale/LocaleInformation_ru_RU.java \
+gnu/java/locale/LocaleInformation_ru_UA.java \
+gnu/java/locale/LocaleInformation_se_NO.java \
+gnu/java/locale/LocaleInformation_sk_SK.java \
+gnu/java/locale/LocaleInformation_sl_SI.java \
+gnu/java/locale/LocaleInformation_sq_AL.java \
+gnu/java/locale/LocaleInformation_sr_YU.java \
+gnu/java/locale/LocaleInformation_sv_FI.java \
+gnu/java/locale/LocaleInformation_sv_SE.java \
+gnu/java/locale/LocaleInformation_ta_IN.java \
+gnu/java/locale/LocaleInformation_te_IN.java \
+gnu/java/locale/LocaleInformation_tg_TJ.java \
+gnu/java/locale/LocaleInformation_tl_PH.java \
+gnu/java/locale/LocaleInformation_tr_TR.java \
+gnu/java/locale/LocaleInformation_uk_UA.java \
+gnu/java/locale/LocaleInformation_ur_PK.java \
+gnu/java/locale/LocaleInformation_uz_UZ.java \
+gnu/java/locale/LocaleInformation_vi_VN.java \
+gnu/java/locale/LocaleInformation_yi_US.java \
+gnu/java/locale/LocaleInformation_zh_CN.java \
+gnu/java/locale/LocaleInformation_zh_HK.java \
+gnu/java/locale/LocaleInformation_zh_SG.java \
+gnu/java/locale/LocaleInformation_zh_TW.java
+
+gnu_java_locale_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_locale_source_files)))
+
+gnu/java/locale.list: $(gnu_java_locale_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_locale_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/locale.list
+
+-include gnu/java/locale.deps
+
+
+gnu_java_math_source_files = \
+classpath/gnu/java/math/MPN.java
+
+gnu_java_math_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_math_source_files)))
+
+gnu/java/math.list: $(gnu_java_math_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_math_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/math.list
+
+-include gnu/java/math.deps
+
+
+gnu_java_net_source_files = \
+classpath/gnu/java/net/BASE64.java \
+classpath/gnu/java/net/CRLFInputStream.java \
+classpath/gnu/java/net/CRLFOutputStream.java \
+classpath/gnu/java/net/DefaultContentHandlerFactory.java \
+classpath/gnu/java/net/EmptyX509TrustManager.java \
+classpath/gnu/java/net/GetLocalHostAction.java \
+classpath/gnu/java/net/HeaderFieldHelper.java \
+classpath/gnu/java/net/IndexListParser.java \
+classpath/gnu/java/net/LineInputStream.java \
+gnu/java/net/PlainDatagramSocketImpl.java \
+gnu/java/net/PlainSocketImpl.java \
+classpath/gnu/java/net/URLParseError.java
+
+gnu_java_net_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_net_source_files)))
+
+gnu/java/net.list: $(gnu_java_net_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net.list
+
+-include gnu/java/net.deps
+
+
+gnu_java_net_loader_source_files = \
+classpath/gnu/java/net/loader/FileResource.java \
+classpath/gnu/java/net/loader/FileURLLoader.java \
+classpath/gnu/java/net/loader/JarURLLoader.java \
+classpath/gnu/java/net/loader/JarURLResource.java \
+classpath/gnu/java/net/loader/RemoteResource.java \
+classpath/gnu/java/net/loader/RemoteURLLoader.java \
+classpath/gnu/java/net/loader/Resource.java \
+classpath/gnu/java/net/loader/URLLoader.java \
+classpath/gnu/java/net/loader/URLStreamHandlerCache.java
+
+gnu_java_net_loader_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_net_loader_source_files)))
+
+gnu/java/net/loader.list: $(gnu_java_net_loader_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_loader_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/loader.list
+
+-include gnu/java/net/loader.deps
+
+
+gnu_java_net_local_source_files = \
+classpath/gnu/java/net/local/LocalServerSocket.java \
+classpath/gnu/java/net/local/LocalSocket.java \
+classpath/gnu/java/net/local/LocalSocketAddress.java \
+gnu/java/net/local/LocalSocketImpl.java
+
+gnu_java_net_local_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_net_local_source_files)))
+
+gnu/java/net/local.list: $(gnu_java_net_local_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_local_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/local.list
+
+-include gnu/java/net/local.deps
+
+
+gnu_java_net_protocol_core_source_files = \
+gnu/java/net/protocol/core/Connection.java \
+gnu/java/net/protocol/core/CoreInputStream.java \
+gnu/java/net/protocol/core/Handler.java
+
+gnu_java_net_protocol_core_header_files = $(patsubst %.java,%.h,$(gnu_java_net_protocol_core_source_files))
+
+gnu/java/net/protocol/core.list: $(gnu_java_net_protocol_core_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_protocol_core_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/protocol/core.list
+
+-include gnu/java/net/protocol/core.deps
+
+
+gnu_java_net_protocol_file_source_files = \
+classpath/gnu/java/net/protocol/file/Connection.java \
+classpath/gnu/java/net/protocol/file/Handler.java
+
+gnu_java_net_protocol_file_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_net_protocol_file_source_files)))
+
+gnu/java/net/protocol/file.list: $(gnu_java_net_protocol_file_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_protocol_file_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/protocol/file.list
+
+-include gnu/java/net/protocol/file.deps
+
+
+gnu_java_net_protocol_ftp_source_files = \
+classpath/gnu/java/net/protocol/ftp/ActiveModeDTP.java \
+classpath/gnu/java/net/protocol/ftp/BlockInputStream.java \
+classpath/gnu/java/net/protocol/ftp/BlockOutputStream.java \
+classpath/gnu/java/net/protocol/ftp/CompressedInputStream.java \
+classpath/gnu/java/net/protocol/ftp/CompressedOutputStream.java \
+classpath/gnu/java/net/protocol/ftp/DTP.java \
+classpath/gnu/java/net/protocol/ftp/DTPInputStream.java \
+classpath/gnu/java/net/protocol/ftp/DTPOutputStream.java \
+classpath/gnu/java/net/protocol/ftp/FTPConnection.java \
+classpath/gnu/java/net/protocol/ftp/FTPException.java \
+classpath/gnu/java/net/protocol/ftp/FTPResponse.java \
+classpath/gnu/java/net/protocol/ftp/FTPURLConnection.java \
+classpath/gnu/java/net/protocol/ftp/Handler.java \
+classpath/gnu/java/net/protocol/ftp/PassiveModeDTP.java \
+classpath/gnu/java/net/protocol/ftp/StreamInputStream.java \
+classpath/gnu/java/net/protocol/ftp/StreamOutputStream.java
+
+gnu_java_net_protocol_ftp_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_net_protocol_ftp_source_files)))
+
+gnu/java/net/protocol/ftp.list: $(gnu_java_net_protocol_ftp_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_protocol_ftp_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/protocol/ftp.list
+
+-include gnu/java/net/protocol/ftp.deps
+
+
+gnu_java_net_protocol_gcjlib_source_files = \
+gnu/java/net/protocol/gcjlib/Connection.java \
+gnu/java/net/protocol/gcjlib/Handler.java
+
+gnu_java_net_protocol_gcjlib_header_files = $(patsubst %.java,%.h,$(gnu_java_net_protocol_gcjlib_source_files))
+
+gnu/java/net/protocol/gcjlib.list: $(gnu_java_net_protocol_gcjlib_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_protocol_gcjlib_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/protocol/gcjlib.list
+
+-include gnu/java/net/protocol/gcjlib.deps
+
+
+gnu_java_net_protocol_http_source_files = \
+classpath/gnu/java/net/protocol/http/Authenticator.java \
+classpath/gnu/java/net/protocol/http/ByteArrayRequestBodyWriter.java \
+classpath/gnu/java/net/protocol/http/ChunkedInputStream.java \
+classpath/gnu/java/net/protocol/http/Cookie.java \
+classpath/gnu/java/net/protocol/http/CookieManager.java \
+classpath/gnu/java/net/protocol/http/Credentials.java \
+classpath/gnu/java/net/protocol/http/HTTPConnection.java \
+classpath/gnu/java/net/protocol/http/HTTPDateFormat.java \
+classpath/gnu/java/net/protocol/http/HTTPURLConnection.java \
+classpath/gnu/java/net/protocol/http/Handler.java \
+classpath/gnu/java/net/protocol/http/Headers.java \
+classpath/gnu/java/net/protocol/http/LimitedLengthInputStream.java \
+classpath/gnu/java/net/protocol/http/Request.java \
+classpath/gnu/java/net/protocol/http/RequestBodyWriter.java \
+classpath/gnu/java/net/protocol/http/Response.java \
+classpath/gnu/java/net/protocol/http/ResponseHeaderHandler.java \
+classpath/gnu/java/net/protocol/http/SimpleCookieManager.java
+
+gnu_java_net_protocol_http_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_net_protocol_http_source_files)))
+
+gnu/java/net/protocol/http.list: $(gnu_java_net_protocol_http_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_protocol_http_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/protocol/http.list
+
+-include gnu/java/net/protocol/http.deps
+
+
+gnu_java_net_protocol_https_source_files = \
+classpath/gnu/java/net/protocol/https/Handler.java
+
+gnu_java_net_protocol_https_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_net_protocol_https_source_files)))
+
+gnu/java/net/protocol/https.list: $(gnu_java_net_protocol_https_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_protocol_https_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/protocol/https.list
+
+-include gnu/java/net/protocol/https.deps
+
+
+gnu_java_net_protocol_jar_source_files = \
+classpath/gnu/java/net/protocol/jar/Connection.java \
+classpath/gnu/java/net/protocol/jar/Handler.java
+
+gnu_java_net_protocol_jar_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_net_protocol_jar_source_files)))
+
+gnu/java/net/protocol/jar.list: $(gnu_java_net_protocol_jar_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_net_protocol_jar_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/net/protocol/jar.list
+
+-include gnu/java/net/protocol/jar.deps
+
+
+gnu_java_nio_source_files = \
+classpath/gnu/java/nio/ChannelInputStream.java \
+classpath/gnu/java/nio/ChannelOutputStream.java \
+classpath/gnu/java/nio/ChannelReader.java \
+classpath/gnu/java/nio/ChannelWriter.java \
+gnu/java/nio/DatagramChannelImpl.java \
+gnu/java/nio/DatagramChannelSelectionKey.java \
+classpath/gnu/java/nio/FileLockImpl.java \
+classpath/gnu/java/nio/InputStreamChannel.java \
+classpath/gnu/java/nio/NIOConstants.java \
+classpath/gnu/java/nio/NIODatagramSocket.java \
+gnu/java/nio/NIOServerSocket.java \
+classpath/gnu/java/nio/NIOSocket.java \
+classpath/gnu/java/nio/OutputStreamChannel.java \
+classpath/gnu/java/nio/PipeImpl.java \
+classpath/gnu/java/nio/SelectionKeyImpl.java \
+classpath/gnu/java/nio/SelectorImpl.java \
+classpath/gnu/java/nio/SelectorProviderImpl.java \
+gnu/java/nio/ServerSocketChannelImpl.java \
+gnu/java/nio/ServerSocketChannelSelectionKey.java \
+gnu/java/nio/SocketChannelImpl.java \
+gnu/java/nio/SocketChannelSelectionKey.java \
+classpath/gnu/java/nio/SocketChannelSelectionKeyImpl.java \
+gnu/java/nio/VMChannel.java \
+gnu/java/nio/VMPipe.java \
+gnu/java/nio/VMSelector.java
+
+gnu_java_nio_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_nio_source_files)))
+
+gnu/java/nio.list: $(gnu_java_nio_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_nio_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/nio.list
+
+-include gnu/java/nio.deps
+
+
+gnu_java_nio_channels_source_files = \
+gnu/java/nio/channels/FileChannelImpl.java
+
+gnu_java_nio_channels_header_files = $(patsubst %.java,%.h,$(gnu_java_nio_channels_source_files))
+
+gnu/java/nio/channels.list: $(gnu_java_nio_channels_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_nio_channels_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/nio/channels.list
+
+-include gnu/java/nio/channels.deps
+
+
+gnu_java_nio_charset_source_files = \
+classpath/gnu/java/nio/charset/ByteCharset.java \
+classpath/gnu/java/nio/charset/Cp424.java \
+classpath/gnu/java/nio/charset/Cp437.java \
+classpath/gnu/java/nio/charset/Cp737.java \
+classpath/gnu/java/nio/charset/Cp775.java \
+classpath/gnu/java/nio/charset/Cp850.java \
+classpath/gnu/java/nio/charset/Cp852.java \
+classpath/gnu/java/nio/charset/Cp855.java \
+classpath/gnu/java/nio/charset/Cp857.java \
+classpath/gnu/java/nio/charset/Cp860.java \
+classpath/gnu/java/nio/charset/Cp861.java \
+classpath/gnu/java/nio/charset/Cp862.java \
+classpath/gnu/java/nio/charset/Cp863.java \
+classpath/gnu/java/nio/charset/Cp864.java \
+classpath/gnu/java/nio/charset/Cp865.java \
+classpath/gnu/java/nio/charset/Cp866.java \
+classpath/gnu/java/nio/charset/Cp869.java \
+classpath/gnu/java/nio/charset/Cp874.java \
+classpath/gnu/java/nio/charset/EncodingHelper.java \
+classpath/gnu/java/nio/charset/ISO_8859_1.java \
+classpath/gnu/java/nio/charset/ISO_8859_13.java \
+classpath/gnu/java/nio/charset/ISO_8859_15.java \
+classpath/gnu/java/nio/charset/ISO_8859_2.java \
+classpath/gnu/java/nio/charset/ISO_8859_3.java \
+classpath/gnu/java/nio/charset/ISO_8859_4.java \
+classpath/gnu/java/nio/charset/ISO_8859_5.java \
+classpath/gnu/java/nio/charset/ISO_8859_6.java \
+classpath/gnu/java/nio/charset/ISO_8859_7.java \
+classpath/gnu/java/nio/charset/ISO_8859_8.java \
+classpath/gnu/java/nio/charset/ISO_8859_9.java \
+classpath/gnu/java/nio/charset/KOI_8.java \
+classpath/gnu/java/nio/charset/MS874.java \
+classpath/gnu/java/nio/charset/MacCentralEurope.java \
+classpath/gnu/java/nio/charset/MacCroatian.java \
+classpath/gnu/java/nio/charset/MacCyrillic.java \
+classpath/gnu/java/nio/charset/MacDingbat.java \
+classpath/gnu/java/nio/charset/MacGreek.java \
+classpath/gnu/java/nio/charset/MacIceland.java \
+classpath/gnu/java/nio/charset/MacRoman.java \
+classpath/gnu/java/nio/charset/MacRomania.java \
+classpath/gnu/java/nio/charset/MacSymbol.java \
+classpath/gnu/java/nio/charset/MacThai.java \
+classpath/gnu/java/nio/charset/MacTurkish.java \
+classpath/gnu/java/nio/charset/Provider.java \
+classpath/gnu/java/nio/charset/US_ASCII.java \
+classpath/gnu/java/nio/charset/UTF_16.java \
+classpath/gnu/java/nio/charset/UTF_16BE.java \
+classpath/gnu/java/nio/charset/UTF_16Decoder.java \
+classpath/gnu/java/nio/charset/UTF_16Encoder.java \
+classpath/gnu/java/nio/charset/UTF_16LE.java \
+classpath/gnu/java/nio/charset/UTF_8.java \
+classpath/gnu/java/nio/charset/UnicodeLittle.java \
+classpath/gnu/java/nio/charset/Windows1250.java \
+classpath/gnu/java/nio/charset/Windows1251.java \
+classpath/gnu/java/nio/charset/Windows1252.java \
+classpath/gnu/java/nio/charset/Windows1253.java \
+classpath/gnu/java/nio/charset/Windows1254.java \
+classpath/gnu/java/nio/charset/Windows1255.java \
+classpath/gnu/java/nio/charset/Windows1256.java \
+classpath/gnu/java/nio/charset/Windows1257.java \
+classpath/gnu/java/nio/charset/Windows1258.java
+
+gnu_java_nio_charset_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_nio_charset_source_files)))
+
+gnu/java/nio/charset.list: $(gnu_java_nio_charset_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_nio_charset_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/nio/charset.list
+
+-include gnu/java/nio/charset.deps
+
+
+gnu_java_rmi_source_files = \
+classpath/gnu/java/rmi/RMIMarshalledObjectInputStream.java \
+classpath/gnu/java/rmi/RMIMarshalledObjectOutputStream.java
+
+gnu_java_rmi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_rmi_source_files)))
+
+gnu/java/rmi.list: $(gnu_java_rmi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_rmi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/rmi.list
+
+-include gnu/java/rmi.deps
+
+
+gnu_java_rmi_activation_source_files = \
+classpath/gnu/java/rmi/activation/ActivationSystemTransient.java \
+classpath/gnu/java/rmi/activation/BidiTable.java \
+classpath/gnu/java/rmi/activation/DefaultActivationGroup.java \
+classpath/gnu/java/rmi/activation/DefaultActivationSystem.java
+
+gnu_java_rmi_activation_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_rmi_activation_source_files)))
+
+gnu/java/rmi/activation.list: $(gnu_java_rmi_activation_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_rmi_activation_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/rmi/activation.list
+
+-include gnu/java/rmi/activation.deps
+
+
+gnu_java_rmi_dgc_source_files = \
+classpath/gnu/java/rmi/dgc/DGCImpl.java \
+classpath/gnu/java/rmi/dgc/DGCImpl_Skel.java \
+classpath/gnu/java/rmi/dgc/DGCImpl_Stub.java \
+classpath/gnu/java/rmi/dgc/LeaseRenewingTask.java
+
+gnu_java_rmi_dgc_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_rmi_dgc_source_files)))
+
+gnu/java/rmi/dgc.list: $(gnu_java_rmi_dgc_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_rmi_dgc_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/rmi/dgc.list
+
+-include gnu/java/rmi/dgc.deps
+
+
+gnu_java_rmi_registry_source_files = \
+classpath/gnu/java/rmi/registry/RegistryImpl.java \
+classpath/gnu/java/rmi/registry/RegistryImpl_Skel.java \
+classpath/gnu/java/rmi/registry/RegistryImpl_Stub.java
+
+gnu_java_rmi_registry_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_rmi_registry_source_files)))
+
+gnu/java/rmi/registry.list: $(gnu_java_rmi_registry_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_rmi_registry_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/rmi/registry.list
+
+-include gnu/java/rmi/registry.deps
+
+
+gnu_java_rmi_rmic_source_files = \
+gnu/java/rmi/rmic/Compile_gcj.java \
+gnu/java/rmi/rmic/Compile_jikes.java \
+gnu/java/rmi/rmic/Compile_kjc.java \
+gnu/java/rmi/rmic/Compiler.java \
+gnu/java/rmi/rmic/CompilerProcess.java \
+gnu/java/rmi/rmic/RMIC.java \
+gnu/java/rmi/rmic/RMICException.java \
+gnu/java/rmi/rmic/TabbedWriter.java
+
+gnu_java_rmi_rmic_header_files = $(patsubst %.java,%.h,$(gnu_java_rmi_rmic_source_files))
+
+gnu/java/rmi/rmic.list: $(gnu_java_rmi_rmic_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_rmi_rmic_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/rmi/rmic.list
+
+-include gnu/java/rmi/rmic.deps
+
+
+gnu_java_rmi_server_source_files = \
+classpath/gnu/java/rmi/server/ActivatableRef.java \
+classpath/gnu/java/rmi/server/ActivatableServerRef.java \
+classpath/gnu/java/rmi/server/CombinedClassLoader.java \
+classpath/gnu/java/rmi/server/ConnectionRunnerPool.java \
+classpath/gnu/java/rmi/server/ProtocolConstants.java \
+classpath/gnu/java/rmi/server/RMIClassLoaderImpl.java \
+classpath/gnu/java/rmi/server/RMIDefaultSocketFactory.java \
+classpath/gnu/java/rmi/server/RMIHashes.java \
+classpath/gnu/java/rmi/server/RMIIncomingThread.java \
+classpath/gnu/java/rmi/server/RMIObjectInputStream.java \
+classpath/gnu/java/rmi/server/RMIObjectOutputStream.java \
+classpath/gnu/java/rmi/server/RMIVoidValue.java \
+classpath/gnu/java/rmi/server/UnicastConnection.java \
+classpath/gnu/java/rmi/server/UnicastConnectionManager.java \
+classpath/gnu/java/rmi/server/UnicastRef.java \
+classpath/gnu/java/rmi/server/UnicastRemoteCall.java \
+classpath/gnu/java/rmi/server/UnicastRemoteStub.java \
+classpath/gnu/java/rmi/server/UnicastServer.java \
+classpath/gnu/java/rmi/server/UnicastServerRef.java
+
+gnu_java_rmi_server_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_rmi_server_source_files)))
+
+gnu/java/rmi/server.list: $(gnu_java_rmi_server_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_rmi_server_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/rmi/server.list
+
+-include gnu/java/rmi/server.deps
+
+
+gnu_java_security_source_files = \
+classpath/gnu/java/security/Configuration.java \
+classpath/gnu/java/security/Engine.java \
+classpath/gnu/java/security/OID.java \
+classpath/gnu/java/security/PolicyFile.java \
+classpath/gnu/java/security/Properties.java \
+classpath/gnu/java/security/Registry.java
+
+gnu_java_security_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_source_files)))
+
+gnu/java/security.list: $(gnu_java_security_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security.list
+
+-include gnu/java/security.deps
+
+
+gnu_java_security_action_source_files = \
+classpath/gnu/java/security/action/GetPropertyAction.java \
+classpath/gnu/java/security/action/GetSecurityPropertyAction.java \
+classpath/gnu/java/security/action/SetAccessibleAction.java
+
+gnu_java_security_action_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_action_source_files)))
+
+gnu/java/security/action.list: $(gnu_java_security_action_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_action_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/action.list
+
+-include gnu/java/security/action.deps
+
+
+gnu_java_security_ber_source_files = \
+classpath/gnu/java/security/ber/BER.java \
+classpath/gnu/java/security/ber/BEREncodingException.java \
+classpath/gnu/java/security/ber/BERReader.java \
+classpath/gnu/java/security/ber/BERValue.java
+
+gnu_java_security_ber_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_ber_source_files)))
+
+gnu/java/security/ber.list: $(gnu_java_security_ber_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_ber_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/ber.list
+
+-include gnu/java/security/ber.deps
+
+
+gnu_java_security_der_source_files = \
+classpath/gnu/java/security/der/BitString.java \
+classpath/gnu/java/security/der/DER.java \
+classpath/gnu/java/security/der/DEREncodingException.java \
+classpath/gnu/java/security/der/DERReader.java \
+classpath/gnu/java/security/der/DERValue.java \
+classpath/gnu/java/security/der/DERWriter.java
+
+gnu_java_security_der_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_der_source_files)))
+
+gnu/java/security/der.list: $(gnu_java_security_der_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_der_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/der.list
+
+-include gnu/java/security/der.deps
+
+
+gnu_java_security_hash_source_files = \
+classpath/gnu/java/security/hash/BaseHash.java \
+classpath/gnu/java/security/hash/HashFactory.java \
+classpath/gnu/java/security/hash/Haval.java \
+classpath/gnu/java/security/hash/IMessageDigest.java \
+classpath/gnu/java/security/hash/MD2.java \
+classpath/gnu/java/security/hash/MD4.java \
+classpath/gnu/java/security/hash/MD5.java \
+classpath/gnu/java/security/hash/RipeMD128.java \
+classpath/gnu/java/security/hash/RipeMD160.java \
+classpath/gnu/java/security/hash/Sha160.java \
+classpath/gnu/java/security/hash/Sha256.java \
+classpath/gnu/java/security/hash/Sha384.java \
+classpath/gnu/java/security/hash/Sha512.java \
+classpath/gnu/java/security/hash/Tiger.java \
+classpath/gnu/java/security/hash/Whirlpool.java
+
+gnu_java_security_hash_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_hash_source_files)))
+
+gnu/java/security/hash.list: $(gnu_java_security_hash_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_hash_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/hash.list
+
+-include gnu/java/security/hash.deps
+
+
+gnu_java_security_jce_hash_source_files = \
+classpath/gnu/java/security/jce/hash/HavalSpi.java \
+classpath/gnu/java/security/jce/hash/MD2Spi.java \
+classpath/gnu/java/security/jce/hash/MD4Spi.java \
+classpath/gnu/java/security/jce/hash/MD5Spi.java \
+classpath/gnu/java/security/jce/hash/MessageDigestAdapter.java \
+classpath/gnu/java/security/jce/hash/RipeMD128Spi.java \
+classpath/gnu/java/security/jce/hash/RipeMD160Spi.java \
+classpath/gnu/java/security/jce/hash/Sha160Spi.java \
+classpath/gnu/java/security/jce/hash/Sha256Spi.java \
+classpath/gnu/java/security/jce/hash/Sha384Spi.java \
+classpath/gnu/java/security/jce/hash/Sha512Spi.java \
+classpath/gnu/java/security/jce/hash/TigerSpi.java \
+classpath/gnu/java/security/jce/hash/WhirlpoolSpi.java
+
+gnu_java_security_jce_hash_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_jce_hash_source_files)))
+
+gnu/java/security/jce/hash.list: $(gnu_java_security_jce_hash_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_jce_hash_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/jce/hash.list
+
+-include gnu/java/security/jce/hash.deps
+
+
+gnu_java_security_jce_prng_source_files = \
+classpath/gnu/java/security/jce/prng/HavalRandomSpi.java \
+classpath/gnu/java/security/jce/prng/MD2RandomSpi.java \
+classpath/gnu/java/security/jce/prng/MD4RandomSpi.java \
+classpath/gnu/java/security/jce/prng/MD5RandomSpi.java \
+classpath/gnu/java/security/jce/prng/RipeMD128RandomSpi.java \
+classpath/gnu/java/security/jce/prng/RipeMD160RandomSpi.java \
+classpath/gnu/java/security/jce/prng/SecureRandomAdapter.java \
+classpath/gnu/java/security/jce/prng/Sha160RandomSpi.java \
+classpath/gnu/java/security/jce/prng/Sha256RandomSpi.java \
+classpath/gnu/java/security/jce/prng/Sha384RandomSpi.java \
+classpath/gnu/java/security/jce/prng/Sha512RandomSpi.java \
+classpath/gnu/java/security/jce/prng/TigerRandomSpi.java \
+classpath/gnu/java/security/jce/prng/WhirlpoolRandomSpi.java
+
+gnu_java_security_jce_prng_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_jce_prng_source_files)))
+
+gnu/java/security/jce/prng.list: $(gnu_java_security_jce_prng_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_jce_prng_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/jce/prng.list
+
+-include gnu/java/security/jce/prng.deps
+
+
+gnu_java_security_jce_sig_source_files = \
+classpath/gnu/java/security/jce/sig/DSSKeyFactory.java \
+classpath/gnu/java/security/jce/sig/DSSKeyPairGeneratorSpi.java \
+classpath/gnu/java/security/jce/sig/DSSParameters.java \
+classpath/gnu/java/security/jce/sig/DSSParametersGenerator.java \
+classpath/gnu/java/security/jce/sig/DSSRawSignatureSpi.java \
+classpath/gnu/java/security/jce/sig/EncodedKeyFactory.java \
+classpath/gnu/java/security/jce/sig/KeyPairGeneratorAdapter.java \
+classpath/gnu/java/security/jce/sig/MD2withRSA.java \
+classpath/gnu/java/security/jce/sig/MD5withRSA.java \
+classpath/gnu/java/security/jce/sig/RSAKeyFactory.java \
+classpath/gnu/java/security/jce/sig/RSAKeyPairGeneratorSpi.java \
+classpath/gnu/java/security/jce/sig/RSAPSSRawSignatureSpi.java \
+classpath/gnu/java/security/jce/sig/SHA160withDSS.java \
+classpath/gnu/java/security/jce/sig/SHA160withRSA.java \
+classpath/gnu/java/security/jce/sig/SHA256withRSA.java \
+classpath/gnu/java/security/jce/sig/SHA384withRSA.java \
+classpath/gnu/java/security/jce/sig/SHA512withRSA.java \
+classpath/gnu/java/security/jce/sig/SignatureAdapter.java
+
+gnu_java_security_jce_sig_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_jce_sig_source_files)))
+
+gnu/java/security/jce/sig.list: $(gnu_java_security_jce_sig_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_jce_sig_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/jce/sig.list
+
+-include gnu/java/security/jce/sig.deps
+
+
+gnu_java_security_key_source_files = \
+classpath/gnu/java/security/key/IKeyPairCodec.java \
+classpath/gnu/java/security/key/IKeyPairGenerator.java \
+classpath/gnu/java/security/key/KeyPairCodecFactory.java \
+classpath/gnu/java/security/key/KeyPairGeneratorFactory.java
+
+gnu_java_security_key_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_key_source_files)))
+
+gnu/java/security/key.list: $(gnu_java_security_key_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_key_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/key.list
+
+-include gnu/java/security/key.deps
+
+
+gnu_java_security_key_dss_source_files = \
+classpath/gnu/java/security/key/dss/DSSKey.java \
+classpath/gnu/java/security/key/dss/DSSKeyPairGenerator.java \
+classpath/gnu/java/security/key/dss/DSSKeyPairPKCS8Codec.java \
+classpath/gnu/java/security/key/dss/DSSKeyPairRawCodec.java \
+classpath/gnu/java/security/key/dss/DSSKeyPairX509Codec.java \
+classpath/gnu/java/security/key/dss/DSSPrivateKey.java \
+classpath/gnu/java/security/key/dss/DSSPublicKey.java \
+classpath/gnu/java/security/key/dss/FIPS186.java
+
+gnu_java_security_key_dss_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_key_dss_source_files)))
+
+gnu/java/security/key/dss.list: $(gnu_java_security_key_dss_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_key_dss_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/key/dss.list
+
+-include gnu/java/security/key/dss.deps
+
+
+gnu_java_security_key_rsa_source_files = \
+classpath/gnu/java/security/key/rsa/GnuRSAKey.java \
+classpath/gnu/java/security/key/rsa/GnuRSAPrivateKey.java \
+classpath/gnu/java/security/key/rsa/GnuRSAPublicKey.java \
+classpath/gnu/java/security/key/rsa/RSAKeyPairGenerator.java \
+classpath/gnu/java/security/key/rsa/RSAKeyPairPKCS8Codec.java \
+classpath/gnu/java/security/key/rsa/RSAKeyPairRawCodec.java \
+classpath/gnu/java/security/key/rsa/RSAKeyPairX509Codec.java
+
+gnu_java_security_key_rsa_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_key_rsa_source_files)))
+
+gnu/java/security/key/rsa.list: $(gnu_java_security_key_rsa_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_key_rsa_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/key/rsa.list
+
+-include gnu/java/security/key/rsa.deps
+
+
+gnu_java_security_pkcs_source_files = \
+classpath/gnu/java/security/pkcs/PKCS7Data.java \
+classpath/gnu/java/security/pkcs/PKCS7SignedData.java \
+classpath/gnu/java/security/pkcs/SignerInfo.java
+
+gnu_java_security_pkcs_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_pkcs_source_files)))
+
+gnu/java/security/pkcs.list: $(gnu_java_security_pkcs_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_pkcs_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/pkcs.list
+
+-include gnu/java/security/pkcs.deps
+
+
+gnu_java_security_prng_source_files = \
+classpath/gnu/java/security/prng/BasePRNG.java \
+classpath/gnu/java/security/prng/EntropySource.java \
+classpath/gnu/java/security/prng/IRandom.java \
+classpath/gnu/java/security/prng/LimitReachedException.java \
+classpath/gnu/java/security/prng/MDGenerator.java \
+classpath/gnu/java/security/prng/PRNGFactory.java \
+classpath/gnu/java/security/prng/RandomEvent.java \
+classpath/gnu/java/security/prng/RandomEventListener.java
+
+gnu_java_security_prng_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_prng_source_files)))
+
+gnu/java/security/prng.list: $(gnu_java_security_prng_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_prng_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/prng.list
+
+-include gnu/java/security/prng.deps
+
+
+gnu_java_security_provider_source_files = \
+classpath/gnu/java/security/provider/CollectionCertStoreImpl.java \
+classpath/gnu/java/security/provider/DefaultPolicy.java \
+classpath/gnu/java/security/provider/Gnu.java \
+classpath/gnu/java/security/provider/PKIXCertPathValidatorImpl.java \
+classpath/gnu/java/security/provider/X509CertificateFactory.java
+
+gnu_java_security_provider_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_provider_source_files)))
+
+gnu/java/security/provider.list: $(gnu_java_security_provider_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_provider_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/provider.list
+
+-include gnu/java/security/provider.deps
+
+
+gnu_java_security_sig_source_files = \
+classpath/gnu/java/security/sig/BaseSignature.java \
+classpath/gnu/java/security/sig/ISignature.java \
+classpath/gnu/java/security/sig/ISignatureCodec.java \
+classpath/gnu/java/security/sig/SignatureCodecFactory.java \
+classpath/gnu/java/security/sig/SignatureFactory.java
+
+gnu_java_security_sig_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_sig_source_files)))
+
+gnu/java/security/sig.list: $(gnu_java_security_sig_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_sig_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/sig.list
+
+-include gnu/java/security/sig.deps
+
+
+gnu_java_security_sig_dss_source_files = \
+classpath/gnu/java/security/sig/dss/DSSSignature.java \
+classpath/gnu/java/security/sig/dss/DSSSignatureRawCodec.java \
+classpath/gnu/java/security/sig/dss/DSSSignatureX509Codec.java
+
+gnu_java_security_sig_dss_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_sig_dss_source_files)))
+
+gnu/java/security/sig/dss.list: $(gnu_java_security_sig_dss_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_sig_dss_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/sig/dss.list
+
+-include gnu/java/security/sig/dss.deps
+
+
+gnu_java_security_sig_rsa_source_files = \
+classpath/gnu/java/security/sig/rsa/EME_PKCS1_V1_5.java \
+classpath/gnu/java/security/sig/rsa/EMSA_PKCS1_V1_5.java \
+classpath/gnu/java/security/sig/rsa/EMSA_PSS.java \
+classpath/gnu/java/security/sig/rsa/RSA.java \
+classpath/gnu/java/security/sig/rsa/RSAPKCS1V1_5Signature.java \
+classpath/gnu/java/security/sig/rsa/RSAPKCS1V1_5SignatureRawCodec.java \
+classpath/gnu/java/security/sig/rsa/RSAPKCS1V1_5SignatureX509Codec.java \
+classpath/gnu/java/security/sig/rsa/RSAPSSSignature.java \
+classpath/gnu/java/security/sig/rsa/RSAPSSSignatureRawCodec.java \
+classpath/gnu/java/security/sig/rsa/RSASignatureFactory.java
+
+gnu_java_security_sig_rsa_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_sig_rsa_source_files)))
+
+gnu/java/security/sig/rsa.list: $(gnu_java_security_sig_rsa_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_sig_rsa_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/sig/rsa.list
+
+-include gnu/java/security/sig/rsa.deps
+
+
+gnu_java_security_util_source_files = \
+classpath/gnu/java/security/util/Base64.java \
+classpath/gnu/java/security/util/ByteArray.java \
+classpath/gnu/java/security/util/DerUtil.java \
+classpath/gnu/java/security/util/ExpirableObject.java \
+classpath/gnu/java/security/util/FormatUtil.java \
+classpath/gnu/java/security/util/IntegerUtil.java \
+classpath/gnu/java/security/util/PRNG.java \
+classpath/gnu/java/security/util/Prime.java \
+classpath/gnu/java/security/util/Sequence.java \
+classpath/gnu/java/security/util/SimpleList.java \
+classpath/gnu/java/security/util/Util.java
+
+gnu_java_security_util_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_util_source_files)))
+
+gnu/java/security/util.list: $(gnu_java_security_util_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_util_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/util.list
+
+-include gnu/java/security/util.deps
+
+
+gnu_java_security_x509_source_files = \
+classpath/gnu/java/security/x509/GnuPKIExtension.java \
+classpath/gnu/java/security/x509/PolicyNodeImpl.java \
+classpath/gnu/java/security/x509/Util.java \
+classpath/gnu/java/security/x509/X500DistinguishedName.java \
+classpath/gnu/java/security/x509/X509CRL.java \
+classpath/gnu/java/security/x509/X509CRLEntry.java \
+classpath/gnu/java/security/x509/X509CRLSelectorImpl.java \
+classpath/gnu/java/security/x509/X509CertPath.java \
+classpath/gnu/java/security/x509/X509CertSelectorImpl.java \
+classpath/gnu/java/security/x509/X509Certificate.java
+
+gnu_java_security_x509_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_x509_source_files)))
+
+gnu/java/security/x509.list: $(gnu_java_security_x509_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_x509_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/x509.list
+
+-include gnu/java/security/x509.deps
+
+
+gnu_java_security_x509_ext_source_files = \
+classpath/gnu/java/security/x509/ext/AuthorityKeyIdentifier.java \
+classpath/gnu/java/security/x509/ext/BasicConstraints.java \
+classpath/gnu/java/security/x509/ext/CRLNumber.java \
+classpath/gnu/java/security/x509/ext/CertificatePolicies.java \
+classpath/gnu/java/security/x509/ext/ExtendedKeyUsage.java \
+classpath/gnu/java/security/x509/ext/Extension.java \
+classpath/gnu/java/security/x509/ext/GeneralNames.java \
+classpath/gnu/java/security/x509/ext/IssuerAlternativeNames.java \
+classpath/gnu/java/security/x509/ext/KeyUsage.java \
+classpath/gnu/java/security/x509/ext/PolicyConstraint.java \
+classpath/gnu/java/security/x509/ext/PolicyMappings.java \
+classpath/gnu/java/security/x509/ext/PrivateKeyUsagePeriod.java \
+classpath/gnu/java/security/x509/ext/ReasonCode.java \
+classpath/gnu/java/security/x509/ext/SubjectAlternativeNames.java \
+classpath/gnu/java/security/x509/ext/SubjectKeyIdentifier.java
+
+gnu_java_security_x509_ext_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_security_x509_ext_source_files)))
+
+gnu/java/security/x509/ext.list: $(gnu_java_security_x509_ext_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_security_x509_ext_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/security/x509/ext.list
+
+-include gnu/java/security/x509/ext.deps
+
+
+gnu_java_text_source_files = \
+classpath/gnu/java/text/AttributedFormatBuffer.java \
+classpath/gnu/java/text/BaseBreakIterator.java \
+classpath/gnu/java/text/CharacterBreakIterator.java \
+classpath/gnu/java/text/FormatBuffer.java \
+classpath/gnu/java/text/FormatCharacterIterator.java \
+classpath/gnu/java/text/LineBreakIterator.java \
+classpath/gnu/java/text/SentenceBreakIterator.java \
+classpath/gnu/java/text/StringFormatBuffer.java \
+classpath/gnu/java/text/WordBreakIterator.java
+
+gnu_java_text_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_text_source_files)))
+
+gnu/java/text.list: $(gnu_java_text_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_text_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/text.list
+
+-include gnu/java/text.deps
+
+
+gnu_java_util_source_files = \
+classpath/gnu/java/util/DoubleEnumeration.java \
+classpath/gnu/java/util/EmptyEnumeration.java \
+classpath/gnu/java/util/WeakIdentityHashMap.java
+
+gnu_java_util_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_util_source_files)))
+
+gnu/java/util.list: $(gnu_java_util_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_util_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/util.list
+
+-include gnu/java/util.deps
+
+
+gnu_java_util_jar_source_files = \
+classpath/gnu/java/util/jar/JarUtils.java
+
+gnu_java_util_jar_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_util_jar_source_files)))
+
+gnu/java/util/jar.list: $(gnu_java_util_jar_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_util_jar_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/util/jar.list
+
+-include gnu/java/util/jar.deps
+
+
+gnu_java_util_prefs_source_files = \
+classpath/gnu/java/util/prefs/EventDispatcher.java \
+classpath/gnu/java/util/prefs/FileBasedFactory.java \
+classpath/gnu/java/util/prefs/FileBasedPreferences.java \
+classpath/gnu/java/util/prefs/GConfBasedFactory.java \
+classpath/gnu/java/util/prefs/GConfBasedPreferences.java \
+classpath/gnu/java/util/prefs/MemoryBasedFactory.java \
+classpath/gnu/java/util/prefs/MemoryBasedPreferences.java \
+classpath/gnu/java/util/prefs/NodeReader.java \
+classpath/gnu/java/util/prefs/NodeWriter.java
+
+gnu_java_util_prefs_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_util_prefs_source_files)))
+
+gnu/java/util/prefs.list: $(gnu_java_util_prefs_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_util_prefs_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/util/prefs.list
+
+-include gnu/java/util/prefs.deps
+
+
+gnu_java_util_prefs_gconf_source_files = \
+classpath/gnu/java/util/prefs/gconf/GConfNativePeer.java
+
+gnu-java-util-prefs-gconf.lo: $(gnu_java_util_prefs_gconf_source_files)
+	@find classpath/lib/gnu/java/util/prefs/gconf -name '*.class' > gnu-java-util-prefs-gconf.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-java-util-prefs-gconf.lo @gnu-java-util-prefs-gconf.list
+	@rm -f gnu-java-util-prefs-gconf.list
+
+gnu_java_util_regex_source_files = \
+classpath/gnu/java/util/regex/BacktrackStack.java \
+classpath/gnu/java/util/regex/CharIndexed.java \
+classpath/gnu/java/util/regex/CharIndexedCharArray.java \
+classpath/gnu/java/util/regex/CharIndexedCharSequence.java \
+classpath/gnu/java/util/regex/CharIndexedInputStream.java \
+classpath/gnu/java/util/regex/CharIndexedString.java \
+classpath/gnu/java/util/regex/CharIndexedStringBuffer.java \
+classpath/gnu/java/util/regex/RE.java \
+classpath/gnu/java/util/regex/REException.java \
+classpath/gnu/java/util/regex/REFilterInputStream.java \
+classpath/gnu/java/util/regex/REMatch.java \
+classpath/gnu/java/util/regex/REMatchEnumeration.java \
+classpath/gnu/java/util/regex/RESyntax.java \
+classpath/gnu/java/util/regex/REToken.java \
+classpath/gnu/java/util/regex/RETokenAny.java \
+classpath/gnu/java/util/regex/RETokenBackRef.java \
+classpath/gnu/java/util/regex/RETokenChar.java \
+classpath/gnu/java/util/regex/RETokenEnd.java \
+classpath/gnu/java/util/regex/RETokenEndOfPreviousMatch.java \
+classpath/gnu/java/util/regex/RETokenEndSub.java \
+classpath/gnu/java/util/regex/RETokenIndependent.java \
+classpath/gnu/java/util/regex/RETokenLookAhead.java \
+classpath/gnu/java/util/regex/RETokenLookBehind.java \
+classpath/gnu/java/util/regex/RETokenNamedProperty.java \
+classpath/gnu/java/util/regex/RETokenOneOf.java \
+classpath/gnu/java/util/regex/RETokenPOSIX.java \
+classpath/gnu/java/util/regex/RETokenRange.java \
+classpath/gnu/java/util/regex/RETokenRepeated.java \
+classpath/gnu/java/util/regex/RETokenStart.java \
+classpath/gnu/java/util/regex/RETokenWordBoundary.java \
+classpath/gnu/java/util/regex/UncheckedRE.java
+
+gnu_java_util_regex_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_util_regex_source_files)))
+
+gnu/java/util/regex.list: $(gnu_java_util_regex_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_java_util_regex_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/java/util/regex.list
+
+-include gnu/java/util/regex.deps
+
+
+gnu_javax_crypto_source_files = \
+classpath/gnu/javax/crypto/RSACipherImpl.java
+
+gnu_javax_crypto_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_source_files)))
+
+gnu/javax/crypto.list: $(gnu_javax_crypto_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto.list
+
+-include gnu/javax/crypto.deps
+
+
+gnu_javax_crypto_assembly_source_files = \
+classpath/gnu/javax/crypto/assembly/Assembly.java \
+classpath/gnu/javax/crypto/assembly/Cascade.java \
+classpath/gnu/javax/crypto/assembly/CascadeStage.java \
+classpath/gnu/javax/crypto/assembly/CascadeTransformer.java \
+classpath/gnu/javax/crypto/assembly/DeflateTransformer.java \
+classpath/gnu/javax/crypto/assembly/Direction.java \
+classpath/gnu/javax/crypto/assembly/LoopbackTransformer.java \
+classpath/gnu/javax/crypto/assembly/ModeStage.java \
+classpath/gnu/javax/crypto/assembly/Operation.java \
+classpath/gnu/javax/crypto/assembly/PaddingTransformer.java \
+classpath/gnu/javax/crypto/assembly/Stage.java \
+classpath/gnu/javax/crypto/assembly/Transformer.java \
+classpath/gnu/javax/crypto/assembly/TransformerException.java
+
+gnu_javax_crypto_assembly_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_assembly_source_files)))
+
+gnu/javax/crypto/assembly.list: $(gnu_javax_crypto_assembly_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_assembly_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/assembly.list
+
+-include gnu/javax/crypto/assembly.deps
+
+
+gnu_javax_crypto_cipher_source_files = \
+classpath/gnu/javax/crypto/cipher/Anubis.java \
+classpath/gnu/javax/crypto/cipher/BaseCipher.java \
+classpath/gnu/javax/crypto/cipher/Blowfish.java \
+classpath/gnu/javax/crypto/cipher/Cast5.java \
+classpath/gnu/javax/crypto/cipher/CipherFactory.java \
+classpath/gnu/javax/crypto/cipher/DES.java \
+classpath/gnu/javax/crypto/cipher/IBlockCipher.java \
+classpath/gnu/javax/crypto/cipher/IBlockCipherSpi.java \
+classpath/gnu/javax/crypto/cipher/Khazad.java \
+classpath/gnu/javax/crypto/cipher/NullCipher.java \
+classpath/gnu/javax/crypto/cipher/Rijndael.java \
+classpath/gnu/javax/crypto/cipher/Serpent.java \
+classpath/gnu/javax/crypto/cipher/Square.java \
+classpath/gnu/javax/crypto/cipher/TripleDES.java \
+classpath/gnu/javax/crypto/cipher/Twofish.java \
+classpath/gnu/javax/crypto/cipher/WeakKeyException.java
+
+gnu_javax_crypto_cipher_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_cipher_source_files)))
+
+gnu/javax/crypto/cipher.list: $(gnu_javax_crypto_cipher_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_cipher_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/cipher.list
+
+-include gnu/javax/crypto/cipher.deps
+
+
+gnu_javax_crypto_jce_source_files = \
+classpath/gnu/javax/crypto/jce/DiffieHellmanImpl.java \
+classpath/gnu/javax/crypto/jce/GnuCrypto.java \
+classpath/gnu/javax/crypto/jce/GnuSasl.java \
+classpath/gnu/javax/crypto/jce/PBKDF2SecretKeyFactory.java
+
+gnu_javax_crypto_jce_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_source_files)))
+
+gnu/javax/crypto/jce.list: $(gnu_javax_crypto_jce_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce.list
+
+-include gnu/javax/crypto/jce.deps
+
+
+gnu_javax_crypto_jce_cipher_source_files = \
+classpath/gnu/javax/crypto/jce/cipher/AES128KeyWrapSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/AES192KeyWrapSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/AES256KeyWrapSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/AESKeyWrapSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/AESSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/ARCFourSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/AnubisSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/BlowfishSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/Cast5Spi.java \
+classpath/gnu/javax/crypto/jce/cipher/CipherAdapter.java \
+classpath/gnu/javax/crypto/jce/cipher/DESSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/KeyWrappingAlgorithmAdapter.java \
+classpath/gnu/javax/crypto/jce/cipher/KhazadSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/NullCipherSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/PBES2.java \
+classpath/gnu/javax/crypto/jce/cipher/RijndaelSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/SerpentSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/SquareSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/TripleDESKeyWrapSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/TripleDESSpi.java \
+classpath/gnu/javax/crypto/jce/cipher/TwofishSpi.java
+
+gnu_javax_crypto_jce_cipher_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_cipher_source_files)))
+
+gnu/javax/crypto/jce/cipher.list: $(gnu_javax_crypto_jce_cipher_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_cipher_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce/cipher.list
+
+-include gnu/javax/crypto/jce/cipher.deps
+
+
+gnu_javax_crypto_jce_key_source_files = \
+classpath/gnu/javax/crypto/jce/key/AnubisKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/AnubisSecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/BlowfishKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/BlowfishSecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/Cast5KeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/Cast5SecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/DESKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/DESSecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/DESedeSecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/KhazadKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/KhazadSecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/RijndaelKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/RijndaelSecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/SecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/SecretKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/SerpentKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/SerpentSecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/SquareKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/SquareSecretKeyFactoryImpl.java \
+classpath/gnu/javax/crypto/jce/key/TripleDESKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/TwofishKeyGeneratorImpl.java \
+classpath/gnu/javax/crypto/jce/key/TwofishSecretKeyFactoryImpl.java
+
+gnu_javax_crypto_jce_key_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_key_source_files)))
+
+gnu/javax/crypto/jce/key.list: $(gnu_javax_crypto_jce_key_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_key_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce/key.list
+
+-include gnu/javax/crypto/jce/key.deps
+
+
+gnu_javax_crypto_jce_keyring_source_files = \
+classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java
+
+gnu_javax_crypto_jce_keyring_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_keyring_source_files)))
+
+gnu/javax/crypto/jce/keyring.list: $(gnu_javax_crypto_jce_keyring_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_keyring_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce/keyring.list
+
+-include gnu/javax/crypto/jce/keyring.deps
+
+
+gnu_javax_crypto_jce_mac_source_files = \
+classpath/gnu/javax/crypto/jce/mac/HMacHavalSpi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacMD2Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacMD4Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacMD5Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacRipeMD128Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacRipeMD160Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacSHA160Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacSHA256Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacSHA384Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacSHA512Spi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacTigerSpi.java \
+classpath/gnu/javax/crypto/jce/mac/HMacWhirlpoolSpi.java \
+classpath/gnu/javax/crypto/jce/mac/MacAdapter.java \
+classpath/gnu/javax/crypto/jce/mac/OMacAnubisImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacBlowfishImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacCast5Impl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacDESImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacKhazadImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacRijndaelImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacSerpentImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacSquareImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacTripleDESImpl.java \
+classpath/gnu/javax/crypto/jce/mac/OMacTwofishImpl.java \
+classpath/gnu/javax/crypto/jce/mac/TMMH16Spi.java \
+classpath/gnu/javax/crypto/jce/mac/UHash32Spi.java \
+classpath/gnu/javax/crypto/jce/mac/UMac32Spi.java
+
+gnu_javax_crypto_jce_mac_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_mac_source_files)))
+
+gnu/javax/crypto/jce/mac.list: $(gnu_javax_crypto_jce_mac_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_mac_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce/mac.list
+
+-include gnu/javax/crypto/jce/mac.deps
+
+
+gnu_javax_crypto_jce_params_source_files = \
+classpath/gnu/javax/crypto/jce/params/BlockCipherParameters.java \
+classpath/gnu/javax/crypto/jce/params/DEREncodingException.java \
+classpath/gnu/javax/crypto/jce/params/DERReader.java \
+classpath/gnu/javax/crypto/jce/params/DERWriter.java
+
+gnu_javax_crypto_jce_params_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_params_source_files)))
+
+gnu/javax/crypto/jce/params.list: $(gnu_javax_crypto_jce_params_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_params_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce/params.list
+
+-include gnu/javax/crypto/jce/params.deps
+
+
+gnu_javax_crypto_jce_prng_source_files = \
+classpath/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.java \
+classpath/gnu/javax/crypto/jce/prng/CSPRNGSpi.java \
+classpath/gnu/javax/crypto/jce/prng/FortunaImpl.java \
+classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java \
+classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java
+
+gnu_javax_crypto_jce_prng_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_prng_source_files)))
+
+gnu/javax/crypto/jce/prng.list: $(gnu_javax_crypto_jce_prng_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_prng_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce/prng.list
+
+-include gnu/javax/crypto/jce/prng.deps
+
+
+gnu_javax_crypto_jce_sig_source_files = \
+classpath/gnu/javax/crypto/jce/sig/DHKeyFactory.java \
+classpath/gnu/javax/crypto/jce/sig/DHKeyPairGeneratorSpi.java \
+classpath/gnu/javax/crypto/jce/sig/DHParameters.java \
+classpath/gnu/javax/crypto/jce/sig/DHParametersGenerator.java
+
+gnu_javax_crypto_jce_sig_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_sig_source_files)))
+
+gnu/javax/crypto/jce/sig.list: $(gnu_javax_crypto_jce_sig_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_sig_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce/sig.list
+
+-include gnu/javax/crypto/jce/sig.deps
+
+
+gnu_javax_crypto_jce_spec_source_files = \
+classpath/gnu/javax/crypto/jce/spec/BlockCipherParameterSpec.java \
+classpath/gnu/javax/crypto/jce/spec/TMMHParameterSpec.java \
+classpath/gnu/javax/crypto/jce/spec/UMac32ParameterSpec.java
+
+gnu_javax_crypto_jce_spec_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_jce_spec_source_files)))
+
+gnu/javax/crypto/jce/spec.list: $(gnu_javax_crypto_jce_spec_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_jce_spec_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/jce/spec.list
+
+-include gnu/javax/crypto/jce/spec.deps
+
+
+gnu_javax_crypto_key_source_files = \
+classpath/gnu/javax/crypto/key/BaseKeyAgreementParty.java \
+classpath/gnu/javax/crypto/key/GnuSecretKey.java \
+classpath/gnu/javax/crypto/key/IKeyAgreementParty.java \
+classpath/gnu/javax/crypto/key/IncomingMessage.java \
+classpath/gnu/javax/crypto/key/KeyAgreementException.java \
+classpath/gnu/javax/crypto/key/KeyAgreementFactory.java \
+classpath/gnu/javax/crypto/key/OutgoingMessage.java
+
+gnu_javax_crypto_key_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_key_source_files)))
+
+gnu/javax/crypto/key.list: $(gnu_javax_crypto_key_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_key_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/key.list
+
+-include gnu/javax/crypto/key.deps
+
+
+gnu_javax_crypto_key_dh_source_files = \
+classpath/gnu/javax/crypto/key/dh/DHKeyPairPKCS8Codec.java \
+classpath/gnu/javax/crypto/key/dh/DHKeyPairRawCodec.java \
+classpath/gnu/javax/crypto/key/dh/DHKeyPairX509Codec.java \
+classpath/gnu/javax/crypto/key/dh/DiffieHellmanKeyAgreement.java \
+classpath/gnu/javax/crypto/key/dh/DiffieHellmanReceiver.java \
+classpath/gnu/javax/crypto/key/dh/DiffieHellmanSender.java \
+classpath/gnu/javax/crypto/key/dh/ElGamalKeyAgreement.java \
+classpath/gnu/javax/crypto/key/dh/ElGamalReceiver.java \
+classpath/gnu/javax/crypto/key/dh/ElGamalSender.java \
+classpath/gnu/javax/crypto/key/dh/GnuDHKey.java \
+classpath/gnu/javax/crypto/key/dh/GnuDHKeyPairGenerator.java \
+classpath/gnu/javax/crypto/key/dh/GnuDHPrivateKey.java \
+classpath/gnu/javax/crypto/key/dh/GnuDHPublicKey.java \
+classpath/gnu/javax/crypto/key/dh/RFC2631.java
+
+gnu_javax_crypto_key_dh_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_key_dh_source_files)))
+
+gnu/javax/crypto/key/dh.list: $(gnu_javax_crypto_key_dh_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_key_dh_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/key/dh.list
+
+-include gnu/javax/crypto/key/dh.deps
+
+
+gnu_javax_crypto_key_srp6_source_files = \
+classpath/gnu/javax/crypto/key/srp6/SRP6Host.java \
+classpath/gnu/javax/crypto/key/srp6/SRP6KeyAgreement.java \
+classpath/gnu/javax/crypto/key/srp6/SRP6SaslClient.java \
+classpath/gnu/javax/crypto/key/srp6/SRP6SaslServer.java \
+classpath/gnu/javax/crypto/key/srp6/SRP6TLSClient.java \
+classpath/gnu/javax/crypto/key/srp6/SRP6TLSServer.java \
+classpath/gnu/javax/crypto/key/srp6/SRP6User.java \
+classpath/gnu/javax/crypto/key/srp6/SRPAlgorithm.java \
+classpath/gnu/javax/crypto/key/srp6/SRPKey.java \
+classpath/gnu/javax/crypto/key/srp6/SRPKeyPairGenerator.java \
+classpath/gnu/javax/crypto/key/srp6/SRPKeyPairRawCodec.java \
+classpath/gnu/javax/crypto/key/srp6/SRPPrivateKey.java \
+classpath/gnu/javax/crypto/key/srp6/SRPPublicKey.java
+
+gnu_javax_crypto_key_srp6_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_key_srp6_source_files)))
+
+gnu/javax/crypto/key/srp6.list: $(gnu_javax_crypto_key_srp6_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_key_srp6_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/key/srp6.list
+
+-include gnu/javax/crypto/key/srp6.deps
+
+
+gnu_javax_crypto_keyring_source_files = \
+classpath/gnu/javax/crypto/keyring/AuthenticatedEntry.java \
+classpath/gnu/javax/crypto/keyring/BaseKeyring.java \
+classpath/gnu/javax/crypto/keyring/BinaryDataEntry.java \
+classpath/gnu/javax/crypto/keyring/CertPathEntry.java \
+classpath/gnu/javax/crypto/keyring/CertificateEntry.java \
+classpath/gnu/javax/crypto/keyring/CompressedEntry.java \
+classpath/gnu/javax/crypto/keyring/EncryptedEntry.java \
+classpath/gnu/javax/crypto/keyring/Entry.java \
+classpath/gnu/javax/crypto/keyring/EnvelopeEntry.java \
+classpath/gnu/javax/crypto/keyring/GnuPrivateKeyring.java \
+classpath/gnu/javax/crypto/keyring/GnuPublicKeyring.java \
+classpath/gnu/javax/crypto/keyring/IKeyring.java \
+classpath/gnu/javax/crypto/keyring/IPrivateKeyring.java \
+classpath/gnu/javax/crypto/keyring/IPublicKeyring.java \
+classpath/gnu/javax/crypto/keyring/MalformedKeyringException.java \
+classpath/gnu/javax/crypto/keyring/MaskableEnvelopeEntry.java \
+classpath/gnu/javax/crypto/keyring/MeteredInputStream.java \
+classpath/gnu/javax/crypto/keyring/PasswordAuthenticatedEntry.java \
+classpath/gnu/javax/crypto/keyring/PasswordEncryptedEntry.java \
+classpath/gnu/javax/crypto/keyring/PasswordProtectedEntry.java \
+classpath/gnu/javax/crypto/keyring/PrimitiveEntry.java \
+classpath/gnu/javax/crypto/keyring/PrivateKeyEntry.java \
+classpath/gnu/javax/crypto/keyring/Properties.java \
+classpath/gnu/javax/crypto/keyring/PublicKeyEntry.java
+
+gnu_javax_crypto_keyring_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_keyring_source_files)))
+
+gnu/javax/crypto/keyring.list: $(gnu_javax_crypto_keyring_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_keyring_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/keyring.list
+
+-include gnu/javax/crypto/keyring.deps
+
+
+gnu_javax_crypto_kwa_source_files = \
+classpath/gnu/javax/crypto/kwa/AESKeyWrap.java \
+classpath/gnu/javax/crypto/kwa/BaseKeyWrappingAlgorithm.java \
+classpath/gnu/javax/crypto/kwa/IKeyWrappingAlgorithm.java \
+classpath/gnu/javax/crypto/kwa/KeyUnwrappingException.java \
+classpath/gnu/javax/crypto/kwa/KeyWrappingAlgorithmFactory.java \
+classpath/gnu/javax/crypto/kwa/TripleDESKeyWrap.java
+
+gnu_javax_crypto_kwa_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_kwa_source_files)))
+
+gnu/javax/crypto/kwa.list: $(gnu_javax_crypto_kwa_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_kwa_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/kwa.list
+
+-include gnu/javax/crypto/kwa.deps
+
+
+gnu_javax_crypto_mac_source_files = \
+classpath/gnu/javax/crypto/mac/BaseMac.java \
+classpath/gnu/javax/crypto/mac/HMac.java \
+classpath/gnu/javax/crypto/mac/HMacFactory.java \
+classpath/gnu/javax/crypto/mac/IMac.java \
+classpath/gnu/javax/crypto/mac/MacFactory.java \
+classpath/gnu/javax/crypto/mac/MacInputStream.java \
+classpath/gnu/javax/crypto/mac/MacOutputStream.java \
+classpath/gnu/javax/crypto/mac/OMAC.java \
+classpath/gnu/javax/crypto/mac/TMMH16.java \
+classpath/gnu/javax/crypto/mac/UHash32.java \
+classpath/gnu/javax/crypto/mac/UMac32.java
+
+gnu_javax_crypto_mac_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_mac_source_files)))
+
+gnu/javax/crypto/mac.list: $(gnu_javax_crypto_mac_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_mac_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/mac.list
+
+-include gnu/javax/crypto/mac.deps
+
+
+gnu_javax_crypto_mode_source_files = \
+classpath/gnu/javax/crypto/mode/BaseMode.java \
+classpath/gnu/javax/crypto/mode/CBC.java \
+classpath/gnu/javax/crypto/mode/CFB.java \
+classpath/gnu/javax/crypto/mode/CTR.java \
+classpath/gnu/javax/crypto/mode/EAX.java \
+classpath/gnu/javax/crypto/mode/ECB.java \
+classpath/gnu/javax/crypto/mode/IAuthenticatedMode.java \
+classpath/gnu/javax/crypto/mode/ICM.java \
+classpath/gnu/javax/crypto/mode/IMode.java \
+classpath/gnu/javax/crypto/mode/ModeFactory.java \
+classpath/gnu/javax/crypto/mode/OFB.java
+
+gnu_javax_crypto_mode_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_mode_source_files)))
+
+gnu/javax/crypto/mode.list: $(gnu_javax_crypto_mode_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_mode_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/mode.list
+
+-include gnu/javax/crypto/mode.deps
+
+
+gnu_javax_crypto_pad_source_files = \
+classpath/gnu/javax/crypto/pad/BasePad.java \
+classpath/gnu/javax/crypto/pad/IPad.java \
+classpath/gnu/javax/crypto/pad/ISO10126.java \
+classpath/gnu/javax/crypto/pad/PKCS1_V1_5.java \
+classpath/gnu/javax/crypto/pad/PKCS7.java \
+classpath/gnu/javax/crypto/pad/PadFactory.java \
+classpath/gnu/javax/crypto/pad/SSL3.java \
+classpath/gnu/javax/crypto/pad/TBC.java \
+classpath/gnu/javax/crypto/pad/TLS1.java \
+classpath/gnu/javax/crypto/pad/WrongPaddingException.java
+
+gnu_javax_crypto_pad_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_pad_source_files)))
+
+gnu/javax/crypto/pad.list: $(gnu_javax_crypto_pad_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_pad_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/pad.list
+
+-include gnu/javax/crypto/pad.deps
+
+
+gnu_javax_crypto_prng_source_files = \
+classpath/gnu/javax/crypto/prng/ARCFour.java \
+classpath/gnu/javax/crypto/prng/CSPRNG.java \
+classpath/gnu/javax/crypto/prng/Fortuna.java \
+classpath/gnu/javax/crypto/prng/ICMGenerator.java \
+classpath/gnu/javax/crypto/prng/IPBE.java \
+classpath/gnu/javax/crypto/prng/PBKDF2.java \
+classpath/gnu/javax/crypto/prng/PRNGFactory.java \
+classpath/gnu/javax/crypto/prng/UMacGenerator.java
+
+gnu_javax_crypto_prng_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_prng_source_files)))
+
+gnu/javax/crypto/prng.list: $(gnu_javax_crypto_prng_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_prng_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/prng.list
+
+-include gnu/javax/crypto/prng.deps
+
+
+gnu_javax_crypto_sasl_source_files = \
+classpath/gnu/javax/crypto/sasl/AuthInfo.java \
+classpath/gnu/javax/crypto/sasl/AuthInfoProviderFactory.java \
+classpath/gnu/javax/crypto/sasl/ClientFactory.java \
+classpath/gnu/javax/crypto/sasl/ClientMechanism.java \
+classpath/gnu/javax/crypto/sasl/ConfidentialityException.java \
+classpath/gnu/javax/crypto/sasl/IAuthInfoProvider.java \
+classpath/gnu/javax/crypto/sasl/IAuthInfoProviderFactory.java \
+classpath/gnu/javax/crypto/sasl/IllegalMechanismStateException.java \
+classpath/gnu/javax/crypto/sasl/InputBuffer.java \
+classpath/gnu/javax/crypto/sasl/IntegrityException.java \
+classpath/gnu/javax/crypto/sasl/NoSuchMechanismException.java \
+classpath/gnu/javax/crypto/sasl/NoSuchUserException.java \
+classpath/gnu/javax/crypto/sasl/OutputBuffer.java \
+classpath/gnu/javax/crypto/sasl/SaslEncodingException.java \
+classpath/gnu/javax/crypto/sasl/SaslInputStream.java \
+classpath/gnu/javax/crypto/sasl/SaslOutputStream.java \
+classpath/gnu/javax/crypto/sasl/SaslUtil.java \
+classpath/gnu/javax/crypto/sasl/ServerFactory.java \
+classpath/gnu/javax/crypto/sasl/ServerMechanism.java \
+classpath/gnu/javax/crypto/sasl/UserAlreadyExistsException.java
+
+gnu_javax_crypto_sasl_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_sasl_source_files)))
+
+gnu/javax/crypto/sasl.list: $(gnu_javax_crypto_sasl_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_sasl_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/sasl.list
+
+-include gnu/javax/crypto/sasl.deps
+
+
+gnu_javax_crypto_sasl_anonymous_source_files = \
+classpath/gnu/javax/crypto/sasl/anonymous/AnonymousClient.java \
+classpath/gnu/javax/crypto/sasl/anonymous/AnonymousServer.java \
+classpath/gnu/javax/crypto/sasl/anonymous/AnonymousUtil.java
+
+gnu_javax_crypto_sasl_anonymous_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_sasl_anonymous_source_files)))
+
+gnu/javax/crypto/sasl/anonymous.list: $(gnu_javax_crypto_sasl_anonymous_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_sasl_anonymous_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/sasl/anonymous.list
+
+-include gnu/javax/crypto/sasl/anonymous.deps
+
+
+gnu_javax_crypto_sasl_crammd5_source_files = \
+classpath/gnu/javax/crypto/sasl/crammd5/CramMD5AuthInfoProvider.java \
+classpath/gnu/javax/crypto/sasl/crammd5/CramMD5Client.java \
+classpath/gnu/javax/crypto/sasl/crammd5/CramMD5Registry.java \
+classpath/gnu/javax/crypto/sasl/crammd5/CramMD5Server.java \
+classpath/gnu/javax/crypto/sasl/crammd5/CramMD5Util.java \
+classpath/gnu/javax/crypto/sasl/crammd5/PasswordFile.java
+
+gnu_javax_crypto_sasl_crammd5_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_sasl_crammd5_source_files)))
+
+gnu/javax/crypto/sasl/crammd5.list: $(gnu_javax_crypto_sasl_crammd5_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_sasl_crammd5_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/sasl/crammd5.list
+
+-include gnu/javax/crypto/sasl/crammd5.deps
+
+
+gnu_javax_crypto_sasl_plain_source_files = \
+classpath/gnu/javax/crypto/sasl/plain/PasswordFile.java \
+classpath/gnu/javax/crypto/sasl/plain/PlainAuthInfoProvider.java \
+classpath/gnu/javax/crypto/sasl/plain/PlainClient.java \
+classpath/gnu/javax/crypto/sasl/plain/PlainRegistry.java \
+classpath/gnu/javax/crypto/sasl/plain/PlainServer.java
+
+gnu_javax_crypto_sasl_plain_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_sasl_plain_source_files)))
+
+gnu/javax/crypto/sasl/plain.list: $(gnu_javax_crypto_sasl_plain_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_sasl_plain_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/sasl/plain.list
+
+-include gnu/javax/crypto/sasl/plain.deps
+
+
+gnu_javax_crypto_sasl_srp_source_files = \
+classpath/gnu/javax/crypto/sasl/srp/CALG.java \
+classpath/gnu/javax/crypto/sasl/srp/ClientStore.java \
+classpath/gnu/javax/crypto/sasl/srp/IALG.java \
+classpath/gnu/javax/crypto/sasl/srp/KDF.java \
+classpath/gnu/javax/crypto/sasl/srp/PasswordFile.java \
+classpath/gnu/javax/crypto/sasl/srp/SRP.java \
+classpath/gnu/javax/crypto/sasl/srp/SRPAuthInfoProvider.java \
+classpath/gnu/javax/crypto/sasl/srp/SRPClient.java \
+classpath/gnu/javax/crypto/sasl/srp/SRPRegistry.java \
+classpath/gnu/javax/crypto/sasl/srp/SRPServer.java \
+classpath/gnu/javax/crypto/sasl/srp/SecurityContext.java \
+classpath/gnu/javax/crypto/sasl/srp/ServerStore.java \
+classpath/gnu/javax/crypto/sasl/srp/StoreEntry.java
+
+gnu_javax_crypto_sasl_srp_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_crypto_sasl_srp_source_files)))
+
+gnu/javax/crypto/sasl/srp.list: $(gnu_javax_crypto_sasl_srp_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_crypto_sasl_srp_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/crypto/sasl/srp.list
+
+-include gnu/javax/crypto/sasl/srp.deps
+
+
+gnu_javax_imageio_source_files = \
+classpath/gnu/javax/imageio/IIOInputStream.java
+
+gnu_javax_imageio_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_imageio_source_files)))
+
+gnu/javax/imageio.list: $(gnu_javax_imageio_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_imageio_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/imageio.list
+
+-include gnu/javax/imageio.deps
+
+
+gnu_javax_imageio_bmp_source_files = \
+classpath/gnu/javax/imageio/bmp/BMPDecoder.java \
+classpath/gnu/javax/imageio/bmp/BMPEncoder.java \
+classpath/gnu/javax/imageio/bmp/BMPException.java \
+classpath/gnu/javax/imageio/bmp/BMPFileHeader.java \
+classpath/gnu/javax/imageio/bmp/BMPImageReader.java \
+classpath/gnu/javax/imageio/bmp/BMPImageReaderSpi.java \
+classpath/gnu/javax/imageio/bmp/BMPImageWriter.java \
+classpath/gnu/javax/imageio/bmp/BMPImageWriterSpi.java \
+classpath/gnu/javax/imageio/bmp/BMPInfoHeader.java \
+classpath/gnu/javax/imageio/bmp/DecodeBF16.java \
+classpath/gnu/javax/imageio/bmp/DecodeBF32.java \
+classpath/gnu/javax/imageio/bmp/DecodeRGB1.java \
+classpath/gnu/javax/imageio/bmp/DecodeRGB24.java \
+classpath/gnu/javax/imageio/bmp/DecodeRGB4.java \
+classpath/gnu/javax/imageio/bmp/DecodeRGB8.java \
+classpath/gnu/javax/imageio/bmp/DecodeRLE4.java \
+classpath/gnu/javax/imageio/bmp/DecodeRLE8.java \
+classpath/gnu/javax/imageio/bmp/EncodeRGB1.java \
+classpath/gnu/javax/imageio/bmp/EncodeRGB16.java \
+classpath/gnu/javax/imageio/bmp/EncodeRGB24.java \
+classpath/gnu/javax/imageio/bmp/EncodeRGB32.java \
+classpath/gnu/javax/imageio/bmp/EncodeRGB4.java \
+classpath/gnu/javax/imageio/bmp/EncodeRGB8.java \
+classpath/gnu/javax/imageio/bmp/EncodeRLE4.java \
+classpath/gnu/javax/imageio/bmp/EncodeRLE8.java
+
+gnu_javax_imageio_bmp_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_imageio_bmp_source_files)))
+
+gnu/javax/imageio/bmp.list: $(gnu_javax_imageio_bmp_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_imageio_bmp_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/imageio/bmp.list
+
+-include gnu/javax/imageio/bmp.deps
+
+
+gnu_javax_imageio_gif_source_files = \
+classpath/gnu/javax/imageio/gif/GIFFile.java \
+classpath/gnu/javax/imageio/gif/GIFImageReader.java \
+classpath/gnu/javax/imageio/gif/GIFImageReaderSpi.java
+
+gnu_javax_imageio_gif_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_imageio_gif_source_files)))
+
+gnu/javax/imageio/gif.list: $(gnu_javax_imageio_gif_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_imageio_gif_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/imageio/gif.list
+
+-include gnu/javax/imageio/gif.deps
+
+
+gnu_javax_imageio_jpeg_source_files = \
+classpath/gnu/javax/imageio/jpeg/DCT.java \
+classpath/gnu/javax/imageio/jpeg/HuffmanTable.java \
+classpath/gnu/javax/imageio/jpeg/JPEGComponent.java \
+classpath/gnu/javax/imageio/jpeg/JPEGDecoder.java \
+classpath/gnu/javax/imageio/jpeg/JPEGException.java \
+classpath/gnu/javax/imageio/jpeg/JPEGFrame.java \
+classpath/gnu/javax/imageio/jpeg/JPEGImageInputStream.java \
+classpath/gnu/javax/imageio/jpeg/JPEGImageReader.java \
+classpath/gnu/javax/imageio/jpeg/JPEGImageReaderSpi.java \
+classpath/gnu/javax/imageio/jpeg/JPEGMarker.java \
+classpath/gnu/javax/imageio/jpeg/JPEGMarkerFoundException.java \
+classpath/gnu/javax/imageio/jpeg/JPEGScan.java \
+classpath/gnu/javax/imageio/jpeg/YCbCr_ColorSpace.java \
+classpath/gnu/javax/imageio/jpeg/ZigZag.java
+
+gnu_javax_imageio_jpeg_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_imageio_jpeg_source_files)))
+
+gnu/javax/imageio/jpeg.list: $(gnu_javax_imageio_jpeg_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_imageio_jpeg_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/imageio/jpeg.list
+
+-include gnu/javax/imageio/jpeg.deps
+
+
+gnu_javax_imageio_png_source_files = \
+classpath/gnu/javax/imageio/png/PNGChunk.java \
+classpath/gnu/javax/imageio/png/PNGData.java \
+classpath/gnu/javax/imageio/png/PNGDecoder.java \
+classpath/gnu/javax/imageio/png/PNGEncoder.java \
+classpath/gnu/javax/imageio/png/PNGException.java \
+classpath/gnu/javax/imageio/png/PNGFile.java \
+classpath/gnu/javax/imageio/png/PNGFilter.java \
+classpath/gnu/javax/imageio/png/PNGGamma.java \
+classpath/gnu/javax/imageio/png/PNGHeader.java \
+classpath/gnu/javax/imageio/png/PNGICCProfile.java \
+classpath/gnu/javax/imageio/png/PNGImageReader.java \
+classpath/gnu/javax/imageio/png/PNGImageReaderSpi.java \
+classpath/gnu/javax/imageio/png/PNGPalette.java \
+classpath/gnu/javax/imageio/png/PNGPhys.java \
+classpath/gnu/javax/imageio/png/PNGTime.java
+
+gnu_javax_imageio_png_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_imageio_png_source_files)))
+
+gnu/javax/imageio/png.list: $(gnu_javax_imageio_png_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_imageio_png_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/imageio/png.list
+
+-include gnu/javax/imageio/png.deps
+
+
+gnu_javax_net_ssl_source_files = \
+classpath/gnu/javax/net/ssl/Base64.java \
+classpath/gnu/javax/net/ssl/EntropySource.java \
+classpath/gnu/javax/net/ssl/NullManagerParameters.java \
+classpath/gnu/javax/net/ssl/PrivateCredentials.java \
+classpath/gnu/javax/net/ssl/SRPManagerParameters.java \
+classpath/gnu/javax/net/ssl/SRPTrustManager.java \
+classpath/gnu/javax/net/ssl/StaticTrustAnchors.java
+
+gnu_javax_net_ssl_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_net_ssl_source_files)))
+
+gnu/javax/net/ssl.list: $(gnu_javax_net_ssl_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_net_ssl_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/net/ssl.list
+
+-include gnu/javax/net/ssl.deps
+
+
+gnu_javax_net_ssl_provider_source_files = \
+classpath/gnu/javax/net/ssl/provider/Alert.java \
+classpath/gnu/javax/net/ssl/provider/AlertException.java \
+classpath/gnu/javax/net/ssl/provider/Certificate.java \
+classpath/gnu/javax/net/ssl/provider/CertificateRequest.java \
+classpath/gnu/javax/net/ssl/provider/CertificateType.java \
+classpath/gnu/javax/net/ssl/provider/CertificateVerify.java \
+classpath/gnu/javax/net/ssl/provider/CipherSuite.java \
+classpath/gnu/javax/net/ssl/provider/ClientHello.java \
+classpath/gnu/javax/net/ssl/provider/ClientKeyExchange.java \
+classpath/gnu/javax/net/ssl/provider/CompressionMethod.java \
+classpath/gnu/javax/net/ssl/provider/Constructed.java \
+classpath/gnu/javax/net/ssl/provider/ContentType.java \
+classpath/gnu/javax/net/ssl/provider/Context.java \
+classpath/gnu/javax/net/ssl/provider/DiffieHellman.java \
+classpath/gnu/javax/net/ssl/provider/DigestInputStream.java \
+classpath/gnu/javax/net/ssl/provider/DigestOutputStream.java \
+classpath/gnu/javax/net/ssl/provider/Enumerated.java \
+classpath/gnu/javax/net/ssl/provider/Extension.java \
+classpath/gnu/javax/net/ssl/provider/Extensions.java \
+classpath/gnu/javax/net/ssl/provider/Finished.java \
+classpath/gnu/javax/net/ssl/provider/GNUSecurityParameters.java \
+classpath/gnu/javax/net/ssl/provider/Handshake.java \
+classpath/gnu/javax/net/ssl/provider/JCESecurityParameters.java \
+classpath/gnu/javax/net/ssl/provider/JDBCSessionContext.java \
+classpath/gnu/javax/net/ssl/provider/Jessie.java \
+classpath/gnu/javax/net/ssl/provider/JessieDHPrivateKey.java \
+classpath/gnu/javax/net/ssl/provider/JessieDHPublicKey.java \
+classpath/gnu/javax/net/ssl/provider/JessieRSAPrivateKey.java \
+classpath/gnu/javax/net/ssl/provider/JessieRSAPublicKey.java \
+classpath/gnu/javax/net/ssl/provider/KeyPool.java \
+classpath/gnu/javax/net/ssl/provider/MacException.java \
+classpath/gnu/javax/net/ssl/provider/OverflowException.java \
+classpath/gnu/javax/net/ssl/provider/ProtocolVersion.java \
+classpath/gnu/javax/net/ssl/provider/Random.java \
+classpath/gnu/javax/net/ssl/provider/RecordInput.java \
+classpath/gnu/javax/net/ssl/provider/RecordInputStream.java \
+classpath/gnu/javax/net/ssl/provider/RecordOutputStream.java \
+classpath/gnu/javax/net/ssl/provider/RecordingInputStream.java \
+classpath/gnu/javax/net/ssl/provider/SRPTrustManagerFactory.java \
+classpath/gnu/javax/net/ssl/provider/SSLHMac.java \
+classpath/gnu/javax/net/ssl/provider/SSLRSASignature.java \
+classpath/gnu/javax/net/ssl/provider/SSLRandom.java \
+classpath/gnu/javax/net/ssl/provider/SSLServerSocket.java \
+classpath/gnu/javax/net/ssl/provider/SSLServerSocketFactory.java \
+classpath/gnu/javax/net/ssl/provider/SSLSocket.java \
+classpath/gnu/javax/net/ssl/provider/SSLSocketFactory.java \
+classpath/gnu/javax/net/ssl/provider/SSLSocketInputStream.java \
+classpath/gnu/javax/net/ssl/provider/SSLSocketOutputStream.java \
+classpath/gnu/javax/net/ssl/provider/SecurityParameters.java \
+classpath/gnu/javax/net/ssl/provider/ServerHello.java \
+classpath/gnu/javax/net/ssl/provider/ServerKeyExchange.java \
+classpath/gnu/javax/net/ssl/provider/Session.java \
+classpath/gnu/javax/net/ssl/provider/SessionContext.java \
+classpath/gnu/javax/net/ssl/provider/Signature.java \
+classpath/gnu/javax/net/ssl/provider/SynchronizedRandom.java \
+classpath/gnu/javax/net/ssl/provider/TLSHMac.java \
+classpath/gnu/javax/net/ssl/provider/TLSRandom.java \
+classpath/gnu/javax/net/ssl/provider/Util.java \
+classpath/gnu/javax/net/ssl/provider/X509KeyManagerFactory.java \
+classpath/gnu/javax/net/ssl/provider/X509TrustManagerFactory.java \
+classpath/gnu/javax/net/ssl/provider/XMLSessionContext.java
+
+gnu_javax_net_ssl_provider_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_net_ssl_provider_source_files)))
+
+gnu/javax/net/ssl/provider.list: $(gnu_javax_net_ssl_provider_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_net_ssl_provider_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/net/ssl/provider.list
+
+-include gnu/javax/net/ssl/provider.deps
+
+
+gnu_javax_print_source_files = \
+classpath/gnu/javax/print/CupsIppOperation.java \
+classpath/gnu/javax/print/CupsMediaMapping.java \
+classpath/gnu/javax/print/CupsPrintService.java \
+classpath/gnu/javax/print/CupsPrintServiceLookup.java \
+classpath/gnu/javax/print/CupsServer.java \
+classpath/gnu/javax/print/PrintAttributeException.java \
+classpath/gnu/javax/print/PrintFlavorException.java \
+classpath/gnu/javax/print/PrintUriException.java \
+classpath/gnu/javax/print/PrinterDialog.java
+
+gnu_javax_print_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_print_source_files)))
+
+gnu/javax/print.list: $(gnu_javax_print_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_print_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/print.list
+
+-include gnu/javax/print.deps
+
+
+gnu_javax_print_ipp_source_files = \
+classpath/gnu/javax/print/ipp/DocPrintJobImpl.java \
+classpath/gnu/javax/print/ipp/IppDelimiterTag.java \
+classpath/gnu/javax/print/ipp/IppException.java \
+classpath/gnu/javax/print/ipp/IppMultiDocPrintService.java \
+classpath/gnu/javax/print/ipp/IppPrintService.java \
+classpath/gnu/javax/print/ipp/IppRequest.java \
+classpath/gnu/javax/print/ipp/IppResponse.java \
+classpath/gnu/javax/print/ipp/IppStatusCode.java \
+classpath/gnu/javax/print/ipp/IppUtilities.java \
+classpath/gnu/javax/print/ipp/IppValueTag.java \
+classpath/gnu/javax/print/ipp/MultiDocPrintJobImpl.java
+
+gnu_javax_print_ipp_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_print_ipp_source_files)))
+
+gnu/javax/print/ipp.list: $(gnu_javax_print_ipp_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_print_ipp_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/print/ipp.list
+
+-include gnu/javax/print/ipp.deps
+
+
+gnu_javax_print_ipp_attribute_source_files = \
+classpath/gnu/javax/print/ipp/attribute/CharsetSyntax.java \
+classpath/gnu/javax/print/ipp/attribute/DefaultValueAttribute.java \
+classpath/gnu/javax/print/ipp/attribute/DetailedStatusMessage.java \
+classpath/gnu/javax/print/ipp/attribute/DocumentAccessError.java \
+classpath/gnu/javax/print/ipp/attribute/NaturalLanguageSyntax.java \
+classpath/gnu/javax/print/ipp/attribute/RequestedAttributes.java \
+classpath/gnu/javax/print/ipp/attribute/StatusMessage.java \
+classpath/gnu/javax/print/ipp/attribute/UnknownAttribute.java
+
+gnu_javax_print_ipp_attribute_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_print_ipp_attribute_source_files)))
+
+gnu/javax/print/ipp/attribute.list: $(gnu_javax_print_ipp_attribute_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_print_ipp_attribute_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/print/ipp/attribute.list
+
+-include gnu/javax/print/ipp/attribute.deps
+
+
+gnu_javax_print_ipp_attribute_defaults_source_files = \
+classpath/gnu/javax/print/ipp/attribute/defaults/CopiesDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/DocumentFormatDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/FinishingsDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/JobHoldUntilDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/JobPriorityDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/JobSheetsDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/MediaDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/MultipleDocumentHandlingDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/NumberUpDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/OrientationRequestedDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/PrintQualityDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/PrinterResolutionDefault.java \
+classpath/gnu/javax/print/ipp/attribute/defaults/SidesDefault.java
+
+gnu_javax_print_ipp_attribute_defaults_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_print_ipp_attribute_defaults_source_files)))
+
+gnu/javax/print/ipp/attribute/defaults.list: $(gnu_javax_print_ipp_attribute_defaults_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_print_ipp_attribute_defaults_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/print/ipp/attribute/defaults.list
+
+-include gnu/javax/print/ipp/attribute/defaults.deps
+
+
+gnu_javax_print_ipp_attribute_job_source_files = \
+classpath/gnu/javax/print/ipp/attribute/job/AttributesCharset.java \
+classpath/gnu/javax/print/ipp/attribute/job/AttributesNaturalLanguage.java \
+classpath/gnu/javax/print/ipp/attribute/job/JobDetailedStatusMessages.java \
+classpath/gnu/javax/print/ipp/attribute/job/JobDocumentAccessErrors.java \
+classpath/gnu/javax/print/ipp/attribute/job/JobId.java \
+classpath/gnu/javax/print/ipp/attribute/job/JobMoreInfo.java \
+classpath/gnu/javax/print/ipp/attribute/job/JobPrinterUri.java \
+classpath/gnu/javax/print/ipp/attribute/job/JobStateMessage.java \
+classpath/gnu/javax/print/ipp/attribute/job/JobUri.java
+
+gnu_javax_print_ipp_attribute_job_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_print_ipp_attribute_job_source_files)))
+
+gnu/javax/print/ipp/attribute/job.list: $(gnu_javax_print_ipp_attribute_job_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_print_ipp_attribute_job_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/print/ipp/attribute/job.list
+
+-include gnu/javax/print/ipp/attribute/job.deps
+
+
+gnu_javax_print_ipp_attribute_printer_source_files = \
+classpath/gnu/javax/print/ipp/attribute/printer/CharsetConfigured.java \
+classpath/gnu/javax/print/ipp/attribute/printer/DocumentFormat.java \
+classpath/gnu/javax/print/ipp/attribute/printer/MultipleOperationTimeOut.java \
+classpath/gnu/javax/print/ipp/attribute/printer/NaturalLanguageConfigured.java \
+classpath/gnu/javax/print/ipp/attribute/printer/PrinterCurrentTime.java \
+classpath/gnu/javax/print/ipp/attribute/printer/PrinterDriverInstaller.java \
+classpath/gnu/javax/print/ipp/attribute/printer/PrinterStateMessage.java \
+classpath/gnu/javax/print/ipp/attribute/printer/PrinterUpTime.java
+
+gnu_javax_print_ipp_attribute_printer_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_print_ipp_attribute_printer_source_files)))
+
+gnu/javax/print/ipp/attribute/printer.list: $(gnu_javax_print_ipp_attribute_printer_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_print_ipp_attribute_printer_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/print/ipp/attribute/printer.list
+
+-include gnu/javax/print/ipp/attribute/printer.deps
+
+
+gnu_javax_print_ipp_attribute_supported_source_files = \
+classpath/gnu/javax/print/ipp/attribute/supported/CharsetSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/CompressionSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/DocumentFormatSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/FinishingsSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/GeneratedNaturalLanguageSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/IppVersionsSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/JobHoldUntilSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/JobSheetsSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/MediaSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/MultipleDocumentHandlingSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/MultipleDocumentJobsSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/OperationsSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/OrientationRequestedSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/PageRangesSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/PrintQualitySupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/PrinterResolutionSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/PrinterUriSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/SidesSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/UriAuthenticationSupported.java \
+classpath/gnu/javax/print/ipp/attribute/supported/UriSecuritySupported.java
+
+gnu_javax_print_ipp_attribute_supported_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_print_ipp_attribute_supported_source_files)))
+
+gnu/javax/print/ipp/attribute/supported.list: $(gnu_javax_print_ipp_attribute_supported_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_print_ipp_attribute_supported_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/print/ipp/attribute/supported.list
+
+-include gnu/javax/print/ipp/attribute/supported.deps
+
+
+gnu_javax_rmi_source_files = \
+classpath/gnu/javax/rmi/CORBA/CorbaInput.java \
+classpath/gnu/javax/rmi/CORBA/CorbaOutput.java \
+classpath/gnu/javax/rmi/CORBA/DefaultWriteObjectTester.java \
+classpath/gnu/javax/rmi/CORBA/DelegateFactory.java \
+classpath/gnu/javax/rmi/CORBA/GetDelegateInstanceException.java \
+classpath/gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java \
+classpath/gnu/javax/rmi/CORBA/RmiUtilities.java \
+classpath/gnu/javax/rmi/CORBA/StubDelegateImpl.java \
+classpath/gnu/javax/rmi/CORBA/TieTargetRecord.java \
+classpath/gnu/javax/rmi/CORBA/UtilDelegateImpl.java \
+classpath/gnu/javax/rmi/CORBA/ValueHandlerDelegateImpl.java
+
+gnu-javax-rmi.lo: $(gnu_javax_rmi_source_files)
+	@find classpath/lib/gnu/javax/rmi -name '*.class' > gnu-javax-rmi.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-javax-rmi.lo @gnu-javax-rmi.list
+	@rm -f gnu-javax-rmi.list
+
+gnu_javax_security_auth_source_files = \
+classpath/gnu/javax/security/auth/Password.java
+
+gnu_javax_security_auth_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_security_auth_source_files)))
+
+gnu/javax/security/auth.list: $(gnu_javax_security_auth_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_security_auth_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/security/auth.list
+
+-include gnu/javax/security/auth.deps
+
+
+gnu_javax_security_auth_callback_source_files = \
+classpath/gnu/javax/security/auth/callback/AWTCallbackHandler.java \
+classpath/gnu/javax/security/auth/callback/AbstractCallbackHandler.java \
+classpath/gnu/javax/security/auth/callback/ConsoleCallbackHandler.java \
+classpath/gnu/javax/security/auth/callback/DefaultCallbackHandler.java \
+classpath/gnu/javax/security/auth/callback/GnuCallbacks.java \
+classpath/gnu/javax/security/auth/callback/SwingCallbackHandler.java
+
+gnu_javax_security_auth_callback_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_security_auth_callback_source_files)))
+
+gnu/javax/security/auth/callback.list: $(gnu_javax_security_auth_callback_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_security_auth_callback_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/security/auth/callback.list
+
+-include gnu/javax/security/auth/callback.deps
+
+
+gnu_javax_security_auth_login_source_files = \
+classpath/gnu/javax/security/auth/login/ConfigFileParser.java \
+classpath/gnu/javax/security/auth/login/ConfigFileTokenizer.java \
+classpath/gnu/javax/security/auth/login/GnuConfiguration.java
+
+gnu_javax_security_auth_login_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_security_auth_login_source_files)))
+
+gnu/javax/security/auth/login.list: $(gnu_javax_security_auth_login_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_security_auth_login_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/security/auth/login.list
+
+-include gnu/javax/security/auth/login.deps
+
+
+gnu_javax_sound_midi_source_files = \
+classpath/gnu/javax/sound/midi/alsa/AlsaInputPortDevice.java \
+classpath/gnu/javax/sound/midi/alsa/AlsaMidiDeviceProvider.java \
+classpath/gnu/javax/sound/midi/alsa/AlsaMidiSequencerDevice.java \
+classpath/gnu/javax/sound/midi/alsa/AlsaOutputPortDevice.java \
+classpath/gnu/javax/sound/midi/alsa/AlsaPortDevice.java \
+classpath/gnu/javax/sound/midi/dssi/DSSIMidiDeviceProvider.java \
+classpath/gnu/javax/sound/midi/dssi/DSSISynthesizer.java \
+classpath/gnu/javax/sound/midi/file/ExtendedMidiFileFormat.java \
+classpath/gnu/javax/sound/midi/file/MidiDataInputStream.java \
+classpath/gnu/javax/sound/midi/file/MidiDataOutputStream.java \
+classpath/gnu/javax/sound/midi/file/MidiFileReader.java \
+classpath/gnu/javax/sound/midi/file/MidiFileWriter.java
+
+gnu-javax-sound-midi.lo: $(gnu_javax_sound_midi_source_files)
+	@find classpath/lib/gnu/javax/sound/midi -name '*.class' > gnu-javax-sound-midi.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-javax-sound-midi.lo @gnu-javax-sound-midi.list
+	@rm -f gnu-javax-sound-midi.list
+
+gnu_javax_sound_sampled_AU_source_files = \
+classpath/gnu/javax/sound/sampled/AU/AUReader.java
+
+gnu_javax_sound_sampled_AU_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_sound_sampled_AU_source_files)))
+
+gnu/javax/sound/sampled/AU.list: $(gnu_javax_sound_sampled_AU_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_sound_sampled_AU_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/sound/sampled/AU.list
+
+-include gnu/javax/sound/sampled/AU.deps
+
+
+gnu_javax_sound_sampled_WAV_source_files = \
+classpath/gnu/javax/sound/sampled/WAV/WAVReader.java
+
+gnu_javax_sound_sampled_WAV_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_sound_sampled_WAV_source_files)))
+
+gnu/javax/sound/sampled/WAV.list: $(gnu_javax_sound_sampled_WAV_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_sound_sampled_WAV_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/sound/sampled/WAV.list
+
+-include gnu/javax/sound/sampled/WAV.deps
+
+
+gnu_javax_swing_plaf_gnu_source_files = \
+classpath/gnu/javax/swing/plaf/gnu/GNULookAndFeel.java
+
+gnu_javax_swing_plaf_gnu_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_swing_plaf_gnu_source_files)))
+
+gnu/javax/swing/plaf/gnu.list: $(gnu_javax_swing_plaf_gnu_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_swing_plaf_gnu_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/swing/plaf/gnu.list
+
+-include gnu/javax/swing/plaf/gnu.deps
+
+
+gnu_javax_swing_plaf_metal_source_files = \
+classpath/gnu/javax/swing/plaf/metal/CustomizableTheme.java
+
+gnu_javax_swing_plaf_metal_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_swing_plaf_metal_source_files)))
+
+gnu/javax/swing/plaf/metal.list: $(gnu_javax_swing_plaf_metal_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_swing_plaf_metal_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/swing/plaf/metal.list
+
+-include gnu/javax/swing/plaf/metal.deps
+
+
+gnu_javax_swing_text_html_source_files = \
+classpath/gnu/javax/swing/text/html/CharacterAttributeTranslator.java \
+classpath/gnu/javax/swing/text/html/CombinedAttributes.java \
+classpath/gnu/javax/swing/text/html/ImageViewIconFactory.java
+
+gnu_javax_swing_text_html_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_swing_text_html_source_files)))
+
+gnu/javax/swing/text/html.list: $(gnu_javax_swing_text_html_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_swing_text_html_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/swing/text/html.list
+
+-include gnu/javax/swing/text/html.deps
+
+
+gnu_javax_swing_text_html_parser_source_files = \
+classpath/gnu/javax/swing/text/html/parser/GnuParserDelegator.java \
+classpath/gnu/javax/swing/text/html/parser/HTML_401F.java \
+classpath/gnu/javax/swing/text/html/parser/HTML_401Swing.java \
+classpath/gnu/javax/swing/text/html/parser/SmallHtmlAttributeSet.java \
+classpath/gnu/javax/swing/text/html/parser/gnuDTD.java \
+classpath/gnu/javax/swing/text/html/parser/htmlAttributeSet.java \
+classpath/gnu/javax/swing/text/html/parser/htmlValidator.java
+
+gnu_javax_swing_text_html_parser_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_swing_text_html_parser_source_files)))
+
+gnu/javax/swing/text/html/parser.list: $(gnu_javax_swing_text_html_parser_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_swing_text_html_parser_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/swing/text/html/parser.list
+
+-include gnu/javax/swing/text/html/parser.deps
+
+
+gnu_javax_swing_text_html_parser_models_source_files = \
+classpath/gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java \
+classpath/gnu/javax/swing/text/html/parser/models/TableRowContentModel.java \
+classpath/gnu/javax/swing/text/html/parser/models/list.java \
+classpath/gnu/javax/swing/text/html/parser/models/noTagModel.java \
+classpath/gnu/javax/swing/text/html/parser/models/node.java \
+classpath/gnu/javax/swing/text/html/parser/models/transformer.java
+
+gnu_javax_swing_text_html_parser_models_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_swing_text_html_parser_models_source_files)))
+
+gnu/javax/swing/text/html/parser/models.list: $(gnu_javax_swing_text_html_parser_models_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_swing_text_html_parser_models_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/swing/text/html/parser/models.list
+
+-include gnu/javax/swing/text/html/parser/models.deps
+
+
+gnu_javax_swing_text_html_parser_support_source_files = \
+classpath/gnu/javax/swing/text/html/parser/support/Parser.java \
+classpath/gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java \
+classpath/gnu/javax/swing/text/html/parser/support/parameterDefaulter.java \
+classpath/gnu/javax/swing/text/html/parser/support/textPreProcessor.java
+
+gnu_javax_swing_text_html_parser_support_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_swing_text_html_parser_support_source_files)))
+
+gnu/javax/swing/text/html/parser/support.list: $(gnu_javax_swing_text_html_parser_support_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_swing_text_html_parser_support_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/swing/text/html/parser/support.list
+
+-include gnu/javax/swing/text/html/parser/support.deps
+
+
+gnu_javax_swing_text_html_parser_support_low_source_files = \
+classpath/gnu/javax/swing/text/html/parser/support/low/Buffer.java \
+classpath/gnu/javax/swing/text/html/parser/support/low/Constants.java \
+classpath/gnu/javax/swing/text/html/parser/support/low/Location.java \
+classpath/gnu/javax/swing/text/html/parser/support/low/ParseException.java \
+classpath/gnu/javax/swing/text/html/parser/support/low/Queue.java \
+classpath/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java \
+classpath/gnu/javax/swing/text/html/parser/support/low/Token.java \
+classpath/gnu/javax/swing/text/html/parser/support/low/node.java \
+classpath/gnu/javax/swing/text/html/parser/support/low/pattern.java
+
+gnu_javax_swing_text_html_parser_support_low_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_swing_text_html_parser_support_low_source_files)))
+
+gnu/javax/swing/text/html/parser/support/low.list: $(gnu_javax_swing_text_html_parser_support_low_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_swing_text_html_parser_support_low_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/swing/text/html/parser/support/low.list
+
+-include gnu/javax/swing/text/html/parser/support/low.deps
+
+
+gnu_javax_swing_tree_source_files = \
+classpath/gnu/javax/swing/tree/GnuPath.java
+
+gnu_javax_swing_tree_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_swing_tree_source_files)))
+
+gnu/javax/swing/tree.list: $(gnu_javax_swing_tree_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(gnu_javax_swing_tree_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > gnu/javax/swing/tree.list
+
+-include gnu/javax/swing/tree.deps
+
+
+gnu_xml_source_files = \
+classpath/gnu/xml/aelfred2/JAXPFactory.java \
+classpath/gnu/xml/aelfred2/SAXDriver.java \
+classpath/gnu/xml/aelfred2/XmlParser.java \
+classpath/gnu/xml/aelfred2/XmlReader.java \
+classpath/gnu/xml/dom/Consumer.java \
+classpath/gnu/xml/dom/DTDAttributeTypeInfo.java \
+classpath/gnu/xml/dom/DTDElementTypeInfo.java \
+classpath/gnu/xml/dom/DomAttr.java \
+classpath/gnu/xml/dom/DomCDATASection.java \
+classpath/gnu/xml/dom/DomCharacterData.java \
+classpath/gnu/xml/dom/DomComment.java \
+classpath/gnu/xml/dom/DomDOMException.java \
+classpath/gnu/xml/dom/DomDoctype.java \
+classpath/gnu/xml/dom/DomDocument.java \
+classpath/gnu/xml/dom/DomDocumentBuilder.java \
+classpath/gnu/xml/dom/DomDocumentBuilderFactory.java \
+classpath/gnu/xml/dom/DomDocumentConfiguration.java \
+classpath/gnu/xml/dom/DomDocumentFragment.java \
+classpath/gnu/xml/dom/DomElement.java \
+classpath/gnu/xml/dom/DomEntity.java \
+classpath/gnu/xml/dom/DomEntityReference.java \
+classpath/gnu/xml/dom/DomEvent.java \
+classpath/gnu/xml/dom/DomExtern.java \
+classpath/gnu/xml/dom/DomImpl.java \
+classpath/gnu/xml/dom/DomIterator.java \
+classpath/gnu/xml/dom/DomNSResolverContext.java \
+classpath/gnu/xml/dom/DomNamedNodeMap.java \
+classpath/gnu/xml/dom/DomNode.java \
+classpath/gnu/xml/dom/DomNodeIterator.java \
+classpath/gnu/xml/dom/DomNotation.java \
+classpath/gnu/xml/dom/DomNsNode.java \
+classpath/gnu/xml/dom/DomProcessingInstruction.java \
+classpath/gnu/xml/dom/DomText.java \
+classpath/gnu/xml/dom/DomXPathExpression.java \
+classpath/gnu/xml/dom/DomXPathNSResolver.java \
+classpath/gnu/xml/dom/DomXPathResult.java \
+classpath/gnu/xml/dom/ImplementationList.java \
+classpath/gnu/xml/dom/ImplementationSource.java \
+classpath/gnu/xml/dom/JAXPFactory.java \
+classpath/gnu/xml/dom/html2/DomHTMLAnchorElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLAppletElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLAreaElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLBRElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLBaseElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLBaseFontElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLBodyElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLButtonElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLCollection.java \
+classpath/gnu/xml/dom/html2/DomHTMLDListElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLDirectoryElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLDivElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLDocument.java \
+classpath/gnu/xml/dom/html2/DomHTMLElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLEmbedElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLFieldSetElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLFontElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLFormElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLFrameElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLFrameSetElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLHRElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLHeadElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLHeadingElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLHtmlElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLIFrameElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLImageElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLImpl.java \
+classpath/gnu/xml/dom/html2/DomHTMLInputElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLIsIndexElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLLIElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLLabelElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLLegendElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLLinkElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLMapElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLMenuElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLMetaElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLModElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLOListElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLObjectElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLOptGroupElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLOptionElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLParagraphElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLParamElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLParser.java \
+classpath/gnu/xml/dom/html2/DomHTMLPreElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLQuoteElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLScriptElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLSelectElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLStyleElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLTableCaptionElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLTableCellElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLTableColElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLTableElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLTableRowElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLTableSectionElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLTextAreaElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLTitleElement.java \
+classpath/gnu/xml/dom/html2/DomHTMLUListElement.java \
+classpath/gnu/xml/dom/ls/DomLSException.java \
+classpath/gnu/xml/dom/ls/DomLSInput.java \
+classpath/gnu/xml/dom/ls/DomLSOutput.java \
+classpath/gnu/xml/dom/ls/DomLSParser.java \
+classpath/gnu/xml/dom/ls/DomLSSerializer.java \
+classpath/gnu/xml/dom/ls/FilteredSAXEventSink.java \
+classpath/gnu/xml/dom/ls/ReaderInputStream.java \
+classpath/gnu/xml/dom/ls/SAXEventSink.java \
+classpath/gnu/xml/dom/ls/WriterOutputStream.java \
+classpath/gnu/xml/libxmlj/dom/GnomeAttr.java \
+classpath/gnu/xml/libxmlj/dom/GnomeCDATASection.java \
+classpath/gnu/xml/libxmlj/dom/GnomeCharacterData.java \
+classpath/gnu/xml/libxmlj/dom/GnomeComment.java \
+classpath/gnu/xml/libxmlj/dom/GnomeDOMException.java \
+classpath/gnu/xml/libxmlj/dom/GnomeDOMStringList.java \
+classpath/gnu/xml/libxmlj/dom/GnomeDocument.java \
+classpath/gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java \
+classpath/gnu/xml/libxmlj/dom/GnomeDocumentBuilderFactory.java \
+classpath/gnu/xml/libxmlj/dom/GnomeDocumentFragment.java \
+classpath/gnu/xml/libxmlj/dom/GnomeDocumentType.java \
+classpath/gnu/xml/libxmlj/dom/GnomeElement.java \
+classpath/gnu/xml/libxmlj/dom/GnomeEntity.java \
+classpath/gnu/xml/libxmlj/dom/GnomeEntityReference.java \
+classpath/gnu/xml/libxmlj/dom/GnomeNamedNodeMap.java \
+classpath/gnu/xml/libxmlj/dom/GnomeNode.java \
+classpath/gnu/xml/libxmlj/dom/GnomeNodeList.java \
+classpath/gnu/xml/libxmlj/dom/GnomeNotation.java \
+classpath/gnu/xml/libxmlj/dom/GnomeProcessingInstruction.java \
+classpath/gnu/xml/libxmlj/dom/GnomeText.java \
+classpath/gnu/xml/libxmlj/dom/GnomeTypeInfo.java \
+classpath/gnu/xml/libxmlj/dom/GnomeXPathExpression.java \
+classpath/gnu/xml/libxmlj/dom/GnomeXPathNSResolver.java \
+classpath/gnu/xml/libxmlj/dom/GnomeXPathNodeList.java \
+classpath/gnu/xml/libxmlj/dom/GnomeXPathResult.java \
+classpath/gnu/xml/libxmlj/sax/GnomeLocator.java \
+classpath/gnu/xml/libxmlj/sax/GnomeSAXParser.java \
+classpath/gnu/xml/libxmlj/sax/GnomeSAXParserFactory.java \
+classpath/gnu/xml/libxmlj/sax/GnomeXMLReader.java \
+classpath/gnu/xml/libxmlj/sax/Namespaces.java \
+classpath/gnu/xml/libxmlj/sax/StringArrayAttributes.java \
+classpath/gnu/xml/libxmlj/sax/XMLName.java \
+classpath/gnu/xml/libxmlj/transform/ErrorListenerErrorHandler.java \
+classpath/gnu/xml/libxmlj/transform/GnomeTransformer.java \
+classpath/gnu/xml/libxmlj/transform/GnomeTransformerFactory.java \
+classpath/gnu/xml/libxmlj/transform/URIResolverEntityResolver.java \
+classpath/gnu/xml/libxmlj/util/EmptyNodeList.java \
+classpath/gnu/xml/libxmlj/util/NamedInputStream.java \
+classpath/gnu/xml/libxmlj/util/StandaloneDocumentType.java \
+classpath/gnu/xml/libxmlj/util/StandaloneLocator.java \
+classpath/gnu/xml/libxmlj/util/XMLJ.java \
+classpath/gnu/xml/pipeline/CallFilter.java \
+classpath/gnu/xml/pipeline/DomConsumer.java \
+classpath/gnu/xml/pipeline/EventConsumer.java \
+classpath/gnu/xml/pipeline/EventFilter.java \
+classpath/gnu/xml/pipeline/LinkFilter.java \
+classpath/gnu/xml/pipeline/NSFilter.java \
+classpath/gnu/xml/pipeline/PipelineFactory.java \
+classpath/gnu/xml/pipeline/TeeConsumer.java \
+classpath/gnu/xml/pipeline/TextConsumer.java \
+classpath/gnu/xml/pipeline/ValidationConsumer.java \
+classpath/gnu/xml/pipeline/WellFormednessFilter.java \
+classpath/gnu/xml/pipeline/XIncludeFilter.java \
+classpath/gnu/xml/pipeline/XsltFilter.java \
+classpath/gnu/xml/stream/AttributeImpl.java \
+classpath/gnu/xml/stream/BufferedReader.java \
+classpath/gnu/xml/stream/CRLFReader.java \
+classpath/gnu/xml/stream/CharactersImpl.java \
+classpath/gnu/xml/stream/CommentImpl.java \
+classpath/gnu/xml/stream/DTDImpl.java \
+classpath/gnu/xml/stream/EndDocumentImpl.java \
+classpath/gnu/xml/stream/EndElementImpl.java \
+classpath/gnu/xml/stream/EntityDeclarationImpl.java \
+classpath/gnu/xml/stream/EntityReferenceImpl.java \
+classpath/gnu/xml/stream/FilteredEventReader.java \
+classpath/gnu/xml/stream/FilteredStreamReader.java \
+classpath/gnu/xml/stream/NamespaceImpl.java \
+classpath/gnu/xml/stream/NotationDeclarationImpl.java \
+classpath/gnu/xml/stream/ProcessingInstructionImpl.java \
+classpath/gnu/xml/stream/SAXParser.java \
+classpath/gnu/xml/stream/SAXParserFactory.java \
+classpath/gnu/xml/stream/StartDocumentImpl.java \
+classpath/gnu/xml/stream/StartElementImpl.java \
+classpath/gnu/xml/stream/UnicodeReader.java \
+classpath/gnu/xml/stream/XIncludeFilter.java \
+classpath/gnu/xml/stream/XMLEventAllocatorImpl.java \
+classpath/gnu/xml/stream/XMLEventFactoryImpl.java \
+classpath/gnu/xml/stream/XMLEventImpl.java \
+classpath/gnu/xml/stream/XMLEventReaderImpl.java \
+classpath/gnu/xml/stream/XMLEventWriterImpl.java \
+classpath/gnu/xml/stream/XMLInputFactoryImpl.java \
+classpath/gnu/xml/stream/XMLOutputFactoryImpl.java \
+classpath/gnu/xml/stream/XMLParser.java \
+classpath/gnu/xml/stream/XMLStreamWriterImpl.java \
+classpath/gnu/xml/transform/AbstractNumberNode.java \
+classpath/gnu/xml/transform/ApplyImportsNode.java \
+classpath/gnu/xml/transform/ApplyTemplatesNode.java \
+classpath/gnu/xml/transform/AttributeNode.java \
+classpath/gnu/xml/transform/AttributeSet.java \
+classpath/gnu/xml/transform/Bindings.java \
+classpath/gnu/xml/transform/CallTemplateNode.java \
+classpath/gnu/xml/transform/ChooseNode.java \
+classpath/gnu/xml/transform/CommentNode.java \
+classpath/gnu/xml/transform/CopyNode.java \
+classpath/gnu/xml/transform/CopyOfNode.java \
+classpath/gnu/xml/transform/CurrentFunction.java \
+classpath/gnu/xml/transform/DOMSourceLocator.java \
+classpath/gnu/xml/transform/DocumentFunction.java \
+classpath/gnu/xml/transform/ElementAvailableFunction.java \
+classpath/gnu/xml/transform/ElementNode.java \
+classpath/gnu/xml/transform/ErrorListenerErrorHandler.java \
+classpath/gnu/xml/transform/ForEachNode.java \
+classpath/gnu/xml/transform/FormatNumberFunction.java \
+classpath/gnu/xml/transform/FunctionAvailableFunction.java \
+classpath/gnu/xml/transform/GenerateIdFunction.java \
+classpath/gnu/xml/transform/IfNode.java \
+classpath/gnu/xml/transform/Key.java \
+classpath/gnu/xml/transform/KeyFunction.java \
+classpath/gnu/xml/transform/LiteralNode.java \
+classpath/gnu/xml/transform/MessageNode.java \
+classpath/gnu/xml/transform/NamespaceProxy.java \
+classpath/gnu/xml/transform/NodeNumberNode.java \
+classpath/gnu/xml/transform/NumberNode.java \
+classpath/gnu/xml/transform/OtherwiseNode.java \
+classpath/gnu/xml/transform/ParameterNode.java \
+classpath/gnu/xml/transform/ProcessingInstructionNode.java \
+classpath/gnu/xml/transform/SAXSerializer.java \
+classpath/gnu/xml/transform/SortKey.java \
+classpath/gnu/xml/transform/StreamSerializer.java \
+classpath/gnu/xml/transform/StrippingInstruction.java \
+classpath/gnu/xml/transform/Stylesheet.java \
+classpath/gnu/xml/transform/SystemPropertyFunction.java \
+classpath/gnu/xml/transform/Template.java \
+classpath/gnu/xml/transform/TemplateNode.java \
+classpath/gnu/xml/transform/TemplatesImpl.java \
+classpath/gnu/xml/transform/TextNode.java \
+classpath/gnu/xml/transform/TransformerFactoryImpl.java \
+classpath/gnu/xml/transform/TransformerImpl.java \
+classpath/gnu/xml/transform/TransformerOutputProperties.java \
+classpath/gnu/xml/transform/URIResolverEntityResolver.java \
+classpath/gnu/xml/transform/UnparsedEntityUriFunction.java \
+classpath/gnu/xml/transform/ValueOfNode.java \
+classpath/gnu/xml/transform/WhenNode.java \
+classpath/gnu/xml/transform/WithParam.java \
+classpath/gnu/xml/transform/XSLComparator.java \
+classpath/gnu/xml/transform/XSLURIResolver.java \
+classpath/gnu/xml/util/DoParse.java \
+classpath/gnu/xml/util/DomParser.java \
+classpath/gnu/xml/util/Resolver.java \
+classpath/gnu/xml/util/SAXNullTransformerFactory.java \
+classpath/gnu/xml/util/XCat.java \
+classpath/gnu/xml/util/XHTMLWriter.java \
+classpath/gnu/xml/util/XMLWriter.java \
+classpath/gnu/xml/validation/datatype/Annotation.java \
+classpath/gnu/xml/validation/datatype/AnySimpleType.java \
+classpath/gnu/xml/validation/datatype/AnyType.java \
+classpath/gnu/xml/validation/datatype/AnyURIType.java \
+classpath/gnu/xml/validation/datatype/AtomicSimpleType.java \
+classpath/gnu/xml/validation/datatype/Base64BinaryType.java \
+classpath/gnu/xml/validation/datatype/BooleanType.java \
+classpath/gnu/xml/validation/datatype/ByteType.java \
+classpath/gnu/xml/validation/datatype/DateTimeType.java \
+classpath/gnu/xml/validation/datatype/DateType.java \
+classpath/gnu/xml/validation/datatype/DecimalType.java \
+classpath/gnu/xml/validation/datatype/DoubleType.java \
+classpath/gnu/xml/validation/datatype/DurationType.java \
+classpath/gnu/xml/validation/datatype/EntitiesType.java \
+classpath/gnu/xml/validation/datatype/EntityType.java \
+classpath/gnu/xml/validation/datatype/EnumerationFacet.java \
+classpath/gnu/xml/validation/datatype/Facet.java \
+classpath/gnu/xml/validation/datatype/FloatType.java \
+classpath/gnu/xml/validation/datatype/FractionDigitsFacet.java \
+classpath/gnu/xml/validation/datatype/GDayType.java \
+classpath/gnu/xml/validation/datatype/GMonthDayType.java \
+classpath/gnu/xml/validation/datatype/GMonthType.java \
+classpath/gnu/xml/validation/datatype/GYearMonthType.java \
+classpath/gnu/xml/validation/datatype/GYearType.java \
+classpath/gnu/xml/validation/datatype/HexBinaryType.java \
+classpath/gnu/xml/validation/datatype/IDRefType.java \
+classpath/gnu/xml/validation/datatype/IDRefsType.java \
+classpath/gnu/xml/validation/datatype/IDType.java \
+classpath/gnu/xml/validation/datatype/IntType.java \
+classpath/gnu/xml/validation/datatype/IntegerType.java \
+classpath/gnu/xml/validation/datatype/LanguageType.java \
+classpath/gnu/xml/validation/datatype/LengthFacet.java \
+classpath/gnu/xml/validation/datatype/ListSimpleType.java \
+classpath/gnu/xml/validation/datatype/LongType.java \
+classpath/gnu/xml/validation/datatype/MaxExclusiveFacet.java \
+classpath/gnu/xml/validation/datatype/MaxInclusiveFacet.java \
+classpath/gnu/xml/validation/datatype/MaxLengthFacet.java \
+classpath/gnu/xml/validation/datatype/MinExclusiveFacet.java \
+classpath/gnu/xml/validation/datatype/MinInclusiveFacet.java \
+classpath/gnu/xml/validation/datatype/MinLengthFacet.java \
+classpath/gnu/xml/validation/datatype/NCNameType.java \
+classpath/gnu/xml/validation/datatype/NMTokenType.java \
+classpath/gnu/xml/validation/datatype/NMTokensType.java \
+classpath/gnu/xml/validation/datatype/NameType.java \
+classpath/gnu/xml/validation/datatype/NegativeIntegerType.java \
+classpath/gnu/xml/validation/datatype/NonNegativeIntegerType.java \
+classpath/gnu/xml/validation/datatype/NonPositiveIntegerType.java \
+classpath/gnu/xml/validation/datatype/NormalizedStringType.java \
+classpath/gnu/xml/validation/datatype/NotationType.java \
+classpath/gnu/xml/validation/datatype/PatternFacet.java \
+classpath/gnu/xml/validation/datatype/PositiveIntegerType.java \
+classpath/gnu/xml/validation/datatype/QNameType.java \
+classpath/gnu/xml/validation/datatype/ShortType.java \
+classpath/gnu/xml/validation/datatype/SimpleType.java \
+classpath/gnu/xml/validation/datatype/StringType.java \
+classpath/gnu/xml/validation/datatype/TimeType.java \
+classpath/gnu/xml/validation/datatype/TokenType.java \
+classpath/gnu/xml/validation/datatype/TotalDigitsFacet.java \
+classpath/gnu/xml/validation/datatype/Type.java \
+classpath/gnu/xml/validation/datatype/TypeBuilder.java \
+classpath/gnu/xml/validation/datatype/TypeLibrary.java \
+classpath/gnu/xml/validation/datatype/TypeLibraryFactory.java \
+classpath/gnu/xml/validation/datatype/UnionSimpleType.java \
+classpath/gnu/xml/validation/datatype/UnsignedByteType.java \
+classpath/gnu/xml/validation/datatype/UnsignedIntType.java \
+classpath/gnu/xml/validation/datatype/UnsignedLongType.java \
+classpath/gnu/xml/validation/datatype/UnsignedShortType.java \
+classpath/gnu/xml/validation/datatype/WhiteSpaceFacet.java \
+classpath/gnu/xml/validation/relaxng/AnyNameNameClass.java \
+classpath/gnu/xml/validation/relaxng/AttributePattern.java \
+classpath/gnu/xml/validation/relaxng/ChoiceNameClass.java \
+classpath/gnu/xml/validation/relaxng/ChoicePattern.java \
+classpath/gnu/xml/validation/relaxng/DataPattern.java \
+classpath/gnu/xml/validation/relaxng/Define.java \
+classpath/gnu/xml/validation/relaxng/ElementPattern.java \
+classpath/gnu/xml/validation/relaxng/EmptyPattern.java \
+classpath/gnu/xml/validation/relaxng/FullSyntaxBuilder.java \
+classpath/gnu/xml/validation/relaxng/Grammar.java \
+classpath/gnu/xml/validation/relaxng/GrammarException.java \
+classpath/gnu/xml/validation/relaxng/GrammarValidator.java \
+classpath/gnu/xml/validation/relaxng/GroupPattern.java \
+classpath/gnu/xml/validation/relaxng/InterleavePattern.java \
+classpath/gnu/xml/validation/relaxng/ListPattern.java \
+classpath/gnu/xml/validation/relaxng/NSNameNameClass.java \
+classpath/gnu/xml/validation/relaxng/NameClass.java \
+classpath/gnu/xml/validation/relaxng/NameNameClass.java \
+classpath/gnu/xml/validation/relaxng/NotAllowedPattern.java \
+classpath/gnu/xml/validation/relaxng/OneOrMorePattern.java \
+classpath/gnu/xml/validation/relaxng/Param.java \
+classpath/gnu/xml/validation/relaxng/Pattern.java \
+classpath/gnu/xml/validation/relaxng/RELAXNGSchemaFactory.java \
+classpath/gnu/xml/validation/relaxng/RefPattern.java \
+classpath/gnu/xml/validation/relaxng/TextPattern.java \
+classpath/gnu/xml/validation/relaxng/ValuePattern.java \
+classpath/gnu/xml/validation/xmlschema/AnyAttribute.java \
+classpath/gnu/xml/validation/xmlschema/AttributeDeclaration.java \
+classpath/gnu/xml/validation/xmlschema/AttributeUse.java \
+classpath/gnu/xml/validation/xmlschema/ComplexType.java \
+classpath/gnu/xml/validation/xmlschema/ElementDeclaration.java \
+classpath/gnu/xml/validation/xmlschema/Particle.java \
+classpath/gnu/xml/validation/xmlschema/ValidationException.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchema.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchemaAttributeTypeInfo.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchemaElementTypeInfo.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchemaSchemaFactory.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchemaTypeInfo.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchemaTypeInfoProvider.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchemaValidator.java \
+classpath/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java \
+classpath/gnu/xml/xpath/AndExpr.java \
+classpath/gnu/xml/xpath/ArithmeticExpr.java \
+classpath/gnu/xml/xpath/BooleanFunction.java \
+classpath/gnu/xml/xpath/CeilingFunction.java \
+classpath/gnu/xml/xpath/ConcatFunction.java \
+classpath/gnu/xml/xpath/Constant.java \
+classpath/gnu/xml/xpath/ContainsFunction.java \
+classpath/gnu/xml/xpath/CountFunction.java \
+classpath/gnu/xml/xpath/DocumentOrderComparator.java \
+classpath/gnu/xml/xpath/EqualityExpr.java \
+classpath/gnu/xml/xpath/Expr.java \
+classpath/gnu/xml/xpath/FalseFunction.java \
+classpath/gnu/xml/xpath/FloorFunction.java \
+classpath/gnu/xml/xpath/Function.java \
+classpath/gnu/xml/xpath/FunctionCall.java \
+classpath/gnu/xml/xpath/IdFunction.java \
+classpath/gnu/xml/xpath/LangFunction.java \
+classpath/gnu/xml/xpath/LastFunction.java \
+classpath/gnu/xml/xpath/LocalNameFunction.java \
+classpath/gnu/xml/xpath/NameFunction.java \
+classpath/gnu/xml/xpath/NameTest.java \
+classpath/gnu/xml/xpath/NamespaceTest.java \
+classpath/gnu/xml/xpath/NamespaceUriFunction.java \
+classpath/gnu/xml/xpath/NegativeExpr.java \
+classpath/gnu/xml/xpath/NodeTypeTest.java \
+classpath/gnu/xml/xpath/NormalizeSpaceFunction.java \
+classpath/gnu/xml/xpath/NotFunction.java \
+classpath/gnu/xml/xpath/NumberFunction.java \
+classpath/gnu/xml/xpath/OrExpr.java \
+classpath/gnu/xml/xpath/ParenthesizedExpr.java \
+classpath/gnu/xml/xpath/Path.java \
+classpath/gnu/xml/xpath/Pattern.java \
+classpath/gnu/xml/xpath/PositionFunction.java \
+classpath/gnu/xml/xpath/Predicate.java \
+classpath/gnu/xml/xpath/RelationalExpr.java \
+classpath/gnu/xml/xpath/Root.java \
+classpath/gnu/xml/xpath/RoundFunction.java \
+classpath/gnu/xml/xpath/Selector.java \
+classpath/gnu/xml/xpath/StartsWithFunction.java \
+classpath/gnu/xml/xpath/Steps.java \
+classpath/gnu/xml/xpath/StringFunction.java \
+classpath/gnu/xml/xpath/StringLengthFunction.java \
+classpath/gnu/xml/xpath/SubstringAfterFunction.java \
+classpath/gnu/xml/xpath/SubstringBeforeFunction.java \
+classpath/gnu/xml/xpath/SubstringFunction.java \
+classpath/gnu/xml/xpath/SumFunction.java \
+classpath/gnu/xml/xpath/Test.java \
+classpath/gnu/xml/xpath/TranslateFunction.java \
+classpath/gnu/xml/xpath/TrueFunction.java \
+classpath/gnu/xml/xpath/UnionExpr.java \
+classpath/gnu/xml/xpath/VariableReference.java \
+classpath/gnu/xml/xpath/XPathFactoryImpl.java \
+classpath/gnu/xml/xpath/XPathImpl.java \
+classpath/gnu/xml/xpath/XPathParser.java \
+classpath/gnu/xml/xpath/XPathTokenizer.java
+
+gnu-xml.lo: $(gnu_xml_source_files)
+	@find classpath/lib/gnu/xml -name '*.class' > gnu-xml.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-xml.lo @gnu-xml.list
+	@rm -f gnu-xml.list
+
+java_applet_source_files = \
+classpath/java/applet/Applet.java \
+classpath/java/applet/AppletContext.java \
+classpath/java/applet/AppletStub.java \
+classpath/java/applet/AudioClip.java
+
+java_applet_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_applet_source_files)))
+
+java/applet.list: $(java_applet_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_applet_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/applet.list
+
+-include java/applet.deps
+
+
+java_awt_source_files = \
+classpath/java/awt/AWTError.java \
+classpath/java/awt/AWTEvent.java \
+classpath/java/awt/AWTEventMulticaster.java \
+classpath/java/awt/AWTException.java \
+classpath/java/awt/AWTKeyStroke.java \
+classpath/java/awt/AWTPermission.java \
+classpath/java/awt/ActiveEvent.java \
+classpath/java/awt/Adjustable.java \
+classpath/java/awt/AlphaComposite.java \
+classpath/java/awt/AttributeValue.java \
+classpath/java/awt/BasicStroke.java \
+classpath/java/awt/BorderLayout.java \
+classpath/java/awt/BufferCapabilities.java \
+classpath/java/awt/Button.java \
+classpath/java/awt/Canvas.java \
+classpath/java/awt/CardLayout.java \
+classpath/java/awt/Checkbox.java \
+classpath/java/awt/CheckboxGroup.java \
+classpath/java/awt/CheckboxMenuItem.java \
+classpath/java/awt/Choice.java \
+classpath/java/awt/Color.java \
+classpath/java/awt/ColorPaintContext.java \
+classpath/java/awt/Component.java \
+classpath/java/awt/ComponentOrientation.java \
+classpath/java/awt/Composite.java \
+classpath/java/awt/CompositeContext.java \
+classpath/java/awt/Container.java \
+classpath/java/awt/ContainerOrderFocusTraversalPolicy.java \
+classpath/java/awt/Cursor.java \
+classpath/java/awt/DefaultFocusTraversalPolicy.java \
+classpath/java/awt/DefaultKeyboardFocusManager.java \
+classpath/java/awt/Dialog.java \
+classpath/java/awt/Dimension.java \
+classpath/java/awt/DisplayMode.java \
+classpath/java/awt/Event.java \
+classpath/java/awt/EventDispatchThread.java \
+classpath/java/awt/EventQueue.java \
+classpath/java/awt/FileDialog.java \
+classpath/java/awt/FlowLayout.java \
+classpath/java/awt/FocusTraversalPolicy.java \
+classpath/java/awt/Font.java \
+classpath/java/awt/FontFormatException.java \
+classpath/java/awt/FontMetrics.java \
+classpath/java/awt/Frame.java \
+classpath/java/awt/GradientPaint.java \
+classpath/java/awt/Graphics.java \
+classpath/java/awt/Graphics2D.java \
+classpath/java/awt/GraphicsConfigTemplate.java \
+classpath/java/awt/GraphicsConfiguration.java \
+classpath/java/awt/GraphicsDevice.java \
+classpath/java/awt/GraphicsEnvironment.java \
+classpath/java/awt/GridBagConstraints.java \
+classpath/java/awt/GridBagLayout.java \
+classpath/java/awt/GridBagLayoutInfo.java \
+classpath/java/awt/GridLayout.java \
+classpath/java/awt/HeadlessException.java \
+classpath/java/awt/IllegalComponentStateException.java \
+classpath/java/awt/Image.java \
+classpath/java/awt/ImageCapabilities.java \
+classpath/java/awt/Insets.java \
+classpath/java/awt/ItemSelectable.java \
+classpath/java/awt/JobAttributes.java \
+classpath/java/awt/KeyEventDispatcher.java \
+classpath/java/awt/KeyEventPostProcessor.java \
+classpath/java/awt/KeyboardFocusManager.java \
+classpath/java/awt/Label.java \
+classpath/java/awt/LayoutManager.java \
+classpath/java/awt/LayoutManager2.java \
+classpath/java/awt/LightweightDispatcher.java \
+classpath/java/awt/List.java \
+classpath/java/awt/MediaTracker.java \
+classpath/java/awt/Menu.java \
+classpath/java/awt/MenuBar.java \
+classpath/java/awt/MenuComponent.java \
+classpath/java/awt/MenuContainer.java \
+classpath/java/awt/MenuItem.java \
+classpath/java/awt/MenuShortcut.java \
+classpath/java/awt/MouseInfo.java \
+classpath/java/awt/PageAttributes.java \
+classpath/java/awt/Paint.java \
+classpath/java/awt/PaintContext.java \
+classpath/java/awt/Panel.java \
+classpath/java/awt/Point.java \
+classpath/java/awt/PointerInfo.java \
+classpath/java/awt/Polygon.java \
+classpath/java/awt/PopupMenu.java \
+classpath/java/awt/PrintGraphics.java \
+classpath/java/awt/PrintJob.java \
+classpath/java/awt/Rectangle.java \
+classpath/java/awt/RenderingHints.java \
+classpath/java/awt/Robot.java \
+classpath/java/awt/ScrollPane.java \
+classpath/java/awt/ScrollPaneAdjustable.java \
+classpath/java/awt/Scrollbar.java \
+classpath/java/awt/Shape.java \
+classpath/java/awt/Stroke.java \
+classpath/java/awt/SystemColor.java \
+classpath/java/awt/TextArea.java \
+classpath/java/awt/TextComponent.java \
+classpath/java/awt/TextField.java \
+classpath/java/awt/TexturePaint.java \
+classpath/java/awt/Toolkit.java \
+classpath/java/awt/Transparency.java \
+classpath/java/awt/Window.java
+
+java_awt_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_source_files)))
+
+java/awt.list: $(java_awt_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt.list
+
+-include java/awt.deps
+
+
+java_awt_color_source_files = \
+classpath/java/awt/color/CMMException.java \
+classpath/java/awt/color/ColorSpace.java \
+classpath/java/awt/color/ICC_ColorSpace.java \
+classpath/java/awt/color/ICC_Profile.java \
+classpath/java/awt/color/ICC_ProfileGray.java \
+classpath/java/awt/color/ICC_ProfileRGB.java \
+classpath/java/awt/color/ProfileDataException.java
+
+java_awt_color_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_color_source_files)))
+
+java/awt/color.list: $(java_awt_color_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_color_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/color.list
+
+-include java/awt/color.deps
+
+
+java_awt_datatransfer_source_files = \
+classpath/java/awt/datatransfer/Clipboard.java \
+classpath/java/awt/datatransfer/ClipboardOwner.java \
+classpath/java/awt/datatransfer/DataFlavor.java \
+classpath/java/awt/datatransfer/FlavorEvent.java \
+classpath/java/awt/datatransfer/FlavorListener.java \
+classpath/java/awt/datatransfer/FlavorMap.java \
+classpath/java/awt/datatransfer/FlavorTable.java \
+classpath/java/awt/datatransfer/MimeTypeParseException.java \
+classpath/java/awt/datatransfer/StringSelection.java \
+classpath/java/awt/datatransfer/SystemFlavorMap.java \
+classpath/java/awt/datatransfer/Transferable.java \
+classpath/java/awt/datatransfer/UnsupportedFlavorException.java
+
+java_awt_datatransfer_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_datatransfer_source_files)))
+
+java/awt/datatransfer.list: $(java_awt_datatransfer_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_datatransfer_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/datatransfer.list
+
+-include java/awt/datatransfer.deps
+
+
+java_awt_dnd_source_files = \
+classpath/java/awt/dnd/Autoscroll.java \
+classpath/java/awt/dnd/DnDConstants.java \
+classpath/java/awt/dnd/DnDEventMulticaster.java \
+classpath/java/awt/dnd/DragGestureEvent.java \
+classpath/java/awt/dnd/DragGestureListener.java \
+classpath/java/awt/dnd/DragGestureRecognizer.java \
+classpath/java/awt/dnd/DragSource.java \
+classpath/java/awt/dnd/DragSourceAdapter.java \
+classpath/java/awt/dnd/DragSourceContext.java \
+classpath/java/awt/dnd/DragSourceDragEvent.java \
+classpath/java/awt/dnd/DragSourceDropEvent.java \
+classpath/java/awt/dnd/DragSourceEvent.java \
+classpath/java/awt/dnd/DragSourceListener.java \
+classpath/java/awt/dnd/DragSourceMotionListener.java \
+classpath/java/awt/dnd/DropTarget.java \
+classpath/java/awt/dnd/DropTargetAdapter.java \
+classpath/java/awt/dnd/DropTargetContext.java \
+classpath/java/awt/dnd/DropTargetDragEvent.java \
+classpath/java/awt/dnd/DropTargetDropEvent.java \
+classpath/java/awt/dnd/DropTargetEvent.java \
+classpath/java/awt/dnd/DropTargetListener.java \
+classpath/java/awt/dnd/InvalidDnDOperationException.java \
+classpath/java/awt/dnd/MouseDragGestureRecognizer.java
+
+java_awt_dnd_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_dnd_source_files)))
+
+java/awt/dnd.list: $(java_awt_dnd_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_dnd_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/dnd.list
+
+-include java/awt/dnd.deps
+
+
+java_awt_dnd_peer_source_files = \
+classpath/java/awt/dnd/peer/DragSourceContextPeer.java \
+classpath/java/awt/dnd/peer/DropTargetContextPeer.java \
+classpath/java/awt/dnd/peer/DropTargetPeer.java
+
+java_awt_dnd_peer_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_dnd_peer_source_files)))
+
+java/awt/dnd/peer.list: $(java_awt_dnd_peer_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_dnd_peer_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/dnd/peer.list
+
+-include java/awt/dnd/peer.deps
+
+
+java_awt_event_source_files = \
+classpath/java/awt/event/AWTEventListener.java \
+classpath/java/awt/event/AWTEventListenerProxy.java \
+classpath/java/awt/event/ActionEvent.java \
+classpath/java/awt/event/ActionListener.java \
+classpath/java/awt/event/AdjustmentEvent.java \
+classpath/java/awt/event/AdjustmentListener.java \
+classpath/java/awt/event/ComponentAdapter.java \
+classpath/java/awt/event/ComponentEvent.java \
+classpath/java/awt/event/ComponentListener.java \
+classpath/java/awt/event/ContainerAdapter.java \
+classpath/java/awt/event/ContainerEvent.java \
+classpath/java/awt/event/ContainerListener.java \
+classpath/java/awt/event/FocusAdapter.java \
+classpath/java/awt/event/FocusEvent.java \
+classpath/java/awt/event/FocusListener.java \
+classpath/java/awt/event/HierarchyBoundsAdapter.java \
+classpath/java/awt/event/HierarchyBoundsListener.java \
+classpath/java/awt/event/HierarchyEvent.java \
+classpath/java/awt/event/HierarchyListener.java \
+classpath/java/awt/event/InputEvent.java \
+classpath/java/awt/event/InputMethodEvent.java \
+classpath/java/awt/event/InputMethodListener.java \
+classpath/java/awt/event/InvocationEvent.java \
+classpath/java/awt/event/ItemEvent.java \
+classpath/java/awt/event/ItemListener.java \
+classpath/java/awt/event/KeyAdapter.java \
+classpath/java/awt/event/KeyEvent.java \
+classpath/java/awt/event/KeyListener.java \
+classpath/java/awt/event/MouseAdapter.java \
+classpath/java/awt/event/MouseEvent.java \
+classpath/java/awt/event/MouseListener.java \
+classpath/java/awt/event/MouseMotionAdapter.java \
+classpath/java/awt/event/MouseMotionListener.java \
+classpath/java/awt/event/MouseWheelEvent.java \
+classpath/java/awt/event/MouseWheelListener.java \
+classpath/java/awt/event/PaintEvent.java \
+classpath/java/awt/event/TextEvent.java \
+classpath/java/awt/event/TextListener.java \
+classpath/java/awt/event/WindowAdapter.java \
+classpath/java/awt/event/WindowEvent.java \
+classpath/java/awt/event/WindowFocusListener.java \
+classpath/java/awt/event/WindowListener.java \
+classpath/java/awt/event/WindowStateListener.java
+
+java_awt_event_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_event_source_files)))
+
+java/awt/event.list: $(java_awt_event_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_event_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/event.list
+
+-include java/awt/event.deps
+
+
+java_awt_font_source_files = \
+classpath/java/awt/font/FontRenderContext.java \
+classpath/java/awt/font/GlyphJustificationInfo.java \
+classpath/java/awt/font/GlyphMetrics.java \
+classpath/java/awt/font/GlyphVector.java \
+classpath/java/awt/font/GraphicAttribute.java \
+classpath/java/awt/font/ImageGraphicAttribute.java \
+classpath/java/awt/font/LineBreakMeasurer.java \
+classpath/java/awt/font/LineMetrics.java \
+classpath/java/awt/font/MultipleMaster.java \
+classpath/java/awt/font/NumericShaper.java \
+classpath/java/awt/font/OpenType.java \
+classpath/java/awt/font/ShapeGraphicAttribute.java \
+classpath/java/awt/font/TextAttribute.java \
+classpath/java/awt/font/TextHitInfo.java \
+classpath/java/awt/font/TextLayout.java \
+classpath/java/awt/font/TextMeasurer.java \
+classpath/java/awt/font/TransformAttribute.java
+
+java_awt_font_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_font_source_files)))
+
+java/awt/font.list: $(java_awt_font_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_font_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/font.list
+
+-include java/awt/font.deps
+
+
+java_awt_geom_source_files = \
+classpath/java/awt/geom/AffineTransform.java \
+classpath/java/awt/geom/Arc2D.java \
+classpath/java/awt/geom/Area.java \
+classpath/java/awt/geom/CubicCurve2D.java \
+classpath/java/awt/geom/Dimension2D.java \
+classpath/java/awt/geom/Ellipse2D.java \
+classpath/java/awt/geom/FlatteningPathIterator.java \
+classpath/java/awt/geom/GeneralPath.java \
+classpath/java/awt/geom/IllegalPathStateException.java \
+classpath/java/awt/geom/Line2D.java \
+classpath/java/awt/geom/NoninvertibleTransformException.java \
+classpath/java/awt/geom/PathIterator.java \
+classpath/java/awt/geom/Point2D.java \
+classpath/java/awt/geom/QuadCurve2D.java \
+classpath/java/awt/geom/Rectangle2D.java \
+classpath/java/awt/geom/RectangularShape.java \
+classpath/java/awt/geom/RoundRectangle2D.java
+
+java_awt_geom_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_geom_source_files)))
+
+java/awt/geom.list: $(java_awt_geom_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_geom_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/geom.list
+
+-include java/awt/geom.deps
+
+
+java_awt_im_source_files = \
+classpath/java/awt/im/InputContext.java \
+classpath/java/awt/im/InputMethodHighlight.java \
+classpath/java/awt/im/InputMethodRequests.java \
+classpath/java/awt/im/InputSubset.java
+
+java_awt_im_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_im_source_files)))
+
+java/awt/im.list: $(java_awt_im_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_im_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/im.list
+
+-include java/awt/im.deps
+
+
+java_awt_im_spi_source_files = \
+classpath/java/awt/im/spi/InputMethod.java \
+classpath/java/awt/im/spi/InputMethodContext.java \
+classpath/java/awt/im/spi/InputMethodDescriptor.java
+
+java_awt_im_spi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_im_spi_source_files)))
+
+java/awt/im/spi.list: $(java_awt_im_spi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_im_spi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/im/spi.list
+
+-include java/awt/im/spi.deps
+
+
+java_awt_image_source_files = \
+classpath/java/awt/image/AffineTransformOp.java \
+classpath/java/awt/image/AreaAveragingScaleFilter.java \
+classpath/java/awt/image/BandCombineOp.java \
+classpath/java/awt/image/BandedSampleModel.java \
+classpath/java/awt/image/BufferStrategy.java \
+classpath/java/awt/image/BufferedImage.java \
+classpath/java/awt/image/BufferedImageFilter.java \
+classpath/java/awt/image/BufferedImageOp.java \
+classpath/java/awt/image/ByteLookupTable.java \
+classpath/java/awt/image/ColorConvertOp.java \
+classpath/java/awt/image/ColorModel.java \
+classpath/java/awt/image/ComponentColorModel.java \
+classpath/java/awt/image/ComponentSampleModel.java \
+classpath/java/awt/image/ConvolveOp.java \
+classpath/java/awt/image/CropImageFilter.java \
+classpath/java/awt/image/DataBuffer.java \
+classpath/java/awt/image/DataBufferByte.java \
+classpath/java/awt/image/DataBufferDouble.java \
+classpath/java/awt/image/DataBufferFloat.java \
+classpath/java/awt/image/DataBufferInt.java \
+classpath/java/awt/image/DataBufferShort.java \
+classpath/java/awt/image/DataBufferUShort.java \
+classpath/java/awt/image/DirectColorModel.java \
+classpath/java/awt/image/FilteredImageSource.java \
+classpath/java/awt/image/ImageConsumer.java \
+classpath/java/awt/image/ImageFilter.java \
+classpath/java/awt/image/ImageObserver.java \
+classpath/java/awt/image/ImageProducer.java \
+classpath/java/awt/image/ImagingOpException.java \
+classpath/java/awt/image/IndexColorModel.java \
+classpath/java/awt/image/Kernel.java \
+classpath/java/awt/image/LookupOp.java \
+classpath/java/awt/image/LookupTable.java \
+classpath/java/awt/image/MemoryImageSource.java \
+classpath/java/awt/image/MultiPixelPackedSampleModel.java \
+classpath/java/awt/image/PackedColorModel.java \
+classpath/java/awt/image/PixelGrabber.java \
+classpath/java/awt/image/PixelInterleavedSampleModel.java \
+classpath/java/awt/image/RGBImageFilter.java \
+classpath/java/awt/image/Raster.java \
+classpath/java/awt/image/RasterFormatException.java \
+classpath/java/awt/image/RasterOp.java \
+classpath/java/awt/image/RenderedImage.java \
+classpath/java/awt/image/ReplicateScaleFilter.java \
+classpath/java/awt/image/RescaleOp.java \
+classpath/java/awt/image/SampleModel.java \
+classpath/java/awt/image/ShortLookupTable.java \
+classpath/java/awt/image/SinglePixelPackedSampleModel.java \
+classpath/java/awt/image/TileObserver.java \
+classpath/java/awt/image/VolatileImage.java \
+classpath/java/awt/image/WritableRaster.java \
+classpath/java/awt/image/WritableRenderedImage.java
+
+java_awt_image_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_image_source_files)))
+
+java/awt/image.list: $(java_awt_image_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_image_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/image.list
+
+-include java/awt/image.deps
+
+
+java_awt_image_renderable_source_files = \
+classpath/java/awt/image/renderable/ContextualRenderedImageFactory.java \
+classpath/java/awt/image/renderable/ParameterBlock.java \
+classpath/java/awt/image/renderable/RenderContext.java \
+classpath/java/awt/image/renderable/RenderableImage.java \
+classpath/java/awt/image/renderable/RenderableImageOp.java \
+classpath/java/awt/image/renderable/RenderableImageProducer.java \
+classpath/java/awt/image/renderable/RenderedImageFactory.java
+
+java_awt_image_renderable_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_image_renderable_source_files)))
+
+java/awt/image/renderable.list: $(java_awt_image_renderable_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_image_renderable_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/image/renderable.list
+
+-include java/awt/image/renderable.deps
+
+
+java_awt_peer_source_files = \
+classpath/java/awt/peer/ButtonPeer.java \
+classpath/java/awt/peer/CanvasPeer.java \
+classpath/java/awt/peer/CheckboxMenuItemPeer.java \
+classpath/java/awt/peer/CheckboxPeer.java \
+classpath/java/awt/peer/ChoicePeer.java \
+classpath/java/awt/peer/ComponentPeer.java \
+classpath/java/awt/peer/ContainerPeer.java \
+classpath/java/awt/peer/DialogPeer.java \
+classpath/java/awt/peer/FileDialogPeer.java \
+classpath/java/awt/peer/FontPeer.java \
+classpath/java/awt/peer/FramePeer.java \
+classpath/java/awt/peer/LabelPeer.java \
+classpath/java/awt/peer/LightweightPeer.java \
+classpath/java/awt/peer/ListPeer.java \
+classpath/java/awt/peer/MenuBarPeer.java \
+classpath/java/awt/peer/MenuComponentPeer.java \
+classpath/java/awt/peer/MenuItemPeer.java \
+classpath/java/awt/peer/MenuPeer.java \
+classpath/java/awt/peer/MouseInfoPeer.java \
+classpath/java/awt/peer/PanelPeer.java \
+classpath/java/awt/peer/PopupMenuPeer.java \
+classpath/java/awt/peer/RobotPeer.java \
+classpath/java/awt/peer/ScrollPanePeer.java \
+classpath/java/awt/peer/ScrollbarPeer.java \
+classpath/java/awt/peer/TextAreaPeer.java \
+classpath/java/awt/peer/TextComponentPeer.java \
+classpath/java/awt/peer/TextFieldPeer.java \
+classpath/java/awt/peer/WindowPeer.java
+
+java_awt_peer_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_peer_source_files)))
+
+java/awt/peer.list: $(java_awt_peer_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_peer_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/peer.list
+
+-include java/awt/peer.deps
+
+
+java_awt_print_source_files = \
+classpath/java/awt/print/Book.java \
+classpath/java/awt/print/NoPrinterJob.java \
+classpath/java/awt/print/PageFormat.java \
+classpath/java/awt/print/Pageable.java \
+classpath/java/awt/print/Paper.java \
+classpath/java/awt/print/Printable.java \
+classpath/java/awt/print/PrinterAbortException.java \
+classpath/java/awt/print/PrinterException.java \
+classpath/java/awt/print/PrinterGraphics.java \
+classpath/java/awt/print/PrinterIOException.java \
+classpath/java/awt/print/PrinterJob.java
+
+java_awt_print_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_awt_print_source_files)))
+
+java/awt/print.list: $(java_awt_print_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_awt_print_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/awt/print.list
+
+-include java/awt/print.deps
+
+
+java_beans_source_files = \
+classpath/java/beans/AppletInitializer.java \
+classpath/java/beans/BeanDescriptor.java \
+classpath/java/beans/BeanInfo.java \
+classpath/java/beans/Beans.java \
+classpath/java/beans/Customizer.java \
+classpath/java/beans/DefaultPersistenceDelegate.java \
+classpath/java/beans/DesignMode.java \
+classpath/java/beans/Encoder.java \
+classpath/java/beans/EventHandler.java \
+classpath/java/beans/EventSetDescriptor.java \
+classpath/java/beans/ExceptionListener.java \
+classpath/java/beans/Expression.java \
+classpath/java/beans/FeatureDescriptor.java \
+classpath/java/beans/IndexedPropertyChangeEvent.java \
+classpath/java/beans/IndexedPropertyDescriptor.java \
+classpath/java/beans/IntrospectionException.java \
+classpath/java/beans/Introspector.java \
+classpath/java/beans/MethodDescriptor.java \
+classpath/java/beans/ParameterDescriptor.java \
+classpath/java/beans/PersistenceDelegate.java \
+classpath/java/beans/PropertyChangeEvent.java \
+classpath/java/beans/PropertyChangeListener.java \
+classpath/java/beans/PropertyChangeListenerProxy.java \
+classpath/java/beans/PropertyChangeSupport.java \
+classpath/java/beans/PropertyDescriptor.java \
+classpath/java/beans/PropertyEditor.java \
+classpath/java/beans/PropertyEditorManager.java \
+classpath/java/beans/PropertyEditorSupport.java \
+classpath/java/beans/PropertyVetoException.java \
+classpath/java/beans/SimpleBeanInfo.java \
+classpath/java/beans/Statement.java \
+classpath/java/beans/VetoableChangeListener.java \
+classpath/java/beans/VetoableChangeListenerProxy.java \
+classpath/java/beans/VetoableChangeSupport.java \
+classpath/java/beans/Visibility.java \
+classpath/java/beans/XMLDecoder.java \
+classpath/java/beans/XMLEncoder.java
+
+java_beans_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_beans_source_files)))
+
+java/beans.list: $(java_beans_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_beans_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/beans.list
+
+-include java/beans.deps
+
+
+java_beans_beancontext_source_files = \
+classpath/java/beans/beancontext/BeanContext.java \
+classpath/java/beans/beancontext/BeanContextChild.java \
+classpath/java/beans/beancontext/BeanContextChildComponentProxy.java \
+classpath/java/beans/beancontext/BeanContextChildSupport.java \
+classpath/java/beans/beancontext/BeanContextContainerProxy.java \
+classpath/java/beans/beancontext/BeanContextEvent.java \
+classpath/java/beans/beancontext/BeanContextMembershipEvent.java \
+classpath/java/beans/beancontext/BeanContextMembershipListener.java \
+classpath/java/beans/beancontext/BeanContextProxy.java \
+classpath/java/beans/beancontext/BeanContextServiceAvailableEvent.java \
+classpath/java/beans/beancontext/BeanContextServiceProvider.java \
+classpath/java/beans/beancontext/BeanContextServiceProviderBeanInfo.java \
+classpath/java/beans/beancontext/BeanContextServiceRevokedEvent.java \
+classpath/java/beans/beancontext/BeanContextServiceRevokedListener.java \
+classpath/java/beans/beancontext/BeanContextServices.java \
+classpath/java/beans/beancontext/BeanContextServicesListener.java \
+classpath/java/beans/beancontext/BeanContextServicesSupport.java \
+classpath/java/beans/beancontext/BeanContextSupport.java
+
+java_beans_beancontext_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_beans_beancontext_source_files)))
+
+java/beans/beancontext.list: $(java_beans_beancontext_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_beans_beancontext_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/beans/beancontext.list
+
+-include java/beans/beancontext.deps
+
+
+java_io_source_files = \
+java/io/BufferedInputStream.java \
+classpath/java/io/BufferedOutputStream.java \
+classpath/java/io/BufferedReader.java \
+classpath/java/io/BufferedWriter.java \
+classpath/java/io/ByteArrayInputStream.java \
+classpath/java/io/ByteArrayOutputStream.java \
+classpath/java/io/CharArrayReader.java \
+classpath/java/io/CharArrayWriter.java \
+classpath/java/io/CharConversionException.java \
+classpath/java/io/Closeable.java \
+classpath/java/io/DataInput.java \
+classpath/java/io/DataInputStream.java \
+classpath/java/io/DataOutput.java \
+classpath/java/io/DataOutputStream.java \
+classpath/java/io/DeleteFileHelper.java \
+classpath/java/io/EOFException.java \
+classpath/java/io/Externalizable.java \
+java/io/File.java \
+classpath/java/io/FileDescriptor.java \
+classpath/java/io/FileFilter.java \
+classpath/java/io/FileInputStream.java \
+classpath/java/io/FileNotFoundException.java \
+classpath/java/io/FileOutputStream.java \
+classpath/java/io/FilePermission.java \
+classpath/java/io/FileReader.java \
+classpath/java/io/FileWriter.java \
+classpath/java/io/FilenameFilter.java \
+classpath/java/io/FilterInputStream.java \
+classpath/java/io/FilterOutputStream.java \
+classpath/java/io/FilterReader.java \
+classpath/java/io/FilterWriter.java \
+classpath/java/io/Flushable.java \
+classpath/java/io/IOException.java \
+classpath/java/io/InputStream.java \
+java/io/InputStreamReader.java \
+classpath/java/io/InterruptedIOException.java \
+classpath/java/io/InvalidClassException.java \
+classpath/java/io/InvalidObjectException.java \
+classpath/java/io/LineNumberInputStream.java \
+classpath/java/io/LineNumberReader.java \
+classpath/java/io/NotActiveException.java \
+classpath/java/io/NotSerializableException.java \
+classpath/java/io/ObjectInput.java \
+java/io/ObjectInputStream.java \
+classpath/java/io/ObjectInputValidation.java \
+classpath/java/io/ObjectOutput.java \
+classpath/java/io/ObjectOutputStream.java \
+classpath/java/io/ObjectStreamClass.java \
+classpath/java/io/ObjectStreamConstants.java \
+classpath/java/io/ObjectStreamException.java \
+classpath/java/io/ObjectStreamField.java \
+classpath/java/io/OptionalDataException.java \
+classpath/java/io/OutputStream.java \
+java/io/OutputStreamWriter.java \
+classpath/java/io/PipedInputStream.java \
+classpath/java/io/PipedOutputStream.java \
+classpath/java/io/PipedReader.java \
+classpath/java/io/PipedWriter.java \
+java/io/PrintStream.java \
+classpath/java/io/PrintWriter.java \
+classpath/java/io/PushbackInputStream.java \
+classpath/java/io/PushbackReader.java \
+classpath/java/io/RandomAccessFile.java \
+classpath/java/io/Reader.java \
+classpath/java/io/SequenceInputStream.java \
+classpath/java/io/Serializable.java \
+classpath/java/io/SerializablePermission.java \
+classpath/java/io/StreamCorruptedException.java \
+classpath/java/io/StreamTokenizer.java \
+classpath/java/io/StringBufferInputStream.java \
+classpath/java/io/StringReader.java \
+classpath/java/io/StringWriter.java \
+classpath/java/io/SyncFailedException.java \
+classpath/java/io/UTFDataFormatException.java \
+classpath/java/io/UnsupportedEncodingException.java \
+java/io/VMObjectStreamClass.java \
+classpath/java/io/WriteAbortedException.java \
+classpath/java/io/Writer.java
+
+java_io_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_io_source_files)))
+
+java/io.list: $(java_io_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_io_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/io.list
+
+-include java/io.deps
+
+
+java_lang_source_files = \
+classpath/java/lang/AbstractMethodError.java \
+classpath/java/lang/Appendable.java \
+classpath/java/lang/ArithmeticException.java \
+classpath/java/lang/ArrayIndexOutOfBoundsException.java \
+classpath/java/lang/ArrayStoreException.java \
+classpath/java/lang/AssertionError.java \
+classpath/java/lang/Boolean.java \
+classpath/java/lang/Byte.java \
+classpath/java/lang/CharSequence.java \
+java/lang/Character.java \
+classpath/java/lang/ClassCastException.java \
+classpath/java/lang/ClassCircularityError.java \
+classpath/java/lang/ClassFormatError.java \
+java/lang/ClassLoader.java \
+classpath/java/lang/ClassNotFoundException.java \
+classpath/java/lang/CloneNotSupportedException.java \
+classpath/java/lang/Cloneable.java \
+classpath/java/lang/Comparable.java \
+classpath/java/lang/Compiler.java \
+java/lang/ConcreteProcess.java \
+classpath/java/lang/Double.java \
+classpath/java/lang/Enum.java \
+classpath/java/lang/EnumConstantNotPresentException.java \
+classpath/java/lang/Error.java \
+classpath/java/lang/Exception.java \
+classpath/java/lang/ExceptionInInitializerError.java \
+classpath/java/lang/Float.java \
+classpath/java/lang/IllegalAccessError.java \
+classpath/java/lang/IllegalAccessException.java \
+classpath/java/lang/IllegalArgumentException.java \
+classpath/java/lang/IllegalMonitorStateException.java \
+classpath/java/lang/IllegalStateException.java \
+classpath/java/lang/IllegalThreadStateException.java \
+classpath/java/lang/IncompatibleClassChangeError.java \
+classpath/java/lang/IndexOutOfBoundsException.java \
+classpath/java/lang/InheritableThreadLocal.java \
+classpath/java/lang/InstantiationError.java \
+classpath/java/lang/InstantiationException.java \
+classpath/java/lang/Integer.java \
+classpath/java/lang/InternalError.java \
+classpath/java/lang/InterruptedException.java \
+classpath/java/lang/Iterable.java \
+classpath/java/lang/LinkageError.java \
+classpath/java/lang/Long.java \
+java/lang/Math.java \
+classpath/java/lang/NegativeArraySizeException.java \
+classpath/java/lang/NoClassDefFoundError.java \
+classpath/java/lang/NoSuchFieldError.java \
+classpath/java/lang/NoSuchFieldException.java \
+classpath/java/lang/NoSuchMethodError.java \
+classpath/java/lang/NoSuchMethodException.java \
+classpath/java/lang/NullPointerException.java \
+classpath/java/lang/Number.java \
+classpath/java/lang/NumberFormatException.java \
+classpath/java/lang/OutOfMemoryError.java \
+java/lang/Package.java \
+classpath/java/lang/Process.java \
+classpath/java/lang/Readable.java \
+classpath/java/lang/Runnable.java \
+java/lang/Runtime.java \
+classpath/java/lang/RuntimeException.java \
+classpath/java/lang/RuntimePermission.java \
+classpath/java/lang/SecurityException.java \
+java/lang/SecurityManager.java \
+classpath/java/lang/Short.java \
+classpath/java/lang/StackOverflowError.java \
+classpath/java/lang/StackTraceElement.java \
+classpath/java/lang/StrictMath.java \
+java/lang/String.java \
+java/lang/StringBuffer.java \
+java/lang/StringBuilder.java \
+classpath/java/lang/StringIndexOutOfBoundsException.java \
+java/lang/System.java \
+java/lang/Thread.java \
+classpath/java/lang/ThreadDeath.java \
+classpath/java/lang/ThreadGroup.java \
+classpath/java/lang/ThreadLocal.java \
+classpath/java/lang/Throwable.java \
+classpath/java/lang/TypeNotPresentException.java \
+classpath/java/lang/UnknownError.java \
+classpath/java/lang/UnsatisfiedLinkError.java \
+classpath/java/lang/UnsupportedClassVersionError.java \
+classpath/java/lang/UnsupportedOperationException.java \
+java/lang/VMClassLoader.java \
+java/lang/VMCompiler.java \
+java/lang/VMDouble.java \
+java/lang/VMFloat.java \
+java/lang/VMSecurityManager.java \
+java/lang/VMThrowable.java \
+classpath/java/lang/VerifyError.java \
+classpath/java/lang/VirtualMachineError.java \
+classpath/java/lang/Void.java
+
+java_lang_header_files = $(filter-out java/lang/Object.h java/lang/Class.h,$(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_source_files))))
+
+java/lang.list: $(java_lang_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_lang_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/lang.list
+
+-include java/lang.deps
+
+
+java_lang_annotation_source_files = \
+classpath/java/lang/annotation/Annotation.java \
+classpath/java/lang/annotation/AnnotationFormatError.java \
+classpath/java/lang/annotation/AnnotationTypeMismatchException.java \
+classpath/java/lang/annotation/IncompleteAnnotationException.java
+
+java_lang_annotation_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_annotation_source_files)))
+
+java/lang/annotation.list: $(java_lang_annotation_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_lang_annotation_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/lang/annotation.list
+
+-include java/lang/annotation.deps
+
+
+java_lang_instrument_source_files = \
+classpath/java/lang/instrument/ClassDefinition.java \
+classpath/java/lang/instrument/ClassFileTransformer.java \
+classpath/java/lang/instrument/IllegalClassFormatException.java \
+classpath/java/lang/instrument/Instrumentation.java \
+classpath/java/lang/instrument/UnmodifiableClassException.java
+
+java_lang_instrument_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_instrument_source_files)))
+
+java/lang/instrument.list: $(java_lang_instrument_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_lang_instrument_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/lang/instrument.list
+
+-include java/lang/instrument.deps
+
+
+java_lang_management_source_files = \
+classpath/java/lang/management/ClassLoadingMXBean.java \
+classpath/java/lang/management/CompilationMXBean.java \
+classpath/java/lang/management/GarbageCollectorMXBean.java \
+classpath/java/lang/management/ManagementFactory.java \
+classpath/java/lang/management/ManagementPermission.java \
+classpath/java/lang/management/MemoryMXBean.java \
+classpath/java/lang/management/MemoryManagerMXBean.java \
+classpath/java/lang/management/MemoryNotificationInfo.java \
+classpath/java/lang/management/MemoryPoolMXBean.java \
+classpath/java/lang/management/MemoryUsage.java \
+classpath/java/lang/management/OperatingSystemMXBean.java \
+classpath/java/lang/management/RuntimeMXBean.java \
+classpath/java/lang/management/ThreadInfo.java \
+classpath/java/lang/management/ThreadMXBean.java \
+java/lang/management/VMManagementFactory.java
+
+java_lang_management_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_management_source_files)))
+
+java/lang/management.list: $(java_lang_management_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_lang_management_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/lang/management.list
+
+-include java/lang/management.deps
+
+
+java_lang_ref_source_files = \
+classpath/java/lang/ref/PhantomReference.java \
+java/lang/ref/Reference.java \
+classpath/java/lang/ref/ReferenceQueue.java \
+classpath/java/lang/ref/SoftReference.java \
+classpath/java/lang/ref/WeakReference.java
+
+java_lang_ref_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_ref_source_files)))
+
+java/lang/ref.list: $(java_lang_ref_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_lang_ref_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/lang/ref.list
+
+-include java/lang/ref.deps
+
+
+java_lang_reflect_source_files = \
+classpath/java/lang/reflect/AccessibleObject.java \
+classpath/java/lang/reflect/AnnotatedElement.java \
+java/lang/reflect/Array.java \
+java/lang/reflect/Constructor.java \
+java/lang/reflect/Field.java \
+classpath/java/lang/reflect/GenericArrayType.java \
+classpath/java/lang/reflect/GenericDeclaration.java \
+classpath/java/lang/reflect/GenericSignatureFormatError.java \
+classpath/java/lang/reflect/InvocationHandler.java \
+classpath/java/lang/reflect/InvocationTargetException.java \
+classpath/java/lang/reflect/MalformedParameterizedTypeException.java \
+classpath/java/lang/reflect/Member.java \
+java/lang/reflect/Method.java \
+java/lang/reflect/Modifier.java \
+classpath/java/lang/reflect/ParameterizedType.java \
+classpath/java/lang/reflect/Proxy.java \
+classpath/java/lang/reflect/ReflectPermission.java \
+classpath/java/lang/reflect/Type.java \
+classpath/java/lang/reflect/TypeVariable.java \
+classpath/java/lang/reflect/UndeclaredThrowableException.java \
+java/lang/reflect/VMProxy.java \
+classpath/java/lang/reflect/WildcardType.java
+
+java_lang_reflect_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_reflect_source_files)))
+
+java/lang/reflect.list: $(java_lang_reflect_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_lang_reflect_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/lang/reflect.list
+
+-include java/lang/reflect.deps
+
+
+java_math_source_files = \
+classpath/java/math/BigDecimal.java \
+classpath/java/math/BigInteger.java \
+classpath/java/math/MathContext.java
+
+java_math_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_math_source_files)))
+
+java/math.list: $(java_math_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_math_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/math.list
+
+-include java/math.deps
+
+
+java_net_source_files = \
+classpath/java/net/Authenticator.java \
+classpath/java/net/BindException.java \
+classpath/java/net/ConnectException.java \
+classpath/java/net/ContentHandler.java \
+classpath/java/net/ContentHandlerFactory.java \
+classpath/java/net/DatagramPacket.java \
+classpath/java/net/DatagramSocket.java \
+classpath/java/net/DatagramSocketImpl.java \
+classpath/java/net/DatagramSocketImplFactory.java \
+classpath/java/net/FileNameMap.java \
+classpath/java/net/HttpURLConnection.java \
+classpath/java/net/Inet4Address.java \
+classpath/java/net/Inet6Address.java \
+java/net/InetAddress.java \
+classpath/java/net/InetSocketAddress.java \
+classpath/java/net/JarURLConnection.java \
+classpath/java/net/MalformedURLException.java \
+classpath/java/net/MimeTypeMapper.java \
+classpath/java/net/MulticastSocket.java \
+classpath/java/net/NetPermission.java \
+classpath/java/net/NetworkInterface.java \
+classpath/java/net/NoRouteToHostException.java \
+classpath/java/net/PasswordAuthentication.java \
+classpath/java/net/PortUnreachableException.java \
+classpath/java/net/ProtocolException.java \
+classpath/java/net/ResolverCache.java \
+classpath/java/net/ServerSocket.java \
+classpath/java/net/Socket.java \
+classpath/java/net/SocketAddress.java \
+classpath/java/net/SocketException.java \
+classpath/java/net/SocketImpl.java \
+classpath/java/net/SocketImplFactory.java \
+classpath/java/net/SocketOptions.java \
+classpath/java/net/SocketPermission.java \
+classpath/java/net/SocketTimeoutException.java \
+classpath/java/net/URI.java \
+classpath/java/net/URISyntaxException.java \
+java/net/URL.java \
+java/net/URLClassLoader.java \
+classpath/java/net/URLConnection.java \
+classpath/java/net/URLDecoder.java \
+classpath/java/net/URLEncoder.java \
+classpath/java/net/URLStreamHandler.java \
+classpath/java/net/URLStreamHandlerFactory.java \
+classpath/java/net/UnknownHostException.java \
+classpath/java/net/UnknownServiceException.java \
+java/net/VMInetAddress.java \
+java/net/VMNetworkInterface.java \
+java/net/VMURLConnection.java
+
+java_net_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_net_source_files)))
+
+java/net.list: $(java_net_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_net_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/net.list
+
+-include java/net.deps
+
+
+java_nio_source_files = \
+java/nio/Buffer.java \
+classpath/java/nio/BufferOverflowException.java \
+classpath/java/nio/BufferUnderflowException.java \
+classpath/java/nio/ByteBuffer.java \
+classpath/java/nio/ByteBufferHelper.java \
+classpath/java/nio/ByteBufferImpl.java \
+classpath/java/nio/ByteOrder.java \
+classpath/java/nio/CharBuffer.java \
+classpath/java/nio/CharBufferImpl.java \
+classpath/java/nio/CharViewBufferImpl.java \
+java/nio/DirectByteBufferImpl.java \
+classpath/java/nio/DoubleBuffer.java \
+classpath/java/nio/DoubleBufferImpl.java \
+classpath/java/nio/DoubleViewBufferImpl.java \
+classpath/java/nio/FloatBuffer.java \
+classpath/java/nio/FloatBufferImpl.java \
+classpath/java/nio/FloatViewBufferImpl.java \
+classpath/java/nio/IntBuffer.java \
+classpath/java/nio/IntBufferImpl.java \
+classpath/java/nio/IntViewBufferImpl.java \
+classpath/java/nio/InvalidMarkException.java \
+classpath/java/nio/LongBuffer.java \
+classpath/java/nio/LongBufferImpl.java \
+classpath/java/nio/LongViewBufferImpl.java \
+java/nio/MappedByteBuffer.java \
+java/nio/MappedByteBufferImpl.java \
+classpath/java/nio/ReadOnlyBufferException.java \
+classpath/java/nio/ShortBuffer.java \
+classpath/java/nio/ShortBufferImpl.java \
+classpath/java/nio/ShortViewBufferImpl.java \
+java/nio/VMDirectByteBuffer.java
+
+java_nio_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_nio_source_files)))
+
+java/nio.list: $(java_nio_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_nio_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/nio.list
+
+-include java/nio.deps
+
+
+java_nio_channels_source_files = \
+classpath/java/nio/channels/AlreadyConnectedException.java \
+classpath/java/nio/channels/AsynchronousCloseException.java \
+classpath/java/nio/channels/ByteChannel.java \
+classpath/java/nio/channels/CancelledKeyException.java \
+classpath/java/nio/channels/Channel.java \
+classpath/java/nio/channels/Channels.java \
+classpath/java/nio/channels/ClosedByInterruptException.java \
+classpath/java/nio/channels/ClosedChannelException.java \
+classpath/java/nio/channels/ClosedSelectorException.java \
+classpath/java/nio/channels/ConnectionPendingException.java \
+classpath/java/nio/channels/DatagramChannel.java \
+classpath/java/nio/channels/FileChannel.java \
+classpath/java/nio/channels/FileLock.java \
+classpath/java/nio/channels/FileLockInterruptionException.java \
+classpath/java/nio/channels/GatheringByteChannel.java \
+classpath/java/nio/channels/IllegalBlockingModeException.java \
+classpath/java/nio/channels/IllegalSelectorException.java \
+classpath/java/nio/channels/InterruptibleChannel.java \
+classpath/java/nio/channels/NoConnectionPendingException.java \
+classpath/java/nio/channels/NonReadableChannelException.java \
+classpath/java/nio/channels/NonWritableChannelException.java \
+classpath/java/nio/channels/NotYetBoundException.java \
+classpath/java/nio/channels/NotYetConnectedException.java \
+classpath/java/nio/channels/OverlappingFileLockException.java \
+classpath/java/nio/channels/Pipe.java \
+classpath/java/nio/channels/ReadableByteChannel.java \
+classpath/java/nio/channels/ScatteringByteChannel.java \
+classpath/java/nio/channels/SelectableChannel.java \
+classpath/java/nio/channels/SelectionKey.java \
+classpath/java/nio/channels/Selector.java \
+classpath/java/nio/channels/ServerSocketChannel.java \
+classpath/java/nio/channels/SocketChannel.java \
+classpath/java/nio/channels/UnresolvedAddressException.java \
+classpath/java/nio/channels/UnsupportedAddressTypeException.java \
+java/nio/channels/VMChannels.java \
+classpath/java/nio/channels/WritableByteChannel.java
+
+java_nio_channels_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_nio_channels_source_files)))
+
+java/nio/channels.list: $(java_nio_channels_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_nio_channels_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/nio/channels.list
+
+-include java/nio/channels.deps
+
+
+java_nio_channels_spi_source_files = \
+classpath/java/nio/channels/spi/AbstractInterruptibleChannel.java \
+classpath/java/nio/channels/spi/AbstractSelectableChannel.java \
+classpath/java/nio/channels/spi/AbstractSelectionKey.java \
+classpath/java/nio/channels/spi/AbstractSelector.java \
+classpath/java/nio/channels/spi/SelectorProvider.java
+
+java_nio_channels_spi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_nio_channels_spi_source_files)))
+
+java/nio/channels/spi.list: $(java_nio_channels_spi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_nio_channels_spi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/nio/channels/spi.list
+
+-include java/nio/channels/spi.deps
+
+
+java_nio_charset_source_files = \
+classpath/java/nio/charset/CharacterCodingException.java \
+java/nio/charset/Charset.java \
+classpath/java/nio/charset/CharsetDecoder.java \
+classpath/java/nio/charset/CharsetEncoder.java \
+classpath/java/nio/charset/CoderMalfunctionError.java \
+classpath/java/nio/charset/CoderResult.java \
+classpath/java/nio/charset/CodingErrorAction.java \
+classpath/java/nio/charset/IllegalCharsetNameException.java \
+classpath/java/nio/charset/MalformedInputException.java \
+classpath/java/nio/charset/UnmappableCharacterException.java \
+classpath/java/nio/charset/UnsupportedCharsetException.java
+
+java_nio_charset_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_nio_charset_source_files)))
+
+java/nio/charset.list: $(java_nio_charset_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_nio_charset_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/nio/charset.list
+
+-include java/nio/charset.deps
+
+
+java_nio_charset_spi_source_files = \
+java/nio/charset/spi/CharsetProvider.java
+
+java_nio_charset_spi_header_files = $(patsubst %.java,%.h,$(java_nio_charset_spi_source_files))
+
+java/nio/charset/spi.list: $(java_nio_charset_spi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_nio_charset_spi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/nio/charset/spi.list
+
+-include java/nio/charset/spi.deps
+
+
+java_rmi_source_files = \
+classpath/java/rmi/AccessException.java \
+classpath/java/rmi/AlreadyBoundException.java \
+classpath/java/rmi/ConnectException.java \
+classpath/java/rmi/ConnectIOException.java \
+classpath/java/rmi/MarshalException.java \
+classpath/java/rmi/MarshalledObject.java \
+classpath/java/rmi/Naming.java \
+classpath/java/rmi/NoSuchObjectException.java \
+classpath/java/rmi/NotBoundException.java \
+classpath/java/rmi/RMISecurityException.java \
+classpath/java/rmi/RMISecurityManager.java \
+classpath/java/rmi/Remote.java \
+classpath/java/rmi/RemoteException.java \
+classpath/java/rmi/ServerError.java \
+classpath/java/rmi/ServerException.java \
+classpath/java/rmi/ServerRuntimeException.java \
+classpath/java/rmi/StubNotFoundException.java \
+classpath/java/rmi/UnexpectedException.java \
+classpath/java/rmi/UnknownHostException.java \
+classpath/java/rmi/UnmarshalException.java
+
+java_rmi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_rmi_source_files)))
+
+java/rmi.list: $(java_rmi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_rmi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/rmi.list
+
+-include java/rmi.deps
+
+
+java_rmi_activation_source_files = \
+classpath/java/rmi/activation/Activatable.java \
+classpath/java/rmi/activation/ActivateFailedException.java \
+classpath/java/rmi/activation/ActivationDesc.java \
+classpath/java/rmi/activation/ActivationException.java \
+classpath/java/rmi/activation/ActivationGroup.java \
+classpath/java/rmi/activation/ActivationGroupDesc.java \
+classpath/java/rmi/activation/ActivationGroupID.java \
+classpath/java/rmi/activation/ActivationGroup_Stub.java \
+classpath/java/rmi/activation/ActivationID.java \
+classpath/java/rmi/activation/ActivationInstantiator.java \
+classpath/java/rmi/activation/ActivationMonitor.java \
+classpath/java/rmi/activation/ActivationSystem.java \
+classpath/java/rmi/activation/Activator.java \
+classpath/java/rmi/activation/UnknownGroupException.java \
+classpath/java/rmi/activation/UnknownObjectException.java
+
+java_rmi_activation_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_rmi_activation_source_files)))
+
+java/rmi/activation.list: $(java_rmi_activation_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_rmi_activation_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/rmi/activation.list
+
+-include java/rmi/activation.deps
+
+
+java_rmi_dgc_source_files = \
+classpath/java/rmi/dgc/DGC.java \
+classpath/java/rmi/dgc/Lease.java \
+classpath/java/rmi/dgc/VMID.java
+
+java_rmi_dgc_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_rmi_dgc_source_files)))
+
+java/rmi/dgc.list: $(java_rmi_dgc_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_rmi_dgc_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/rmi/dgc.list
+
+-include java/rmi/dgc.deps
+
+
+java_rmi_registry_source_files = \
+classpath/java/rmi/registry/LocateRegistry.java \
+classpath/java/rmi/registry/Registry.java \
+classpath/java/rmi/registry/RegistryHandler.java
+
+java_rmi_registry_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_rmi_registry_source_files)))
+
+java/rmi/registry.list: $(java_rmi_registry_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_rmi_registry_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/rmi/registry.list
+
+-include java/rmi/registry.deps
+
+
+java_rmi_server_source_files = \
+classpath/java/rmi/server/ExportException.java \
+classpath/java/rmi/server/LoaderHandler.java \
+classpath/java/rmi/server/LogStream.java \
+classpath/java/rmi/server/ObjID.java \
+classpath/java/rmi/server/Operation.java \
+classpath/java/rmi/server/RMIClassLoader.java \
+classpath/java/rmi/server/RMIClassLoaderSpi.java \
+classpath/java/rmi/server/RMIClientSocketFactory.java \
+classpath/java/rmi/server/RMIFailureHandler.java \
+classpath/java/rmi/server/RMIServerSocketFactory.java \
+classpath/java/rmi/server/RMISocketFactory.java \
+classpath/java/rmi/server/RemoteCall.java \
+classpath/java/rmi/server/RemoteObject.java \
+classpath/java/rmi/server/RemoteObjectInvocationHandler.java \
+classpath/java/rmi/server/RemoteRef.java \
+classpath/java/rmi/server/RemoteServer.java \
+classpath/java/rmi/server/RemoteStub.java \
+classpath/java/rmi/server/ServerCloneException.java \
+classpath/java/rmi/server/ServerNotActiveException.java \
+classpath/java/rmi/server/ServerRef.java \
+classpath/java/rmi/server/Skeleton.java \
+classpath/java/rmi/server/SkeletonMismatchException.java \
+classpath/java/rmi/server/SkeletonNotFoundException.java \
+classpath/java/rmi/server/SocketSecurityException.java \
+classpath/java/rmi/server/UID.java \
+classpath/java/rmi/server/UnicastRemoteObject.java \
+classpath/java/rmi/server/Unreferenced.java
+
+java_rmi_server_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_rmi_server_source_files)))
+
+java/rmi/server.list: $(java_rmi_server_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_rmi_server_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/rmi/server.list
+
+-include java/rmi/server.deps
+
+
+java_security_source_files = \
+classpath/java/security/AccessControlContext.java \
+classpath/java/security/AccessControlException.java \
+classpath/java/security/AccessController.java \
+classpath/java/security/AlgorithmParameterGenerator.java \
+classpath/java/security/AlgorithmParameterGeneratorSpi.java \
+classpath/java/security/AlgorithmParameters.java \
+classpath/java/security/AlgorithmParametersSpi.java \
+classpath/java/security/AllPermission.java \
+classpath/java/security/BasicPermission.java \
+classpath/java/security/Certificate.java \
+classpath/java/security/CodeSource.java \
+classpath/java/security/DigestException.java \
+classpath/java/security/DigestInputStream.java \
+classpath/java/security/DigestOutputStream.java \
+classpath/java/security/DomainCombiner.java \
+classpath/java/security/DummyKeyPairGenerator.java \
+classpath/java/security/DummyMessageDigest.java \
+classpath/java/security/DummySignature.java \
+classpath/java/security/GeneralSecurityException.java \
+classpath/java/security/Guard.java \
+classpath/java/security/GuardedObject.java \
+classpath/java/security/Identity.java \
+classpath/java/security/IdentityScope.java \
+classpath/java/security/IntersectingDomainCombiner.java \
+classpath/java/security/InvalidAlgorithmParameterException.java \
+classpath/java/security/InvalidKeyException.java \
+classpath/java/security/InvalidParameterException.java \
+classpath/java/security/Key.java \
+classpath/java/security/KeyException.java \
+classpath/java/security/KeyFactory.java \
+classpath/java/security/KeyFactorySpi.java \
+classpath/java/security/KeyManagementException.java \
+classpath/java/security/KeyPair.java \
+classpath/java/security/KeyPairGenerator.java \
+classpath/java/security/KeyPairGeneratorSpi.java \
+classpath/java/security/KeyStore.java \
+classpath/java/security/KeyStoreException.java \
+classpath/java/security/KeyStoreSpi.java \
+classpath/java/security/MessageDigest.java \
+classpath/java/security/MessageDigestSpi.java \
+classpath/java/security/NoSuchAlgorithmException.java \
+classpath/java/security/NoSuchProviderException.java \
+classpath/java/security/Permission.java \
+classpath/java/security/PermissionCollection.java \
+classpath/java/security/Permissions.java \
+classpath/java/security/Policy.java \
+classpath/java/security/Principal.java \
+classpath/java/security/PrivateKey.java \
+classpath/java/security/PrivilegedAction.java \
+classpath/java/security/PrivilegedActionException.java \
+classpath/java/security/PrivilegedExceptionAction.java \
+classpath/java/security/ProtectionDomain.java \
+classpath/java/security/Provider.java \
+classpath/java/security/ProviderException.java \
+classpath/java/security/PublicKey.java \
+classpath/java/security/SecureClassLoader.java \
+classpath/java/security/SecureRandom.java \
+classpath/java/security/SecureRandomSpi.java \
+java/security/Security.java \
+classpath/java/security/SecurityPermission.java \
+classpath/java/security/Signature.java \
+classpath/java/security/SignatureException.java \
+classpath/java/security/SignatureSpi.java \
+classpath/java/security/SignedObject.java \
+classpath/java/security/Signer.java \
+classpath/java/security/UnrecoverableKeyException.java \
+classpath/java/security/UnresolvedPermission.java \
+java/security/VMAccessControlState.java \
+java/security/VMAccessController.java \
+java/security/VMSecureRandom.java
+
+java_security_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_security_source_files)))
+
+java/security.list: $(java_security_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_security_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/security.list
+
+-include java/security.deps
+
+
+java_security_acl_source_files = \
+classpath/java/security/acl/Acl.java \
+classpath/java/security/acl/AclEntry.java \
+classpath/java/security/acl/AclNotFoundException.java \
+classpath/java/security/acl/Group.java \
+classpath/java/security/acl/LastOwnerException.java \
+classpath/java/security/acl/NotOwnerException.java \
+classpath/java/security/acl/Owner.java \
+classpath/java/security/acl/Permission.java
+
+java_security_acl_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_security_acl_source_files)))
+
+java/security/acl.list: $(java_security_acl_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_security_acl_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/security/acl.list
+
+-include java/security/acl.deps
+
+
+java_security_cert_source_files = \
+classpath/java/security/cert/CRL.java \
+classpath/java/security/cert/CRLException.java \
+classpath/java/security/cert/CRLSelector.java \
+classpath/java/security/cert/CertPath.java \
+classpath/java/security/cert/CertPathBuilder.java \
+classpath/java/security/cert/CertPathBuilderException.java \
+classpath/java/security/cert/CertPathBuilderResult.java \
+classpath/java/security/cert/CertPathBuilderSpi.java \
+classpath/java/security/cert/CertPathParameters.java \
+classpath/java/security/cert/CertPathValidator.java \
+classpath/java/security/cert/CertPathValidatorException.java \
+classpath/java/security/cert/CertPathValidatorResult.java \
+classpath/java/security/cert/CertPathValidatorSpi.java \
+classpath/java/security/cert/CertSelector.java \
+classpath/java/security/cert/CertStore.java \
+classpath/java/security/cert/CertStoreException.java \
+classpath/java/security/cert/CertStoreParameters.java \
+classpath/java/security/cert/CertStoreSpi.java \
+classpath/java/security/cert/Certificate.java \
+classpath/java/security/cert/CertificateEncodingException.java \
+classpath/java/security/cert/CertificateException.java \
+classpath/java/security/cert/CertificateExpiredException.java \
+classpath/java/security/cert/CertificateFactory.java \
+classpath/java/security/cert/CertificateFactorySpi.java \
+classpath/java/security/cert/CertificateNotYetValidException.java \
+classpath/java/security/cert/CertificateParsingException.java \
+classpath/java/security/cert/CollectionCertStoreParameters.java \
+classpath/java/security/cert/LDAPCertStoreParameters.java \
+classpath/java/security/cert/PKIXBuilderParameters.java \
+classpath/java/security/cert/PKIXCertPathBuilderResult.java \
+classpath/java/security/cert/PKIXCertPathChecker.java \
+classpath/java/security/cert/PKIXCertPathValidatorResult.java \
+classpath/java/security/cert/PKIXParameters.java \
+classpath/java/security/cert/PolicyNode.java \
+classpath/java/security/cert/PolicyQualifierInfo.java \
+classpath/java/security/cert/TrustAnchor.java \
+classpath/java/security/cert/X509CRL.java \
+classpath/java/security/cert/X509CRLEntry.java \
+classpath/java/security/cert/X509CRLSelector.java \
+classpath/java/security/cert/X509CertSelector.java \
+classpath/java/security/cert/X509Certificate.java \
+classpath/java/security/cert/X509Extension.java
+
+java_security_cert_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_security_cert_source_files)))
+
+java/security/cert.list: $(java_security_cert_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_security_cert_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/security/cert.list
+
+-include java/security/cert.deps
+
+
+java_security_interfaces_source_files = \
+classpath/java/security/interfaces/DSAKey.java \
+classpath/java/security/interfaces/DSAKeyPairGenerator.java \
+classpath/java/security/interfaces/DSAParams.java \
+classpath/java/security/interfaces/DSAPrivateKey.java \
+classpath/java/security/interfaces/DSAPublicKey.java \
+classpath/java/security/interfaces/RSAKey.java \
+classpath/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java \
+classpath/java/security/interfaces/RSAPrivateCrtKey.java \
+classpath/java/security/interfaces/RSAPrivateKey.java \
+classpath/java/security/interfaces/RSAPublicKey.java
+
+java_security_interfaces_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_security_interfaces_source_files)))
+
+java/security/interfaces.list: $(java_security_interfaces_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_security_interfaces_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/security/interfaces.list
+
+-include java/security/interfaces.deps
+
+
+java_security_spec_source_files = \
+classpath/java/security/spec/AlgorithmParameterSpec.java \
+classpath/java/security/spec/DSAParameterSpec.java \
+classpath/java/security/spec/DSAPrivateKeySpec.java \
+classpath/java/security/spec/DSAPublicKeySpec.java \
+classpath/java/security/spec/EncodedKeySpec.java \
+classpath/java/security/spec/InvalidKeySpecException.java \
+classpath/java/security/spec/InvalidParameterSpecException.java \
+classpath/java/security/spec/KeySpec.java \
+classpath/java/security/spec/PKCS8EncodedKeySpec.java \
+classpath/java/security/spec/PSSParameterSpec.java \
+classpath/java/security/spec/RSAKeyGenParameterSpec.java \
+classpath/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.java \
+classpath/java/security/spec/RSAOtherPrimeInfo.java \
+classpath/java/security/spec/RSAPrivateCrtKeySpec.java \
+classpath/java/security/spec/RSAPrivateKeySpec.java \
+classpath/java/security/spec/RSAPublicKeySpec.java \
+classpath/java/security/spec/X509EncodedKeySpec.java
+
+java_security_spec_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_security_spec_source_files)))
+
+java/security/spec.list: $(java_security_spec_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_security_spec_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/security/spec.list
+
+-include java/security/spec.deps
+
+
+java_sql_source_files = \
+classpath/java/sql/Array.java \
+classpath/java/sql/BatchUpdateException.java \
+classpath/java/sql/Blob.java \
+classpath/java/sql/CallableStatement.java \
+classpath/java/sql/Clob.java \
+classpath/java/sql/Connection.java \
+classpath/java/sql/DataTruncation.java \
+classpath/java/sql/DatabaseMetaData.java \
+classpath/java/sql/Date.java \
+classpath/java/sql/Driver.java \
+classpath/java/sql/DriverManager.java \
+classpath/java/sql/DriverPropertyInfo.java \
+classpath/java/sql/ParameterMetaData.java \
+classpath/java/sql/PreparedStatement.java \
+classpath/java/sql/Ref.java \
+classpath/java/sql/ResultSet.java \
+classpath/java/sql/ResultSetMetaData.java \
+classpath/java/sql/SQLData.java \
+classpath/java/sql/SQLException.java \
+classpath/java/sql/SQLInput.java \
+classpath/java/sql/SQLOutput.java \
+classpath/java/sql/SQLPermission.java \
+classpath/java/sql/SQLWarning.java \
+classpath/java/sql/Savepoint.java \
+classpath/java/sql/Statement.java \
+classpath/java/sql/Struct.java \
+classpath/java/sql/Time.java \
+classpath/java/sql/Timestamp.java \
+classpath/java/sql/Types.java
+
+java_sql_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_sql_source_files)))
+
+java/sql.list: $(java_sql_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_sql_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/sql.list
+
+-include java/sql.deps
+
+
+java_text_source_files = \
+classpath/java/text/Annotation.java \
+classpath/java/text/AttributedCharacterIterator.java \
+classpath/java/text/AttributedString.java \
+classpath/java/text/AttributedStringIterator.java \
+classpath/java/text/Bidi.java \
+classpath/java/text/BreakIterator.java \
+classpath/java/text/CharacterIterator.java \
+classpath/java/text/ChoiceFormat.java \
+classpath/java/text/CollationElementIterator.java \
+classpath/java/text/CollationKey.java \
+java/text/Collator.java \
+classpath/java/text/DateFormat.java \
+java/text/DateFormatSymbols.java \
+classpath/java/text/DecimalFormat.java \
+java/text/DecimalFormatSymbols.java \
+classpath/java/text/FieldPosition.java \
+classpath/java/text/Format.java \
+classpath/java/text/MessageFormat.java \
+classpath/java/text/NumberFormat.java \
+classpath/java/text/ParseException.java \
+classpath/java/text/ParsePosition.java \
+classpath/java/text/RuleBasedCollator.java \
+classpath/java/text/SimpleDateFormat.java \
+classpath/java/text/StringCharacterIterator.java
+
+java_text_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_text_source_files)))
+
+java/text.list: $(java_text_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_text_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/text.list
+
+-include java/text.deps
+
+
+java_util_source_files = \
+classpath/java/util/AbstractCollection.java \
+classpath/java/util/AbstractList.java \
+classpath/java/util/AbstractMap.java \
+classpath/java/util/AbstractSequentialList.java \
+classpath/java/util/AbstractSet.java \
+classpath/java/util/ArrayList.java \
+classpath/java/util/Arrays.java \
+classpath/java/util/BitSet.java \
+java/util/Calendar.java \
+classpath/java/util/Collection.java \
+classpath/java/util/Collections.java \
+classpath/java/util/Comparator.java \
+classpath/java/util/ConcurrentModificationException.java \
+java/util/Currency.java \
+classpath/java/util/Date.java \
+classpath/java/util/Dictionary.java \
+classpath/java/util/DuplicateFormatFlagsException.java \
+classpath/java/util/EmptyStackException.java \
+classpath/java/util/Enumeration.java \
+classpath/java/util/EventListener.java \
+classpath/java/util/EventListenerProxy.java \
+classpath/java/util/EventObject.java \
+classpath/java/util/FormatFlagsConversionMismatchException.java \
+classpath/java/util/Formattable.java \
+classpath/java/util/FormattableFlags.java \
+classpath/java/util/Formatter.java \
+classpath/java/util/FormatterClosedException.java \
+java/util/GregorianCalendar.java \
+classpath/java/util/HashMap.java \
+classpath/java/util/HashSet.java \
+classpath/java/util/Hashtable.java \
+classpath/java/util/IdentityHashMap.java \
+classpath/java/util/IllegalFormatCodePointException.java \
+classpath/java/util/IllegalFormatConversionException.java \
+classpath/java/util/IllegalFormatException.java \
+classpath/java/util/IllegalFormatFlagsException.java \
+classpath/java/util/IllegalFormatPrecisionException.java \
+classpath/java/util/IllegalFormatWidthException.java \
+classpath/java/util/InputMismatchException.java \
+classpath/java/util/InvalidPropertiesFormatException.java \
+classpath/java/util/Iterator.java \
+classpath/java/util/LinkedHashMap.java \
+classpath/java/util/LinkedHashSet.java \
+classpath/java/util/LinkedList.java \
+classpath/java/util/List.java \
+classpath/java/util/ListIterator.java \
+classpath/java/util/ListResourceBundle.java \
+java/util/Locale.java \
+classpath/java/util/Map.java \
+classpath/java/util/MissingFormatArgumentException.java \
+classpath/java/util/MissingFormatWidthException.java \
+classpath/java/util/MissingResourceException.java \
+classpath/java/util/NoSuchElementException.java \
+classpath/java/util/Observable.java \
+classpath/java/util/Observer.java \
+classpath/java/util/Properties.java \
+classpath/java/util/PropertyPermission.java \
+classpath/java/util/PropertyPermissionCollection.java \
+classpath/java/util/PropertyResourceBundle.java \
+classpath/java/util/Random.java \
+classpath/java/util/RandomAccess.java \
+java/util/ResourceBundle.java \
+classpath/java/util/Set.java \
+classpath/java/util/SimpleTimeZone.java \
+classpath/java/util/SortedMap.java \
+classpath/java/util/SortedSet.java \
+classpath/java/util/Stack.java \
+classpath/java/util/StringTokenizer.java \
+classpath/java/util/TimeZone.java \
+classpath/java/util/Timer.java \
+classpath/java/util/TimerTask.java \
+classpath/java/util/TooManyListenersException.java \
+classpath/java/util/TreeMap.java \
+classpath/java/util/TreeSet.java \
+classpath/java/util/UUID.java \
+classpath/java/util/UnknownFormatConversionException.java \
+classpath/java/util/UnknownFormatFlagsException.java \
+java/util/VMTimeZone.java \
+classpath/java/util/Vector.java \
+classpath/java/util/WeakHashMap.java
+
+java_util_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_util_source_files)))
+
+java/util.list: $(java_util_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_util_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/util.list
+
+-include java/util.deps
+
+
+java_util_jar_source_files = \
+classpath/java/util/jar/Attributes.java \
+classpath/java/util/jar/JarEntry.java \
+classpath/java/util/jar/JarException.java \
+classpath/java/util/jar/JarFile.java \
+classpath/java/util/jar/JarInputStream.java \
+classpath/java/util/jar/JarOutputStream.java \
+classpath/java/util/jar/Manifest.java
+
+java_util_jar_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_util_jar_source_files)))
+
+java/util/jar.list: $(java_util_jar_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_util_jar_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/util/jar.list
+
+-include java/util/jar.deps
+
+
+java_util_logging_source_files = \
+classpath/java/util/logging/ConsoleHandler.java \
+classpath/java/util/logging/ErrorManager.java \
+classpath/java/util/logging/FileHandler.java \
+classpath/java/util/logging/Filter.java \
+classpath/java/util/logging/Formatter.java \
+classpath/java/util/logging/Handler.java \
+classpath/java/util/logging/Level.java \
+java/util/logging/LogManager.java \
+classpath/java/util/logging/LogRecord.java \
+java/util/logging/Logger.java \
+classpath/java/util/logging/LoggingMXBean.java \
+classpath/java/util/logging/LoggingPermission.java \
+classpath/java/util/logging/MemoryHandler.java \
+classpath/java/util/logging/SimpleFormatter.java \
+classpath/java/util/logging/SocketHandler.java \
+classpath/java/util/logging/StreamHandler.java \
+classpath/java/util/logging/XMLFormatter.java
+
+java_util_logging_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_util_logging_source_files)))
+
+java/util/logging.list: $(java_util_logging_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_util_logging_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/util/logging.list
+
+-include java/util/logging.deps
+
+
+java_util_prefs_source_files = \
+classpath/java/util/prefs/AbstractPreferences.java \
+classpath/java/util/prefs/BackingStoreException.java \
+classpath/java/util/prefs/InvalidPreferencesFormatException.java \
+classpath/java/util/prefs/NodeChangeEvent.java \
+classpath/java/util/prefs/NodeChangeListener.java \
+classpath/java/util/prefs/PreferenceChangeEvent.java \
+classpath/java/util/prefs/PreferenceChangeListener.java \
+classpath/java/util/prefs/Preferences.java \
+classpath/java/util/prefs/PreferencesFactory.java
+
+java_util_prefs_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_util_prefs_source_files)))
+
+java/util/prefs.list: $(java_util_prefs_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_util_prefs_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/util/prefs.list
+
+-include java/util/prefs.deps
+
+
+java_util_regex_source_files = \
+classpath/java/util/regex/MatchResult.java \
+classpath/java/util/regex/Matcher.java \
+classpath/java/util/regex/Pattern.java \
+classpath/java/util/regex/PatternSyntaxException.java
+
+java_util_regex_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_util_regex_source_files)))
+
+java/util/regex.list: $(java_util_regex_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_util_regex_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/util/regex.list
+
+-include java/util/regex.deps
+
+
+java_util_zip_source_files = \
+classpath/java/util/zip/Adler32.java \
+classpath/java/util/zip/CRC32.java \
+classpath/java/util/zip/CheckedInputStream.java \
+classpath/java/util/zip/CheckedOutputStream.java \
+classpath/java/util/zip/Checksum.java \
+classpath/java/util/zip/DataFormatException.java \
+java/util/zip/Deflater.java \
+classpath/java/util/zip/DeflaterOutputStream.java \
+classpath/java/util/zip/GZIPInputStream.java \
+classpath/java/util/zip/GZIPOutputStream.java \
+java/util/zip/Inflater.java \
+classpath/java/util/zip/InflaterInputStream.java \
+classpath/java/util/zip/ZipConstants.java \
+classpath/java/util/zip/ZipEntry.java \
+classpath/java/util/zip/ZipException.java \
+classpath/java/util/zip/ZipFile.java \
+classpath/java/util/zip/ZipInputStream.java \
+classpath/java/util/zip/ZipOutputStream.java
+
+java_util_zip_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_util_zip_source_files)))
+
+java/util/zip.list: $(java_util_zip_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(java_util_zip_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > java/util/zip.list
+
+-include java/util/zip.deps
+
+
+javax_accessibility_source_files = \
+classpath/javax/accessibility/Accessible.java \
+classpath/javax/accessibility/AccessibleAction.java \
+classpath/javax/accessibility/AccessibleAttributeSequence.java \
+classpath/javax/accessibility/AccessibleBundle.java \
+classpath/javax/accessibility/AccessibleComponent.java \
+classpath/javax/accessibility/AccessibleContext.java \
+classpath/javax/accessibility/AccessibleEditableText.java \
+classpath/javax/accessibility/AccessibleExtendedComponent.java \
+classpath/javax/accessibility/AccessibleExtendedTable.java \
+classpath/javax/accessibility/AccessibleExtendedText.java \
+classpath/javax/accessibility/AccessibleHyperlink.java \
+classpath/javax/accessibility/AccessibleHypertext.java \
+classpath/javax/accessibility/AccessibleIcon.java \
+classpath/javax/accessibility/AccessibleKeyBinding.java \
+classpath/javax/accessibility/AccessibleRelation.java \
+classpath/javax/accessibility/AccessibleRelationSet.java \
+classpath/javax/accessibility/AccessibleResourceBundle.java \
+classpath/javax/accessibility/AccessibleRole.java \
+classpath/javax/accessibility/AccessibleSelection.java \
+classpath/javax/accessibility/AccessibleState.java \
+classpath/javax/accessibility/AccessibleStateSet.java \
+classpath/javax/accessibility/AccessibleStreamable.java \
+classpath/javax/accessibility/AccessibleTable.java \
+classpath/javax/accessibility/AccessibleTableModelChange.java \
+classpath/javax/accessibility/AccessibleText.java \
+classpath/javax/accessibility/AccessibleTextSequence.java \
+classpath/javax/accessibility/AccessibleValue.java
+
+javax_accessibility_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_accessibility_source_files)))
+
+javax/accessibility.list: $(javax_accessibility_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_accessibility_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/accessibility.list
+
+-include javax/accessibility.deps
+
+
+javax_crypto_source_files = \
+classpath/javax/crypto/BadPaddingException.java \
+classpath/javax/crypto/Cipher.java \
+classpath/javax/crypto/CipherInputStream.java \
+classpath/javax/crypto/CipherOutputStream.java \
+classpath/javax/crypto/CipherSpi.java \
+classpath/javax/crypto/EncryptedPrivateKeyInfo.java \
+classpath/javax/crypto/ExemptionMechanism.java \
+classpath/javax/crypto/ExemptionMechanismException.java \
+classpath/javax/crypto/ExemptionMechanismSpi.java \
+classpath/javax/crypto/IllegalBlockSizeException.java \
+classpath/javax/crypto/KeyAgreement.java \
+classpath/javax/crypto/KeyAgreementSpi.java \
+classpath/javax/crypto/KeyGenerator.java \
+classpath/javax/crypto/KeyGeneratorSpi.java \
+classpath/javax/crypto/Mac.java \
+classpath/javax/crypto/MacSpi.java \
+classpath/javax/crypto/NoSuchPaddingException.java \
+classpath/javax/crypto/NullCipher.java \
+classpath/javax/crypto/NullCipherImpl.java \
+classpath/javax/crypto/SealedObject.java \
+classpath/javax/crypto/SecretKey.java \
+classpath/javax/crypto/SecretKeyFactory.java \
+classpath/javax/crypto/SecretKeyFactorySpi.java \
+classpath/javax/crypto/ShortBufferException.java
+
+javax_crypto_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_crypto_source_files)))
+
+javax/crypto.list: $(javax_crypto_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_crypto_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/crypto.list
+
+-include javax/crypto.deps
+
+
+javax_crypto_interfaces_source_files = \
+classpath/javax/crypto/interfaces/DHKey.java \
+classpath/javax/crypto/interfaces/DHPrivateKey.java \
+classpath/javax/crypto/interfaces/DHPublicKey.java \
+classpath/javax/crypto/interfaces/PBEKey.java
+
+javax_crypto_interfaces_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_crypto_interfaces_source_files)))
+
+javax/crypto/interfaces.list: $(javax_crypto_interfaces_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_crypto_interfaces_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/crypto/interfaces.list
+
+-include javax/crypto/interfaces.deps
+
+
+javax_crypto_spec_source_files = \
+classpath/javax/crypto/spec/DESKeySpec.java \
+classpath/javax/crypto/spec/DESedeKeySpec.java \
+classpath/javax/crypto/spec/DHGenParameterSpec.java \
+classpath/javax/crypto/spec/DHParameterSpec.java \
+classpath/javax/crypto/spec/DHPrivateKeySpec.java \
+classpath/javax/crypto/spec/DHPublicKeySpec.java \
+classpath/javax/crypto/spec/IvParameterSpec.java \
+classpath/javax/crypto/spec/PBEKeySpec.java \
+classpath/javax/crypto/spec/PBEParameterSpec.java \
+classpath/javax/crypto/spec/RC2ParameterSpec.java \
+classpath/javax/crypto/spec/RC5ParameterSpec.java \
+classpath/javax/crypto/spec/SecretKeySpec.java
+
+javax_crypto_spec_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_crypto_spec_source_files)))
+
+javax/crypto/spec.list: $(javax_crypto_spec_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_crypto_spec_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/crypto/spec.list
+
+-include javax/crypto/spec.deps
+
+
+javax_imageio_source_files = \
+classpath/javax/imageio/IIOException.java \
+classpath/javax/imageio/IIOImage.java \
+classpath/javax/imageio/IIOParam.java \
+classpath/javax/imageio/IIOParamController.java \
+classpath/javax/imageio/ImageIO.java \
+classpath/javax/imageio/ImageReadParam.java \
+classpath/javax/imageio/ImageReader.java \
+classpath/javax/imageio/ImageTranscoder.java \
+classpath/javax/imageio/ImageTypeSpecifier.java \
+classpath/javax/imageio/ImageWriteParam.java \
+classpath/javax/imageio/ImageWriter.java \
+classpath/javax/imageio/event/IIOReadProgressListener.java \
+classpath/javax/imageio/event/IIOReadUpdateListener.java \
+classpath/javax/imageio/event/IIOReadWarningListener.java \
+classpath/javax/imageio/event/IIOWriteProgressListener.java \
+classpath/javax/imageio/event/IIOWriteWarningListener.java \
+classpath/javax/imageio/metadata/IIOInvalidTreeException.java \
+classpath/javax/imageio/metadata/IIOMetadata.java \
+classpath/javax/imageio/metadata/IIOMetadataController.java \
+classpath/javax/imageio/metadata/IIOMetadataFormat.java \
+classpath/javax/imageio/metadata/IIOMetadataFormatImpl.java \
+classpath/javax/imageio/metadata/IIOMetadataNode.java \
+classpath/javax/imageio/plugins/bmp/BMPImageWriteParam.java \
+classpath/javax/imageio/plugins/jpeg/JPEGHuffmanTable.java \
+classpath/javax/imageio/plugins/jpeg/JPEGImageReadParam.java \
+classpath/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java \
+classpath/javax/imageio/plugins/jpeg/JPEGQTable.java \
+classpath/javax/imageio/spi/IIORegistry.java \
+classpath/javax/imageio/spi/IIOServiceProvider.java \
+classpath/javax/imageio/spi/ImageInputStreamSpi.java \
+classpath/javax/imageio/spi/ImageOutputStreamSpi.java \
+classpath/javax/imageio/spi/ImageReaderSpi.java \
+classpath/javax/imageio/spi/ImageReaderWriterSpi.java \
+classpath/javax/imageio/spi/ImageTranscoderSpi.java \
+classpath/javax/imageio/spi/ImageWriterSpi.java \
+classpath/javax/imageio/spi/RegisterableService.java \
+classpath/javax/imageio/spi/ServiceRegistry.java \
+classpath/javax/imageio/stream/FileCacheImageInputStream.java \
+classpath/javax/imageio/stream/FileCacheImageOutputStream.java \
+classpath/javax/imageio/stream/FileImageInputStream.java \
+classpath/javax/imageio/stream/FileImageOutputStream.java \
+classpath/javax/imageio/stream/IIOByteBuffer.java \
+classpath/javax/imageio/stream/ImageInputStream.java \
+classpath/javax/imageio/stream/ImageInputStreamImpl.java \
+classpath/javax/imageio/stream/ImageOutputStream.java \
+classpath/javax/imageio/stream/ImageOutputStreamImpl.java \
+classpath/javax/imageio/stream/MemoryCacheImageInputStream.java \
+classpath/javax/imageio/stream/MemoryCacheImageOutputStream.java
+
+javax-imageio.lo: $(javax_imageio_source_files)
+	@find classpath/lib/javax/imageio -name '*.class' > javax-imageio.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o javax-imageio.lo @javax-imageio.list
+	@rm -f javax-imageio.list
+
+javax_management_source_files = \
+classpath/javax/management/Attribute.java \
+classpath/javax/management/AttributeList.java \
+classpath/javax/management/AttributeNotFoundException.java \
+classpath/javax/management/DynamicMBean.java \
+classpath/javax/management/IntrospectionException.java \
+classpath/javax/management/InvalidAttributeValueException.java \
+classpath/javax/management/JMException.java \
+classpath/javax/management/JMRuntimeException.java \
+classpath/javax/management/ListenerNotFoundException.java \
+classpath/javax/management/MBeanAttributeInfo.java \
+classpath/javax/management/MBeanConstructorInfo.java \
+classpath/javax/management/MBeanException.java \
+classpath/javax/management/MBeanFeatureInfo.java \
+classpath/javax/management/MBeanInfo.java \
+classpath/javax/management/MBeanNotificationInfo.java \
+classpath/javax/management/MBeanOperationInfo.java \
+classpath/javax/management/MBeanParameterInfo.java \
+classpath/javax/management/NotCompliantMBeanException.java \
+classpath/javax/management/Notification.java \
+classpath/javax/management/NotificationBroadcaster.java \
+classpath/javax/management/NotificationEmitter.java \
+classpath/javax/management/NotificationFilter.java \
+classpath/javax/management/NotificationListener.java \
+classpath/javax/management/OperationsException.java \
+classpath/javax/management/ReflectionException.java \
+classpath/javax/management/RuntimeOperationsException.java \
+classpath/javax/management/StandardMBean.java
+
+javax_management_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_management_source_files)))
+
+javax/management.list: $(javax_management_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_management_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/management.list
+
+-include javax/management.deps
+
+
+javax_management_openmbean_source_files = \
+classpath/javax/management/openmbean/ArrayType.java \
+classpath/javax/management/openmbean/CompositeData.java \
+classpath/javax/management/openmbean/CompositeDataSupport.java \
+classpath/javax/management/openmbean/CompositeType.java \
+classpath/javax/management/openmbean/InvalidKeyException.java \
+classpath/javax/management/openmbean/OpenDataException.java \
+classpath/javax/management/openmbean/OpenType.java \
+classpath/javax/management/openmbean/SimpleType.java \
+classpath/javax/management/openmbean/TabularData.java \
+classpath/javax/management/openmbean/TabularType.java
+
+javax_management_openmbean_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_management_openmbean_source_files)))
+
+javax/management/openmbean.list: $(javax_management_openmbean_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_management_openmbean_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/management/openmbean.list
+
+-include javax/management/openmbean.deps
+
+
+javax_naming_source_files = \
+classpath/javax/naming/AuthenticationException.java \
+classpath/javax/naming/AuthenticationNotSupportedException.java \
+classpath/javax/naming/BinaryRefAddr.java \
+classpath/javax/naming/Binding.java \
+classpath/javax/naming/CannotProceedException.java \
+classpath/javax/naming/CommunicationException.java \
+classpath/javax/naming/CompositeName.java \
+classpath/javax/naming/CompoundName.java \
+classpath/javax/naming/ConfigurationException.java \
+classpath/javax/naming/Context.java \
+classpath/javax/naming/ContextNotEmptyException.java \
+classpath/javax/naming/InitialContext.java \
+classpath/javax/naming/InsufficientResourcesException.java \
+classpath/javax/naming/InterruptedNamingException.java \
+classpath/javax/naming/InvalidNameException.java \
+classpath/javax/naming/LimitExceededException.java \
+classpath/javax/naming/LinkException.java \
+classpath/javax/naming/LinkLoopException.java \
+classpath/javax/naming/LinkRef.java \
+classpath/javax/naming/MalformedLinkException.java \
+classpath/javax/naming/Name.java \
+classpath/javax/naming/NameAlreadyBoundException.java \
+classpath/javax/naming/NameClassPair.java \
+classpath/javax/naming/NameNotFoundException.java \
+classpath/javax/naming/NameParser.java \
+classpath/javax/naming/NamingEnumeration.java \
+classpath/javax/naming/NamingException.java \
+classpath/javax/naming/NamingSecurityException.java \
+classpath/javax/naming/NoInitialContextException.java \
+classpath/javax/naming/NoPermissionException.java \
+classpath/javax/naming/NotContextException.java \
+classpath/javax/naming/OperationNotSupportedException.java \
+classpath/javax/naming/PartialResultException.java \
+classpath/javax/naming/RefAddr.java \
+classpath/javax/naming/Reference.java \
+classpath/javax/naming/Referenceable.java \
+classpath/javax/naming/ReferralException.java \
+classpath/javax/naming/ServiceUnavailableException.java \
+classpath/javax/naming/SizeLimitExceededException.java \
+classpath/javax/naming/StringRefAddr.java \
+classpath/javax/naming/TimeLimitExceededException.java
+
+javax_naming_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_naming_source_files)))
+
+javax/naming.list: $(javax_naming_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_naming_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/naming.list
+
+-include javax/naming.deps
+
+
+javax_naming_directory_source_files = \
+classpath/javax/naming/directory/Attribute.java \
+classpath/javax/naming/directory/AttributeInUseException.java \
+classpath/javax/naming/directory/AttributeModificationException.java \
+classpath/javax/naming/directory/Attributes.java \
+classpath/javax/naming/directory/BasicAttribute.java \
+classpath/javax/naming/directory/BasicAttributes.java \
+classpath/javax/naming/directory/DirContext.java \
+classpath/javax/naming/directory/InitialDirContext.java \
+classpath/javax/naming/directory/InvalidAttributeIdentifierException.java \
+classpath/javax/naming/directory/InvalidAttributeValueException.java \
+classpath/javax/naming/directory/InvalidAttributesException.java \
+classpath/javax/naming/directory/InvalidSearchControlsException.java \
+classpath/javax/naming/directory/InvalidSearchFilterException.java \
+classpath/javax/naming/directory/ModificationItem.java \
+classpath/javax/naming/directory/NoSuchAttributeException.java \
+classpath/javax/naming/directory/SchemaViolationException.java \
+classpath/javax/naming/directory/SearchControls.java \
+classpath/javax/naming/directory/SearchResult.java
+
+javax_naming_directory_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_naming_directory_source_files)))
+
+javax/naming/directory.list: $(javax_naming_directory_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_naming_directory_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/naming/directory.list
+
+-include javax/naming/directory.deps
+
+
+javax_naming_event_source_files = \
+classpath/javax/naming/event/EventContext.java \
+classpath/javax/naming/event/EventDirContext.java \
+classpath/javax/naming/event/NamespaceChangeListener.java \
+classpath/javax/naming/event/NamingEvent.java \
+classpath/javax/naming/event/NamingExceptionEvent.java \
+classpath/javax/naming/event/NamingListener.java \
+classpath/javax/naming/event/ObjectChangeListener.java
+
+javax_naming_event_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_naming_event_source_files)))
+
+javax/naming/event.list: $(javax_naming_event_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_naming_event_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/naming/event.list
+
+-include javax/naming/event.deps
+
+
+javax_naming_ldap_source_files = \
+classpath/javax/naming/ldap/Control.java \
+classpath/javax/naming/ldap/ControlFactory.java \
+classpath/javax/naming/ldap/ExtendedRequest.java \
+classpath/javax/naming/ldap/ExtendedResponse.java \
+classpath/javax/naming/ldap/HasControls.java \
+classpath/javax/naming/ldap/InitialLdapContext.java \
+classpath/javax/naming/ldap/LdapContext.java \
+classpath/javax/naming/ldap/LdapReferralException.java \
+classpath/javax/naming/ldap/StartTlsRequest.java \
+classpath/javax/naming/ldap/StartTlsResponse.java \
+classpath/javax/naming/ldap/UnsolicitedNotification.java \
+classpath/javax/naming/ldap/UnsolicitedNotificationEvent.java \
+classpath/javax/naming/ldap/UnsolicitedNotificationListener.java
+
+javax_naming_ldap_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_naming_ldap_source_files)))
+
+javax/naming/ldap.list: $(javax_naming_ldap_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_naming_ldap_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/naming/ldap.list
+
+-include javax/naming/ldap.deps
+
+
+javax_naming_spi_source_files = \
+classpath/javax/naming/spi/DirObjectFactory.java \
+classpath/javax/naming/spi/DirStateFactory.java \
+classpath/javax/naming/spi/DirectoryManager.java \
+classpath/javax/naming/spi/InitialContextFactory.java \
+classpath/javax/naming/spi/InitialContextFactoryBuilder.java \
+javax/naming/spi/NamingManager.java \
+classpath/javax/naming/spi/ObjectFactory.java \
+classpath/javax/naming/spi/ObjectFactoryBuilder.java \
+classpath/javax/naming/spi/ResolveResult.java \
+classpath/javax/naming/spi/Resolver.java \
+classpath/javax/naming/spi/StateFactory.java
+
+javax_naming_spi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_naming_spi_source_files)))
+
+javax/naming/spi.list: $(javax_naming_spi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_naming_spi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/naming/spi.list
+
+-include javax/naming/spi.deps
+
+
+javax_net_source_files = \
+classpath/javax/net/ServerSocketFactory.java \
+classpath/javax/net/SocketFactory.java \
+classpath/javax/net/VanillaServerSocketFactory.java \
+classpath/javax/net/VanillaSocketFactory.java
+
+javax_net_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_net_source_files)))
+
+javax/net.list: $(javax_net_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_net_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/net.list
+
+-include javax/net.deps
+
+
+javax_net_ssl_source_files = \
+classpath/javax/net/ssl/HandshakeCompletedEvent.java \
+classpath/javax/net/ssl/HandshakeCompletedListener.java \
+classpath/javax/net/ssl/HostnameVerifier.java \
+classpath/javax/net/ssl/HttpsURLConnection.java \
+classpath/javax/net/ssl/KeyManager.java \
+classpath/javax/net/ssl/KeyManagerFactory.java \
+classpath/javax/net/ssl/KeyManagerFactorySpi.java \
+classpath/javax/net/ssl/ManagerFactoryParameters.java \
+classpath/javax/net/ssl/SSLContext.java \
+classpath/javax/net/ssl/SSLContextSpi.java \
+classpath/javax/net/ssl/SSLException.java \
+classpath/javax/net/ssl/SSLHandshakeException.java \
+classpath/javax/net/ssl/SSLKeyException.java \
+classpath/javax/net/ssl/SSLPeerUnverifiedException.java \
+classpath/javax/net/ssl/SSLPermission.java \
+classpath/javax/net/ssl/SSLProtocolException.java \
+classpath/javax/net/ssl/SSLServerSocket.java \
+classpath/javax/net/ssl/SSLServerSocketFactory.java \
+classpath/javax/net/ssl/SSLSession.java \
+classpath/javax/net/ssl/SSLSessionBindingEvent.java \
+classpath/javax/net/ssl/SSLSessionBindingListener.java \
+classpath/javax/net/ssl/SSLSessionContext.java \
+classpath/javax/net/ssl/SSLSocket.java \
+classpath/javax/net/ssl/SSLSocketFactory.java \
+classpath/javax/net/ssl/TrivialHostnameVerifier.java \
+classpath/javax/net/ssl/TrustManager.java \
+classpath/javax/net/ssl/TrustManagerFactory.java \
+classpath/javax/net/ssl/TrustManagerFactorySpi.java \
+classpath/javax/net/ssl/X509KeyManager.java \
+classpath/javax/net/ssl/X509TrustManager.java
+
+javax_net_ssl_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_net_ssl_source_files)))
+
+javax/net/ssl.list: $(javax_net_ssl_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_net_ssl_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/net/ssl.list
+
+-include javax/net/ssl.deps
+
+
+javax_print_source_files = \
+classpath/javax/print/AttributeException.java \
+classpath/javax/print/CancelablePrintJob.java \
+classpath/javax/print/Doc.java \
+classpath/javax/print/DocFlavor.java \
+classpath/javax/print/DocPrintJob.java \
+classpath/javax/print/FlavorException.java \
+classpath/javax/print/MultiDoc.java \
+classpath/javax/print/MultiDocPrintJob.java \
+classpath/javax/print/MultiDocPrintService.java \
+classpath/javax/print/PrintException.java \
+classpath/javax/print/PrintService.java \
+classpath/javax/print/PrintServiceLookup.java \
+classpath/javax/print/ServiceUI.java \
+classpath/javax/print/ServiceUIFactory.java \
+classpath/javax/print/SimpleDoc.java \
+classpath/javax/print/StreamPrintService.java \
+classpath/javax/print/StreamPrintServiceFactory.java \
+classpath/javax/print/URIException.java
+
+javax_print_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_print_source_files)))
+
+javax/print.list: $(javax_print_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_print_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/print.list
+
+-include javax/print.deps
+
+
+javax_print_attribute_source_files = \
+classpath/javax/print/attribute/Attribute.java \
+classpath/javax/print/attribute/AttributeSet.java \
+classpath/javax/print/attribute/AttributeSetUtilities.java \
+classpath/javax/print/attribute/DateTimeSyntax.java \
+classpath/javax/print/attribute/DocAttribute.java \
+classpath/javax/print/attribute/DocAttributeSet.java \
+classpath/javax/print/attribute/EnumSyntax.java \
+classpath/javax/print/attribute/HashAttributeSet.java \
+classpath/javax/print/attribute/HashDocAttributeSet.java \
+classpath/javax/print/attribute/HashPrintJobAttributeSet.java \
+classpath/javax/print/attribute/HashPrintRequestAttributeSet.java \
+classpath/javax/print/attribute/HashPrintServiceAttributeSet.java \
+classpath/javax/print/attribute/IntegerSyntax.java \
+classpath/javax/print/attribute/PrintJobAttribute.java \
+classpath/javax/print/attribute/PrintJobAttributeSet.java \
+classpath/javax/print/attribute/PrintRequestAttribute.java \
+classpath/javax/print/attribute/PrintRequestAttributeSet.java \
+classpath/javax/print/attribute/PrintServiceAttribute.java \
+classpath/javax/print/attribute/PrintServiceAttributeSet.java \
+classpath/javax/print/attribute/ResolutionSyntax.java \
+classpath/javax/print/attribute/SetOfIntegerSyntax.java \
+classpath/javax/print/attribute/Size2DSyntax.java \
+classpath/javax/print/attribute/SupportedValuesAttribute.java \
+classpath/javax/print/attribute/TextSyntax.java \
+classpath/javax/print/attribute/URISyntax.java \
+classpath/javax/print/attribute/UnmodifiableSetException.java
+
+javax_print_attribute_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_print_attribute_source_files)))
+
+javax/print/attribute.list: $(javax_print_attribute_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_print_attribute_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/print/attribute.list
+
+-include javax/print/attribute.deps
+
+
+javax_print_attribute_standard_source_files = \
+classpath/javax/print/attribute/standard/Chromaticity.java \
+classpath/javax/print/attribute/standard/ColorSupported.java \
+classpath/javax/print/attribute/standard/Compression.java \
+classpath/javax/print/attribute/standard/Copies.java \
+classpath/javax/print/attribute/standard/CopiesSupported.java \
+classpath/javax/print/attribute/standard/DateTimeAtCompleted.java \
+classpath/javax/print/attribute/standard/DateTimeAtCreation.java \
+classpath/javax/print/attribute/standard/DateTimeAtProcessing.java \
+classpath/javax/print/attribute/standard/Destination.java \
+classpath/javax/print/attribute/standard/DocumentName.java \
+classpath/javax/print/attribute/standard/Fidelity.java \
+classpath/javax/print/attribute/standard/Finishings.java \
+classpath/javax/print/attribute/standard/JobHoldUntil.java \
+classpath/javax/print/attribute/standard/JobImpressions.java \
+classpath/javax/print/attribute/standard/JobImpressionsCompleted.java \
+classpath/javax/print/attribute/standard/JobImpressionsSupported.java \
+classpath/javax/print/attribute/standard/JobKOctets.java \
+classpath/javax/print/attribute/standard/JobKOctetsProcessed.java \
+classpath/javax/print/attribute/standard/JobKOctetsSupported.java \
+classpath/javax/print/attribute/standard/JobMediaSheets.java \
+classpath/javax/print/attribute/standard/JobMediaSheetsCompleted.java \
+classpath/javax/print/attribute/standard/JobMediaSheetsSupported.java \
+classpath/javax/print/attribute/standard/JobMessageFromOperator.java \
+classpath/javax/print/attribute/standard/JobName.java \
+classpath/javax/print/attribute/standard/JobOriginatingUserName.java \
+classpath/javax/print/attribute/standard/JobPriority.java \
+classpath/javax/print/attribute/standard/JobPrioritySupported.java \
+classpath/javax/print/attribute/standard/JobSheets.java \
+classpath/javax/print/attribute/standard/JobState.java \
+classpath/javax/print/attribute/standard/JobStateReason.java \
+classpath/javax/print/attribute/standard/JobStateReasons.java \
+classpath/javax/print/attribute/standard/Media.java \
+classpath/javax/print/attribute/standard/MediaName.java \
+classpath/javax/print/attribute/standard/MediaPrintableArea.java \
+classpath/javax/print/attribute/standard/MediaSize.java \
+classpath/javax/print/attribute/standard/MediaSizeName.java \
+classpath/javax/print/attribute/standard/MediaTray.java \
+classpath/javax/print/attribute/standard/MultipleDocumentHandling.java \
+classpath/javax/print/attribute/standard/NumberOfDocuments.java \
+classpath/javax/print/attribute/standard/NumberOfInterveningJobs.java \
+classpath/javax/print/attribute/standard/NumberUp.java \
+classpath/javax/print/attribute/standard/NumberUpSupported.java \
+classpath/javax/print/attribute/standard/OrientationRequested.java \
+classpath/javax/print/attribute/standard/OutputDeviceAssigned.java \
+classpath/javax/print/attribute/standard/PDLOverrideSupported.java \
+classpath/javax/print/attribute/standard/PageRanges.java \
+classpath/javax/print/attribute/standard/PagesPerMinute.java \
+classpath/javax/print/attribute/standard/PagesPerMinuteColor.java \
+classpath/javax/print/attribute/standard/PresentationDirection.java \
+classpath/javax/print/attribute/standard/PrintQuality.java \
+classpath/javax/print/attribute/standard/PrinterInfo.java \
+classpath/javax/print/attribute/standard/PrinterIsAcceptingJobs.java \
+classpath/javax/print/attribute/standard/PrinterLocation.java \
+classpath/javax/print/attribute/standard/PrinterMakeAndModel.java \
+classpath/javax/print/attribute/standard/PrinterMessageFromOperator.java \
+classpath/javax/print/attribute/standard/PrinterMoreInfo.java \
+classpath/javax/print/attribute/standard/PrinterMoreInfoManufacturer.java \
+classpath/javax/print/attribute/standard/PrinterName.java \
+classpath/javax/print/attribute/standard/PrinterResolution.java \
+classpath/javax/print/attribute/standard/PrinterState.java \
+classpath/javax/print/attribute/standard/PrinterStateReason.java \
+classpath/javax/print/attribute/standard/PrinterStateReasons.java \
+classpath/javax/print/attribute/standard/PrinterURI.java \
+classpath/javax/print/attribute/standard/QueuedJobCount.java \
+classpath/javax/print/attribute/standard/ReferenceUriSchemesSupported.java \
+classpath/javax/print/attribute/standard/RequestingUserName.java \
+classpath/javax/print/attribute/standard/Severity.java \
+classpath/javax/print/attribute/standard/SheetCollate.java \
+classpath/javax/print/attribute/standard/Sides.java
+
+javax_print_attribute_standard_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_print_attribute_standard_source_files)))
+
+javax/print/attribute/standard.list: $(javax_print_attribute_standard_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_print_attribute_standard_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/print/attribute/standard.list
+
+-include javax/print/attribute/standard.deps
+
+
+javax_print_event_source_files = \
+classpath/javax/print/event/PrintEvent.java \
+classpath/javax/print/event/PrintJobAdapter.java \
+classpath/javax/print/event/PrintJobAttributeEvent.java \
+classpath/javax/print/event/PrintJobAttributeListener.java \
+classpath/javax/print/event/PrintJobEvent.java \
+classpath/javax/print/event/PrintJobListener.java \
+classpath/javax/print/event/PrintServiceAttributeEvent.java \
+classpath/javax/print/event/PrintServiceAttributeListener.java
+
+javax_print_event_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_print_event_source_files)))
+
+javax/print/event.list: $(javax_print_event_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_print_event_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/print/event.list
+
+-include javax/print/event.deps
+
+
+javax_rmi_source_files = \
+classpath/javax/rmi/CORBA/ClassDesc.java \
+classpath/javax/rmi/CORBA/PortableRemoteObjectDelegate.java \
+classpath/javax/rmi/CORBA/Stub.java \
+classpath/javax/rmi/CORBA/StubDelegate.java \
+classpath/javax/rmi/CORBA/Tie.java \
+classpath/javax/rmi/CORBA/Util.java \
+classpath/javax/rmi/CORBA/UtilDelegate.java \
+classpath/javax/rmi/CORBA/ValueHandler.java \
+classpath/javax/rmi/CORBA/ValueHandlerMultiFormat.java \
+classpath/javax/rmi/PortableRemoteObject.java \
+classpath/javax/rmi/ssl/SslRMIClientSocketFactory.java \
+classpath/javax/rmi/ssl/SslRMIServerSocketFactory.java
+
+javax-rmi.lo: $(javax_rmi_source_files)
+	@find classpath/lib/javax/rmi -name '*.class' > javax-rmi.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o javax-rmi.lo @javax-rmi.list
+	@rm -f javax-rmi.list
+
+javax_security_auth_source_files = \
+classpath/javax/security/auth/AuthPermission.java \
+classpath/javax/security/auth/DestroyFailedException.java \
+classpath/javax/security/auth/Destroyable.java \
+classpath/javax/security/auth/Policy.java \
+classpath/javax/security/auth/PrivateCredentialPermission.java \
+classpath/javax/security/auth/RefreshFailedException.java \
+classpath/javax/security/auth/Refreshable.java \
+classpath/javax/security/auth/Subject.java \
+classpath/javax/security/auth/SubjectDomainCombiner.java
+
+javax_security_auth_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_security_auth_source_files)))
+
+javax/security/auth.list: $(javax_security_auth_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_security_auth_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/security/auth.list
+
+-include javax/security/auth.deps
+
+
+javax_security_auth_callback_source_files = \
+classpath/javax/security/auth/callback/Callback.java \
+classpath/javax/security/auth/callback/CallbackHandler.java \
+classpath/javax/security/auth/callback/ChoiceCallback.java \
+classpath/javax/security/auth/callback/ConfirmationCallback.java \
+classpath/javax/security/auth/callback/LanguageCallback.java \
+classpath/javax/security/auth/callback/NameCallback.java \
+classpath/javax/security/auth/callback/PasswordCallback.java \
+classpath/javax/security/auth/callback/TextInputCallback.java \
+classpath/javax/security/auth/callback/TextOutputCallback.java \
+classpath/javax/security/auth/callback/UnsupportedCallbackException.java
+
+javax_security_auth_callback_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_security_auth_callback_source_files)))
+
+javax/security/auth/callback.list: $(javax_security_auth_callback_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_security_auth_callback_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/security/auth/callback.list
+
+-include javax/security/auth/callback.deps
+
+
+javax_security_auth_kerberos_source_files = \
+classpath/javax/security/auth/kerberos/DelegationPermission.java \
+classpath/javax/security/auth/kerberos/KerberosKey.java \
+classpath/javax/security/auth/kerberos/KerberosPrincipal.java \
+classpath/javax/security/auth/kerberos/KerberosTicket.java \
+classpath/javax/security/auth/kerberos/KeyImpl.java \
+classpath/javax/security/auth/kerberos/ServicePermission.java
+
+javax_security_auth_kerberos_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_security_auth_kerberos_source_files)))
+
+javax/security/auth/kerberos.list: $(javax_security_auth_kerberos_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_security_auth_kerberos_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/security/auth/kerberos.list
+
+-include javax/security/auth/kerberos.deps
+
+
+javax_security_auth_login_source_files = \
+classpath/javax/security/auth/login/AccountException.java \
+classpath/javax/security/auth/login/AccountExpiredException.java \
+classpath/javax/security/auth/login/AccountLockedException.java \
+classpath/javax/security/auth/login/AccountNotFoundException.java \
+classpath/javax/security/auth/login/AppConfigurationEntry.java \
+classpath/javax/security/auth/login/Configuration.java \
+classpath/javax/security/auth/login/CredentialException.java \
+classpath/javax/security/auth/login/CredentialExpiredException.java \
+classpath/javax/security/auth/login/CredentialNotFoundException.java \
+classpath/javax/security/auth/login/FailedLoginException.java \
+classpath/javax/security/auth/login/LoginContext.java \
+classpath/javax/security/auth/login/LoginException.java \
+classpath/javax/security/auth/login/NullConfiguration.java
+
+javax_security_auth_login_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_security_auth_login_source_files)))
+
+javax/security/auth/login.list: $(javax_security_auth_login_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_security_auth_login_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/security/auth/login.list
+
+-include javax/security/auth/login.deps
+
+
+javax_security_auth_spi_source_files = \
+classpath/javax/security/auth/spi/LoginModule.java
+
+javax_security_auth_spi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_security_auth_spi_source_files)))
+
+javax/security/auth/spi.list: $(javax_security_auth_spi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_security_auth_spi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/security/auth/spi.list
+
+-include javax/security/auth/spi.deps
+
+
+javax_security_auth_x500_source_files = \
+classpath/javax/security/auth/x500/X500Principal.java \
+classpath/javax/security/auth/x500/X500PrivateCredential.java
+
+javax_security_auth_x500_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_security_auth_x500_source_files)))
+
+javax/security/auth/x500.list: $(javax_security_auth_x500_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_security_auth_x500_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/security/auth/x500.list
+
+-include javax/security/auth/x500.deps
+
+
+javax_security_cert_source_files = \
+classpath/javax/security/cert/Certificate.java \
+classpath/javax/security/cert/CertificateEncodingException.java \
+classpath/javax/security/cert/CertificateException.java \
+classpath/javax/security/cert/CertificateExpiredException.java \
+classpath/javax/security/cert/CertificateNotYetValidException.java \
+classpath/javax/security/cert/CertificateParsingException.java \
+classpath/javax/security/cert/X509CertBridge.java \
+classpath/javax/security/cert/X509Certificate.java
+
+javax_security_cert_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_security_cert_source_files)))
+
+javax/security/cert.list: $(javax_security_cert_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_security_cert_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/security/cert.list
+
+-include javax/security/cert.deps
+
+
+javax_security_sasl_source_files = \
+classpath/javax/security/sasl/AuthenticationException.java \
+classpath/javax/security/sasl/AuthorizeCallback.java \
+classpath/javax/security/sasl/RealmCallback.java \
+classpath/javax/security/sasl/RealmChoiceCallback.java \
+classpath/javax/security/sasl/Sasl.java \
+classpath/javax/security/sasl/SaslClient.java \
+classpath/javax/security/sasl/SaslClientFactory.java \
+classpath/javax/security/sasl/SaslException.java \
+classpath/javax/security/sasl/SaslServer.java \
+classpath/javax/security/sasl/SaslServerFactory.java
+
+javax_security_sasl_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_security_sasl_source_files)))
+
+javax/security/sasl.list: $(javax_security_sasl_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_security_sasl_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/security/sasl.list
+
+-include javax/security/sasl.deps
+
+
+javax_sound_midi_source_files = \
+classpath/javax/sound/midi/ControllerEventListener.java \
+classpath/javax/sound/midi/Instrument.java \
+classpath/javax/sound/midi/InvalidMidiDataException.java \
+classpath/javax/sound/midi/MetaEventListener.java \
+classpath/javax/sound/midi/MetaMessage.java \
+classpath/javax/sound/midi/MidiChannel.java \
+classpath/javax/sound/midi/MidiDevice.java \
+classpath/javax/sound/midi/MidiEvent.java \
+classpath/javax/sound/midi/MidiFileFormat.java \
+classpath/javax/sound/midi/MidiMessage.java \
+classpath/javax/sound/midi/MidiSystem.java \
+classpath/javax/sound/midi/MidiUnavailableException.java \
+classpath/javax/sound/midi/Patch.java \
+classpath/javax/sound/midi/Receiver.java \
+classpath/javax/sound/midi/Sequence.java \
+classpath/javax/sound/midi/Sequencer.java \
+classpath/javax/sound/midi/ShortMessage.java \
+classpath/javax/sound/midi/Soundbank.java \
+classpath/javax/sound/midi/SoundbankResource.java \
+classpath/javax/sound/midi/Synthesizer.java \
+classpath/javax/sound/midi/SysexMessage.java \
+classpath/javax/sound/midi/Track.java \
+classpath/javax/sound/midi/Transmitter.java \
+classpath/javax/sound/midi/VoiceStatus.java
+
+javax_sound_midi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_sound_midi_source_files)))
+
+javax/sound/midi.list: $(javax_sound_midi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_sound_midi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/sound/midi.list
+
+-include javax/sound/midi.deps
+
+
+javax_sound_midi_spi_source_files = \
+classpath/javax/sound/midi/spi/MidiDeviceProvider.java \
+classpath/javax/sound/midi/spi/MidiFileReader.java \
+classpath/javax/sound/midi/spi/MidiFileWriter.java \
+classpath/javax/sound/midi/spi/SoundbankReader.java
+
+javax_sound_midi_spi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_sound_midi_spi_source_files)))
+
+javax/sound/midi/spi.list: $(javax_sound_midi_spi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_sound_midi_spi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/sound/midi/spi.list
+
+-include javax/sound/midi/spi.deps
+
+
+javax_sound_sampled_source_files = \
+classpath/javax/sound/sampled/AudioFileFormat.java \
+classpath/javax/sound/sampled/AudioFormat.java \
+classpath/javax/sound/sampled/AudioInputStream.java \
+classpath/javax/sound/sampled/AudioPermission.java \
+classpath/javax/sound/sampled/AudioSystem.java \
+classpath/javax/sound/sampled/BooleanControl.java \
+classpath/javax/sound/sampled/Clip.java \
+classpath/javax/sound/sampled/CompoundControl.java \
+classpath/javax/sound/sampled/Control.java \
+classpath/javax/sound/sampled/DataLine.java \
+classpath/javax/sound/sampled/EnumControl.java \
+classpath/javax/sound/sampled/FloatControl.java \
+classpath/javax/sound/sampled/Line.java \
+classpath/javax/sound/sampled/LineEvent.java \
+classpath/javax/sound/sampled/LineListener.java \
+classpath/javax/sound/sampled/LineUnavailableException.java \
+classpath/javax/sound/sampled/Mixer.java \
+classpath/javax/sound/sampled/Port.java \
+classpath/javax/sound/sampled/ReverbType.java \
+classpath/javax/sound/sampled/SourceDataLine.java \
+classpath/javax/sound/sampled/TargetDataLine.java \
+classpath/javax/sound/sampled/UnsupportedAudioFileException.java
+
+javax_sound_sampled_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_sound_sampled_source_files)))
+
+javax/sound/sampled.list: $(javax_sound_sampled_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_sound_sampled_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/sound/sampled.list
+
+-include javax/sound/sampled.deps
+
+
+javax_sound_sampled_spi_source_files = \
+classpath/javax/sound/sampled/spi/AudioFileReader.java \
+classpath/javax/sound/sampled/spi/AudioFileWriter.java \
+classpath/javax/sound/sampled/spi/FormatConversionProvider.java \
+classpath/javax/sound/sampled/spi/MixerProvider.java
+
+javax_sound_sampled_spi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_sound_sampled_spi_source_files)))
+
+javax/sound/sampled/spi.list: $(javax_sound_sampled_spi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_sound_sampled_spi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/sound/sampled/spi.list
+
+-include javax/sound/sampled/spi.deps
+
+
+javax_sql_source_files = \
+classpath/javax/sql/ConnectionEvent.java \
+classpath/javax/sql/ConnectionEventListener.java \
+classpath/javax/sql/ConnectionPoolDataSource.java \
+classpath/javax/sql/DataSource.java \
+classpath/javax/sql/PooledConnection.java \
+classpath/javax/sql/RowSet.java \
+classpath/javax/sql/RowSetEvent.java \
+classpath/javax/sql/RowSetInternal.java \
+classpath/javax/sql/RowSetListener.java \
+classpath/javax/sql/RowSetMetaData.java \
+classpath/javax/sql/RowSetReader.java \
+classpath/javax/sql/RowSetWriter.java \
+classpath/javax/sql/XAConnection.java \
+classpath/javax/sql/XADataSource.java
+
+javax_sql_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_sql_source_files)))
+
+javax/sql.list: $(javax_sql_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_sql_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/sql.list
+
+-include javax/sql.deps
+
+
+javax_swing_source_files = \
+classpath/javax/swing/AbstractAction.java \
+classpath/javax/swing/AbstractButton.java \
+classpath/javax/swing/AbstractCellEditor.java \
+classpath/javax/swing/AbstractListModel.java \
+classpath/javax/swing/AbstractSpinnerModel.java \
+classpath/javax/swing/Action.java \
+classpath/javax/swing/ActionMap.java \
+classpath/javax/swing/BorderFactory.java \
+classpath/javax/swing/BoundedRangeModel.java \
+classpath/javax/swing/Box.java \
+classpath/javax/swing/BoxLayout.java \
+classpath/javax/swing/ButtonGroup.java \
+classpath/javax/swing/ButtonModel.java \
+classpath/javax/swing/CellEditor.java \
+classpath/javax/swing/CellRendererPane.java \
+classpath/javax/swing/ComboBoxEditor.java \
+classpath/javax/swing/ComboBoxModel.java \
+classpath/javax/swing/CompatibilityFocusTraversalPolicy.java \
+classpath/javax/swing/ComponentInputMap.java \
+classpath/javax/swing/DebugGraphics.java \
+classpath/javax/swing/DefaultBoundedRangeModel.java \
+classpath/javax/swing/DefaultButtonModel.java \
+classpath/javax/swing/DefaultCellEditor.java \
+classpath/javax/swing/DefaultComboBoxModel.java \
+classpath/javax/swing/DefaultDesktopManager.java \
+classpath/javax/swing/DefaultFocusManager.java \
+classpath/javax/swing/DefaultListCellRenderer.java \
+classpath/javax/swing/DefaultListModel.java \
+classpath/javax/swing/DefaultListSelectionModel.java \
+classpath/javax/swing/DefaultSingleSelectionModel.java \
+classpath/javax/swing/DesktopManager.java \
+classpath/javax/swing/FocusManager.java \
+classpath/javax/swing/GrayFilter.java \
+classpath/javax/swing/Icon.java \
+classpath/javax/swing/ImageIcon.java \
+classpath/javax/swing/InputMap.java \
+classpath/javax/swing/InputVerifier.java \
+classpath/javax/swing/InternalFrameFocusTraversalPolicy.java \
+classpath/javax/swing/JApplet.java \
+classpath/javax/swing/JButton.java \
+classpath/javax/swing/JCheckBox.java \
+classpath/javax/swing/JCheckBoxMenuItem.java \
+classpath/javax/swing/JColorChooser.java \
+classpath/javax/swing/JComboBox.java \
+classpath/javax/swing/JComponent.java \
+classpath/javax/swing/JDesktopPane.java \
+classpath/javax/swing/JDialog.java \
+classpath/javax/swing/JEditorPane.java \
+classpath/javax/swing/JFileChooser.java \
+classpath/javax/swing/JFormattedTextField.java \
+classpath/javax/swing/JFrame.java \
+classpath/javax/swing/JInternalFrame.java \
+classpath/javax/swing/JLabel.java \
+classpath/javax/swing/JLayeredPane.java \
+classpath/javax/swing/JList.java \
+classpath/javax/swing/JMenu.java \
+classpath/javax/swing/JMenuBar.java \
+classpath/javax/swing/JMenuItem.java \
+classpath/javax/swing/JOptionPane.java \
+classpath/javax/swing/JPanel.java \
+classpath/javax/swing/JPasswordField.java \
+classpath/javax/swing/JPopupMenu.java \
+classpath/javax/swing/JProgressBar.java \
+classpath/javax/swing/JRadioButton.java \
+classpath/javax/swing/JRadioButtonMenuItem.java \
+classpath/javax/swing/JRootPane.java \
+classpath/javax/swing/JScrollBar.java \
+classpath/javax/swing/JScrollPane.java \
+classpath/javax/swing/JSeparator.java \
+classpath/javax/swing/JSlider.java \
+classpath/javax/swing/JSpinner.java \
+classpath/javax/swing/JSplitPane.java \
+classpath/javax/swing/JTabbedPane.java \
+classpath/javax/swing/JTable.java \
+classpath/javax/swing/JTextArea.java \
+classpath/javax/swing/JTextField.java \
+classpath/javax/swing/JTextPane.java \
+classpath/javax/swing/JToggleButton.java \
+classpath/javax/swing/JToolBar.java \
+classpath/javax/swing/JToolTip.java \
+classpath/javax/swing/JTree.java \
+classpath/javax/swing/JViewport.java \
+classpath/javax/swing/JWindow.java \
+classpath/javax/swing/KeyStroke.java \
+classpath/javax/swing/KeyboardManager.java \
+classpath/javax/swing/LayoutFocusTraversalPolicy.java \
+classpath/javax/swing/ListCellRenderer.java \
+classpath/javax/swing/ListModel.java \
+classpath/javax/swing/ListSelectionModel.java \
+classpath/javax/swing/LookAndFeel.java \
+classpath/javax/swing/MenuElement.java \
+classpath/javax/swing/MenuSelectionManager.java \
+classpath/javax/swing/MutableComboBoxModel.java \
+classpath/javax/swing/OverlayLayout.java \
+classpath/javax/swing/Popup.java \
+classpath/javax/swing/PopupFactory.java \
+classpath/javax/swing/ProgressMonitor.java \
+classpath/javax/swing/ProgressMonitorInputStream.java \
+classpath/javax/swing/Renderer.java \
+classpath/javax/swing/RepaintManager.java \
+classpath/javax/swing/RootPaneContainer.java \
+classpath/javax/swing/ScrollPaneConstants.java \
+classpath/javax/swing/ScrollPaneLayout.java \
+classpath/javax/swing/Scrollable.java \
+classpath/javax/swing/SingleSelectionModel.java \
+classpath/javax/swing/SizeRequirements.java \
+classpath/javax/swing/SizeSequence.java \
+classpath/javax/swing/SortingFocusTraversalPolicy.java \
+classpath/javax/swing/SpinnerDateModel.java \
+classpath/javax/swing/SpinnerListModel.java \
+classpath/javax/swing/SpinnerModel.java \
+classpath/javax/swing/SpinnerNumberModel.java \
+classpath/javax/swing/Spring.java \
+classpath/javax/swing/SpringLayout.java \
+classpath/javax/swing/SwingConstants.java \
+classpath/javax/swing/SwingUtilities.java \
+classpath/javax/swing/Timer.java \
+classpath/javax/swing/ToolTipManager.java \
+classpath/javax/swing/TransferHandler.java \
+classpath/javax/swing/UIDefaults.java \
+classpath/javax/swing/UIManager.java \
+classpath/javax/swing/UnsupportedLookAndFeelException.java \
+classpath/javax/swing/ViewportLayout.java \
+classpath/javax/swing/WindowConstants.java
+
+javax_swing_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_source_files)))
+
+javax/swing.list: $(javax_swing_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing.list
+
+-include javax/swing.deps
+
+
+javax_swing_border_source_files = \
+classpath/javax/swing/border/AbstractBorder.java \
+classpath/javax/swing/border/BevelBorder.java \
+classpath/javax/swing/border/Border.java \
+classpath/javax/swing/border/CompoundBorder.java \
+classpath/javax/swing/border/EmptyBorder.java \
+classpath/javax/swing/border/EtchedBorder.java \
+classpath/javax/swing/border/LineBorder.java \
+classpath/javax/swing/border/MatteBorder.java \
+classpath/javax/swing/border/SoftBevelBorder.java \
+classpath/javax/swing/border/TitledBorder.java
+
+javax_swing_border_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_border_source_files)))
+
+javax/swing/border.list: $(javax_swing_border_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_border_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/border.list
+
+-include javax/swing/border.deps
+
+
+javax_swing_colorchooser_source_files = \
+classpath/javax/swing/colorchooser/AbstractColorChooserPanel.java \
+classpath/javax/swing/colorchooser/ColorChooserComponentFactory.java \
+classpath/javax/swing/colorchooser/ColorSelectionModel.java \
+classpath/javax/swing/colorchooser/DefaultColorSelectionModel.java \
+classpath/javax/swing/colorchooser/DefaultHSBChooserPanel.java \
+classpath/javax/swing/colorchooser/DefaultPreviewPanel.java \
+classpath/javax/swing/colorchooser/DefaultRGBChooserPanel.java \
+classpath/javax/swing/colorchooser/DefaultSwatchChooserPanel.java
+
+javax_swing_colorchooser_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_colorchooser_source_files)))
+
+javax/swing/colorchooser.list: $(javax_swing_colorchooser_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_colorchooser_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/colorchooser.list
+
+-include javax/swing/colorchooser.deps
+
+
+javax_swing_event_source_files = \
+classpath/javax/swing/event/AncestorEvent.java \
+classpath/javax/swing/event/AncestorListener.java \
+classpath/javax/swing/event/CaretEvent.java \
+classpath/javax/swing/event/CaretListener.java \
+classpath/javax/swing/event/CellEditorListener.java \
+classpath/javax/swing/event/ChangeEvent.java \
+classpath/javax/swing/event/ChangeListener.java \
+classpath/javax/swing/event/DocumentEvent.java \
+classpath/javax/swing/event/DocumentListener.java \
+classpath/javax/swing/event/EventListenerList.java \
+classpath/javax/swing/event/HyperlinkEvent.java \
+classpath/javax/swing/event/HyperlinkListener.java \
+classpath/javax/swing/event/InternalFrameAdapter.java \
+classpath/javax/swing/event/InternalFrameEvent.java \
+classpath/javax/swing/event/InternalFrameListener.java \
+classpath/javax/swing/event/ListDataEvent.java \
+classpath/javax/swing/event/ListDataListener.java \
+classpath/javax/swing/event/ListSelectionEvent.java \
+classpath/javax/swing/event/ListSelectionListener.java \
+classpath/javax/swing/event/MenuDragMouseEvent.java \
+classpath/javax/swing/event/MenuDragMouseListener.java \
+classpath/javax/swing/event/MenuEvent.java \
+classpath/javax/swing/event/MenuKeyEvent.java \
+classpath/javax/swing/event/MenuKeyListener.java \
+classpath/javax/swing/event/MenuListener.java \
+classpath/javax/swing/event/MouseInputAdapter.java \
+classpath/javax/swing/event/MouseInputListener.java \
+classpath/javax/swing/event/PopupMenuEvent.java \
+classpath/javax/swing/event/PopupMenuListener.java \
+classpath/javax/swing/event/SwingPropertyChangeSupport.java \
+classpath/javax/swing/event/TableColumnModelEvent.java \
+classpath/javax/swing/event/TableColumnModelListener.java \
+classpath/javax/swing/event/TableModelEvent.java \
+classpath/javax/swing/event/TableModelListener.java \
+classpath/javax/swing/event/TreeExpansionEvent.java \
+classpath/javax/swing/event/TreeExpansionListener.java \
+classpath/javax/swing/event/TreeModelEvent.java \
+classpath/javax/swing/event/TreeModelListener.java \
+classpath/javax/swing/event/TreeSelectionEvent.java \
+classpath/javax/swing/event/TreeSelectionListener.java \
+classpath/javax/swing/event/TreeWillExpandListener.java \
+classpath/javax/swing/event/UndoableEditEvent.java \
+classpath/javax/swing/event/UndoableEditListener.java
+
+javax_swing_event_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_event_source_files)))
+
+javax/swing/event.list: $(javax_swing_event_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_event_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/event.list
+
+-include javax/swing/event.deps
+
+
+javax_swing_filechooser_source_files = \
+classpath/javax/swing/filechooser/FileFilter.java \
+classpath/javax/swing/filechooser/FileSystemView.java \
+classpath/javax/swing/filechooser/FileView.java \
+classpath/javax/swing/filechooser/UnixFileSystemView.java
+
+javax_swing_filechooser_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_filechooser_source_files)))
+
+javax/swing/filechooser.list: $(javax_swing_filechooser_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_filechooser_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/filechooser.list
+
+-include javax/swing/filechooser.deps
+
+
+javax_swing_plaf_source_files = \
+classpath/javax/swing/plaf/ActionMapUIResource.java \
+classpath/javax/swing/plaf/BorderUIResource.java \
+classpath/javax/swing/plaf/ButtonUI.java \
+classpath/javax/swing/plaf/ColorChooserUI.java \
+classpath/javax/swing/plaf/ColorUIResource.java \
+classpath/javax/swing/plaf/ComboBoxUI.java \
+classpath/javax/swing/plaf/ComponentInputMapUIResource.java \
+classpath/javax/swing/plaf/ComponentUI.java \
+classpath/javax/swing/plaf/DesktopIconUI.java \
+classpath/javax/swing/plaf/DesktopPaneUI.java \
+classpath/javax/swing/plaf/DimensionUIResource.java \
+classpath/javax/swing/plaf/FileChooserUI.java \
+classpath/javax/swing/plaf/FontUIResource.java \
+classpath/javax/swing/plaf/IconUIResource.java \
+classpath/javax/swing/plaf/InputMapUIResource.java \
+classpath/javax/swing/plaf/InsetsUIResource.java \
+classpath/javax/swing/plaf/InternalFrameUI.java \
+classpath/javax/swing/plaf/LabelUI.java \
+classpath/javax/swing/plaf/ListUI.java \
+classpath/javax/swing/plaf/MenuBarUI.java \
+classpath/javax/swing/plaf/MenuItemUI.java \
+classpath/javax/swing/plaf/OptionPaneUI.java \
+classpath/javax/swing/plaf/PanelUI.java \
+classpath/javax/swing/plaf/PopupMenuUI.java \
+classpath/javax/swing/plaf/ProgressBarUI.java \
+classpath/javax/swing/plaf/RootPaneUI.java \
+classpath/javax/swing/plaf/ScrollBarUI.java \
+classpath/javax/swing/plaf/ScrollPaneUI.java \
+classpath/javax/swing/plaf/SeparatorUI.java \
+classpath/javax/swing/plaf/SliderUI.java \
+classpath/javax/swing/plaf/SpinnerUI.java \
+classpath/javax/swing/plaf/SplitPaneUI.java \
+classpath/javax/swing/plaf/TabbedPaneUI.java \
+classpath/javax/swing/plaf/TableHeaderUI.java \
+classpath/javax/swing/plaf/TableUI.java \
+classpath/javax/swing/plaf/TextUI.java \
+classpath/javax/swing/plaf/ToolBarUI.java \
+classpath/javax/swing/plaf/ToolTipUI.java \
+classpath/javax/swing/plaf/TreeUI.java \
+classpath/javax/swing/plaf/UIResource.java \
+classpath/javax/swing/plaf/ViewportUI.java
+
+javax_swing_plaf_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_plaf_source_files)))
+
+javax/swing/plaf.list: $(javax_swing_plaf_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_plaf_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/plaf.list
+
+-include javax/swing/plaf.deps
+
+
+javax_swing_plaf_basic_source_files = \
+classpath/javax/swing/plaf/basic/BasicArrowButton.java \
+classpath/javax/swing/plaf/basic/BasicBorders.java \
+classpath/javax/swing/plaf/basic/BasicButtonListener.java \
+classpath/javax/swing/plaf/basic/BasicButtonUI.java \
+classpath/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java \
+classpath/javax/swing/plaf/basic/BasicCheckBoxUI.java \
+classpath/javax/swing/plaf/basic/BasicColorChooserUI.java \
+classpath/javax/swing/plaf/basic/BasicComboBoxEditor.java \
+classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java \
+classpath/javax/swing/plaf/basic/BasicComboBoxUI.java \
+classpath/javax/swing/plaf/basic/BasicComboPopup.java \
+classpath/javax/swing/plaf/basic/BasicDesktopIconUI.java \
+classpath/javax/swing/plaf/basic/BasicDesktopPaneUI.java \
+classpath/javax/swing/plaf/basic/BasicDirectoryModel.java \
+classpath/javax/swing/plaf/basic/BasicEditorPaneUI.java \
+classpath/javax/swing/plaf/basic/BasicFileChooserUI.java \
+classpath/javax/swing/plaf/basic/BasicFormattedTextFieldUI.java \
+classpath/javax/swing/plaf/basic/BasicGraphicsUtils.java \
+classpath/javax/swing/plaf/basic/BasicHTML.java \
+classpath/javax/swing/plaf/basic/BasicIconFactory.java \
+classpath/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java \
+classpath/javax/swing/plaf/basic/BasicInternalFrameUI.java \
+classpath/javax/swing/plaf/basic/BasicLabelUI.java \
+classpath/javax/swing/plaf/basic/BasicListUI.java \
+classpath/javax/swing/plaf/basic/BasicLookAndFeel.java \
+classpath/javax/swing/plaf/basic/BasicMenuBarUI.java \
+classpath/javax/swing/plaf/basic/BasicMenuItemUI.java \
+classpath/javax/swing/plaf/basic/BasicMenuUI.java \
+classpath/javax/swing/plaf/basic/BasicOptionPaneUI.java \
+classpath/javax/swing/plaf/basic/BasicPanelUI.java \
+classpath/javax/swing/plaf/basic/BasicPasswordFieldUI.java \
+classpath/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java \
+classpath/javax/swing/plaf/basic/BasicPopupMenuUI.java \
+classpath/javax/swing/plaf/basic/BasicProgressBarUI.java \
+classpath/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java \
+classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java \
+classpath/javax/swing/plaf/basic/BasicRootPaneUI.java \
+classpath/javax/swing/plaf/basic/BasicScrollBarUI.java \
+classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java \
+classpath/javax/swing/plaf/basic/BasicSeparatorUI.java \
+classpath/javax/swing/plaf/basic/BasicSliderUI.java \
+classpath/javax/swing/plaf/basic/BasicSpinnerUI.java \
+classpath/javax/swing/plaf/basic/BasicSplitPaneDivider.java \
+classpath/javax/swing/plaf/basic/BasicSplitPaneUI.java \
+classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java \
+classpath/javax/swing/plaf/basic/BasicTableHeaderUI.java \
+classpath/javax/swing/plaf/basic/BasicTableUI.java \
+classpath/javax/swing/plaf/basic/BasicTextAreaUI.java \
+classpath/javax/swing/plaf/basic/BasicTextFieldUI.java \
+classpath/javax/swing/plaf/basic/BasicTextPaneUI.java \
+classpath/javax/swing/plaf/basic/BasicTextUI.java \
+classpath/javax/swing/plaf/basic/BasicToggleButtonUI.java \
+classpath/javax/swing/plaf/basic/BasicToolBarSeparatorUI.java \
+classpath/javax/swing/plaf/basic/BasicToolBarUI.java \
+classpath/javax/swing/plaf/basic/BasicToolTipUI.java \
+classpath/javax/swing/plaf/basic/BasicTreeUI.java \
+classpath/javax/swing/plaf/basic/BasicViewportUI.java \
+classpath/javax/swing/plaf/basic/ComboPopup.java \
+classpath/javax/swing/plaf/basic/DefaultMenuLayout.java \
+classpath/javax/swing/plaf/basic/SharedUIDefaults.java
+
+javax_swing_plaf_basic_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_plaf_basic_source_files)))
+
+javax/swing/plaf/basic.list: $(javax_swing_plaf_basic_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_plaf_basic_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/plaf/basic.list
+
+-include javax/swing/plaf/basic.deps
+
+
+javax_swing_plaf_metal_source_files = \
+classpath/javax/swing/plaf/metal/DefaultMetalTheme.java \
+classpath/javax/swing/plaf/metal/MetalBorders.java \
+classpath/javax/swing/plaf/metal/MetalButtonListener.java \
+classpath/javax/swing/plaf/metal/MetalButtonUI.java \
+classpath/javax/swing/plaf/metal/MetalCheckBoxIcon.java \
+classpath/javax/swing/plaf/metal/MetalCheckBoxUI.java \
+classpath/javax/swing/plaf/metal/MetalComboBoxButton.java \
+classpath/javax/swing/plaf/metal/MetalComboBoxEditor.java \
+classpath/javax/swing/plaf/metal/MetalComboBoxIcon.java \
+classpath/javax/swing/plaf/metal/MetalComboBoxUI.java \
+classpath/javax/swing/plaf/metal/MetalDesktopIconUI.java \
+classpath/javax/swing/plaf/metal/MetalFileChooserUI.java \
+classpath/javax/swing/plaf/metal/MetalIconFactory.java \
+classpath/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java \
+classpath/javax/swing/plaf/metal/MetalInternalFrameUI.java \
+classpath/javax/swing/plaf/metal/MetalLabelUI.java \
+classpath/javax/swing/plaf/metal/MetalLookAndFeel.java \
+classpath/javax/swing/plaf/metal/MetalMenuBarUI.java \
+classpath/javax/swing/plaf/metal/MetalPopupMenuSeparatorUI.java \
+classpath/javax/swing/plaf/metal/MetalProgressBarUI.java \
+classpath/javax/swing/plaf/metal/MetalRadioButtonUI.java \
+classpath/javax/swing/plaf/metal/MetalRootPaneUI.java \
+classpath/javax/swing/plaf/metal/MetalScrollBarUI.java \
+classpath/javax/swing/plaf/metal/MetalScrollButton.java \
+classpath/javax/swing/plaf/metal/MetalScrollPaneUI.java \
+classpath/javax/swing/plaf/metal/MetalSeparatorUI.java \
+classpath/javax/swing/plaf/metal/MetalSliderUI.java \
+classpath/javax/swing/plaf/metal/MetalSplitPaneDivider.java \
+classpath/javax/swing/plaf/metal/MetalSplitPaneUI.java \
+classpath/javax/swing/plaf/metal/MetalTabbedPaneUI.java \
+classpath/javax/swing/plaf/metal/MetalTextFieldUI.java \
+classpath/javax/swing/plaf/metal/MetalTheme.java \
+classpath/javax/swing/plaf/metal/MetalToggleButtonUI.java \
+classpath/javax/swing/plaf/metal/MetalToolBarUI.java \
+classpath/javax/swing/plaf/metal/MetalToolTipUI.java \
+classpath/javax/swing/plaf/metal/MetalTreeUI.java \
+classpath/javax/swing/plaf/metal/MetalUtils.java \
+classpath/javax/swing/plaf/metal/OceanTheme.java
+
+javax_swing_plaf_metal_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_plaf_metal_source_files)))
+
+javax/swing/plaf/metal.list: $(javax_swing_plaf_metal_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_plaf_metal_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/plaf/metal.list
+
+-include javax/swing/plaf/metal.deps
+
+
+javax_swing_plaf_multi_source_files = \
+classpath/javax/swing/plaf/multi/MultiButtonUI.java \
+classpath/javax/swing/plaf/multi/MultiColorChooserUI.java \
+classpath/javax/swing/plaf/multi/MultiComboBoxUI.java \
+classpath/javax/swing/plaf/multi/MultiDesktopIconUI.java \
+classpath/javax/swing/plaf/multi/MultiDesktopPaneUI.java \
+classpath/javax/swing/plaf/multi/MultiFileChooserUI.java \
+classpath/javax/swing/plaf/multi/MultiInternalFrameUI.java \
+classpath/javax/swing/plaf/multi/MultiLabelUI.java \
+classpath/javax/swing/plaf/multi/MultiListUI.java \
+classpath/javax/swing/plaf/multi/MultiLookAndFeel.java \
+classpath/javax/swing/plaf/multi/MultiMenuBarUI.java \
+classpath/javax/swing/plaf/multi/MultiMenuItemUI.java \
+classpath/javax/swing/plaf/multi/MultiOptionPaneUI.java \
+classpath/javax/swing/plaf/multi/MultiPanelUI.java \
+classpath/javax/swing/plaf/multi/MultiPopupMenuUI.java \
+classpath/javax/swing/plaf/multi/MultiProgressBarUI.java \
+classpath/javax/swing/plaf/multi/MultiRootPaneUI.java \
+classpath/javax/swing/plaf/multi/MultiScrollBarUI.java \
+classpath/javax/swing/plaf/multi/MultiScrollPaneUI.java \
+classpath/javax/swing/plaf/multi/MultiSeparatorUI.java \
+classpath/javax/swing/plaf/multi/MultiSliderUI.java \
+classpath/javax/swing/plaf/multi/MultiSpinnerUI.java \
+classpath/javax/swing/plaf/multi/MultiSplitPaneUI.java \
+classpath/javax/swing/plaf/multi/MultiTabbedPaneUI.java \
+classpath/javax/swing/plaf/multi/MultiTableHeaderUI.java \
+classpath/javax/swing/plaf/multi/MultiTableUI.java \
+classpath/javax/swing/plaf/multi/MultiTextUI.java \
+classpath/javax/swing/plaf/multi/MultiToolBarUI.java \
+classpath/javax/swing/plaf/multi/MultiToolTipUI.java \
+classpath/javax/swing/plaf/multi/MultiTreeUI.java \
+classpath/javax/swing/plaf/multi/MultiViewportUI.java
+
+javax_swing_plaf_multi_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_plaf_multi_source_files)))
+
+javax/swing/plaf/multi.list: $(javax_swing_plaf_multi_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_plaf_multi_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/plaf/multi.list
+
+-include javax/swing/plaf/multi.deps
+
+
+javax_swing_plaf_synth_source_files = \
+classpath/javax/swing/plaf/synth/ColorType.java \
+classpath/javax/swing/plaf/synth/Region.java \
+classpath/javax/swing/plaf/synth/SynthConstants.java \
+classpath/javax/swing/plaf/synth/SynthContext.java \
+classpath/javax/swing/plaf/synth/SynthGraphicsUtils.java \
+classpath/javax/swing/plaf/synth/SynthLookAndFeel.java \
+classpath/javax/swing/plaf/synth/SynthPainter.java \
+classpath/javax/swing/plaf/synth/SynthStyle.java \
+classpath/javax/swing/plaf/synth/SynthStyleFactory.java
+
+javax_swing_plaf_synth_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_plaf_synth_source_files)))
+
+javax/swing/plaf/synth.list: $(javax_swing_plaf_synth_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_plaf_synth_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/plaf/synth.list
+
+-include javax/swing/plaf/synth.deps
+
+
+javax_swing_table_source_files = \
+classpath/javax/swing/table/AbstractTableModel.java \
+classpath/javax/swing/table/DefaultTableCellRenderer.java \
+classpath/javax/swing/table/DefaultTableColumnModel.java \
+classpath/javax/swing/table/DefaultTableModel.java \
+classpath/javax/swing/table/JTableHeader.java \
+classpath/javax/swing/table/TableCellEditor.java \
+classpath/javax/swing/table/TableCellRenderer.java \
+classpath/javax/swing/table/TableColumn.java \
+classpath/javax/swing/table/TableColumnModel.java \
+classpath/javax/swing/table/TableModel.java
+
+javax_swing_table_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_table_source_files)))
+
+javax/swing/table.list: $(javax_swing_table_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_table_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/table.list
+
+-include javax/swing/table.deps
+
+
+javax_swing_text_source_files = \
+classpath/javax/swing/text/AbstractDocument.java \
+classpath/javax/swing/text/AbstractWriter.java \
+classpath/javax/swing/text/AsyncBoxView.java \
+classpath/javax/swing/text/AttributeSet.java \
+classpath/javax/swing/text/BadLocationException.java \
+classpath/javax/swing/text/BoxView.java \
+classpath/javax/swing/text/Caret.java \
+classpath/javax/swing/text/ChangedCharSetException.java \
+classpath/javax/swing/text/ComponentView.java \
+classpath/javax/swing/text/CompositeView.java \
+classpath/javax/swing/text/DateFormatter.java \
+classpath/javax/swing/text/DefaultCaret.java \
+classpath/javax/swing/text/DefaultEditorKit.java \
+classpath/javax/swing/text/DefaultFormatter.java \
+classpath/javax/swing/text/DefaultFormatterFactory.java \
+classpath/javax/swing/text/DefaultHighlighter.java \
+classpath/javax/swing/text/DefaultStyledDocument.java \
+classpath/javax/swing/text/DefaultTextUI.java \
+classpath/javax/swing/text/Document.java \
+classpath/javax/swing/text/DocumentFilter.java \
+classpath/javax/swing/text/EditorKit.java \
+classpath/javax/swing/text/Element.java \
+classpath/javax/swing/text/ElementIterator.java \
+classpath/javax/swing/text/EmptyAttributeSet.java \
+classpath/javax/swing/text/FieldView.java \
+classpath/javax/swing/text/FlowView.java \
+classpath/javax/swing/text/GapContent.java \
+classpath/javax/swing/text/GlyphView.java \
+classpath/javax/swing/text/Highlighter.java \
+classpath/javax/swing/text/IconView.java \
+classpath/javax/swing/text/InternationalFormatter.java \
+classpath/javax/swing/text/JTextComponent.java \
+classpath/javax/swing/text/Keymap.java \
+classpath/javax/swing/text/LabelView.java \
+classpath/javax/swing/text/LayeredHighlighter.java \
+classpath/javax/swing/text/LayoutQueue.java \
+classpath/javax/swing/text/MaskFormatter.java \
+classpath/javax/swing/text/MutableAttributeSet.java \
+classpath/javax/swing/text/NavigationFilter.java \
+classpath/javax/swing/text/NumberFormatter.java \
+classpath/javax/swing/text/ParagraphView.java \
+classpath/javax/swing/text/PasswordView.java \
+classpath/javax/swing/text/PlainDocument.java \
+classpath/javax/swing/text/PlainView.java \
+classpath/javax/swing/text/Position.java \
+classpath/javax/swing/text/Segment.java \
+classpath/javax/swing/text/SimpleAttributeSet.java \
+classpath/javax/swing/text/StringContent.java \
+classpath/javax/swing/text/Style.java \
+classpath/javax/swing/text/StyleConstants.java \
+classpath/javax/swing/text/StyleContext.java \
+classpath/javax/swing/text/StyledDocument.java \
+classpath/javax/swing/text/StyledEditorKit.java \
+classpath/javax/swing/text/TabExpander.java \
+classpath/javax/swing/text/TabSet.java \
+classpath/javax/swing/text/TabStop.java \
+classpath/javax/swing/text/TabableView.java \
+classpath/javax/swing/text/TableView.java \
+classpath/javax/swing/text/TextAction.java \
+classpath/javax/swing/text/Utilities.java \
+classpath/javax/swing/text/View.java \
+classpath/javax/swing/text/ViewFactory.java \
+classpath/javax/swing/text/WrappedPlainView.java
+
+javax_swing_text_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_text_source_files)))
+
+javax/swing/text.list: $(javax_swing_text_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_text_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/text.list
+
+-include javax/swing/text.deps
+
+
+javax_swing_text_html_source_files = \
+classpath/javax/swing/text/html/BRView.java \
+classpath/javax/swing/text/html/BlockView.java \
+classpath/javax/swing/text/html/CSS.java \
+classpath/javax/swing/text/html/CSSParser.java \
+classpath/javax/swing/text/html/FormView.java \
+classpath/javax/swing/text/html/HRuleView.java \
+classpath/javax/swing/text/html/HTML.java \
+classpath/javax/swing/text/html/HTMLDocument.java \
+classpath/javax/swing/text/html/HTMLEditorKit.java \
+classpath/javax/swing/text/html/HTMLFrameHyperlinkEvent.java \
+classpath/javax/swing/text/html/ImageView.java \
+classpath/javax/swing/text/html/InlineView.java \
+classpath/javax/swing/text/html/ListView.java \
+classpath/javax/swing/text/html/MinimalHTMLWriter.java \
+classpath/javax/swing/text/html/NullView.java \
+classpath/javax/swing/text/html/ObjectView.java \
+classpath/javax/swing/text/html/Option.java \
+classpath/javax/swing/text/html/ParagraphView.java \
+classpath/javax/swing/text/html/StyleSheet.java \
+classpath/javax/swing/text/html/TableView.java
+
+javax_swing_text_html_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_text_html_source_files)))
+
+javax/swing/text/html.list: $(javax_swing_text_html_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_text_html_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/text/html.list
+
+-include javax/swing/text/html.deps
+
+
+javax_swing_text_html_parser_source_files = \
+classpath/javax/swing/text/html/parser/AttributeList.java \
+classpath/javax/swing/text/html/parser/ContentModel.java \
+classpath/javax/swing/text/html/parser/DTD.java \
+classpath/javax/swing/text/html/parser/DTDConstants.java \
+classpath/javax/swing/text/html/parser/DocumentParser.java \
+classpath/javax/swing/text/html/parser/Element.java \
+classpath/javax/swing/text/html/parser/Entity.java \
+classpath/javax/swing/text/html/parser/Parser.java \
+classpath/javax/swing/text/html/parser/ParserDelegator.java \
+classpath/javax/swing/text/html/parser/TagElement.java
+
+javax_swing_text_html_parser_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_text_html_parser_source_files)))
+
+javax/swing/text/html/parser.list: $(javax_swing_text_html_parser_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_text_html_parser_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/text/html/parser.list
+
+-include javax/swing/text/html/parser.deps
+
+
+javax_swing_text_rtf_source_files = \
+classpath/javax/swing/text/rtf/ControlWordToken.java \
+classpath/javax/swing/text/rtf/RTFEditorKit.java \
+classpath/javax/swing/text/rtf/RTFParseException.java \
+classpath/javax/swing/text/rtf/RTFParser.java \
+classpath/javax/swing/text/rtf/RTFScanner.java \
+classpath/javax/swing/text/rtf/TextToken.java \
+classpath/javax/swing/text/rtf/Token.java
+
+javax_swing_text_rtf_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_text_rtf_source_files)))
+
+javax/swing/text/rtf.list: $(javax_swing_text_rtf_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_text_rtf_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/text/rtf.list
+
+-include javax/swing/text/rtf.deps
+
+
+javax_swing_tree_source_files = \
+classpath/javax/swing/tree/AbstractLayoutCache.java \
+classpath/javax/swing/tree/DefaultMutableTreeNode.java \
+classpath/javax/swing/tree/DefaultTreeCellEditor.java \
+classpath/javax/swing/tree/DefaultTreeCellRenderer.java \
+classpath/javax/swing/tree/DefaultTreeModel.java \
+classpath/javax/swing/tree/DefaultTreeSelectionModel.java \
+classpath/javax/swing/tree/ExpandVetoException.java \
+classpath/javax/swing/tree/FixedHeightLayoutCache.java \
+classpath/javax/swing/tree/MutableTreeNode.java \
+classpath/javax/swing/tree/RowMapper.java \
+classpath/javax/swing/tree/TreeCellEditor.java \
+classpath/javax/swing/tree/TreeCellRenderer.java \
+classpath/javax/swing/tree/TreeModel.java \
+classpath/javax/swing/tree/TreeNode.java \
+classpath/javax/swing/tree/TreePath.java \
+classpath/javax/swing/tree/TreeSelectionModel.java \
+classpath/javax/swing/tree/VariableHeightLayoutCache.java
+
+javax_swing_tree_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_tree_source_files)))
+
+javax/swing/tree.list: $(javax_swing_tree_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_tree_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/tree.list
+
+-include javax/swing/tree.deps
+
+
+javax_swing_undo_source_files = \
+classpath/javax/swing/undo/AbstractUndoableEdit.java \
+classpath/javax/swing/undo/CannotRedoException.java \
+classpath/javax/swing/undo/CannotUndoException.java \
+classpath/javax/swing/undo/CompoundEdit.java \
+classpath/javax/swing/undo/StateEdit.java \
+classpath/javax/swing/undo/StateEditable.java \
+classpath/javax/swing/undo/UndoManager.java \
+classpath/javax/swing/undo/UndoableEdit.java \
+classpath/javax/swing/undo/UndoableEditSupport.java
+
+javax_swing_undo_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_swing_undo_source_files)))
+
+javax/swing/undo.list: $(javax_swing_undo_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_swing_undo_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/swing/undo.list
+
+-include javax/swing/undo.deps
+
+
+javax_transaction_source_files = \
+classpath/javax/transaction/HeuristicCommitException.java \
+classpath/javax/transaction/HeuristicMixedException.java \
+classpath/javax/transaction/HeuristicRollbackException.java \
+classpath/javax/transaction/InvalidTransactionException.java \
+classpath/javax/transaction/NotSupportedException.java \
+classpath/javax/transaction/RollbackException.java \
+classpath/javax/transaction/Status.java \
+classpath/javax/transaction/Synchronization.java \
+classpath/javax/transaction/SystemException.java \
+classpath/javax/transaction/Transaction.java \
+classpath/javax/transaction/TransactionManager.java \
+classpath/javax/transaction/TransactionRequiredException.java \
+classpath/javax/transaction/TransactionRolledbackException.java \
+classpath/javax/transaction/UserTransaction.java
+
+javax_transaction_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_transaction_source_files)))
+
+javax/transaction.list: $(javax_transaction_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_transaction_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/transaction.list
+
+-include javax/transaction.deps
+
+
+javax_transaction_xa_source_files = \
+classpath/javax/transaction/xa/XAException.java \
+classpath/javax/transaction/xa/XAResource.java \
+classpath/javax/transaction/xa/Xid.java
+
+javax_transaction_xa_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(javax_transaction_xa_source_files)))
+
+javax/transaction/xa.list: $(javax_transaction_xa_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(javax_transaction_xa_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > javax/transaction/xa.list
+
+-include javax/transaction/xa.deps
+
+
+javax_xml_source_files = \
+classpath/javax/xml/XMLConstants.java \
+classpath/javax/xml/datatype/DatatypeConfigurationException.java \
+classpath/javax/xml/datatype/DatatypeConstants.java \
+classpath/javax/xml/datatype/DatatypeFactory.java \
+classpath/javax/xml/datatype/Duration.java \
+classpath/javax/xml/datatype/XMLGregorianCalendar.java \
+classpath/javax/xml/namespace/NamespaceContext.java \
+classpath/javax/xml/namespace/QName.java \
+classpath/javax/xml/parsers/DocumentBuilder.java \
+classpath/javax/xml/parsers/DocumentBuilderFactory.java \
+classpath/javax/xml/parsers/FactoryConfigurationError.java \
+classpath/javax/xml/parsers/ParserConfigurationException.java \
+classpath/javax/xml/parsers/SAXParser.java \
+classpath/javax/xml/parsers/SAXParserFactory.java \
+classpath/javax/xml/stream/EventFilter.java \
+classpath/javax/xml/stream/FactoryConfigurationError.java \
+classpath/javax/xml/stream/Location.java \
+classpath/javax/xml/stream/StreamFilter.java \
+classpath/javax/xml/stream/XMLEventFactory.java \
+classpath/javax/xml/stream/XMLEventReader.java \
+classpath/javax/xml/stream/XMLEventWriter.java \
+classpath/javax/xml/stream/XMLInputFactory.java \
+classpath/javax/xml/stream/XMLOutputFactory.java \
+classpath/javax/xml/stream/XMLReporter.java \
+classpath/javax/xml/stream/XMLResolver.java \
+classpath/javax/xml/stream/XMLStreamConstants.java \
+classpath/javax/xml/stream/XMLStreamException.java \
+classpath/javax/xml/stream/XMLStreamReader.java \
+classpath/javax/xml/stream/XMLStreamWriter.java \
+classpath/javax/xml/stream/events/Attribute.java \
+classpath/javax/xml/stream/events/Characters.java \
+classpath/javax/xml/stream/events/Comment.java \
+classpath/javax/xml/stream/events/DTD.java \
+classpath/javax/xml/stream/events/EndDocument.java \
+classpath/javax/xml/stream/events/EndElement.java \
+classpath/javax/xml/stream/events/EntityDeclaration.java \
+classpath/javax/xml/stream/events/EntityReference.java \
+classpath/javax/xml/stream/events/Namespace.java \
+classpath/javax/xml/stream/events/NotationDeclaration.java \
+classpath/javax/xml/stream/events/ProcessingInstruction.java \
+classpath/javax/xml/stream/events/StartDocument.java \
+classpath/javax/xml/stream/events/StartElement.java \
+classpath/javax/xml/stream/events/XMLEvent.java \
+classpath/javax/xml/stream/util/EventReaderDelegate.java \
+classpath/javax/xml/stream/util/ReaderDelegate.java \
+classpath/javax/xml/stream/util/XMLEventAllocator.java \
+classpath/javax/xml/stream/util/XMLEventConsumer.java \
+classpath/javax/xml/transform/ErrorListener.java \
+classpath/javax/xml/transform/OutputKeys.java \
+classpath/javax/xml/transform/Result.java \
+classpath/javax/xml/transform/Source.java \
+classpath/javax/xml/transform/SourceLocator.java \
+classpath/javax/xml/transform/Templates.java \
+classpath/javax/xml/transform/Transformer.java \
+classpath/javax/xml/transform/TransformerConfigurationException.java \
+classpath/javax/xml/transform/TransformerException.java \
+classpath/javax/xml/transform/TransformerFactory.java \
+classpath/javax/xml/transform/TransformerFactoryConfigurationError.java \
+classpath/javax/xml/transform/URIResolver.java \
+classpath/javax/xml/transform/dom/DOMLocator.java \
+classpath/javax/xml/transform/dom/DOMResult.java \
+classpath/javax/xml/transform/dom/DOMSource.java \
+classpath/javax/xml/transform/sax/SAXResult.java \
+classpath/javax/xml/transform/sax/SAXSource.java \
+classpath/javax/xml/transform/sax/SAXTransformerFactory.java \
+classpath/javax/xml/transform/sax/TemplatesHandler.java \
+classpath/javax/xml/transform/sax/TransformerHandler.java \
+classpath/javax/xml/transform/stream/StreamResult.java \
+classpath/javax/xml/transform/stream/StreamSource.java \
+classpath/javax/xml/validation/Schema.java \
+classpath/javax/xml/validation/SchemaFactory.java \
+classpath/javax/xml/validation/SchemaFactoryLoader.java \
+classpath/javax/xml/validation/TypeInfoProvider.java \
+classpath/javax/xml/validation/Validator.java \
+classpath/javax/xml/validation/ValidatorHandler.java \
+classpath/javax/xml/xpath/XPath.java \
+classpath/javax/xml/xpath/XPathConstants.java \
+classpath/javax/xml/xpath/XPathException.java \
+classpath/javax/xml/xpath/XPathExpression.java \
+classpath/javax/xml/xpath/XPathExpressionException.java \
+classpath/javax/xml/xpath/XPathFactory.java \
+classpath/javax/xml/xpath/XPathFactoryConfigurationException.java \
+classpath/javax/xml/xpath/XPathFunction.java \
+classpath/javax/xml/xpath/XPathFunctionException.java \
+classpath/javax/xml/xpath/XPathFunctionResolver.java \
+classpath/javax/xml/xpath/XPathVariableResolver.java
+
+javax-xml.lo: $(javax_xml_source_files)
+	@find classpath/lib/javax/xml -name '*.class' > javax-xml.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o javax-xml.lo @javax-xml.list
+	@rm -f javax-xml.list
+
+org_ietf_jgss_source_files = \
+classpath/org/ietf/jgss/ChannelBinding.java \
+classpath/org/ietf/jgss/GSSContext.java \
+classpath/org/ietf/jgss/GSSCredential.java \
+classpath/org/ietf/jgss/GSSException.java \
+classpath/org/ietf/jgss/GSSManager.java \
+classpath/org/ietf/jgss/GSSName.java \
+classpath/org/ietf/jgss/MessageProp.java \
+classpath/org/ietf/jgss/Oid.java
+
+org_ietf_jgss_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(org_ietf_jgss_source_files)))
+
+org/ietf/jgss.list: $(org_ietf_jgss_source_files)
+	@$(mkinstalldirs) $(dir $@)
+	@for file in $(org_ietf_jgss_source_files); do \
+	  if test -f $(srcdir)/$$file; then \
+	    echo $(srcdir)/$$file; \
+	  else echo $$file; fi; \
+	done > org/ietf/jgss.list
+
+-include org/ietf/jgss.deps
+
+
+org_omg_source_files = \
+classpath/org/omg/CORBA/ACTIVITY_COMPLETED.java \
+classpath/org/omg/CORBA/ACTIVITY_REQUIRED.java \
+classpath/org/omg/CORBA/ARG_IN.java \
+classpath/org/omg/CORBA/ARG_INOUT.java \
+classpath/org/omg/CORBA/ARG_OUT.java \
+classpath/org/omg/CORBA/Any.java \
+classpath/org/omg/CORBA/AnyHolder.java \
+classpath/org/omg/CORBA/AnySeqHelper.java \
+classpath/org/omg/CORBA/AnySeqHolder.java \
+classpath/org/omg/CORBA/BAD_CONTEXT.java \
+classpath/org/omg/CORBA/BAD_INV_ORDER.java \
+classpath/org/omg/CORBA/BAD_OPERATION.java \
+classpath/org/omg/CORBA/BAD_PARAM.java \
+classpath/org/omg/CORBA/BAD_POLICY.java \
+classpath/org/omg/CORBA/BAD_POLICY_TYPE.java \
+classpath/org/omg/CORBA/BAD_POLICY_VALUE.java \
+classpath/org/omg/CORBA/BAD_QOS.java \
+classpath/org/omg/CORBA/BAD_TYPECODE.java \
+classpath/org/omg/CORBA/BooleanHolder.java \
+classpath/org/omg/CORBA/BooleanSeqHelper.java \
+classpath/org/omg/CORBA/BooleanSeqHolder.java \
+classpath/org/omg/CORBA/Bounds.java \
+classpath/org/omg/CORBA/ByteHolder.java \
+classpath/org/omg/CORBA/CODESET_INCOMPATIBLE.java \
+classpath/org/omg/CORBA/COMM_FAILURE.java \
+classpath/org/omg/CORBA/CTX_RESTRICT_SCOPE.java \
+classpath/org/omg/CORBA/CharHolder.java \
+classpath/org/omg/CORBA/CharSeqHelper.java \
+classpath/org/omg/CORBA/CharSeqHolder.java \
+classpath/org/omg/CORBA/CompletionStatus.java \
+classpath/org/omg/CORBA/CompletionStatusHelper.java \
+classpath/org/omg/CORBA/Context.java \
+classpath/org/omg/CORBA/ContextList.java \
+classpath/org/omg/CORBA/Current.java \
+classpath/org/omg/CORBA/CurrentHelper.java \
+classpath/org/omg/CORBA/CurrentHolder.java \
+classpath/org/omg/CORBA/CurrentOperations.java \
+classpath/org/omg/CORBA/CustomMarshal.java \
+classpath/org/omg/CORBA/CustomValue.java \
+classpath/org/omg/CORBA/DATA_CONVERSION.java \
+classpath/org/omg/CORBA/DataInputStream.java \
+classpath/org/omg/CORBA/DataOutputStream.java \
+classpath/org/omg/CORBA/DefinitionKind.java \
+classpath/org/omg/CORBA/DefinitionKindHelper.java \
+classpath/org/omg/CORBA/DomainManager.java \
+classpath/org/omg/CORBA/DomainManagerOperations.java \
+classpath/org/omg/CORBA/DoubleHolder.java \
+classpath/org/omg/CORBA/DoubleSeqHelper.java \
+classpath/org/omg/CORBA/DoubleSeqHolder.java \
+classpath/org/omg/CORBA/DynAny.java \
+classpath/org/omg/CORBA/DynAnyPackage/Invalid.java \
+classpath/org/omg/CORBA/DynAnyPackage/InvalidSeq.java \
+classpath/org/omg/CORBA/DynAnyPackage/InvalidValue.java \
+classpath/org/omg/CORBA/DynAnyPackage/TypeMismatch.java \
+classpath/org/omg/CORBA/DynArray.java \
+classpath/org/omg/CORBA/DynEnum.java \
+classpath/org/omg/CORBA/DynFixed.java \
+classpath/org/omg/CORBA/DynSequence.java \
+classpath/org/omg/CORBA/DynStruct.java \
+classpath/org/omg/CORBA/DynUnion.java \
+classpath/org/omg/CORBA/DynValue.java \
+classpath/org/omg/CORBA/DynamicImplementation.java \
+classpath/org/omg/CORBA/Environment.java \
+classpath/org/omg/CORBA/ExceptionList.java \
+classpath/org/omg/CORBA/FREE_MEM.java \
+classpath/org/omg/CORBA/FieldNameHelper.java \
+classpath/org/omg/CORBA/FixedHolder.java \
+classpath/org/omg/CORBA/FloatHolder.java \
+classpath/org/omg/CORBA/FloatSeqHelper.java \
+classpath/org/omg/CORBA/FloatSeqHolder.java \
+classpath/org/omg/CORBA/IDLType.java \
+classpath/org/omg/CORBA/IDLTypeHelper.java \
+classpath/org/omg/CORBA/IDLTypeOperations.java \
+classpath/org/omg/CORBA/IMP_LIMIT.java \
+classpath/org/omg/CORBA/INITIALIZE.java \
+classpath/org/omg/CORBA/INTERNAL.java \
+classpath/org/omg/CORBA/INTF_REPOS.java \
+classpath/org/omg/CORBA/INVALID_ACTIVITY.java \
+classpath/org/omg/CORBA/INVALID_TRANSACTION.java \
+classpath/org/omg/CORBA/INV_FLAG.java \
+classpath/org/omg/CORBA/INV_IDENT.java \
+classpath/org/omg/CORBA/INV_OBJREF.java \
+classpath/org/omg/CORBA/INV_POLICY.java \
+classpath/org/omg/CORBA/IRObject.java \
+classpath/org/omg/CORBA/IRObjectOperations.java \
+classpath/org/omg/CORBA/IdentifierHelper.java \
+classpath/org/omg/CORBA/IntHolder.java \
+classpath/org/omg/CORBA/LocalObject.java \
+classpath/org/omg/CORBA/LongHolder.java \
+classpath/org/omg/CORBA/LongLongSeqHelper.java \
+classpath/org/omg/CORBA/LongLongSeqHolder.java \
+classpath/org/omg/CORBA/LongSeqHelper.java \
+classpath/org/omg/CORBA/LongSeqHolder.java \
+classpath/org/omg/CORBA/MARSHAL.java \
+classpath/org/omg/CORBA/NO_IMPLEMENT.java \
+classpath/org/omg/CORBA/NO_MEMORY.java \
+classpath/org/omg/CORBA/NO_PERMISSION.java \
+classpath/org/omg/CORBA/NO_RESOURCES.java \
+classpath/org/omg/CORBA/NO_RESPONSE.java \
+classpath/org/omg/CORBA/NVList.java \
+classpath/org/omg/CORBA/NameValuePair.java \
+classpath/org/omg/CORBA/NameValuePairHelper.java \
+classpath/org/omg/CORBA/NamedValue.java \
+classpath/org/omg/CORBA/OBJECT_NOT_EXIST.java \
+classpath/org/omg/CORBA/OBJ_ADAPTER.java \
+classpath/org/omg/CORBA/OMGVMCID.java \
+classpath/org/omg/CORBA/ORB.java \
+classpath/org/omg/CORBA/ORBPackage/InconsistentTypeCode.java \
+classpath/org/omg/CORBA/ORBPackage/InvalidName.java \
+classpath/org/omg/CORBA/Object.java \
+classpath/org/omg/CORBA/ObjectHelper.java \
+classpath/org/omg/CORBA/ObjectHolder.java \
+classpath/org/omg/CORBA/OctetSeqHelper.java \
+classpath/org/omg/CORBA/OctetSeqHolder.java \
+classpath/org/omg/CORBA/PERSIST_STORE.java \
+classpath/org/omg/CORBA/PRIVATE_MEMBER.java \
+classpath/org/omg/CORBA/PUBLIC_MEMBER.java \
+classpath/org/omg/CORBA/ParameterMode.java \
+classpath/org/omg/CORBA/ParameterModeHelper.java \
+classpath/org/omg/CORBA/ParameterModeHolder.java \
+classpath/org/omg/CORBA/Policy.java \
+classpath/org/omg/CORBA/PolicyError.java \
+classpath/org/omg/CORBA/PolicyErrorCodeHelper.java \
+classpath/org/omg/CORBA/PolicyErrorHelper.java \
+classpath/org/omg/CORBA/PolicyErrorHolder.java \
+classpath/org/omg/CORBA/PolicyHelper.java \
+classpath/org/omg/CORBA/PolicyHolder.java \
+classpath/org/omg/CORBA/PolicyListHelper.java \
+classpath/org/omg/CORBA/PolicyListHolder.java \
+classpath/org/omg/CORBA/PolicyOperations.java \
+classpath/org/omg/CORBA/PolicyTypeHelper.java \
+classpath/org/omg/CORBA/Principal.java \
+classpath/org/omg/CORBA/PrincipalHolder.java \
+classpath/org/omg/CORBA/REBIND.java \
+classpath/org/omg/CORBA/RepositoryIdHelper.java \
+classpath/org/omg/CORBA/Request.java \
+classpath/org/omg/CORBA/ServerRequest.java \
+classpath/org/omg/CORBA/ServiceDetail.java \
+classpath/org/omg/CORBA/ServiceDetailHelper.java \
+classpath/org/omg/CORBA/ServiceInformation.java \
+classpath/org/omg/CORBA/ServiceInformationHelper.java \
+classpath/org/omg/CORBA/ServiceInformationHolder.java \
+classpath/org/omg/CORBA/SetOverrideType.java \
+classpath/org/omg/CORBA/SetOverrideTypeHelper.java \
+classpath/org/omg/CORBA/ShortHolder.java \
+classpath/org/omg/CORBA/ShortSeqHelper.java \
+classpath/org/omg/CORBA/ShortSeqHolder.java \
+classpath/org/omg/CORBA/StringHolder.java \
+classpath/org/omg/CORBA/StringSeqHelper.java \
+classpath/org/omg/CORBA/StringSeqHolder.java \
+classpath/org/omg/CORBA/StringValueHelper.java \
+classpath/org/omg/CORBA/StructMember.java \
+classpath/org/omg/CORBA/StructMemberHelper.java \
+classpath/org/omg/CORBA/SystemException.java \
+classpath/org/omg/CORBA/TCKind.java \
+classpath/org/omg/CORBA/TIMEOUT.java \
+classpath/org/omg/CORBA/TRANSACTION_MODE.java \
+classpath/org/omg/CORBA/TRANSACTION_REQUIRED.java \
+classpath/org/omg/CORBA/TRANSACTION_ROLLEDBACK.java \
+classpath/org/omg/CORBA/TRANSACTION_UNAVAILABLE.java \
+classpath/org/omg/CORBA/TRANSIENT.java \
+classpath/org/omg/CORBA/TypeCode.java \
+classpath/org/omg/CORBA/TypeCodeHolder.java \
+classpath/org/omg/CORBA/TypeCodePackage/BadKind.java \
+classpath/org/omg/CORBA/TypeCodePackage/Bounds.java \
+classpath/org/omg/CORBA/ULongLongSeqHelper.java \
+classpath/org/omg/CORBA/ULongLongSeqHolder.java \
+classpath/org/omg/CORBA/ULongSeqHelper.java \
+classpath/org/omg/CORBA/ULongSeqHolder.java \
+classpath/org/omg/CORBA/UNKNOWN.java \
+classpath/org/omg/CORBA/UNSUPPORTED_POLICY.java \
+classpath/org/omg/CORBA/UNSUPPORTED_POLICY_VALUE.java \
+classpath/org/omg/CORBA/UShortSeqHelper.java \
+classpath/org/omg/CORBA/UShortSeqHolder.java \
+classpath/org/omg/CORBA/UnionMember.java \
+classpath/org/omg/CORBA/UnionMemberHelper.java \
+classpath/org/omg/CORBA/UnknownUserException.java \
+classpath/org/omg/CORBA/UnknownUserExceptionHelper.java \
+classpath/org/omg/CORBA/UnknownUserExceptionHolder.java \
+classpath/org/omg/CORBA/UserException.java \
+classpath/org/omg/CORBA/VM_ABSTRACT.java \
+classpath/org/omg/CORBA/VM_CUSTOM.java \
+classpath/org/omg/CORBA/VM_NONE.java \
+classpath/org/omg/CORBA/VM_TRUNCATABLE.java \
+classpath/org/omg/CORBA/ValueBaseHelper.java \
+classpath/org/omg/CORBA/ValueBaseHolder.java \
+classpath/org/omg/CORBA/ValueMember.java \
+classpath/org/omg/CORBA/ValueMemberHelper.java \
+classpath/org/omg/CORBA/VersionSpecHelper.java \
+classpath/org/omg/CORBA/VisibilityHelper.java \
+classpath/org/omg/CORBA/WCharSeqHelper.java \
+classpath/org/omg/CORBA/WCharSeqHolder.java \
+classpath/org/omg/CORBA/WStringSeqHelper.java \
+classpath/org/omg/CORBA/WStringSeqHolder.java \
+classpath/org/omg/CORBA/WStringValueHelper.java \
+classpath/org/omg/CORBA/WrongTransaction.java \
+classpath/org/omg/CORBA/WrongTransactionHelper.java \
+classpath/org/omg/CORBA/WrongTransactionHolder.java \
+classpath/org/omg/CORBA/_IDLTypeStub.java \
+classpath/org/omg/CORBA/_PolicyStub.java \
+classpath/org/omg/CORBA/portable/ApplicationException.java \
+classpath/org/omg/CORBA/portable/BoxedValueHelper.java \
+classpath/org/omg/CORBA/portable/CustomValue.java \
+classpath/org/omg/CORBA/portable/Delegate.java \
+classpath/org/omg/CORBA/portable/IDLEntity.java \
+classpath/org/omg/CORBA/portable/IndirectionException.java \
+classpath/org/omg/CORBA/portable/InputStream.java \
+classpath/org/omg/CORBA/portable/InvokeHandler.java \
+classpath/org/omg/CORBA/portable/ObjectImpl.java \
+classpath/org/omg/CORBA/portable/OutputStream.java \
+classpath/org/omg/CORBA/portable/RemarshalException.java \
+classpath/org/omg/CORBA/portable/ResponseHandler.java \
+classpath/org/omg/CORBA/portable/ServantObject.java \
+classpath/org/omg/CORBA/portable/Streamable.java \
+classpath/org/omg/CORBA/portable/StreamableValue.java \
+classpath/org/omg/CORBA/portable/UnknownException.java \
+classpath/org/omg/CORBA/portable/ValueBase.java \
+classpath/org/omg/CORBA/portable/ValueFactory.java \
+classpath/org/omg/CORBA_2_3/ORB.java \
+classpath/org/omg/CORBA_2_3/portable/Delegate.java \
+classpath/org/omg/CORBA_2_3/portable/InputStream.java \
+classpath/org/omg/CORBA_2_3/portable/ObjectImpl.java \
+classpath/org/omg/CORBA_2_3/portable/OutputStream.java \
+classpath/org/omg/CosNaming/Binding.java \
+classpath/org/omg/CosNaming/BindingHelper.java \
+classpath/org/omg/CosNaming/BindingHolder.java \
+classpath/org/omg/CosNaming/BindingIterator.java \
+classpath/org/omg/CosNaming/BindingIteratorHelper.java \
+classpath/org/omg/CosNaming/BindingIteratorHolder.java \
+classpath/org/omg/CosNaming/BindingIteratorOperations.java \
+classpath/org/omg/CosNaming/BindingIteratorPOA.java \
+classpath/org/omg/CosNaming/BindingListHelper.java \
+classpath/org/omg/CosNaming/BindingListHolder.java \
+classpath/org/omg/CosNaming/BindingType.java \
+classpath/org/omg/CosNaming/BindingTypeHelper.java \
+classpath/org/omg/CosNaming/BindingTypeHolder.java \
+classpath/org/omg/CosNaming/IstringHelper.java \
+classpath/org/omg/CosNaming/NameComponent.java \
+classpath/org/omg/CosNaming/NameComponentHelper.java \
+classpath/org/omg/CosNaming/NameComponentHolder.java \
+classpath/org/omg/CosNaming/NameHelper.java \
+classpath/org/omg/CosNaming/NameHolder.java \
+classpath/org/omg/CosNaming/NamingContext.java \
+classpath/org/omg/CosNaming/NamingContextExt.java \
+classpath/org/omg/CosNaming/NamingContextExtHelper.java \
+classpath/org/omg/CosNaming/NamingContextExtHolder.java \
+classpath/org/omg/CosNaming/NamingContextExtOperations.java \
+classpath/org/omg/CosNaming/NamingContextExtPOA.java \
+classpath/org/omg/CosNaming/NamingContextExtPackage/AddressHelper.java \
+classpath/org/omg/CosNaming/NamingContextExtPackage/InvalidAddress.java \
+classpath/org/omg/CosNaming/NamingContextExtPackage/InvalidAddressHelper.java \
+classpath/org/omg/CosNaming/NamingContextExtPackage/InvalidAddressHolder.java \
+classpath/org/omg/CosNaming/NamingContextExtPackage/StringNameHelper.java \
+classpath/org/omg/CosNaming/NamingContextExtPackage/URLStringHelper.java \
+classpath/org/omg/CosNaming/NamingContextHelper.java \
+classpath/org/omg/CosNaming/NamingContextHolder.java \
+classpath/org/omg/CosNaming/NamingContextOperations.java \
+classpath/org/omg/CosNaming/NamingContextPOA.java \
+classpath/org/omg/CosNaming/NamingContextPackage/AlreadyBound.java \
+classpath/org/omg/CosNaming/NamingContextPackage/AlreadyBoundHelper.java \
+classpath/org/omg/CosNaming/NamingContextPackage/AlreadyBoundHolder.java \
+classpath/org/omg/CosNaming/NamingContextPackage/CannotProceed.java \
+classpath/org/omg/CosNaming/NamingContextPackage/CannotProceedHelper.java \
+classpath/org/omg/CosNaming/NamingContextPackage/CannotProceedHolder.java \
+classpath/org/omg/CosNaming/NamingContextPackage/InvalidName.java \
+classpath/org/omg/CosNaming/NamingContextPackage/InvalidNameHelper.java \
+classpath/org/omg/CosNaming/NamingContextPackage/InvalidNameHolder.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotEmpty.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotEmptyHelper.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotEmptyHolder.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotFound.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotFoundHelper.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotFoundHolder.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotFoundReason.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotFoundReasonHelper.java \
+classpath/org/omg/CosNaming/NamingContextPackage/NotFoundReasonHolder.java \
+classpath/org/omg/CosNaming/_BindingIteratorImplBase.java \
+classpath/org/omg/CosNaming/_BindingIteratorStub.java \
+classpath/org/omg/CosNaming/_NamingContextExtImplBase.java \
+classpath/org/omg/CosNaming/_NamingContextExtStub.java \
+classpath/org/omg/CosNaming/_NamingContextImplBase.java \
+classpath/org/omg/CosNaming/_NamingContextStub.java \
+classpath/org/omg/Dynamic/Parameter.java \
+classpath/org/omg/DynamicAny/AnySeqHelper.java \
+classpath/org/omg/DynamicAny/DynAny.java \
+classpath/org/omg/DynamicAny/DynAnyFactory.java \
+classpath/org/omg/DynamicAny/DynAnyFactoryHelper.java \
+classpath/org/omg/DynamicAny/DynAnyFactoryOperations.java \
+classpath/org/omg/DynamicAny/DynAnyFactoryPackage/InconsistentTypeCode.java \
+classpath/org/omg/DynamicAny/DynAnyFactoryPackage/InconsistentTypeCodeHelper.java \
+classpath/org/omg/DynamicAny/DynAnyHelper.java \
+classpath/org/omg/DynamicAny/DynAnyOperations.java \
+classpath/org/omg/DynamicAny/DynAnyPackage/InvalidValue.java \
+classpath/org/omg/DynamicAny/DynAnyPackage/InvalidValueHelper.java \
+classpath/org/omg/DynamicAny/DynAnyPackage/TypeMismatch.java \
+classpath/org/omg/DynamicAny/DynAnyPackage/TypeMismatchHelper.java \
+classpath/org/omg/DynamicAny/DynAnySeqHelper.java \
+classpath/org/omg/DynamicAny/DynArray.java \
+classpath/org/omg/DynamicAny/DynArrayHelper.java \
+classpath/org/omg/DynamicAny/DynArrayOperations.java \
+classpath/org/omg/DynamicAny/DynEnum.java \
+classpath/org/omg/DynamicAny/DynEnumHelper.java \
+classpath/org/omg/DynamicAny/DynEnumOperations.java \
+classpath/org/omg/DynamicAny/DynFixed.java \
+classpath/org/omg/DynamicAny/DynFixedHelper.java \
+classpath/org/omg/DynamicAny/DynFixedOperations.java \
+classpath/org/omg/DynamicAny/DynSequence.java \
+classpath/org/omg/DynamicAny/DynSequenceHelper.java \
+classpath/org/omg/DynamicAny/DynSequenceOperations.java \
+classpath/org/omg/DynamicAny/DynStruct.java \
+classpath/org/omg/DynamicAny/DynStructHelper.java \
+classpath/org/omg/DynamicAny/DynStructOperations.java \
+classpath/org/omg/DynamicAny/DynUnion.java \
+classpath/org/omg/DynamicAny/DynUnionHelper.java \
+classpath/org/omg/DynamicAny/DynUnionOperations.java \
+classpath/org/omg/DynamicAny/DynValue.java \
+classpath/org/omg/DynamicAny/DynValueBox.java \
+classpath/org/omg/DynamicAny/DynValueBoxOperations.java \
+classpath/org/omg/DynamicAny/DynValueCommon.java \
+classpath/org/omg/DynamicAny/DynValueCommonOperations.java \
+classpath/org/omg/DynamicAny/DynValueHelper.java \
+classpath/org/omg/DynamicAny/DynValueOperations.java \
+classpath/org/omg/DynamicAny/FieldNameHelper.java \
+classpath/org/omg/DynamicAny/NameDynAnyPair.java \
+classpath/org/omg/DynamicAny/NameDynAnyPairHelper.java \
+classpath/org/omg/DynamicAny/NameDynAnyPairSeqHelper.java \
+classpath/org/omg/DynamicAny/NameValuePair.java \
+classpath/org/omg/DynamicAny/NameValuePairHelper.java \
+classpath/org/omg/DynamicAny/NameValuePairSeqHelper.java \
+classpath/org/omg/DynamicAny/_DynAnyFactoryStub.java \
+classpath/org/omg/DynamicAny/_DynAnyStub.java \
+classpath/org/omg/DynamicAny/_DynArrayStub.java \
+classpath/org/omg/DynamicAny/_DynEnumStub.java \
+classpath/org/omg/DynamicAny/_DynFixedStub.java \
+classpath/org/omg/DynamicAny/_DynSequenceStub.java \
+classpath/org/omg/DynamicAny/_DynStructStub.java \
+classpath/org/omg/DynamicAny/_DynUnionStub.java \
+classpath/org/omg/DynamicAny/_DynValueStub.java \
+classpath/org/omg/IOP/CodeSets.java \
+classpath/org/omg/IOP/Codec.java \
+classpath/org/omg/IOP/CodecFactory.java \
+classpath/org/omg/IOP/CodecFactoryHelper.java \
+classpath/org/omg/IOP/CodecFactoryOperations.java \
+classpath/org/omg/IOP/CodecFactoryPackage/UnknownEncoding.java \
+classpath/org/omg/IOP/CodecFactoryPackage/UnknownEncodingHelper.java \
+classpath/org/omg/IOP/CodecOperations.java \
+classpath/org/omg/IOP/CodecPackage/FormatMismatch.java \
+classpath/org/omg/IOP/CodecPackage/FormatMismatchHelper.java \
+classpath/org/omg/IOP/CodecPackage/InvalidTypeForEncoding.java \
+classpath/org/omg/IOP/CodecPackage/InvalidTypeForEncodingHelper.java \
+classpath/org/omg/IOP/CodecPackage/TypeMismatch.java \
+classpath/org/omg/IOP/CodecPackage/TypeMismatchHelper.java \
+classpath/org/omg/IOP/ComponentIdHelper.java \
+classpath/org/omg/IOP/ENCODING_CDR_ENCAPS.java \
+classpath/org/omg/IOP/Encoding.java \
+classpath/org/omg/IOP/ExceptionDetailMessage.java \
+classpath/org/omg/IOP/IOR.java \
+classpath/org/omg/IOP/IORHelper.java \
+classpath/org/omg/IOP/IORHolder.java \
+classpath/org/omg/IOP/MultipleComponentProfileHelper.java \
+classpath/org/omg/IOP/MultipleComponentProfileHolder.java \
+classpath/org/omg/IOP/ProfileIdHelper.java \
+classpath/org/omg/IOP/RMICustomMaxStreamFormat.java \
+classpath/org/omg/IOP/ServiceContext.java \
+classpath/org/omg/IOP/ServiceContextHelper.java \
+classpath/org/omg/IOP/ServiceContextHolder.java \
+classpath/org/omg/IOP/ServiceContextListHelper.java \
+classpath/org/omg/IOP/ServiceContextListHolder.java \
+classpath/org/omg/IOP/ServiceIdHelper.java \
+classpath/org/omg/IOP/TAG_ALTERNATE_IIOP_ADDRESS.java \
+classpath/org/omg/IOP/TAG_CODE_SETS.java \
+classpath/org/omg/IOP/TAG_INTERNET_IOP.java \
+classpath/org/omg/IOP/TAG_JAVA_CODEBASE.java \
+classpath/org/omg/IOP/TAG_MULTIPLE_COMPONENTS.java \
+classpath/org/omg/IOP/TAG_ORB_TYPE.java \
+classpath/org/omg/IOP/TAG_POLICIES.java \
+classpath/org/omg/IOP/TAG_RMI_CUSTOM_MAX_STREAM_FORMAT.java \
+classpath/org/omg/IOP/TaggedComponent.java \
+classpath/org/omg/IOP/TaggedComponentHelper.java \
+classpath/org/omg/IOP/TaggedComponentHolder.java \
+classpath/org/omg/IOP/TaggedProfile.java \
+classpath/org/omg/IOP/TaggedProfileHelper.java \
+classpath/org/omg/IOP/TaggedProfileHolder.java \
+classpath/org/omg/IOP/TransactionService.java \
+classpath/org/omg/Messaging/SYNC_WITH_TRANSPORT.java \
+classpath/org/omg/Messaging/SyncScopeHelper.java \
+classpath/org/omg/PortableInterceptor/ACTIVE.java \
+classpath/org/omg/PortableInterceptor/AdapterManagerIdHelper.java \
+classpath/org/omg/PortableInterceptor/AdapterNameHelper.java \
+classpath/org/omg/PortableInterceptor/AdapterStateHelper.java \
+classpath/org/omg/PortableInterceptor/ClientRequestInfo.java \
+classpath/org/omg/PortableInterceptor/ClientRequestInfoOperations.java \
+classpath/org/omg/PortableInterceptor/ClientRequestInterceptor.java \
+classpath/org/omg/PortableInterceptor/ClientRequestInterceptorOperations.java \
+classpath/org/omg/PortableInterceptor/Current.java \
+classpath/org/omg/PortableInterceptor/CurrentHelper.java \
+classpath/org/omg/PortableInterceptor/CurrentOperations.java \
+classpath/org/omg/PortableInterceptor/DISCARDING.java \
+classpath/org/omg/PortableInterceptor/ForwardRequest.java \
+classpath/org/omg/PortableInterceptor/ForwardRequestHelper.java \
+classpath/org/omg/PortableInterceptor/HOLDING.java \
+classpath/org/omg/PortableInterceptor/INACTIVE.java \
+classpath/org/omg/PortableInterceptor/IORInfo.java \
+classpath/org/omg/PortableInterceptor/IORInfoOperations.java \
+classpath/org/omg/PortableInterceptor/IORInterceptor.java \
+classpath/org/omg/PortableInterceptor/IORInterceptorOperations.java \
+classpath/org/omg/PortableInterceptor/IORInterceptor_3_0.java \
+classpath/org/omg/PortableInterceptor/IORInterceptor_3_0Helper.java \
+classpath/org/omg/PortableInterceptor/IORInterceptor_3_0Holder.java \
+classpath/org/omg/PortableInterceptor/IORInterceptor_3_0Operations.java \
+classpath/org/omg/PortableInterceptor/Interceptor.java \
+classpath/org/omg/PortableInterceptor/InterceptorOperations.java \
+classpath/org/omg/PortableInterceptor/InvalidSlot.java \
+classpath/org/omg/PortableInterceptor/InvalidSlotHelper.java \
+classpath/org/omg/PortableInterceptor/LOCATION_FORWARD.java \
+classpath/org/omg/PortableInterceptor/NON_EXISTENT.java \
+classpath/org/omg/PortableInterceptor/ORBIdHelper.java \
+classpath/org/omg/PortableInterceptor/ORBInitInfo.java \
+classpath/org/omg/PortableInterceptor/ORBInitInfoOperations.java \
+classpath/org/omg/PortableInterceptor/ORBInitInfoPackage/DuplicateName.java \
+classpath/org/omg/PortableInterceptor/ORBInitInfoPackage/DuplicateNameHelper.java \
+classpath/org/omg/PortableInterceptor/ORBInitInfoPackage/InvalidName.java \
+classpath/org/omg/PortableInterceptor/ORBInitInfoPackage/InvalidNameHelper.java \
+classpath/org/omg/PortableInterceptor/ORBInitInfoPackage/ObjectIdHelper.java \
+classpath/org/omg/PortableInterceptor/ORBInitializer.java \
+classpath/org/omg/PortableInterceptor/ORBInitializerOperations.java \
+classpath/org/omg/PortableInterceptor/ObjectIdHelper.java \
+classpath/org/omg/PortableInterceptor/ObjectReferenceFactory.java \
+classpath/org/omg/PortableInterceptor/ObjectReferenceFactoryHelper.java \
+classpath/org/omg/PortableInterceptor/ObjectReferenceFactoryHolder.java \
+classpath/org/omg/PortableInterceptor/ObjectReferenceTemplate.java \
+classpath/org/omg/PortableInterceptor/ObjectReferenceTemplateHelper.java \
+classpath/org/omg/PortableInterceptor/ObjectReferenceTemplateHolder.java \
+classpath/org/omg/PortableInterceptor/ObjectReferenceTemplateSeqHelper.java \
+classpath/org/omg/PortableInterceptor/ObjectReferenceTemplateSeqHolder.java \
+classpath/org/omg/PortableInterceptor/PolicyFactory.java \
+classpath/org/omg/PortableInterceptor/PolicyFactoryOperations.java \
+classpath/org/omg/PortableInterceptor/RequestInfo.java \
+classpath/org/omg/PortableInterceptor/RequestInfoOperations.java \
+classpath/org/omg/PortableInterceptor/SUCCESSFUL.java \
+classpath/org/omg/PortableInterceptor/SYSTEM_EXCEPTION.java \
+classpath/org/omg/PortableInterceptor/ServerIdHelper.java \
+classpath/org/omg/PortableInterceptor/ServerRequestInfo.java \
+classpath/org/omg/PortableInterceptor/ServerRequestInfoOperations.java \
+classpath/org/omg/PortableInterceptor/ServerRequestInterceptor.java \
+classpath/org/omg/PortableInterceptor/ServerRequestInterceptorOperations.java \
+classpath/org/omg/PortableInterceptor/TRANSPORT_RETRY.java \
+classpath/org/omg/PortableInterceptor/USER_EXCEPTION.java \
+classpath/org/omg/PortableInterceptor/_IORInterceptor_3_0Stub.java \
+classpath/org/omg/PortableServer/AdapterActivator.java \
+classpath/org/omg/PortableServer/AdapterActivatorOperations.java \
+classpath/org/omg/PortableServer/Current.java \
+classpath/org/omg/PortableServer/CurrentHelper.java \
+classpath/org/omg/PortableServer/CurrentOperations.java \
+classpath/org/omg/PortableServer/CurrentPackage/NoContext.java \
+classpath/org/omg/PortableServer/CurrentPackage/NoContextHelper.java \
+classpath/org/omg/PortableServer/DynamicImplementation.java \
+classpath/org/omg/PortableServer/ForwardRequest.java \
+classpath/org/omg/PortableServer/ForwardRequestHelper.java \
+classpath/org/omg/PortableServer/ID_ASSIGNMENT_POLICY_ID.java \
+classpath/org/omg/PortableServer/ID_UNIQUENESS_POLICY_ID.java \
+classpath/org/omg/PortableServer/IMPLICIT_ACTIVATION_POLICY_ID.java \
+classpath/org/omg/PortableServer/IdAssignmentPolicy.java \
+classpath/org/omg/PortableServer/IdAssignmentPolicyOperations.java \
+classpath/org/omg/PortableServer/IdAssignmentPolicyValue.java \
+classpath/org/omg/PortableServer/IdUniquenessPolicy.java \
+classpath/org/omg/PortableServer/IdUniquenessPolicyOperations.java \
+classpath/org/omg/PortableServer/IdUniquenessPolicyValue.java \
+classpath/org/omg/PortableServer/ImplicitActivationPolicy.java \
+classpath/org/omg/PortableServer/ImplicitActivationPolicyOperations.java \
+classpath/org/omg/PortableServer/ImplicitActivationPolicyValue.java \
+classpath/org/omg/PortableServer/LIFESPAN_POLICY_ID.java \
+classpath/org/omg/PortableServer/LifespanPolicy.java \
+classpath/org/omg/PortableServer/LifespanPolicyOperations.java \
+classpath/org/omg/PortableServer/LifespanPolicyValue.java \
+classpath/org/omg/PortableServer/POA.java \
+classpath/org/omg/PortableServer/POAHelper.java \
+classpath/org/omg/PortableServer/POAManager.java \
+classpath/org/omg/PortableServer/POAManagerOperations.java \
+classpath/org/omg/PortableServer/POAManagerPackage/AdapterInactive.java \
+classpath/org/omg/PortableServer/POAManagerPackage/AdapterInactiveHelper.java \
+classpath/org/omg/PortableServer/POAManagerPackage/State.java \
+classpath/org/omg/PortableServer/POAOperations.java \
+classpath/org/omg/PortableServer/POAPackage/AdapterAlreadyExists.java \
+classpath/org/omg/PortableServer/POAPackage/AdapterAlreadyExistsHelper.java \
+classpath/org/omg/PortableServer/POAPackage/AdapterNonExistent.java \
+classpath/org/omg/PortableServer/POAPackage/AdapterNonExistentHelper.java \
+classpath/org/omg/PortableServer/POAPackage/InvalidPolicy.java \
+classpath/org/omg/PortableServer/POAPackage/InvalidPolicyHelper.java \
+classpath/org/omg/PortableServer/POAPackage/NoServant.java \
+classpath/org/omg/PortableServer/POAPackage/NoServantHelper.java \
+classpath/org/omg/PortableServer/POAPackage/ObjectAlreadyActive.java \
+classpath/org/omg/PortableServer/POAPackage/ObjectAlreadyActiveHelper.java \
+classpath/org/omg/PortableServer/POAPackage/ObjectNotActive.java \
+classpath/org/omg/PortableServer/POAPackage/ObjectNotActiveHelper.java \
+classpath/org/omg/PortableServer/POAPackage/ServantAlreadyActive.java \
+classpath/org/omg/PortableServer/POAPackage/ServantAlreadyActiveHelper.java \
+classpath/org/omg/PortableServer/POAPackage/ServantNotActive.java \
+classpath/org/omg/PortableServer/POAPackage/ServantNotActiveHelper.java \
+classpath/org/omg/PortableServer/POAPackage/WrongAdapter.java \
+classpath/org/omg/PortableServer/POAPackage/WrongAdapterHelper.java \
+classpath/org/omg/PortableServer/POAPackage/WrongPolicy.java \
+classpath/org/omg/PortableServer/POAPackage/WrongPolicyHelper.java \
+classpath/org/omg/PortableServer/REQUEST_PROCESSING_POLICY_ID.java \
+classpath/org/omg/PortableServer/RequestProcessingPolicy.java \
+classpath/org/omg/PortableServer/RequestProcessingPolicyOperations.java \
+classpath/org/omg/PortableServer/RequestProcessingPolicyValue.java \
+classpath/org/omg/PortableServer/SERVANT_RETENTION_POLICY_ID.java \
+classpath/org/omg/PortableServer/Servant.java \
+classpath/org/omg/PortableServer/ServantActivator.java \
+classpath/org/omg/PortableServer/ServantActivatorHelper.java \
+classpath/org/omg/PortableServer/ServantActivatorOperations.java \
+classpath/org/omg/PortableServer/ServantActivatorPOA.java \
+classpath/org/omg/PortableServer/ServantLocator.java \
+classpath/org/omg/PortableServer/ServantLocatorHelper.java \
+classpath/org/omg/PortableServer/ServantLocatorOperations.java \
+classpath/org/omg/PortableServer/ServantLocatorPOA.java \
+classpath/org/omg/PortableServer/ServantLocatorPackage/CookieHolder.java \
+classpath/org/omg/PortableServer/ServantManager.java \
+classpath/org/omg/PortableServer/ServantManagerOperations.java \
+classpath/org/omg/PortableServer/ServantRetentionPolicy.java \
+classpath/org/omg/PortableServer/ServantRetentionPolicyOperations.java \
+classpath/org/omg/PortableServer/ServantRetentionPolicyValue.java \
+classpath/org/omg/PortableServer/THREAD_POLICY_ID.java \
+classpath/org/omg/PortableServer/ThreadPolicy.java \
+classpath/org/omg/PortableServer/ThreadPolicyOperations.java \
+classpath/org/omg/PortableServer/ThreadPolicyValue.java \
+classpath/org/omg/PortableServer/_ServantActivatorStub.java \
+classpath/org/omg/PortableServer/_ServantLocatorStub.java \
+classpath/org/omg/PortableServer/portable/Delegate.java \
+classpath/org/omg/SendingContext/RunTime.java \
+classpath/org/omg/SendingContext/RunTimeOperations.java \
+classpath/org/omg/stub/java/rmi/_Remote_Stub.java
+
+org-omg.lo: $(org_omg_source_files)
+	@find classpath/lib/org/omg -name '*.class' > org-omg.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o org-omg.lo @org-omg.list
+	@rm -f org-omg.list
+
+org_relaxng_source_files = \
+classpath/external/relaxngDatatype/org/relaxng/datatype/Datatype.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeBuilder.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeException.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeLibrary.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeLibraryFactory.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/DatatypeStreamingValidator.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/ValidationContext.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/DatatypeLibraryLoader.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/ParameterlessDatatypeBuilder.java \
+classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/StreamingValidatorImpl.java
+
+org-relaxng.lo: $(org_relaxng_source_files)
+	@find classpath/lib/org/relaxng -name '*.class' > org-relaxng.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o org-relaxng.lo @org-relaxng.list
+	@rm -f org-relaxng.list
+
+org_w3c_source_files = \
+classpath/external/w3c_dom/org/w3c/dom/Attr.java \
+classpath/external/w3c_dom/org/w3c/dom/CDATASection.java \
+classpath/external/w3c_dom/org/w3c/dom/CharacterData.java \
+classpath/external/w3c_dom/org/w3c/dom/Comment.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMConfiguration.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMError.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMErrorHandler.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMException.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMImplementation.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMImplementationList.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMImplementationSource.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMLocator.java \
+classpath/external/w3c_dom/org/w3c/dom/DOMStringList.java \
+classpath/external/w3c_dom/org/w3c/dom/Document.java \
+classpath/external/w3c_dom/org/w3c/dom/DocumentFragment.java \
+classpath/external/w3c_dom/org/w3c/dom/DocumentType.java \
+classpath/external/w3c_dom/org/w3c/dom/Element.java \
+classpath/external/w3c_dom/org/w3c/dom/Entity.java \
+classpath/external/w3c_dom/org/w3c/dom/EntityReference.java \
+classpath/external/w3c_dom/org/w3c/dom/NameList.java \
+classpath/external/w3c_dom/org/w3c/dom/NamedNodeMap.java \
+classpath/external/w3c_dom/org/w3c/dom/Node.java \
+classpath/external/w3c_dom/org/w3c/dom/NodeList.java \
+classpath/external/w3c_dom/org/w3c/dom/Notation.java \
+classpath/external/w3c_dom/org/w3c/dom/ProcessingInstruction.java \
+classpath/external/w3c_dom/org/w3c/dom/Text.java \
+classpath/external/w3c_dom/org/w3c/dom/TypeInfo.java \
+classpath/external/w3c_dom/org/w3c/dom/UserDataHandler.java \
+classpath/external/w3c_dom/org/w3c/dom/bootstrap/DOMImplementationRegistry.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSS2Properties.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSCharsetRule.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSFontFaceRule.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSImportRule.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSMediaRule.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSPageRule.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSPrimitiveValue.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSRule.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSRuleList.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSStyleDeclaration.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSStyleRule.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSStyleSheet.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSUnknownRule.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSValue.java \
+classpath/external/w3c_dom/org/w3c/dom/css/CSSValueList.java \
+classpath/external/w3c_dom/org/w3c/dom/css/Counter.java \
+classpath/external/w3c_dom/org/w3c/dom/css/DOMImplementationCSS.java \
+classpath/external/w3c_dom/org/w3c/dom/css/DocumentCSS.java \
+classpath/external/w3c_dom/org/w3c/dom/css/ElementCSSInlineStyle.java \
+classpath/external/w3c_dom/org/w3c/dom/css/RGBColor.java \
+classpath/external/w3c_dom/org/w3c/dom/css/Rect.java \
+classpath/external/w3c_dom/org/w3c/dom/css/ViewCSS.java \
+classpath/external/w3c_dom/org/w3c/dom/events/DocumentEvent.java \
+classpath/external/w3c_dom/org/w3c/dom/events/Event.java \
+classpath/external/w3c_dom/org/w3c/dom/events/EventException.java \
+classpath/external/w3c_dom/org/w3c/dom/events/EventListener.java \
+classpath/external/w3c_dom/org/w3c/dom/events/EventTarget.java \
+classpath/external/w3c_dom/org/w3c/dom/events/MouseEvent.java \
+classpath/external/w3c_dom/org/w3c/dom/events/MutationEvent.java \
+classpath/external/w3c_dom/org/w3c/dom/events/UIEvent.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLAnchorElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLAppletElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLAreaElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLBRElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLBaseElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLBaseFontElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLBodyElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLButtonElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLCollection.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLDListElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLDirectoryElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLDivElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLDocument.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLFieldSetElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLFontElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLFormElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLFrameElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLFrameSetElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLHRElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLHeadElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLHeadingElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLHtmlElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLIFrameElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLImageElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLInputElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLIsIndexElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLLIElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLLabelElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLLegendElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLLinkElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLMapElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLMenuElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLMetaElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLModElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLOListElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLObjectElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLOptGroupElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLOptionElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLOptionsCollection.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLParagraphElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLParamElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLPreElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLQuoteElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLScriptElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLSelectElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLStyleElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLTableCaptionElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLTableCellElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLTableColElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLTableElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLTableRowElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLTableSectionElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLTextAreaElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLTitleElement.java \
+classpath/external/w3c_dom/org/w3c/dom/html2/HTMLUListElement.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/DOMImplementationLS.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSException.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSInput.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSLoadEvent.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSOutput.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSParser.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSParserFilter.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSProgressEvent.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSResourceResolver.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSSerializer.java \
+classpath/external/w3c_dom/org/w3c/dom/ls/LSSerializerFilter.java \
+classpath/external/w3c_dom/org/w3c/dom/ranges/DocumentRange.java \
+classpath/external/w3c_dom/org/w3c/dom/ranges/Range.java \
+classpath/external/w3c_dom/org/w3c/dom/ranges/RangeException.java \
+classpath/external/w3c_dom/org/w3c/dom/stylesheets/DocumentStyle.java \
+classpath/external/w3c_dom/org/w3c/dom/stylesheets/LinkStyle.java \
+classpath/external/w3c_dom/org/w3c/dom/stylesheets/MediaList.java \
+classpath/external/w3c_dom/org/w3c/dom/stylesheets/StyleSheet.java \
+classpath/external/w3c_dom/org/w3c/dom/stylesheets/StyleSheetList.java \
+classpath/external/w3c_dom/org/w3c/dom/traversal/DocumentTraversal.java \
+classpath/external/w3c_dom/org/w3c/dom/traversal/NodeFilter.java \
+classpath/external/w3c_dom/org/w3c/dom/traversal/NodeIterator.java \
+classpath/external/w3c_dom/org/w3c/dom/traversal/TreeWalker.java \
+classpath/external/w3c_dom/org/w3c/dom/views/AbstractView.java \
+classpath/external/w3c_dom/org/w3c/dom/views/DocumentView.java \
+classpath/external/w3c_dom/org/w3c/dom/xpath/XPathEvaluator.java \
+classpath/external/w3c_dom/org/w3c/dom/xpath/XPathException.java \
+classpath/external/w3c_dom/org/w3c/dom/xpath/XPathExpression.java \
+classpath/external/w3c_dom/org/w3c/dom/xpath/XPathNSResolver.java \
+classpath/external/w3c_dom/org/w3c/dom/xpath/XPathNamespace.java \
+classpath/external/w3c_dom/org/w3c/dom/xpath/XPathResult.java
+
+org-w3c.lo: $(org_w3c_source_files)
+	@find classpath/lib/org/w3c -name '*.class' > org-w3c.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o org-w3c.lo @org-w3c.list
+	@rm -f org-w3c.list
+
+org_xml_source_files = \
+classpath/external/sax/org/xml/sax/AttributeList.java \
+classpath/external/sax/org/xml/sax/Attributes.java \
+classpath/external/sax/org/xml/sax/ContentHandler.java \
+classpath/external/sax/org/xml/sax/DTDHandler.java \
+classpath/external/sax/org/xml/sax/DocumentHandler.java \
+classpath/external/sax/org/xml/sax/EntityResolver.java \
+classpath/external/sax/org/xml/sax/ErrorHandler.java \
+classpath/external/sax/org/xml/sax/HandlerBase.java \
+classpath/external/sax/org/xml/sax/InputSource.java \
+classpath/external/sax/org/xml/sax/Locator.java \
+classpath/external/sax/org/xml/sax/Parser.java \
+classpath/external/sax/org/xml/sax/SAXException.java \
+classpath/external/sax/org/xml/sax/SAXNotRecognizedException.java \
+classpath/external/sax/org/xml/sax/SAXNotSupportedException.java \
+classpath/external/sax/org/xml/sax/SAXParseException.java \
+classpath/external/sax/org/xml/sax/XMLFilter.java \
+classpath/external/sax/org/xml/sax/XMLReader.java \
+classpath/external/sax/org/xml/sax/ext/Attributes2.java \
+classpath/external/sax/org/xml/sax/ext/Attributes2Impl.java \
+classpath/external/sax/org/xml/sax/ext/DeclHandler.java \
+classpath/external/sax/org/xml/sax/ext/DefaultHandler2.java \
+classpath/external/sax/org/xml/sax/ext/EntityResolver2.java \
+classpath/external/sax/org/xml/sax/ext/LexicalHandler.java \
+classpath/external/sax/org/xml/sax/ext/Locator2.java \
+classpath/external/sax/org/xml/sax/ext/Locator2Impl.java \
+classpath/external/sax/org/xml/sax/helpers/AttributeListImpl.java \
+classpath/external/sax/org/xml/sax/helpers/AttributesImpl.java \
+classpath/external/sax/org/xml/sax/helpers/DefaultHandler.java \
+classpath/external/sax/org/xml/sax/helpers/LocatorImpl.java \
+classpath/external/sax/org/xml/sax/helpers/NamespaceSupport.java \
+classpath/external/sax/org/xml/sax/helpers/NewInstance.java \
+classpath/external/sax/org/xml/sax/helpers/ParserAdapter.java \
+classpath/external/sax/org/xml/sax/helpers/ParserFactory.java \
+classpath/external/sax/org/xml/sax/helpers/XMLFilterImpl.java \
+classpath/external/sax/org/xml/sax/helpers/XMLReaderAdapter.java \
+classpath/external/sax/org/xml/sax/helpers/XMLReaderFactory.java
+
+org-xml.lo: $(org_xml_source_files)
+	@find classpath/lib/org/xml -name '*.class' > org-xml.list
+	$(LTGCJCOMPILE) -fjni -findirect-dispatch -fno-indirect-classes -c -o org-xml.lo @org-xml.list
+	@rm -f org-xml.list
+
+
+all_packages_source_files = \
+  gnu/awt.list \
+  gnu/awt/j2d.list \
+  gnu/classpath.list \
+  gnu/classpath/debug.list \
+  gnu/classpath/jdwp.list \
+  gnu/classpath/jdwp/event.list \
+  gnu/classpath/jdwp/event/filters.list \
+  gnu/classpath/jdwp/exception.list \
+  gnu/classpath/jdwp/id.list \
+  gnu/classpath/jdwp/processor.list \
+  gnu/classpath/jdwp/transport.list \
+  gnu/classpath/jdwp/util.list \
+  gnu/gcj.list \
+  gnu/gcj/convert.list \
+  gnu/gcj/io.list \
+  gnu/gcj/runtime.list \
+  gnu/gcj/util.list \
+  gnu/java/awt.list \
+  gnu/java/awt/color.list \
+  gnu/java/awt/dnd.list \
+  gnu/java/awt/font.list \
+  gnu/java/awt/font/opentype.list \
+  gnu/java/awt/font/opentype/truetype.list \
+  gnu/java/awt/image.list \
+  gnu/java/awt/java2d.list \
+  gnu/java/awt/peer.list \
+  gnu/java/awt/print.list \
+  gnu/java/io.list \
+  gnu/java/lang.list \
+  gnu/java/lang/management.list \
+  gnu/java/lang/reflect.list \
+  gnu/java/locale.list \
+  gnu/java/math.list \
+  gnu/java/net.list \
+  gnu/java/net/loader.list \
+  gnu/java/net/local.list \
+  gnu/java/net/protocol/core.list \
+  gnu/java/net/protocol/file.list \
+  gnu/java/net/protocol/ftp.list \
+  gnu/java/net/protocol/gcjlib.list \
+  gnu/java/net/protocol/http.list \
+  gnu/java/net/protocol/https.list \
+  gnu/java/net/protocol/jar.list \
+  gnu/java/nio.list \
+  gnu/java/nio/channels.list \
+  gnu/java/nio/charset.list \
+  gnu/java/rmi.list \
+  gnu/java/rmi/activation.list \
+  gnu/java/rmi/dgc.list \
+  gnu/java/rmi/registry.list \
+  gnu/java/rmi/rmic.list \
+  gnu/java/rmi/server.list \
+  gnu/java/security.list \
+  gnu/java/security/action.list \
+  gnu/java/security/ber.list \
+  gnu/java/security/der.list \
+  gnu/java/security/hash.list \
+  gnu/java/security/jce/hash.list \
+  gnu/java/security/jce/prng.list \
+  gnu/java/security/jce/sig.list \
+  gnu/java/security/key.list \
+  gnu/java/security/key/dss.list \
+  gnu/java/security/key/rsa.list \
+  gnu/java/security/pkcs.list \
+  gnu/java/security/prng.list \
+  gnu/java/security/provider.list \
+  gnu/java/security/sig.list \
+  gnu/java/security/sig/dss.list \
+  gnu/java/security/sig/rsa.list \
+  gnu/java/security/util.list \
+  gnu/java/security/x509.list \
+  gnu/java/security/x509/ext.list \
+  gnu/java/text.list \
+  gnu/java/util.list \
+  gnu/java/util/jar.list \
+  gnu/java/util/prefs.list \
+  gnu/java/util/regex.list \
+  gnu/javax/crypto.list \
+  gnu/javax/crypto/assembly.list \
+  gnu/javax/crypto/cipher.list \
+  gnu/javax/crypto/jce.list \
+  gnu/javax/crypto/jce/cipher.list \
+  gnu/javax/crypto/jce/key.list \
+  gnu/javax/crypto/jce/keyring.list \
+  gnu/javax/crypto/jce/mac.list \
+  gnu/javax/crypto/jce/params.list \
+  gnu/javax/crypto/jce/prng.list \
+  gnu/javax/crypto/jce/sig.list \
+  gnu/javax/crypto/jce/spec.list \
+  gnu/javax/crypto/key.list \
+  gnu/javax/crypto/key/dh.list \
+  gnu/javax/crypto/key/srp6.list \
+  gnu/javax/crypto/keyring.list \
+  gnu/javax/crypto/kwa.list \
+  gnu/javax/crypto/mac.list \
+  gnu/javax/crypto/mode.list \
+  gnu/javax/crypto/pad.list \
+  gnu/javax/crypto/prng.list \
+  gnu/javax/crypto/sasl.list \
+  gnu/javax/crypto/sasl/anonymous.list \
+  gnu/javax/crypto/sasl/crammd5.list \
+  gnu/javax/crypto/sasl/plain.list \
+  gnu/javax/crypto/sasl/srp.list \
+  gnu/javax/imageio.list \
+  gnu/javax/imageio/bmp.list \
+  gnu/javax/imageio/gif.list \
+  gnu/javax/imageio/jpeg.list \
+  gnu/javax/imageio/png.list \
+  gnu/javax/net/ssl.list \
+  gnu/javax/net/ssl/provider.list \
+  gnu/javax/print.list \
+  gnu/javax/print/ipp.list \
+  gnu/javax/print/ipp/attribute.list \
+  gnu/javax/print/ipp/attribute/defaults.list \
+  gnu/javax/print/ipp/attribute/job.list \
+  gnu/javax/print/ipp/attribute/printer.list \
+  gnu/javax/print/ipp/attribute/supported.list \
+  gnu/javax/security/auth.list \
+  gnu/javax/security/auth/callback.list \
+  gnu/javax/security/auth/login.list \
+  gnu/javax/sound/sampled/AU.list \
+  gnu/javax/sound/sampled/WAV.list \
+  gnu/javax/swing/plaf/gnu.list \
+  gnu/javax/swing/plaf/metal.list \
+  gnu/javax/swing/text/html.list \
+  gnu/javax/swing/text/html/parser.list \
+  gnu/javax/swing/text/html/parser/models.list \
+  gnu/javax/swing/text/html/parser/support.list \
+  gnu/javax/swing/text/html/parser/support/low.list \
+  gnu/javax/swing/tree.list \
+  java/applet.list \
+  java/awt.list \
+  java/awt/color.list \
+  java/awt/datatransfer.list \
+  java/awt/dnd.list \
+  java/awt/dnd/peer.list \
+  java/awt/event.list \
+  java/awt/font.list \
+  java/awt/geom.list \
+  java/awt/im.list \
+  java/awt/im/spi.list \
+  java/awt/image.list \
+  java/awt/image/renderable.list \
+  java/awt/peer.list \
+  java/awt/print.list \
+  java/beans.list \
+  java/beans/beancontext.list \
+  java/io.list \
+  java/lang.list \
+  java/lang/annotation.list \
+  java/lang/instrument.list \
+  java/lang/management.list \
+  java/lang/ref.list \
+  java/lang/reflect.list \
+  java/math.list \
+  java/net.list \
+  java/nio.list \
+  java/nio/channels.list \
+  java/nio/channels/spi.list \
+  java/nio/charset.list \
+  java/nio/charset/spi.list \
+  java/rmi.list \
+  java/rmi/activation.list \
+  java/rmi/dgc.list \
+  java/rmi/registry.list \
+  java/rmi/server.list \
+  java/security.list \
+  java/security/acl.list \
+  java/security/cert.list \
+  java/security/interfaces.list \
+  java/security/spec.list \
+  java/sql.list \
+  java/text.list \
+  java/util.list \
+  java/util/jar.list \
+  java/util/logging.list \
+  java/util/prefs.list \
+  java/util/regex.list \
+  java/util/zip.list \
+  javax/accessibility.list \
+  javax/crypto.list \
+  javax/crypto/interfaces.list \
+  javax/crypto/spec.list \
+  javax/management.list \
+  javax/management/openmbean.list \
+  javax/naming.list \
+  javax/naming/directory.list \
+  javax/naming/event.list \
+  javax/naming/ldap.list \
+  javax/naming/spi.list \
+  javax/net.list \
+  javax/net/ssl.list \
+  javax/print.list \
+  javax/print/attribute.list \
+  javax/print/attribute/standard.list \
+  javax/print/event.list \
+  javax/security/auth.list \
+  javax/security/auth/callback.list \
+  javax/security/auth/kerberos.list \
+  javax/security/auth/login.list \
+  javax/security/auth/spi.list \
+  javax/security/auth/x500.list \
+  javax/security/cert.list \
+  javax/security/sasl.list \
+  javax/sound/midi.list \
+  javax/sound/midi/spi.list \
+  javax/sound/sampled.list \
+  javax/sound/sampled/spi.list \
+  javax/sql.list \
+  javax/swing.list \
+  javax/swing/border.list \
+  javax/swing/colorchooser.list \
+  javax/swing/event.list \
+  javax/swing/filechooser.list \
+  javax/swing/plaf.list \
+  javax/swing/plaf/basic.list \
+  javax/swing/plaf/metal.list \
+  javax/swing/plaf/multi.list \
+  javax/swing/plaf/synth.list \
+  javax/swing/table.list \
+  javax/swing/text.list \
+  javax/swing/text/html.list \
+  javax/swing/text/html/parser.list \
+  javax/swing/text/rtf.list \
+  javax/swing/tree.list \
+  javax/swing/undo.list \
+  javax/transaction.list \
+  javax/transaction/xa.list \
+  org/ietf/jgss.list
+
+ordinary_header_files = \
+  $(gnu_awt_header_files) \
+  $(gnu_awt_j2d_header_files) \
+  $(gnu_classpath_header_files) \
+  $(gnu_classpath_debug_header_files) \
+  $(gnu_classpath_jdwp_header_files) \
+  $(gnu_classpath_jdwp_event_header_files) \
+  $(gnu_classpath_jdwp_event_filters_header_files) \
+  $(gnu_classpath_jdwp_exception_header_files) \
+  $(gnu_classpath_jdwp_id_header_files) \
+  $(gnu_classpath_jdwp_processor_header_files) \
+  $(gnu_classpath_jdwp_transport_header_files) \
+  $(gnu_classpath_jdwp_util_header_files) \
+  $(gnu_gcj_header_files) \
+  $(gnu_gcj_convert_header_files) \
+  $(gnu_gcj_io_header_files) \
+  $(gnu_gcj_runtime_header_files) \
+  $(gnu_gcj_util_header_files) \
+  $(gnu_java_awt_header_files) \
+  $(gnu_java_awt_color_header_files) \
+  $(gnu_java_awt_dnd_header_files) \
+  $(gnu_java_awt_font_header_files) \
+  $(gnu_java_awt_font_opentype_header_files) \
+  $(gnu_java_awt_font_opentype_truetype_header_files) \
+  $(gnu_java_awt_image_header_files) \
+  $(gnu_java_awt_java2d_header_files) \
+  $(gnu_java_awt_peer_header_files) \
+  $(gnu_java_awt_print_header_files) \
+  $(gnu_java_io_header_files) \
+  $(gnu_java_lang_header_files) \
+  $(gnu_java_lang_management_header_files) \
+  $(gnu_java_lang_reflect_header_files) \
+  $(gnu_java_locale_header_files) \
+  $(gnu_java_math_header_files) \
+  $(gnu_java_net_header_files) \
+  $(gnu_java_net_loader_header_files) \
+  $(gnu_java_net_local_header_files) \
+  $(gnu_java_net_protocol_core_header_files) \
+  $(gnu_java_net_protocol_file_header_files) \
+  $(gnu_java_net_protocol_ftp_header_files) \
+  $(gnu_java_net_protocol_gcjlib_header_files) \
+  $(gnu_java_net_protocol_http_header_files) \
+  $(gnu_java_net_protocol_https_header_files) \
+  $(gnu_java_net_protocol_jar_header_files) \
+  $(gnu_java_nio_header_files) \
+  $(gnu_java_nio_channels_header_files) \
+  $(gnu_java_nio_charset_header_files) \
+  $(gnu_java_rmi_header_files) \
+  $(gnu_java_rmi_activation_header_files) \
+  $(gnu_java_rmi_dgc_header_files) \
+  $(gnu_java_rmi_registry_header_files) \
+  $(gnu_java_rmi_rmic_header_files) \
+  $(gnu_java_rmi_server_header_files) \
+  $(gnu_java_security_header_files) \
+  $(gnu_java_security_action_header_files) \
+  $(gnu_java_security_ber_header_files) \
+  $(gnu_java_security_der_header_files) \
+  $(gnu_java_security_hash_header_files) \
+  $(gnu_java_security_jce_hash_header_files) \
+  $(gnu_java_security_jce_prng_header_files) \
+  $(gnu_java_security_jce_sig_header_files) \
+  $(gnu_java_security_key_header_files) \
+  $(gnu_java_security_key_dss_header_files) \
+  $(gnu_java_security_key_rsa_header_files) \
+  $(gnu_java_security_pkcs_header_files) \
+  $(gnu_java_security_prng_header_files) \
+  $(gnu_java_security_provider_header_files) \
+  $(gnu_java_security_sig_header_files) \
+  $(gnu_java_security_sig_dss_header_files) \
+  $(gnu_java_security_sig_rsa_header_files) \
+  $(gnu_java_security_util_header_files) \
+  $(gnu_java_security_x509_header_files) \
+  $(gnu_java_security_x509_ext_header_files) \
+  $(gnu_java_text_header_files) \
+  $(gnu_java_util_header_files) \
+  $(gnu_java_util_jar_header_files) \
+  $(gnu_java_util_prefs_header_files) \
+  $(gnu_java_util_regex_header_files) \
+  $(gnu_javax_crypto_header_files) \
+  $(gnu_javax_crypto_assembly_header_files) \
+  $(gnu_javax_crypto_cipher_header_files) \
+  $(gnu_javax_crypto_jce_header_files) \
+  $(gnu_javax_crypto_jce_cipher_header_files) \
+  $(gnu_javax_crypto_jce_key_header_files) \
+  $(gnu_javax_crypto_jce_keyring_header_files) \
+  $(gnu_javax_crypto_jce_mac_header_files) \
+  $(gnu_javax_crypto_jce_params_header_files) \
+  $(gnu_javax_crypto_jce_prng_header_files) \
+  $(gnu_javax_crypto_jce_sig_header_files) \
+  $(gnu_javax_crypto_jce_spec_header_files) \
+  $(gnu_javax_crypto_key_header_files) \
+  $(gnu_javax_crypto_key_dh_header_files) \
+  $(gnu_javax_crypto_key_srp6_header_files) \
+  $(gnu_javax_crypto_keyring_header_files) \
+  $(gnu_javax_crypto_kwa_header_files) \
+  $(gnu_javax_crypto_mac_header_files) \
+  $(gnu_javax_crypto_mode_header_files) \
+  $(gnu_javax_crypto_pad_header_files) \
+  $(gnu_javax_crypto_prng_header_files) \
+  $(gnu_javax_crypto_sasl_header_files) \
+  $(gnu_javax_crypto_sasl_anonymous_header_files) \
+  $(gnu_javax_crypto_sasl_crammd5_header_files) \
+  $(gnu_javax_crypto_sasl_plain_header_files) \
+  $(gnu_javax_crypto_sasl_srp_header_files) \
+  $(gnu_javax_imageio_header_files) \
+  $(gnu_javax_imageio_bmp_header_files) \
+  $(gnu_javax_imageio_gif_header_files) \
+  $(gnu_javax_imageio_jpeg_header_files) \
+  $(gnu_javax_imageio_png_header_files) \
+  $(gnu_javax_net_ssl_header_files) \
+  $(gnu_javax_net_ssl_provider_header_files) \
+  $(gnu_javax_print_header_files) \
+  $(gnu_javax_print_ipp_header_files) \
+  $(gnu_javax_print_ipp_attribute_header_files) \
+  $(gnu_javax_print_ipp_attribute_defaults_header_files) \
+  $(gnu_javax_print_ipp_attribute_job_header_files) \
+  $(gnu_javax_print_ipp_attribute_printer_header_files) \
+  $(gnu_javax_print_ipp_attribute_supported_header_files) \
+  $(gnu_javax_security_auth_header_files) \
+  $(gnu_javax_security_auth_callback_header_files) \
+  $(gnu_javax_security_auth_login_header_files) \
+  $(gnu_javax_sound_sampled_AU_header_files) \
+  $(gnu_javax_sound_sampled_WAV_header_files) \
+  $(gnu_javax_swing_plaf_gnu_header_files) \
+  $(gnu_javax_swing_plaf_metal_header_files) \
+  $(gnu_javax_swing_text_html_header_files) \
+  $(gnu_javax_swing_text_html_parser_header_files) \
+  $(gnu_javax_swing_text_html_parser_models_header_files) \
+  $(gnu_javax_swing_text_html_parser_support_header_files) \
+  $(gnu_javax_swing_text_html_parser_support_low_header_files) \
+  $(gnu_javax_swing_tree_header_files) \
+  $(java_applet_header_files) \
+  $(java_awt_header_files) \
+  $(java_awt_color_header_files) \
+  $(java_awt_datatransfer_header_files) \
+  $(java_awt_dnd_header_files) \
+  $(java_awt_dnd_peer_header_files) \
+  $(java_awt_event_header_files) \
+  $(java_awt_font_header_files) \
+  $(java_awt_geom_header_files) \
+  $(java_awt_im_header_files) \
+  $(java_awt_im_spi_header_files) \
+  $(java_awt_image_header_files) \
+  $(java_awt_image_renderable_header_files) \
+  $(java_awt_peer_header_files) \
+  $(java_awt_print_header_files) \
+  $(java_beans_header_files) \
+  $(java_beans_beancontext_header_files) \
+  $(java_io_header_files) \
+  $(java_lang_header_files) \
+  $(java_lang_annotation_header_files) \
+  $(java_lang_instrument_header_files) \
+  $(java_lang_management_header_files) \
+  $(java_lang_ref_header_files) \
+  $(java_lang_reflect_header_files) \
+  $(java_math_header_files) \
+  $(java_net_header_files) \
+  $(java_nio_header_files) \
+  $(java_nio_channels_header_files) \
+  $(java_nio_channels_spi_header_files) \
+  $(java_nio_charset_header_files) \
+  $(java_nio_charset_spi_header_files) \
+  $(java_rmi_header_files) \
+  $(java_rmi_activation_header_files) \
+  $(java_rmi_dgc_header_files) \
+  $(java_rmi_registry_header_files) \
+  $(java_rmi_server_header_files) \
+  $(java_security_header_files) \
+  $(java_security_acl_header_files) \
+  $(java_security_cert_header_files) \
+  $(java_security_interfaces_header_files) \
+  $(java_security_spec_header_files) \
+  $(java_sql_header_files) \
+  $(java_text_header_files) \
+  $(java_util_header_files) \
+  $(java_util_jar_header_files) \
+  $(java_util_logging_header_files) \
+  $(java_util_prefs_header_files) \
+  $(java_util_regex_header_files) \
+  $(java_util_zip_header_files) \
+  $(javax_accessibility_header_files) \
+  $(javax_crypto_header_files) \
+  $(javax_crypto_interfaces_header_files) \
+  $(javax_crypto_spec_header_files) \
+  $(javax_management_header_files) \
+  $(javax_management_openmbean_header_files) \
+  $(javax_naming_header_files) \
+  $(javax_naming_directory_header_files) \
+  $(javax_naming_event_header_files) \
+  $(javax_naming_ldap_header_files) \
+  $(javax_naming_spi_header_files) \
+  $(javax_net_header_files) \
+  $(javax_net_ssl_header_files) \
+  $(javax_print_header_files) \
+  $(javax_print_attribute_header_files) \
+  $(javax_print_attribute_standard_header_files) \
+  $(javax_print_event_header_files) \
+  $(javax_security_auth_header_files) \
+  $(javax_security_auth_callback_header_files) \
+  $(javax_security_auth_kerberos_header_files) \
+  $(javax_security_auth_login_header_files) \
+  $(javax_security_auth_spi_header_files) \
+  $(javax_security_auth_x500_header_files) \
+  $(javax_security_cert_header_files) \
+  $(javax_security_sasl_header_files) \
+  $(javax_sound_midi_header_files) \
+  $(javax_sound_midi_spi_header_files) \
+  $(javax_sound_sampled_header_files) \
+  $(javax_sound_sampled_spi_header_files) \
+  $(javax_sql_header_files) \
+  $(javax_swing_header_files) \
+  $(javax_swing_border_header_files) \
+  $(javax_swing_colorchooser_header_files) \
+  $(javax_swing_event_header_files) \
+  $(javax_swing_filechooser_header_files) \
+  $(javax_swing_plaf_header_files) \
+  $(javax_swing_plaf_basic_header_files) \
+  $(javax_swing_plaf_metal_header_files) \
+  $(javax_swing_plaf_multi_header_files) \
+  $(javax_swing_plaf_synth_header_files) \
+  $(javax_swing_table_header_files) \
+  $(javax_swing_text_header_files) \
+  $(javax_swing_text_html_header_files) \
+  $(javax_swing_text_html_parser_header_files) \
+  $(javax_swing_text_rtf_header_files) \
+  $(javax_swing_tree_header_files) \
+  $(javax_swing_undo_header_files) \
+  $(javax_transaction_header_files) \
+  $(javax_transaction_xa_header_files) \
+  $(org_ietf_jgss_header_files)
+
+bc_objects = \
+  gnu-CORBA.lo \
+  gnu-java-awt-dnd-peer-gtk.lo \
+  gnu-java-awt-peer-gtk.lo \
+  gnu-java-awt-peer-qt.lo \
+  gnu-java-awt-peer-swing.lo \
+  gnu-java-beans.lo \
+  gnu-java-util-prefs-gconf.lo \
+  gnu-javax-rmi.lo \
+  gnu-javax-sound-midi.lo \
+  gnu-xml.lo \
+  javax-imageio.lo \
+  javax-rmi.lo \
+  javax-xml.lo \
+  org-omg.lo \
+  org-relaxng.lo \
+  org-w3c.lo \
+  org-xml.lo
+
+property_files = \
+  classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties \
+  classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle_de.properties \
+  classpath/resource/gnu/classpath/tools/getopt/Messages.properties \
+  classpath/resource/gnu/classpath/tools/jar/messages.properties \
+  classpath/resource/gnu/classpath/tools/jarsigner/messages.properties \
+  classpath/resource/gnu/classpath/tools/keytool/messages.properties \
+  classpath/resource/gnu/classpath/tools/native2ascii/messages.properties \
+  classpath/resource/gnu/classpath/tools/serialver/messages.properties \
+  classpath/resource/gnu/java/awt/peer/gtk/font.properties \
+  classpath/resource/gnu/java/awt/peer/x/fonts.properties \
+  classpath/resource/gnu/java/util/regex/MessagesBundle.properties \
+  classpath/resource/gnu/java/util/regex/MessagesBundle_fr.properties \
+  classpath/resource/gnu/java/util/regex/MessagesBundle_it.properties \
+  classpath/resource/gnu/javax/print/PrinterDialog.properties \
+  classpath/resource/gnu/javax/print/PrinterDialog_de.properties \
+  classpath/resource/gnu/javax/security/auth/callback/MessagesBundle.properties \
+  classpath/resource/java/util/iso4217.properties \
+  classpath/resource/javax/imageio/plugins/jpeg/MessagesBundle.properties \
+  classpath/resource/org/ietf/jgss/MessagesBundle.properties \
+  classpath/resource/META-INF/services/java.util.prefs.PreferencesFactory \
+  classpath/resource/META-INF/services/java.util.prefs.PreferencesFactory.in \
+  classpath/resource/META-INF/services/javax.sound.midi.spi.MidiDeviceProvider \
+  classpath/resource/META-INF/services/javax.sound.midi.spi.MidiFileReader \
+  classpath/resource/META-INF/services/javax.sound.midi.spi.MidiFileWriter \
+  classpath/resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader \
+  classpath/resource/META-INF/services/javax.xml.parsers.DocumentBuilderFactory \
+  classpath/resource/META-INF/services/javax.xml.parsers.SAXParserFactory \
+  classpath/resource/META-INF/services/javax.xml.parsers.TransformerFactory \
+  classpath/resource/META-INF/services/org.relaxng.datatype.DatatypeLibraryFactory \
+  classpath/resource/META-INF/services/org.xml.sax.driver

Added: llvm-gcc-4.2/trunk/libjava/stacktrace.cc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/stacktrace.cc?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/stacktrace.cc (added)
+++ llvm-gcc-4.2/trunk/libjava/stacktrace.cc Thu Nov  8 16:56:19 2007
@@ -0,0 +1,628 @@
+// stacktrace.cc - Functions for unwinding & inspecting the call stack.
+
+/* Copyright (C) 2005, 2006  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#include <config.h>
+#include <platform.h>
+
+#include <jvm.h>
+#include <gcj/cni.h>
+#include <java-interp.h>
+#include <java-stack.h>
+
+#include <stdio.h>
+
+#include <java/lang/Boolean.h>
+#include <java/lang/Class.h>
+#include <java/lang/Long.h>
+#include <java/security/AccessController.h>
+#include <java/util/ArrayList.h>
+#include <java/util/IdentityHashMap.h>
+#include <gnu/classpath/jdwp/Jdwp.h>
+#include <gnu/java/lang/MainThread.h>
+#include <gnu/gcj/runtime/NameFinder.h>
+#include <gnu/gcj/runtime/StringBuffer.h>
+
+#include <sysdep/backtrace.h>
+#include <sysdep/descriptor.h>
+
+using namespace java::lang;
+using namespace java::lang::reflect;
+using namespace java::util;
+using namespace gnu::gcj::runtime;
+
+// Maps ncode values to their containing native class.
+// NOTE: Currently this Map contradicts class GC for native classes. This map
+// (and the "new class stack") will need to use WeakReferences in order to 
+// enable native class GC.
+static java::util::IdentityHashMap *ncodeMap;
+
+// Check the "class stack" for any classes initialized since we were last 
+// called, and add them to ncodeMap.
+void 
+_Jv_StackTrace::UpdateNCodeMap ()
+{
+  // The Map should be large enough so that a typical Java app doesn't cause 
+  // it to rehash, without using too much memory. ~5000 entries should be 
+  // enough.
+  if (ncodeMap == NULL)
+    ncodeMap = new java::util::IdentityHashMap (5087);
+  
+  jclass klass;
+  while ((klass = _Jv_PopClass ()))
+    if (!_Jv_IsInterpretedClass (klass))
+      {
+	//printf ("got %s\n", klass->name->data);
+	for (int i = 0; i < klass->method_count; i++)
+	  {
+	    _Jv_Method *method = &klass->methods[i];
+	    void *ncode = method->ncode;
+	    // Add non-abstract methods to ncodeMap.
+	    if (ncode)
+	      {
+		ncode = UNWRAP_FUNCTION_DESCRIPTOR (ncode);
+		ncodeMap->put ((java::lang::Object *) ncode, klass);
+	      }
+	  }
+      }
+}
+
+// Given a native frame, return the class which this code belongs 
+// to. Returns NULL if this IP is not associated with a native Java class.
+// If NCODE is supplied, it will be set with the ip for the entry point of the 
+// enclosing method.
+jclass
+_Jv_StackTrace::ClassForFrame (_Jv_StackFrame *frame)
+{
+  JvAssert (frame->type == frame_native);
+  jclass klass = NULL;
+
+  // look it up in ncodeMap
+  if (frame->start_ip)
+    klass = (jclass) ncodeMap->get ((jobject) frame->start_ip);
+
+  return klass;
+}
+
+_Unwind_Reason_Code
+_Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr)
+{
+  _Jv_UnwindState *state = (_Jv_UnwindState *) state_ptr;
+  jint pos = state->pos;
+
+  // Check if the trace buffer needs to be extended.
+  if (pos == state->length)
+    {
+      int newLength = state->length * 2;
+      void *newFrames = _Jv_AllocBytes (newLength * sizeof(_Jv_StackFrame));
+      memcpy (newFrames, state->frames, state->length * sizeof(_Jv_StackFrame));      
+      state->frames = (_Jv_StackFrame *) newFrames;
+      state->length = newLength;
+    }
+
+  void *func_addr = (void *) _Unwind_GetRegionStart (context);
+
+  // If we see the interpreter's main function, "pop" an entry off the 
+  // interpreter stack and use that instead, so that the trace goes through 
+  // the java code and not the interpreter itself. This assumes a 1:1 
+  // correspondance between call frames in the interpreted stack and occurances
+  // of _Jv_InterpMethod::run() on the native stack.
+#ifdef INTERPRETER
+  void *interp_run = NULL;
+  
+  if (::gnu::classpath::jdwp::Jdwp::isDebugging)
+  	interp_run = (void *) &_Jv_InterpMethod::run_debug;
+  else
+    interp_run = (void *) &_Jv_InterpMethod::run;
+  	
+  if (func_addr == UNWRAP_FUNCTION_DESCRIPTOR (interp_run))
+    {
+      state->frames[pos].type = frame_interpreter;
+      state->frames[pos].interp.meth = state->interp_frame->self;
+      state->frames[pos].interp.pc = state->interp_frame->pc;
+      state->interp_frame = state->interp_frame->next;
+    }
+  else
+#endif
+    {
+#ifdef HAVE_GETIPINFO
+      _Unwind_Ptr ip;
+      int ip_before_insn = 0;
+      ip = _Unwind_GetIPInfo (context, &ip_before_insn);
+
+      // If the unwinder gave us a 'return' address, roll it back a little
+      // to ensure we get the correct line number for the call itself.
+      if (! ip_before_insn)
+	--ip;
+#endif
+      state->frames[pos].type = frame_native;
+#ifdef HAVE_GETIPINFO
+      state->frames[pos].ip = (void *) ip;
+#else
+      state->frames[pos].ip = (void *) _Unwind_GetIP (context);
+#endif
+      state->frames[pos].start_ip = func_addr;
+    }
+
+  _Unwind_Reason_Code result = _URC_NO_REASON;
+  if (state->trace_function != NULL)
+    result = (state->trace_function) (state);
+  state->pos++;
+  return result;
+}
+
+// Return a raw stack trace from the current point of execution. The raw 
+// trace will include all functions that have unwind info.
+_Jv_StackTrace *
+_Jv_StackTrace::GetStackTrace(void)
+{
+  int trace_size = 100;
+  _Jv_StackFrame frames[trace_size];
+  _Jv_UnwindState state (trace_size);
+  state.frames = (_Jv_StackFrame *) &frames;
+
+  _Unwind_Backtrace (UnwindTraceFn, &state);
+  
+  // Copy the trace and return it.
+  int traceSize = sizeof (_Jv_StackTrace) + 
+    (sizeof (_Jv_StackFrame) * state.pos);
+  _Jv_StackTrace *trace = (_Jv_StackTrace *) _Jv_AllocBytes (traceSize);
+  trace->length = state.pos;
+  memcpy (trace->frames, state.frames, sizeof (_Jv_StackFrame) * state.pos);  
+  return trace;
+}
+
+void
+_Jv_StackTrace::getLineNumberForFrame(_Jv_StackFrame *frame, NameFinder *finder, 
+				      jstring *sourceFileName, jint *lineNum,
+				      jstring *methodName)
+{
+#ifdef INTERPRETER
+  if (frame->type == frame_interpreter)
+    {
+      _Jv_InterpMethod *interp_meth = frame->interp.meth;
+      _Jv_InterpClass *interp_class = 
+	 (_Jv_InterpClass *) interp_meth->defining_class->aux_info;
+      *sourceFileName = interp_class->source_file_name;
+      // The interpreter advances the PC before executing an instruction,
+      // so roll-back 1 byte to ensure the line number is accurate.
+      *lineNum = interp_meth->get_source_line(frame->interp.pc - 1);
+      return;
+    }
+#endif
+
+  // Use _Jv_platform_dladdr() to determine in which binary the address IP
+  // resides.
+  _Jv_AddrInfo info;
+  jstring binaryName = NULL;
+  const char *argv0 = _Jv_GetSafeArg(0);
+
+  void *ip = frame->ip;
+  _Unwind_Ptr offset = 0;
+
+  if (_Jv_platform_dladdr (ip, &info))
+    {
+      if (info.file_name)
+	binaryName = JvNewStringUTF (info.file_name);
+      else
+        return;
+
+      if (*methodName == NULL && info.sym_name)
+	*methodName = JvNewStringUTF (info.sym_name);
+
+      // addr2line expects relative addresses for shared libraries.
+      if (strcmp (info.file_name, argv0) == 0)
+        offset = (_Unwind_Ptr) ip;
+      else
+        offset = (_Unwind_Ptr) ip - (_Unwind_Ptr) info.base;
+
+#ifndef HAVE_GETIPINFO
+      // The unwinder gives us the return address. In order to get the right
+      // line number for the stack trace, roll it back a little.
+      offset -= 1;
+#endif
+
+      finder->lookup (binaryName, (jlong) offset);
+      *sourceFileName = finder->getSourceFile();
+      *lineNum = finder->getLineNum();
+      if (*lineNum == -1 && NameFinder::showRaw())
+        {
+          gnu::gcj::runtime::StringBuffer *t =
+            new gnu::gcj::runtime::StringBuffer(binaryName);
+          t->append ((jchar)' ');
+          t->append ((jchar)'[');
+          // + 1 to compensate for the - 1 adjustment above;
+          t->append (Long::toHexString (offset + 1));
+          t->append ((jchar)']');
+          *sourceFileName = t->toString();
+        }
+    }
+}
+
+// Look up class and method info for the given stack frame, setting 
+// frame->klass and frame->meth if they are known.
+void
+_Jv_StackTrace::FillInFrameInfo (_Jv_StackFrame *frame)
+{
+  jclass klass = NULL;
+  _Jv_Method *meth = NULL;
+  
+  if (frame->type == frame_native)
+    {
+      klass = _Jv_StackTrace::ClassForFrame (frame);
+
+      if (klass != NULL)
+	// Find method in class
+	for (int j = 0; j < klass->method_count; j++)
+	  {
+	    void *wncode = UNWRAP_FUNCTION_DESCRIPTOR (klass->methods[j].ncode);
+	    if (wncode == frame->start_ip)
+	      {
+		meth = &klass->methods[j];
+		break;
+	      }
+	  }
+    }
+#ifdef INTERPRETER
+  else if (frame->type == frame_interpreter)
+    {
+      _Jv_InterpMethod *interp_meth = frame->interp.meth;
+      klass = interp_meth->defining_class;
+      meth = interp_meth->self;
+    }
+#endif
+  else
+    JvFail ("Unknown frame type");
+  
+  frame->klass = klass;
+  frame->meth = meth;
+}
+
+// Convert raw stack frames to a Java array of StackTraceElement objects.
+JArray< ::java::lang::StackTraceElement *>*
+_Jv_StackTrace::GetStackTraceElements (_Jv_StackTrace *trace, 
+  Throwable *throwable __attribute__((unused)))
+{
+  ArrayList *list = new ArrayList ();
+
+#if defined (SJLJ_EXCEPTIONS) && ! defined (WIN32)
+  // We can't use the nCodeMap without unwinder support. Instead,
+  // fake the method name by giving the IP in hex - better than nothing.  
+  jstring hex = JvNewStringUTF ("0x");
+
+  for (int i = 0; i < trace->length; i++)
+    {
+      jstring sourceFileName = NULL;
+      jint lineNum = -1;
+      _Jv_StackFrame *frame = &trace->frames[i];
+      
+      jstring className = NULL;
+      jstring methodName = hex->concat (Long::toHexString ((jlong) frame->ip));
+
+      StackTraceElement *element = new StackTraceElement (sourceFileName, 
+	lineNum, className, methodName, 0);    
+      list->add (element);
+    }
+
+#else /* SJLJ_EXCEPTIONS && !WIN32 */
+
+  //JvSynchronized (ncodeMap);
+  UpdateNCodeMap ();
+
+  NameFinder *finder = new NameFinder();
+  int start_idx = 0;
+  int end_idx = trace->length - 1;
+
+  // First pass: strip superfluous frames from beginning and end of the trace.  
+  for (int i = 0; i < trace->length; i++)
+    {
+      _Jv_StackFrame *frame = &trace->frames[i];
+      FillInFrameInfo (frame);
+
+      if (!frame->klass || !frame->meth)
+        // Not a Java frame.
+        continue;
+
+      // Throw away the top of the stack till we see:
+      //  - the constructor(s) of this Throwable, or
+      //  - the Throwable.fillInStackTrace call.
+      if (frame->klass == throwable->getClass()
+          && strcmp (frame->meth->name->chars(), "<init>") == 0)
+        start_idx = i + 1;
+
+      if (frame->klass == &Throwable::class$
+          && strcmp (frame->meth->name->chars(), "fillInStackTrace") == 0)
+	start_idx = i + 1;
+
+      // End the trace at the application's main() method if we see call_main.
+      if (frame->klass == &gnu::java::lang::MainThread::class$
+          && strcmp (frame->meth->name->chars(), "call_main") == 0)
+	end_idx = i - 1;
+    }
+  
+  const jboolean remove_unknown 
+    = gnu::gcj::runtime::NameFinder::removeUnknown();
+
+  // Second pass: Look up line-number info for remaining frames.
+  for (int i = start_idx; i <= end_idx; i++)
+    {
+      _Jv_StackFrame *frame = &trace->frames[i];
+      
+      if (frame->klass == NULL && remove_unknown)
+	// Not a Java frame.
+	continue;
+
+      jstring className = NULL;
+      if (frame->klass != NULL)
+	className = frame->klass->getName ();
+
+      jstring methodName = NULL;
+      if (frame->meth)
+        methodName = JvNewStringUTF (frame->meth->name->chars());
+      
+      jstring sourceFileName = NULL;
+      jint lineNum = -1;
+      
+      getLineNumberForFrame(frame, finder, &sourceFileName, &lineNum, 
+			    &methodName);
+      
+      StackTraceElement *element = new StackTraceElement (sourceFileName, lineNum,
+        className, methodName, 0);
+      list->add (element);
+    }
+  
+  finder->close();
+#endif /* SJLJ_EXCEPTIONS && !WIN32 */
+
+  JArray<Object *> *array = JvNewObjectArray (list->size (), 
+    &StackTraceElement::class$, NULL);
+
+  return (JArray<StackTraceElement *>*) list->toArray (array);
+}
+
+struct CallingClassTraceData
+{
+  jclass checkClass;    
+  jclass foundClass;
+  _Jv_Method *foundMeth;
+  bool seen_checkClass;
+};
+
+_Unwind_Reason_Code
+_Jv_StackTrace::calling_class_trace_fn (_Jv_UnwindState *state)
+{
+  CallingClassTraceData *trace_data = (CallingClassTraceData *)
+    state->trace_data;
+  _Jv_StackFrame *frame = &state->frames[state->pos];
+  FillInFrameInfo (frame);
+
+  if (trace_data->seen_checkClass
+      && frame->klass
+      && frame->klass != trace_data->checkClass)
+    {
+      trace_data->foundClass = frame->klass;
+      trace_data->foundMeth = frame->meth;
+      return _URC_NORMAL_STOP;
+    }
+  
+  if (frame->klass == trace_data->checkClass)
+    trace_data->seen_checkClass = true;
+    
+  return _URC_NO_REASON;
+}
+
+// Find the class immediately above the given class on the call stack. Any 
+// intermediate non-Java 
+// frames are ignored. If the calling class could not be determined (eg because 
+// the unwinder is not supported on this platform), NULL is returned.
+// This function is used to implement calling-classloader checks and reflection
+// accessibility checks.
+// CHECKCLASS is typically the class calling GetCallingClass. The first class
+// above CHECKCLASS on the call stack will be returned.
+jclass
+_Jv_StackTrace::GetCallingClass (jclass checkClass)
+{
+  jclass result = NULL;
+  GetCallerInfo (checkClass, &result, NULL);
+  return result;
+}
+
+void
+_Jv_StackTrace::GetCallerInfo (jclass checkClass, jclass *caller_class,
+  _Jv_Method **caller_meth)
+{
+  int trace_size = 20;
+  _Jv_StackFrame frames[trace_size];
+  _Jv_UnwindState state (trace_size);
+  state.frames = (_Jv_StackFrame *) &frames;
+
+  CallingClassTraceData trace_data;
+  trace_data.checkClass = checkClass;
+  trace_data.seen_checkClass = false;
+  trace_data.foundClass = NULL;
+  trace_data.foundMeth = NULL;
+
+  state.trace_function = calling_class_trace_fn;
+  state.trace_data = (void *) &trace_data;
+
+  //JvSynchronized (ncodeMap);
+  UpdateNCodeMap ();
+
+  _Unwind_Backtrace (UnwindTraceFn, &state);
+  
+  if (caller_class)
+    *caller_class = trace_data.foundClass;
+  if (caller_meth)
+    *caller_meth = trace_data.foundMeth;
+}
+
+// Return a java array containing the Java classes on the stack above CHECKCLASS.
+JArray<jclass> *
+_Jv_StackTrace::GetClassContext (jclass checkClass)
+{
+  JArray<jclass> *result = NULL;
+
+  int trace_size = 100;
+  _Jv_StackFrame frames[trace_size];
+  _Jv_UnwindState state (trace_size);
+  state.frames = (_Jv_StackFrame *) &frames;
+
+  //JvSynchronized (ncodeMap);
+  UpdateNCodeMap ();
+
+  _Unwind_Backtrace (UnwindTraceFn, &state);
+
+  // Count the number of Java frames on the stack.
+  int jframe_count = 0;
+  bool seen_checkClass = false;
+  int start_pos = -1;
+  for (int i = 0; i < state.pos; i++)
+    {
+      _Jv_StackFrame *frame = &state.frames[i];
+      FillInFrameInfo (frame);
+      
+      if (seen_checkClass)
+	{
+	  if (frame->klass)
+	    {
+	      jframe_count++;
+	      if (start_pos == -1)
+		start_pos = i;
+	    }
+	}
+      else
+	seen_checkClass = frame->klass == checkClass;
+    }
+  result = (JArray<jclass> *) _Jv_NewObjectArray (jframe_count, &Class::class$, NULL);
+  int pos = 0;
+  
+  for (int i = start_pos; i < state.pos; i++)
+    {
+      _Jv_StackFrame *frame = &state.frames[i];
+      if (frame->klass)
+        elements(result)[pos++] = frame->klass;
+    }
+  return result;
+}
+
+_Unwind_Reason_Code
+_Jv_StackTrace::non_system_trace_fn (_Jv_UnwindState *state)
+{
+  _Jv_StackFrame *frame = &state->frames[state->pos];
+  FillInFrameInfo (frame);
+  
+  ClassLoader *classLoader = NULL;
+
+  if (frame->klass)
+    {
+      classLoader = frame->klass->getClassLoaderInternal();
+#ifdef INTERPRETER
+      if (classLoader != NULL)
+        {
+          state->trace_data = (void *) classLoader;
+	  return _URC_NORMAL_STOP;
+	}
+#endif
+    }
+
+  return _URC_NO_REASON;
+}
+
+ClassLoader *
+_Jv_StackTrace::GetFirstNonSystemClassLoader ()
+{
+  int trace_size = 32;
+  _Jv_StackFrame frames[trace_size];
+  _Jv_UnwindState state (trace_size);
+  state.frames = (_Jv_StackFrame *) &frames;
+  state.trace_function = non_system_trace_fn;
+  state.trace_data = NULL;
+
+  //JvSynchronized (ncodeMap);
+  UpdateNCodeMap ();
+  
+  _Unwind_Backtrace (UnwindTraceFn, &state);
+
+  if (state.trace_data)
+    return (ClassLoader *) state.trace_data;
+  
+  return NULL;
+}
+
+struct AccessControlTraceData
+{
+  jint length;
+  jboolean privileged;
+};
+
+_Unwind_Reason_Code
+_Jv_StackTrace::accesscontrol_trace_fn (_Jv_UnwindState *state)
+{
+  AccessControlTraceData *trace_data = (AccessControlTraceData *)
+    state->trace_data;
+  _Jv_StackFrame *frame = &state->frames[state->pos];
+  FillInFrameInfo (frame);
+
+  if (!(frame->klass && frame->meth))
+    return _URC_NO_REASON;
+
+  trace_data->length++;
+
+  // If the previous frame was a call to doPrivileged, then this is
+  // the last frame we look at.
+  if (trace_data->privileged)
+    return _URC_NORMAL_STOP;
+  
+  if (frame->klass == &::java::security::AccessController::class$
+      && strcmp (frame->meth->name->chars(), "doPrivileged") == 0)
+    trace_data->privileged = true;
+
+  return _URC_NO_REASON;
+}
+
+jobjectArray
+_Jv_StackTrace::GetAccessControlStack (void)
+{
+  int trace_size = 100;
+  _Jv_StackFrame frames[trace_size];
+  _Jv_UnwindState state (trace_size);
+  state.frames = (_Jv_StackFrame *) &frames;
+
+  AccessControlTraceData trace_data;
+  trace_data.length = 0;
+  trace_data.privileged = false;
+  
+  state.trace_function = accesscontrol_trace_fn;
+  state.trace_data = (void *) &trace_data;
+
+  UpdateNCodeMap();
+  _Unwind_Backtrace (UnwindTraceFn, &state);
+
+  JArray<jclass> *classes = (JArray<jclass> *)
+    _Jv_NewObjectArray (trace_data.length, &::java::lang::Class::class$, NULL);
+  jclass *c = elements (classes);
+
+  for (int i = 0, j = 0; i < state.pos; i++)
+    {
+      _Jv_StackFrame *frame = &state.frames[i];
+      if (!frame->klass || !frame->meth)
+	continue;
+      c[j] = frame->klass;
+      j++;
+    }
+
+  jobjectArray result =
+    (jobjectArray) _Jv_NewObjectArray (2, &::java::lang::Object::class$,
+					 NULL);
+  jobject *r = elements (result);
+  r[0] = (jobject) classes;
+  r[1] = (jobject) new Boolean (trace_data.privileged);
+  
+  return result;
+}

Added: llvm-gcc-4.2/trunk/libjava/standard.omit.in
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/standard.omit.in?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/standard.omit.in (added)
+++ llvm-gcc-4.2/trunk/libjava/standard.omit.in Thu Nov  8 16:56:19 2007
@@ -0,0 +1,13 @@
+java/lang/EcosProcess.java
+java/lang/Win32Process.java
+java/lang/PosixProcess.java
+gnu/java/nio/charset/iconv
+java/util/zip/DeflaterConstants.java
+java/util/zip/DeflaterEngine.java
+java/util/zip/DeflaterHuffman.java
+java/util/zip/DeflaterPending.java
+java/util/zip/InflaterDynHeader.java
+java/util/zip/InflaterHuffmanTree.java
+java/util/zip/OutputWindow.java
+java/util/zip/PendingBuffer.java
+java/util/zip/StreamManipulator.java

Added: llvm-gcc-4.2/trunk/libjava/sysdep/alpha/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/alpha/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/alpha/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/alpha/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,53 @@
+// locks.h - Thread synchronization primitives. Alpha implementation.
+
+/* Copyright (C) 2002  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
+				/* address.				*/
+
+inline static bool
+compare_and_swap(volatile obj_addr_t *addr,
+		  			      obj_addr_t old,
+					      obj_addr_t new_val) 
+{
+  unsigned long oldval;
+  char result;
+  __asm__ __volatile__(
+      "1:ldq_l %0, %1\n\t" \
+      "cmpeq %0, %5, %2\n\t" \
+      "beq %2, 2f\n\t" \
+      "mov %3, %0\n\t" \
+      "stq_c %0, %1\n\t" \
+      "bne %0, 2f\n\t" \
+      "br 1b\n\t" \
+      "2:mb"
+	      : "=&r"(oldval), "=m"(*addr), "=&r"(result)
+	      : "r" (new_val), "m"(*addr), "r"(old) : "memory");
+  return (bool) result;
+}
+
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__("mb" : : : "memory");
+  *(addr) = new_val;
+}
+
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+		  				     obj_addr_t old,
+						     obj_addr_t new_val)
+{
+  return compare_and_swap(addr, old, new_val);
+}
+
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/descriptor-n.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/descriptor-n.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/descriptor-n.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/descriptor-n.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,3 @@
+// Given a function pointer, return the code address.
+
+#define UNWRAP_FUNCTION_DESCRIPTOR(X)  (X)

Added: llvm-gcc-4.2/trunk/libjava/sysdep/descriptor-y.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/descriptor-y.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/descriptor-y.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/descriptor-y.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,5 @@
+// Given a function pointer, return the code address.
+
+// The function descriptor is actually multiple words,
+// but we don't care about anything except the first.
+#define UNWRAP_FUNCTION_DESCRIPTOR(X)  (*(void **)(X))

Added: llvm-gcc-4.2/trunk/libjava/sysdep/generic/backtrace.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/generic/backtrace.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/generic/backtrace.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/generic/backtrace.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,23 @@
+// backtrace.h - Fallback backtrace implementation. default implementation.
+
+/* Copyright (C) 2005, 2006  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_BACKTRACE_H__
+#define __SYSDEP_BACKTRACE_H__
+
+#include <java-stack.h>
+
+/* Unwind through the call stack calling TRACE_FN with STATE for every stack
+   frame.  Returns the reason why the unwinding was stopped.  */
+_Unwind_Reason_Code
+fallback_backtrace (_Unwind_Trace_Fn, _Jv_UnwindState *)
+{
+  return _URC_NO_REASON;
+}
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/generic/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/generic/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/generic/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/generic/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,11 @@
+// locks.h - Thread synchronization primitives. Generic implementation.
+
+/* Copyright (C) 2002  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#error Thread synchronization primitives not implemented for this platform.

Added: llvm-gcc-4.2/trunk/libjava/sysdep/i386/backtrace.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/i386/backtrace.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/i386/backtrace.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/i386/backtrace.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,113 @@
+// backtrace.h - Fallback backtrace implementation. i386 implementation.
+
+/* Copyright (C) 2005, 2006  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_BACKTRACE_H__
+#define __SYSDEP_BACKTRACE_H__
+
+#include <java-stack.h>
+
+extern int main (int, char **);
+
+/* The context used to keep track of our position while unwinding through
+   the call stack.  */
+struct _Unwind_Context
+{
+  /* The starting address of the method.  */
+  _Jv_uintptr_t meth_addr;
+
+  /* The return address in the method.  */
+  _Jv_uintptr_t ret_addr;
+};
+
+#ifdef SJLJ_EXCEPTIONS
+
+#undef _Unwind_GetIPInfo
+#define _Unwind_GetIPInfo(ctx,ip_before_insn) \
+  (*(ip_before_insn) = 1, (ctx)->ret_addr)
+
+#undef _Unwind_GetRegionStart
+#define _Unwind_GetRegionStart(ctx) \
+  ((ctx)->meth_addr)
+
+#undef _Unwind_Backtrace
+#define _Unwind_Backtrace(trace_fn,state_ptr) \
+  (fallback_backtrace (trace_fn, state_ptr))
+
+#endif /* SJLJ_EXCEPTIONS */
+
+/* Unwind through the call stack calling TRACE_FN with STATE for each stack
+   frame.  Returns the reason why the unwinding was stopped.  */
+_Unwind_Reason_Code
+fallback_backtrace (_Unwind_Trace_Fn trace_fn, _Jv_UnwindState *state)
+{
+  register _Jv_uintptr_t *_ebp __asm__ ("ebp");
+  register _Jv_uintptr_t _esp __asm__ ("esp");
+  _Jv_uintptr_t rfp;
+  _Unwind_Context ctx;
+
+  for (rfp = *_ebp; rfp; rfp = *(_Jv_uintptr_t *)rfp)
+    {
+      /* Sanity checks to eliminate dubious-looking frame pointer chains.
+         The frame pointer should be a 32-bit word-aligned stack address.
+         Since the stack grows downwards on x86, the frame pointer must have
+         a value greater than the current value of the stack pointer, it
+         should not be below the supposed next frame pointer and it should
+         not be too far off from the supposed next frame pointer.  */
+      int diff = *(_Jv_uintptr_t *)rfp - rfp;
+      if ((rfp & 0x00000003) != 0 || rfp < _esp
+          || diff > 4 * 1024 || diff < 0)
+        break;
+
+      /* Get the return address in the calling function.  This is stored on
+         the stack just before the value of the old frame pointer.  */
+      ctx.ret_addr = *(_Jv_uintptr_t *)(rfp + sizeof (_Jv_uintptr_t));
+
+      /* Try to locate a "pushl %ebp; movl %esp, %ebp" function prologue
+         by scanning backwards at even addresses below the return address.
+         This instruction sequence is encoded either as 0x55 0x89 0xE5 or as
+         0x55 0x8B 0xEC.  We give up if we do not find this sequence even
+         after scanning 1024K of memory.
+         FIXME: This is not robust and will probably give us false positives,
+         but this is about the best we can do if we do not have DWARF-2 unwind
+         information based exception handling.  */
+      ctx.meth_addr = (_Jv_uintptr_t)NULL;
+      _Jv_uintptr_t scan_addr = (ctx.ret_addr & 0xFFFFFFFE) - 2;
+      _Jv_uintptr_t limit_addr
+        = (scan_addr > 1024 * 1024) ? (scan_addr - 1024 * 1024) : 2;
+      for ( ; scan_addr >= limit_addr; scan_addr -= 2)
+        {
+          unsigned char *scan_bytes = (unsigned char *)scan_addr;
+          if (scan_bytes[0] == 0x55
+              && ((scan_bytes[1] == 0x89 && scan_bytes[2] == 0xE5)
+                  || (scan_bytes[1] == 0x8B && scan_bytes[2] == 0xEC)))
+            {
+              ctx.meth_addr = scan_addr;
+              break;
+            }
+        }
+
+      /* Now call the unwinder callback function. */
+      if (trace_fn != NULL)
+        (*trace_fn) (&ctx, state);
+
+      /* No need to unwind beyond _Jv_RunMain(), _Jv_ThreadStart or
+         main().  */
+      void *jv_runmain
+        = (void *)(void (*)(JvVMInitArgs *, jclass, const char *, int,
+                            const char **, bool))_Jv_RunMain;
+      if (ctx.meth_addr == (_Jv_uintptr_t)jv_runmain
+          || ctx.meth_addr == (_Jv_uintptr_t)_Jv_ThreadStart
+          || (ctx.meth_addr - (_Jv_uintptr_t)main) < 16)
+        break;
+    }
+
+  return _URC_NO_REASON;
+}
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/i386/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/i386/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/i386/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/i386/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,81 @@
+/* locks.h - Thread synchronization primitives. X86/x86-64 implementation.
+
+   Copyright (C) 2002  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
+				/* address.				*/
+
+// Atomically replace *addr by new_val if it was initially equal to old.
+// Return true if the comparison succeeded.
+// Assumed to have acquire semantics, i.e. later memory operations
+// cannot execute before the compare_and_swap finishes.
+inline static bool
+compare_and_swap(volatile obj_addr_t *addr,
+		 obj_addr_t old,
+		 obj_addr_t new_val)
+{
+  char result;
+#ifdef __x86_64__
+  __asm__ __volatile__("lock; cmpxchgq %2, %0; setz %1"
+	      : "=m"(*(addr)), "=q"(result)
+	      : "r" (new_val), "a"(old), "m"(*addr)
+	      : "memory");
+#else
+  __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1"
+		       : "=m"(*addr), "=q"(result)
+		       : "r" (new_val), "a"(old), "m"(*addr)
+		       : "memory");
+#endif
+  return (bool) result;
+}
+
+// Set *addr to new_val with release semantics, i.e. making sure
+// that prior loads and stores complete before this
+// assignment.
+// On X86/x86-64, the hardware shouldn't reorder reads and writes,
+// so we just have to convince gcc not to do it either.
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__(" " : : : "memory");
+  *(addr) = new_val;
+}
+
+// Compare_and_swap with release semantics instead of acquire semantics.
+// On many architecture, the operation makes both guarantees, so the
+// implementation can be the same.
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+			 obj_addr_t old,
+			 obj_addr_t new_val)
+{
+  return compare_and_swap(addr, old, new_val);
+}
+
+// Ensure that subsequent instructions do not execute on stale
+// data that was loaded from memory before the barrier.
+// On X86/x86-64, the hardware ensures that reads are properly ordered.
+inline static void
+read_barrier()
+{
+}
+
+// Ensure that prior stores to memory are completed with respect to other
+// processors.
+inline static void
+write_barrier()
+{
+  /* x86-64/X86 does not reorder writes. We just need to ensure that
+     gcc also doesn't.  */
+  __asm__ __volatile__(" " : : : "memory");
+}
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/ia64/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/ia64/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/ia64/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/ia64/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,49 @@
+// locks.h - Thread synchronization primitives. IA64 implementation.
+
+/* Copyright (C) 2002  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+#include <ia64intrin.h>
+
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
+				/* address.				*/
+
+inline static bool
+compare_and_swap(volatile obj_addr_t *addr,
+	 				      obj_addr_t old,
+					      obj_addr_t new_val) 
+{
+  return __sync_bool_compare_and_swap (addr, old, new_val);
+}
+
+// The fact that *addr is volatile should cause the compiler to
+// automatically generate an st8.rel.
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__("" : : : "memory");
+  *(addr) = new_val;
+}
+
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+	 				             obj_addr_t old,
+						     obj_addr_t new_val) 
+{
+  register unsigned long ar_ccv __asm__("ar.ccv") = old;
+  unsigned long out;
+  __asm__ __volatile__("cmpxchg8.rel %0=%1,%2,%4"
+	      : "=r"(out), "=m"(*addr)
+	      : "r"(new_val), "m"(*addr), "d"(ar_ccv) : "memory");
+  return (out == old);
+}
+
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/mips/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/mips/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/mips/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/mips/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,109 @@
+// locks.h - Thread synchronization primitives. MIPS implementation.
+
+/* Copyright (C) 2003  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+/* Integer type big enough for object address.	*/
+typedef unsigned obj_addr_t __attribute__((__mode__(__pointer__)));
+
+
+// Atomically replace *addr by new_val if it was initially equal to old.
+// Return true if the comparison succeeded.
+// Assumed to have acquire semantics, i.e. later memory operations
+// cannot execute before the compare_and_swap finishes.
+inline static bool
+compare_and_swap(volatile obj_addr_t *addr,
+                 obj_addr_t old,
+                 obj_addr_t new_val) 
+{
+  long result;
+  __asm__ __volatile__(".set\tpush\n\t"
+                       ".set\tnoreorder\n\t"
+                       ".set\tnomacro\n\t"
+                       "1:\n\t"
+#if _MIPS_SIM == _ABIO32
+                       ".set\tmips2\n\t"
+#endif
+                       "ll\t%[result],0(%[addr])\n\t"
+                       "bne\t%[result],%[old],2f\n\t"
+                       "move\t%[result],$0\n\t"        // delay slot
+                       "move\t%[result],%[new_val]\n\t"
+                       "sc\t%[result],0(%[addr])\n\t"
+                       "beq\t%[result],$0,1b\n\t"
+                       "nop\n\t"                       // delay slot
+                       "2:\n\t"
+                       ".set\tpop"
+          : [result] "=&r" (result)
+          : [addr] "r" (addr), [new_val] "r" (new_val), [old] "r"(old)
+          : "memory");
+  return (bool) result;
+}
+
+// Set *addr to new_val with release semantics, i.e. making sure
+// that prior loads and stores complete before this
+// assignment.
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__(".set\tpush\n\t"
+#if _MIPS_SIM == _ABIO32
+                       ".set\tmips2\n\t"
+#endif
+                       "sync\n\t"
+                       ".set\tpop" : : : "memory");
+  *(addr) = new_val;
+}
+
+// Compare_and_swap with release semantics instead of acquire semantics.
+// On many architecture, the operation makes both guarantees, so the
+// implementation can be the same.
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+		  				     obj_addr_t old,
+						     obj_addr_t new_val)
+{
+  __asm__ __volatile__(".set\tpush\n\t"
+#if _MIPS_SIM == _ABIO32
+                       ".set\tmips2\n\t"
+#endif
+                       "sync\n\t"
+                       ".set\tpop" : : : "memory");
+  return compare_and_swap(addr, old, new_val);
+}
+
+// Ensure that subsequent instructions do not execute on stale
+// data that was loaded from memory before the barrier.
+// On X86, the hardware ensures that reads are properly ordered.
+inline static void
+read_barrier()
+{
+  __asm__ __volatile__(".set\tpush\n\t"
+#if _MIPS_SIM == _ABIO32
+                       ".set\tmips2\n\t"
+#endif
+                       "sync\n\t"
+                       ".set\tpop" : : : "memory");
+}
+
+// Ensure that prior stores to memory are completed with respect to other
+// processors.
+inline static void
+write_barrier()
+{
+  __asm__ __volatile__(".set\tpush\n\t"
+#if _MIPS_SIM == _ABIO32
+                       ".set\tmips2\n\t"
+#endif
+                       "sync\n\t"
+                       ".set\tpop" : : : "memory");
+}
+
+#endif   // __SYSDEP_LOCKS_H__

Added: llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor-pa32-hpux.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor-pa32-hpux.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor-pa32-hpux.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor-pa32-hpux.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,91 @@
+/* descriptor-pa32-hpux.h - Given a function pointer, extract and return the
+   actual code address of the corresponding function.
+
+   This is done by checking if the plabel bit is set. If it's not set,
+   return the function pointer.  If it's set, mask it off and extract
+   the address from the function descriptor.  This address may point
+   to an export stub.  If so, extract the branch target from the stub
+   and return it.  Otherwise, the address from the function descriptor
+   is returned.
+
+   Copyright (C) 2006  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#define UNWRAP_FUNCTION_DESCRIPTOR pa_unwrap_function_descriptor
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Extract bit field from word using HP's numbering (MSB = 0).  */
+#define GET_FIELD(X, FROM, TO)					\
+  ((X) >> (31 - (TO)) & ((1 << ((TO) - (FROM) + 1)) - 1))
+
+static inline int
+sign_extend (int x, int len)
+{
+  int signbit = (1 << (len - 1));
+  int mask = (signbit << 1) - 1;
+  return ((x & mask) ^ signbit) - signbit;
+}
+
+/* Extract a 17-bit signed constant from branch instructions.  */
+static inline int
+extract_17 (unsigned word)
+{
+  return sign_extend (GET_FIELD (word, 19, 28)
+		      | GET_FIELD (word, 29, 29) << 10
+		      | GET_FIELD (word, 11, 15) << 11
+		      | (word & 0x1) << 16, 17);
+}
+
+/* Extract a 22-bit signed constant from branch instructions.  */
+static inline int
+extract_22 (unsigned word)
+{
+  return sign_extend (GET_FIELD (word, 19, 28)
+		      | GET_FIELD (word, 29, 29) << 10
+		      | GET_FIELD (word, 11, 15) << 11
+		      | GET_FIELD (word, 6, 10) << 16
+		      | (word & 0x1) << 21, 22);
+}
+
+static void *
+pa_unwrap_function_descriptor (void *addr)
+{
+  unsigned int *tmp_addr;
+
+  /* Check if plabel bit is set in function pointer.  */
+  if (!((unsigned int) addr & 2))
+    return addr;
+
+  tmp_addr = *(unsigned int **) ((unsigned int) addr & ~3);
+
+  /* If TMP_ADDR points to an export stub, adjust it so that it points
+     to the branch target of the stub.  */
+  if ((*tmp_addr & 0xffe0e002) == 0xe8400000		/* bl x,r2 */
+      && *(tmp_addr + 1) == 0x08000240			/* nop */
+      && *(tmp_addr + 2) == 0x4bc23fd1			/* ldw -18(sp),rp */
+      && *(tmp_addr + 3) == 0x004010a1			/* ldsid (rp),r1 */
+      && *(tmp_addr + 4) == 0x00011820			/* mtsp r1,sr0 */
+      && *(tmp_addr + 5) == 0xe0400002)			/* be,n 0(sr0,rp) */
+    /* Extract target address from PA 1.x 17-bit branch.  */
+    tmp_addr += extract_17 (*tmp_addr) + 2;
+  else if ((*tmp_addr & 0xfc00e002) == 0xe800a000	/* b,l x,r2 */
+	   && *(tmp_addr + 1) == 0x08000240		/* nop */
+	   && *(tmp_addr + 2) == 0x4bc23fd1		/* ldw -18(sp),rp */
+	   && *(tmp_addr + 3) == 0xe840d002)		/* bve,n (rp) */
+    /* Extract target address from PA 2.0 22-bit branch.  */
+    tmp_addr += extract_22 (*tmp_addr) + 2;
+
+  return (void *) tmp_addr;
+}
+
+#ifdef __cplusplus
+}
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor-pa64-hpux.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor-pa64-hpux.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor-pa64-hpux.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor-pa64-hpux.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,6 @@
+// Given a function pointer, return the code address.
+// If the plabel bit is set, mask it off and return the code from the
+// first word of the function descriptor.  Otherwise, the function
+// pointer is the code address.
+
+#define UNWRAP_FUNCTION_DESCRIPTOR(X) *(void **)((unsigned long) (X) + 16)

Added: llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/pa/descriptor.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,7 @@
+// Given a function pointer, return the code address.
+// If the plabel bit is set, mask it off and return the code from the
+// first word of the function descriptor.  Otherwise, the function
+// pointer is the code address.
+
+#define UNWRAP_FUNCTION_DESCRIPTOR(X) \
+  (((unsigned int)(X)) & 2 ? *(void **)(((unsigned int)(X)) & ~3) : (X))

Added: llvm-gcc-4.2/trunk/libjava/sysdep/pa/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/pa/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/pa/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/pa/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,110 @@
+// locks.h - Thread synchronization primitives. PA-RISC implementation.
+
+/* Copyright (C) 2002, 2005  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+// Integer type big enough for object address.
+typedef size_t obj_addr_t;
+
+template<int _Inst>
+  struct _pa_jv_cas_lock
+  {
+    static volatile int _S_pa_jv_cas_lock;
+  };
+
+template<int _Inst>
+volatile int
+_pa_jv_cas_lock<_Inst>::_S_pa_jv_cas_lock __attribute__ ((aligned (16))) = 1;
+
+// Because of the lack of weak support when using the hpux som
+// linker, we explicitly instantiate the atomicity lock.
+template volatile int _pa_jv_cas_lock<0>::_S_pa_jv_cas_lock;
+
+// Atomically replace *addr by new_val if it was initially equal to old_val.
+// Return true if the comparison is successful.
+// Assumed to have acquire semantics, i.e. later memory operations
+// cannot execute before the compare_and_swap finishes.
+// The following implementation is atomic but it can deadlock
+// (e.g., if a thread dies holding the lock).
+inline static bool
+__attribute__ ((__unused__))
+compare_and_swap(volatile obj_addr_t *addr,
+	 	 obj_addr_t old_val,
+		 obj_addr_t new_val) 
+{
+  bool result;
+  int tmp;
+  volatile int& lock = _pa_jv_cas_lock<0>::_S_pa_jv_cas_lock;
+
+  __asm__ __volatile__ ("ldcw 0(%1),%0\n\t"
+			"cmpib,<>,n 0,%0,.+20\n\t"
+			"ldw 0(%1),%0\n\t"
+			"cmpib,= 0,%0,.-4\n\t"
+			"nop\n\t"
+			"b,n .-20"
+			: "=&r" (tmp)
+			: "r" (&lock)
+			: "memory");
+
+  if (*addr != old_val)
+    result = false;
+  else
+    {
+      *addr = new_val;
+      result = true;
+    }
+
+  /* Reset lock with PA 2.0 "ordered" store.  */
+  __asm__ __volatile__ ("stw,ma %1,0(%0)"
+			: : "r" (&lock), "r" (tmp) : "memory");
+
+  return result;
+}
+
+// Set *addr to new_val with release semantics, i.e. making sure
+// that prior loads and stores complete before this
+// assignment.
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__(" " : : : "memory");
+  *(addr) = new_val;
+}
+
+// Compare_and_swap with release semantics instead of acquire semantics.
+// On many architecture, the operation makes both guarantees, so the
+// implementation can be the same.
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+	 				             obj_addr_t old,
+						     obj_addr_t new_val) 
+{
+  return compare_and_swap(addr, old, new_val);
+}
+
+// Ensure that subsequent instructions do not execute on stale
+// data that was loaded from memory before the barrier.
+inline static void
+read_barrier()
+{
+  __asm__ __volatile__(" " : : : "memory");
+}
+
+// Ensure that prior stores to memory are completed with respect to other
+// processors.
+inline static void
+write_barrier()
+{
+  __asm__ __volatile__(" " : : : "memory");
+}
+
+#endif
+

Added: llvm-gcc-4.2/trunk/libjava/sysdep/powerpc/descriptor.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/powerpc/descriptor.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/powerpc/descriptor.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/powerpc/descriptor.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,9 @@
+// Given a function pointer, return the code address.
+
+#ifdef _CALL_AIX
+// The function descriptor is actually multiple words,
+// but we don't care about anything except the first.
+# define UNWRAP_FUNCTION_DESCRIPTOR(X)  (*(void **)(X))
+#else
+# define UNWRAP_FUNCTION_DESCRIPTOR(X)  (X)
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/powerpc/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/powerpc/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/powerpc/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/powerpc/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,99 @@
+// locks.h - Thread synchronization primitives. PowerPC implementation.
+
+/* Copyright (C) 2002  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+#ifdef __LP64__
+#define _LARX "ldarx "
+#define _STCX "stdcx. "
+#else
+#define _LARX "lwarx "
+#ifdef __PPC405__
+#define _STCX "sync; stwcx. "
+#else
+#define _STCX "stwcx. "
+#endif
+#endif
+
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
+				/* address.				*/
+
+inline static bool
+compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old,
+		  obj_addr_t new_val) 
+{
+  obj_addr_t ret;
+
+  __asm__ __volatile__ (
+	   "0:    " _LARX "%0,0,%1 \n"
+	   "      xor. %0,%3,%0\n"
+	   "      bne 1f\n"
+	   "      " _STCX "%2,0,%1\n"
+	   "      bne- 0b\n"
+	   "1:   \n"
+	: "=&r" (ret)
+	: "r" (addr), "r" (new_val), "r" (old)
+	: "cr0", "memory");
+
+  /* This version of __compare_and_swap is to be used when acquiring
+     a lock, so we don't need to worry about whether other memory
+     operations have completed, but we do need to be sure that any loads
+     after this point really occur after we have acquired the lock.  */
+  __asm__ __volatile__ ("isync" : : : "memory");
+  return ret == 0;
+}
+
+inline static void
+release_set (volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__ ("sync" : : : "memory");
+  *addr = new_val;
+}
+
+inline static bool
+compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old,
+			  obj_addr_t new_val)
+{
+  obj_addr_t ret;
+
+  __asm__ __volatile__ ("sync" : : : "memory");
+
+  __asm__ __volatile__ (
+	   "0:    " _LARX "%0,0,%1 \n"
+	   "      xor. %0,%3,%0\n"
+	   "      bne 1f\n"
+	   "      " _STCX "%2,0,%1\n"
+	   "      bne- 0b\n"
+	   "1:   \n"
+	: "=&r" (ret)
+	: "r" (addr), "r" (new_val), "r" (old)
+	: "cr0", "memory");
+
+  return ret == 0;
+}
+
+// Ensure that subsequent instructions do not execute on stale
+// data that was loaded from memory before the barrier.
+inline static void
+read_barrier ()
+{
+  __asm__ __volatile__ ("isync" : : : "memory");
+}
+
+// Ensure that prior stores to memory are completed with respect to other
+// processors.
+inline static void
+write_barrier ()
+{
+  __asm__ __volatile__ ("sync" : : : "memory");
+}
+
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/s390/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/s390/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/s390/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/s390/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,77 @@
+// locks.h - Thread synchronization primitives. S/390 implementation.
+
+/* Copyright (C) 2002  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
+				/* address.				*/
+
+// Atomically replace *addr by new_val if it was initially equal to old.
+// Return true if the comparison succeeded.
+// Assumed to have acquire semantics, i.e. later memory operations
+// cannot execute before the compare_and_swap finishes.
+inline static bool
+compare_and_swap(volatile obj_addr_t *addr,
+		 obj_addr_t old, obj_addr_t new_val) 
+{
+  int result;
+
+  __asm__ __volatile__ (
+#ifndef __s390x__
+    "       cs  %1,%2,0(%3)\n"
+#else
+    "       csg %1,%2,0(%3)\n"
+#endif
+    "       ipm %0\n"
+    "       srl %0,28\n"
+    : "=&d" (result), "+d" (old)
+    : "d" (new_val), "a" (addr)
+    : "cc", "memory");
+
+  return result == 0;
+}
+
+// Set *addr to new_val with release semantics, i.e. making sure
+// that prior loads and stores complete before this
+// assignment.
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__("bcr 15,0" : : : "memory");
+  *(addr) = new_val;
+}
+
+// Compare_and_swap with release semantics instead of acquire semantics.
+// On many architecture, the operation makes both guarantees, so the
+// implementation can be the same.
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+		  	 obj_addr_t old, obj_addr_t new_val)
+{
+  return compare_and_swap(addr, old, new_val);
+}
+
+// Ensure that subsequent instructions do not execute on stale
+// data that was loaded from memory before the barrier.
+inline static void
+read_barrier()
+{
+  __asm__ __volatile__("bcr 15,0" : : : "memory");
+}
+
+// Ensure that prior stores to memory are completed with respect to other
+// processors.
+inline static void
+write_barrier()
+{
+  __asm__ __volatile__("bcr 15,0" : : : "memory");
+}
+#endif

Added: llvm-gcc-4.2/trunk/libjava/sysdep/sh/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/sh/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/sh/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/sh/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,72 @@
+// locks.h - Thread synchronization primitives. SuperH implementation.
+
+/* Copyright (C) 2002  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
+				/* address.				*/
+
+static unsigned char __cas_lock = 0;
+
+inline static void
+__cas_start_atomic (void)
+{
+  unsigned int val;
+
+  do
+    __asm__ __volatile__ ("tas.b @%1; movt %0"
+			  : "=r" (val)
+			  : "r" (&__cas_lock)
+			  : "memory");
+  while (val == 0);
+}
+
+inline static void
+__cas_end_atomic (void)
+{
+  __asm__ __volatile__ (" " : : : "memory");
+  __cas_lock = 0;
+}
+
+inline static bool
+compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old,
+		  obj_addr_t new_val)
+{
+  bool ret;
+
+  __cas_start_atomic ();
+  if (*addr != old)
+    ret = false;
+  else
+    {
+      *addr = new_val;
+      ret = true;
+    }
+  __cas_end_atomic ();
+
+  return ret;
+}
+
+inline static void
+release_set (volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__ (" " : : : "memory");
+  *(addr) = new_val;
+}
+
+inline static bool
+compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old,
+			  obj_addr_t new_val)
+{
+  return compare_and_swap (addr, old, new_val);
+}
+
+#endif /* ! __SYSDEP_LOCKS_H__ */

Added: llvm-gcc-4.2/trunk/libjava/sysdep/sparc/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/sparc/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/sparc/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/sparc/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,120 @@
+// locks.h - Thread synchronization primitives. Sparc implementation.
+
+/* Copyright (C) 2002  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
+				/* address.				*/
+
+#ifdef __arch64__
+/* Sparc64 implementation, use cas instruction.  */
+inline static bool
+compare_and_swap(volatile obj_addr_t *addr,
+		 obj_addr_t old,
+		 obj_addr_t new_val)
+{
+  __asm__ __volatile__("casx [%2], %3, %0\n\t"
+		       "membar #StoreLoad | #StoreStore"
+		       : "=&r" (new_val)
+		       : "0" (new_val), "r" (addr), "r" (old)
+		       : "memory");
+
+  return (new_val == old) ? true : false;
+}
+
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__("membar #StoreStore | #LoadStore" : : : "memory");
+  *(addr) = new_val;
+}
+
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+		  				     obj_addr_t old,
+						     obj_addr_t new_val)
+{
+  return compare_and_swap(addr, old, new_val);
+}
+#else
+/* Sparc32 implementation, use a spinlock.  */
+static unsigned char __cas_lock = 0;
+
+inline static void
+__cas_start_atomic(void)
+{
+  unsigned int tmp;
+  __asm__ __volatile__(
+"1:	ldstub	[%1], %0\n"
+"	orcc	%0, 0x0, %%g0\n"
+"	be	3f\n"
+"	 nop\n"
+"2:	ldub	[%1], %0\n"
+"	orcc	%0, 0x0, %%g0\n"
+"	bne	2b\n"
+"	 nop\n"
+"3:"	: "=&r" (tmp)
+	: "r" (&__cas_lock)
+	: "memory", "cc");
+}
+
+inline static void
+__cas_end_atomic(void)
+{
+  __asm__ __volatile__(
+  "stb %%g0, [%0]"
+  : /* no outputs */
+  : "r" (&__cas_lock)
+  : "memory");
+}
+
+inline static bool
+compare_and_swap(volatile obj_addr_t *addr,
+		 obj_addr_t old,
+		 obj_addr_t new_val)
+{
+  bool ret;
+
+  __cas_start_atomic ();
+  if (*addr != old)
+    {
+      ret = false;
+    }
+  else
+    {
+      *addr = new_val;
+      ret = true;
+    }
+  __cas_end_atomic ();
+
+  return ret;
+}
+
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  /* Technically stbar would be needed here but no sparc32
+     system actually requires it.  Also the stbar would mean
+     this code would not work on sparcv7 chips.  */
+  __asm__ __volatile__("" : : : "memory");
+  *(addr) = new_val;
+}
+
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+		  				     obj_addr_t old,
+						     obj_addr_t new_val)
+{
+  return compare_and_swap(addr, old, new_val);
+}
+#endif /* __arch64__ */
+
+#endif /* ! __SYSDEP_LOCKS_H__ */

Added: llvm-gcc-4.2/trunk/libjava/sysdep/x86-64/locks.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libjava/sysdep/x86-64/locks.h?rev=43913&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/libjava/sysdep/x86-64/locks.h (added)
+++ llvm-gcc-4.2/trunk/libjava/sysdep/x86-64/locks.h Thu Nov  8 16:56:19 2007
@@ -0,0 +1,83 @@
+/* locks.h - Thread synchronization primitives. X86/x86-64 implementation.
+
+   Copyright (C) 2002  Free Software Foundation
+
+   Contributed by Bo Thorsen <bo at suse.de>.
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+#ifndef __SYSDEP_LOCKS_H__
+#define __SYSDEP_LOCKS_H__
+
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
+				/* address.				*/
+
+// Atomically replace *addr by new_val if it was initially equal to old.
+// Return true if the comparison succeeded.
+// Assumed to have acquire semantics, i.e. later memory operations
+// cannot execute before the compare_and_swap finishes.
+inline static bool
+compare_and_swap(volatile obj_addr_t *addr,
+		 obj_addr_t old,
+		 obj_addr_t new_val)
+{
+  char result;
+#ifdef __x86_64__
+  __asm__ __volatile__("lock; cmpxchgq %2, %0; setz %1"
+	      : "=m"(*(addr)), "=q"(result)
+	      : "r" (new_val), "a"(old), "m"(*addr)
+	      : "memory");
+#else
+  __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1"
+		       : "=m"(*addr), "=q"(result)
+		       : "r" (new_val), "a"(old), "m"(*addr)
+		       : "memory");
+#endif
+  return (bool) result;
+}
+
+// Set *addr to new_val with release semantics, i.e. making sure
+// that prior loads and stores complete before this
+// assignment.
+// On X86/x86-64, the hardware shouldn't reorder reads and writes,
+// so we just have to convince gcc not to do it either.
+inline static void
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
+{
+  __asm__ __volatile__(" " : : : "memory");
+  *(addr) = new_val;
+}
+
+// Compare_and_swap with release semantics instead of acquire semantics.
+// On many architecture, the operation makes both guarantees, so the
+// implementation can be the same.
+inline static bool
+compare_and_swap_release(volatile obj_addr_t *addr,
+			 obj_addr_t old,
+			 obj_addr_t new_val)
+{
+  return compare_and_swap(addr, old, new_val);
+}
+
+// Ensure that subsequent instructions do not execute on stale
+// data that was loaded from memory before the barrier.
+// On X86/x86-64, the hardware ensures that reads are properly ordered.
+inline static void
+read_barrier()
+{
+}
+
+// Ensure that prior stores to memory are completed with respect to other
+// processors.
+inline static void
+write_barrier()
+{
+  /* x86-64/X86 does not reorder writes. We just need to ensure that
+     gcc also doesn't.  */
+  __asm__ __volatile__(" " : : : "memory");
+}
+#endif





More information about the llvm-commits mailing list