[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 (¤t->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 (¤t->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 (¤t->wait_cond, ¤t->wait_mutex);
+ else
+ r = pthread_cond_timedwait (¤t->wait_cond, ¤t->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 (¤t->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, ¶m);
+ }
+#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, ¶m);
+ 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