diff options
author | krab <krab@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-18 14:16:42 +0000 |
---|---|---|
committer | krab <krab@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-18 14:16:42 +0000 |
commit | 009022b277bdd8bc12a66677811adee7135ec042 (patch) | |
tree | 3bcaf8f2877d654d67d3e2cc982a85a71299ca35 | |
parent | 71a3455af48e575974a233c4174aeb50c835a469 (diff) | |
download | gcc-009022b277bdd8bc12a66677811adee7135ec042.tar.gz |
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Renamed
from _Jv_InternClassStrings.
* prims.cc (_Jv_RunMain): New function.
(JvRunMain): Remove gij-support.
* gij.cc (main): Use _Jv_RunMain.
* java/util/zip/ZipFile.java: Call readDirectory in constructor.
* interpret.cc (PUSHA, PUSHI, PUSHF, PUSHL, PUSHD): Don't store
argument in temp variable.
(continue1): For all op_x2y insns, use temp variable for
intermediate value. Also remove some comments.
* java/lang/natClass.cc (newInstance): Call _Jv_InitClass.
(forName): Don't call _Jv_InitClass.
* java/lang/Class.java (getResource,getResourceAsStream): Implement.
* java/util/zip/ZipEntry.java (ZipEntry(ZipEntry)): New construcor.
* java/util/jar/JarInputStream.java: New file.
* java/util/jar/JarEntry.java: New file.
* java/util/jar/JarFile.java: New file.
* java/net/URLClassLoader.java: New file.
* java/net/JarURLConnection.java: New file.
* gnu/gcj/protocol/jar/Handler.java: New file.
* gnu/gcj/protocol/jar/Connection.java: New file.
* java/security/SecureClassLoader.java: New file.
* java/lang/ClassLoader.java (parent): New variable.
(ClassLoader (ClassLoader)): new constructor.
(findClass): New method.
(loadClass): Add default 1.2 implementation.
(getSystemResourceAsBytes, getResourceAsBytes): Removed.
(readfully): Removed.
* gnu/gcj/runtime/VMClassLoader.java: Moved from java/lang.
(findSystemClass): New method.
(VMClassLoader): Constructor rewritten.
(init): New method.
All other methods removed.
* java/lang/natClassLoader.cc: Change use of java::lang::VMClassLoader
to gnu::gcj::runtime::VMClassLoader.
(_Jv_InternClassStrings): Use _Jv_ResolvePoolEntry. Also handle
class entries.
(VMClassLoader::findSystemClass): renamed from findBootClass.
* Makefile.am: Add new files.
(FirstThread.h, ThreadGroup.h): Add _Jv_Main friend.
* Makefile.in: Rebuilt.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28748 138bc75d-0d04-0410-961f-82ee72b054a4
26 files changed, 2193 insertions, 515 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index d4031dc3a81..b4aa1fd8f59 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,67 @@ +1999-08-18 Kresten Krab Thorup <krab@gnu.org> + + * java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Renamed + from _Jv_InternClassStrings. + + * prims.cc (_Jv_RunMain): New function. + (JvRunMain): Remove gij-support. + + * gij.cc (main): Use _Jv_RunMain. + + * java/util/zip/ZipFile.java: Call readDirectory in constructor. + + * interpret.cc (PUSHA, PUSHI, PUSHF, PUSHL, PUSHD): Don't store + argument in temp variable. + (continue1): For all op_x2y insns, use temp variable for + intermediate value. Also remove some comments. + + * java/lang/natClass.cc (newInstance): Call _Jv_InitClass. + (forName): Don't call _Jv_InitClass. + + * java/lang/Class.java (getResource,getResourceAsStream): Implement. + + * java/util/zip/ZipEntry.java (ZipEntry(ZipEntry)): New construcor. + + * java/util/jar/JarInputStream.java: New file. + + * java/util/jar/JarEntry.java: New file. + + * java/util/jar/JarFile.java: New file. + + * java/net/URLClassLoader.java: New file. + + * java/net/JarURLConnection.java: New file. + + * gnu/gcj/protocol/jar/Handler.java: New file. + + * gnu/gcj/protocol/jar/Connection.java: New file. + + * java/security/SecureClassLoader.java: New file. + + * java/lang/ClassLoader.java (parent): New variable. + (ClassLoader (ClassLoader)): new constructor. + (findClass): New method. + (loadClass): Add default 1.2 implementation. + (getSystemResourceAsBytes, getResourceAsBytes): Removed. + (readfully): Removed. + + * gnu/gcj/runtime/VMClassLoader.java: Moved from java/lang. + (findSystemClass): New method. + (VMClassLoader): Constructor rewritten. + (init): New method. + All other methods removed. + + * java/lang/natClassLoader.cc: Change use of java::lang::VMClassLoader + to gnu::gcj::runtime::VMClassLoader. + (_Jv_InternClassStrings): Use _Jv_ResolvePoolEntry. Also handle + class entries. + (VMClassLoader::findSystemClass): renamed from findBootClass. + + * Makefile.am: Add new files. + (FirstThread.h, ThreadGroup.h): Add _Jv_Main friend. + + * Makefile.in: Rebuilt. + 1999-08-17 Tom Tromey <tromey@cygnus.com> * java/lang/natThread.cc (sleep): Turn 0 millis and 0 nanos into 1 diff --git a/libjava/Makefile.am b/libjava/Makefile.am index ce6c32ee8eb..a394fb9a95d 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -201,16 +201,18 @@ nat_headers = $(ordinary_java_source_files:.java=.h) \ $(nat_headers): libgcj.zip ## Our internal main program needs to be able to create a FirstThread. -FTFRIEND = void JvRunMain (jclass klass, int argc, const char **argv) java/lang/FirstThread.h: java/lang/FirstThread.class libgcj.zip - $(GCJH) -classpath $(top_builddir) -friend '$(FTFRIEND);' \ + $(GCJH) -classpath $(top_builddir) \ + -friend 'void JvRunMain (jclass, int, const char **);' \ + -friend 'void _Jv_RunMain (const char*, int, const char **);' \ $(basename $<) ## ThreadGroup has a special constructor that is used when creating ## the first ThreadGroup. We need to expose this to the main program. -TGFRIEND = void JvRunMain (jclass klass, int argc, const char **argv) java/lang/ThreadGroup.h: java/lang/ThreadGroup.class libgcj.zip - $(GCJH) -classpath $(top_builddir) -friend '$(TGFRIEND);' \ + $(GCJH) -classpath $(top_builddir) \ + -friend 'void JvRunMain (jclass, int, const char **);' \ + -friend 'void _Jv_RunMain (const char*, int, const char **);' \ $(basename $<) java/lang/String.h: java/lang/String.class libgcj.zip @@ -236,7 +238,7 @@ java/lang/reflect/Method.h: java/lang/reflect/Method.class libgcj.zip -friend 'java::lang::Class;' \ $(basename $<) -java/lang/VMClassLoader.h: java/lang/VMClassLoader.class libgcj.zip +gnu/gcj/runtime/VMClassLoader.h: gnu/gcj/runtime/VMClassLoader.class libgcj.zip $(GCJH) -classpath $(top_builddir) \ -friend 'java::lang::ClassLoader;' \ $(basename $<) @@ -481,6 +483,7 @@ built_java_source_files = java/lang/ConcreteProcess.java ## header, please list it in special_java_source_files. ordinary_java_source_files = $(convert_source_files) \ gnu/gcj/runtime/MethodInvocation.java \ +gnu/gcj/runtime/VMClassLoader.java \ gnu/gcj/util/path/SearchPath.java \ gnu/gcj/util/path/PathEntry.java \ gnu/gcj/util/path/DirectoryPathEntry.java \ @@ -498,6 +501,8 @@ gnu/gcj/protocol/file/Connection.java \ gnu/gcj/protocol/file/Handler.java \ gnu/gcj/protocol/http/Connection.java \ gnu/gcj/protocol/http/Handler.java \ +gnu/gcj/protocol/jar/Handler.java \ +gnu/gcj/protocol/jar/Connection.java \ gnu/gcj/RawData.java \ gnu/gcj/util/EnumerationChain.java \ java/io/BufferedInputStream.java \ @@ -565,7 +570,6 @@ java/lang/ClassCastException.java \ java/lang/ClassCircularityError.java \ java/lang/ClassFormatError.java \ java/lang/ClassLoader.java \ -java/lang/VMClassLoader.java \ java/lang/ClassNotFoundException.java \ java/lang/CloneNotSupportedException.java \ java/lang/Cloneable.java \ @@ -643,6 +647,7 @@ java/net/DatagramSocketImpl.java \ java/net/FileNameMap.java \ java/net/HttpURLConnection.java \ java/net/InetAddress.java \ +java/net/JarURLConnection.java \ java/net/MalformedURLException.java \ java/net/MulticastSocket.java \ java/net/NoRouteToHostException.java \ @@ -656,6 +661,7 @@ java/net/SocketImpl.java \ java/net/SocketImplFactory.java \ java/net/SocketOptions.java \ java/net/URL.java \ +java/net/URLClassLoader.java \ java/net/URLConnection.java \ java/net/URLDecoder.java \ java/net/URLEncoder.java \ @@ -665,6 +671,7 @@ java/net/UnknownHostException.java \ java/net/UnknownServiceException.java \ java/security/MessageDigest.java \ java/security/NoSuchAlgorithmException.java \ +java/security/SecureClassLoader.java \ java/text/BreakIterator.java \ java/text/CharacterIterator.java \ java/text/ChoiceFormat.java \ @@ -711,6 +718,9 @@ java/util/StringTokenizer.java \ java/util/TimeZone.java \ java/util/TooManyListenersException.java \ java/util/Vector.java \ +java/util/jar/JarFile.java \ +java/util/jar/JarInputStream.java \ +java/util/jar/JarEntry.java \ java/util/zip/Adler32.java \ java/util/zip/CRC32.java \ java/util/zip/CheckedInputStream.java \ diff --git a/libjava/Makefile.in b/libjava/Makefile.in index d0c1ab25ae0..5c0889da92f 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4a from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -10,7 +10,6 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. - SHELL = @SHELL@ srcdir = @srcdir@ @@ -46,9 +45,10 @@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_FLAG = transform = @program_transform_name@ NORMAL_INSTALL = : @@ -71,7 +71,9 @@ COMPPATH = @COMPPATH@ CPP = @CPP@ CXX = @CXX@ CXXCPP = @CXXCPP@ +DIVIDESPEC = @DIVIDESPEC@ DLLTOOL = @DLLTOOL@ +EH_COMMON_INCLUDE = @EH_COMMON_INCLUDE@ EXEEXT = @EXEEXT@ GCDEPS = @GCDEPS@ GCINCS = @GCINCS@ @@ -105,41 +107,28 @@ ZLIBSPEC = @ZLIBSPEC@ here = @here@ libgcj_basedir = @libgcj_basedir@ + AUTOMAKE_OPTIONS = foreign no-installinfo -@TESTSUBDIR_TRUE@SUBDIRS = \ -@TESTSUBDIR_TRUE@testsuite -@USE_LIBDIR_TRUE@toolexeclibdir = \ -@USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR) -@USE_LIBDIR_FALSE@toolexeclibdir = \ -@USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR) -@USE_LIBDIR_FALSE@toolexecdir = \ -@USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias) +@TESTSUBDIR_TRUE@SUBDIRS = @TESTSUBDIR_TRUE@testsuite +@USE_LIBDIR_TRUE@toolexeclibdir = @USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR) +@USE_LIBDIR_FALSE@toolexeclibdir = @USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR) +@USE_LIBDIR_FALSE@toolexecdir = @USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias) toolexeclib_LTLIBRARIES = libgcj.la toolexeclib_DATA = libgcj.spec data_DATA = libgcj.zip -@NATIVE_TRUE@bin_PROGRAMS = \ -@NATIVE_TRUE@jv-convert gij -@CANADIAN_TRUE@@NULL_TARGET_TRUE@GCJ = \ -@CANADIAN_TRUE@@NULL_TARGET_TRUE@gcj -@CANADIAN_TRUE@@NULL_TARGET_FALSE@GCJ = \ -@CANADIAN_TRUE@@NULL_TARGET_FALSE@$(target_alias)-gcj -@CANADIAN_FALSE@GCJ = \ -@CANADIAN_FALSE@$(expanded)/gcj$(EXEEXT) -B$(expanded)/ -@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = \ -@CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT) -@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = \ -@CANADIAN_TRUE@@NULL_TARGET_FALSE@zip -@CANADIAN_FALSE@ZIP = \ -@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT) -@CANADIAN_TRUE@GCJH = \ -@CANADIAN_TRUE@gcjh -@CANADIAN_FALSE@GCJH = \ -@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT) -@CANADIAN_FALSE@expanded = \ -@CANADIAN_FALSE@`cd $(MULTIBUILDTOP)../$(COMPPATH)/gcc && pwd` +@NATIVE_TRUE@bin_PROGRAMS = @NATIVE_TRUE@jv-convert gij +@CANADIAN_TRUE@@NULL_TARGET_TRUE@GCJ = @CANADIAN_TRUE@@NULL_TARGET_TRUE@gcj +@CANADIAN_TRUE@@NULL_TARGET_FALSE@GCJ = @CANADIAN_TRUE@@NULL_TARGET_FALSE@$(target_alias)-gcj +@CANADIAN_FALSE@GCJ = @CANADIAN_FALSE@$(expanded)/gcj$(EXEEXT) -B$(expanded)/ +@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT) +@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_FALSE@zip +@CANADIAN_FALSE@ZIP = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT) +@CANADIAN_TRUE@GCJH = @CANADIAN_TRUE@gcjh +@CANADIAN_FALSE@GCJH = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT) +@CANADIAN_FALSE@expanded = @CANADIAN_FALSE@`cd $(MULTIBUILDTOP)../$(COMPPATH)/gcc && pwd` GCJCOMPILE = CLASSPATH=$(here) $(LIBTOOL) --mode=compile $(GCJ) -fassume-compiled $(JC1FLAGS) -c @@ -149,10 +138,8 @@ EH_COMMON_INCLUDE = @EH_COMMON_INCLUDE@ WARNINGS = -W -Wall AM_CXXFLAGS = -fno-rtti -fvtable-thunks @LIBGCJ_CXXFLAGS@ $(WARNINGS) -@USING_GCC_TRUE@AM_CFLAGS = \ -@USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS) -@USING_GCC_FALSE@AM_CFLAGS = \ -@USING_GCC_FALSE@@LIBGCJ_CFLAGS@ +@USING_GCC_TRUE@AM_CFLAGS = @USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS) +@USING_GCC_FALSE@AM_CFLAGS = @USING_GCC_FALSE@@LIBGCJ_CFLAGS@ JCFLAGS = -g JC1FLAGS = -g @LIBGCJ_JAVAFLAGS@ @@ -198,14 +185,9 @@ nat_headers = $(ordinary_java_source_files:.java=.h) \ $(built_java_source_files:.java=.h) -FTFRIEND = void JvRunMain (jclass klass, int argc, const char **argv) - -TGFRIEND = void JvRunMain (jclass klass, int argc, const char **argv) - NM = nm -@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = \ -@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS +@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = @NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS CONVERT_DIR = gnu/gcj/convert @@ -315,6 +297,7 @@ built_java_source_files = java/lang/ConcreteProcess.java ordinary_java_source_files = $(convert_source_files) \ gnu/gcj/runtime/MethodInvocation.java \ +gnu/gcj/runtime/VMClassLoader.java \ gnu/gcj/util/path/SearchPath.java \ gnu/gcj/util/path/PathEntry.java \ gnu/gcj/util/path/DirectoryPathEntry.java \ @@ -332,6 +315,8 @@ gnu/gcj/protocol/file/Connection.java \ gnu/gcj/protocol/file/Handler.java \ gnu/gcj/protocol/http/Connection.java \ gnu/gcj/protocol/http/Handler.java \ +gnu/gcj/protocol/jar/Handler.java \ +gnu/gcj/protocol/jar/Connection.java \ gnu/gcj/RawData.java \ gnu/gcj/util/EnumerationChain.java \ java/io/BufferedInputStream.java \ @@ -399,7 +384,6 @@ java/lang/ClassCastException.java \ java/lang/ClassCircularityError.java \ java/lang/ClassFormatError.java \ java/lang/ClassLoader.java \ -java/lang/VMClassLoader.java \ java/lang/ClassNotFoundException.java \ java/lang/CloneNotSupportedException.java \ java/lang/Cloneable.java \ @@ -477,6 +461,7 @@ java/net/DatagramSocketImpl.java \ java/net/FileNameMap.java \ java/net/HttpURLConnection.java \ java/net/InetAddress.java \ +java/net/JarURLConnection.java \ java/net/MalformedURLException.java \ java/net/MulticastSocket.java \ java/net/NoRouteToHostException.java \ @@ -490,6 +475,7 @@ java/net/SocketImpl.java \ java/net/SocketImplFactory.java \ java/net/SocketOptions.java \ java/net/URL.java \ +java/net/URLClassLoader.java \ java/net/URLConnection.java \ java/net/URLDecoder.java \ java/net/URLEncoder.java \ @@ -499,6 +485,7 @@ java/net/UnknownHostException.java \ java/net/UnknownServiceException.java \ java/security/MessageDigest.java \ java/security/NoSuchAlgorithmException.java \ +java/security/SecureClassLoader.java \ java/text/BreakIterator.java \ java/text/CharacterIterator.java \ java/text/ChoiceFormat.java \ @@ -545,6 +532,9 @@ java/util/StringTokenizer.java \ java/util/TimeZone.java \ java/util/TooManyListenersException.java \ java/util/Vector.java \ +java/util/jar/JarFile.java \ +java/util/jar/JarInputStream.java \ +java/util/jar/JarEntry.java \ java/util/zip/Adler32.java \ java/util/zip/CRC32.java \ java/util/zip/CheckedInputStream.java \ @@ -673,6 +663,7 @@ MULTIDO = true MULTICLEAN = true cygnus_hack = +subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = ./include/config.h @@ -684,44 +675,54 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I./include CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ -libgcj_la_OBJECTS = prims.lo jni.lo exception.lo resolve.lo \ +am_libgcj_la_OBJECTS = prims.lo jni.lo exception.lo resolve.lo \ defineclass.lo interpret.lo +libgcj_la_OBJECTS = $(am_libgcj_la_OBJECTS) @NATIVE_TRUE@bin_PROGRAMS = jv-convert$(EXEEXT) gij$(EXEEXT) @NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = \ @NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) -jv_convert_OBJECTS = -gij_OBJECTS = -gen_from_JIS_OBJECTS = +gen_from_JIS_OBJECTS = $(am_gen_from_JIS_OBJECTS) gen_from_JIS_LDFLAGS = -CXXFLAGS = @CXXFLAGS@ +gij_OBJECTS = $(am_gij_OBJECTS) +jv_convert_OBJECTS = $(am_jv_convert_OBJECTS) +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CFLAGS = @CFLAGS@ CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXFLAGS = @CXXFLAGS@ CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ -CFLAGS = @CFLAGS@ -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +LTGCJCOMPILE = $(LIBTOOL) --mode=compile $(GCJ) $(DEFS) $(INCLUDES) $(AM_GCJFLAGS) $(GCJFLAGS) +GCJFLAGS = @GCJFLAGS@ +GCJLD = $(GCJ) +GCJLINK = $(LIBTOOL) --mode=link $(GCJLD) $(AM_GCJFLAGS) $(GCJFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) \ +$(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES) $(gij_SOURCES) \ +$(EXTRA_gij_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) DATA = $(data_DATA) $(toolexeclib_DATA) -DIST_COMMON = COPYING.LIB ChangeLog Makefile.am Makefile.in NEWS THANKS \ -acconfig.h acinclude.m4 aclocal.m4 configure configure.in \ -include/config.h.in include/stamp-h.in libgcj.spec.in +DIST_COMMON = $(data_DATA) $(toolexeclib_DATA) COPYING.LIB ChangeLog \ +Makefile.am Makefile.in NEWS THANKS acconfig.h acinclude.m4 aclocal.m4 \ +configure configure.in include/config.h.in include/stamp-h.in \ +libgcj.spec.in -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar GZIP_ENV = --best DIST_SUBDIRS = testsuite -DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ -.deps/$(srcdir)/$(CONVERT_DIR)/make-trie.P .deps/boehm.P \ -.deps/defineclass.P .deps/exception.P .deps/gij.P \ -.deps/gnu/gcj/RawData.P .deps/gnu/gcj/convert/BytesToUnicode.P \ -.deps/gnu/gcj/convert/Convert.P .deps/gnu/gcj/convert/Input_8859_1.P \ +DEP_FILES = .deps/boehm.P .deps/defineclass.P .deps/dtoa.P \ +.deps/e_acos.P .deps/e_asin.P .deps/e_atan2.P .deps/e_exp.P \ +.deps/e_fmod.P .deps/e_log.P .deps/e_pow.P .deps/e_rem_pio2.P \ +.deps/e_remainder.P .deps/e_scalb.P .deps/e_sqrt.P .deps/exception.P \ +.deps/gen-from-JIS.P .deps/gij.P .deps/gnu/gcj/RawData.P \ +.deps/gnu/gcj/convert/BytesToUnicode.P .deps/gnu/gcj/convert/Convert.P \ +.deps/gnu/gcj/convert/Input_8859_1.P \ .deps/gnu/gcj/convert/Input_EUCJIS.P \ .deps/gnu/gcj/convert/Input_JavaSrc.P \ .deps/gnu/gcj/convert/Input_SJIS.P .deps/gnu/gcj/convert/Input_UTF8.P \ @@ -734,7 +735,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/gnu/gcj/protocol/file/Handler.P \ .deps/gnu/gcj/protocol/http/Connection.P \ .deps/gnu/gcj/protocol/http/Handler.P \ +.deps/gnu/gcj/protocol/jar/Connection.P \ +.deps/gnu/gcj/protocol/jar/Handler.P \ .deps/gnu/gcj/runtime/MethodInvocation.P \ +.deps/gnu/gcj/runtime/VMClassLoader.P \ .deps/gnu/gcj/text/BaseBreakIterator.P \ .deps/gnu/gcj/text/CharacterBreakIterator.P \ .deps/gnu/gcj/text/LineBreakIterator.P \ @@ -826,37 +830,18 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/lang/Throwable.P .deps/java/lang/UnknownError.P \ .deps/java/lang/UnsatisfiedLinkError.P \ .deps/java/lang/UnsupportedOperationException.P \ -.deps/java/lang/VMClassLoader.P .deps/java/lang/VerifyError.P \ -.deps/java/lang/VirtualMachineError.P .deps/java/lang/Void.P \ -.deps/java/lang/dtoa.P .deps/java/lang/e_acos.P \ -.deps/java/lang/e_asin.P .deps/java/lang/e_atan2.P \ -.deps/java/lang/e_exp.P .deps/java/lang/e_fmod.P \ -.deps/java/lang/e_log.P .deps/java/lang/e_pow.P \ -.deps/java/lang/e_rem_pio2.P .deps/java/lang/e_remainder.P \ -.deps/java/lang/e_scalb.P .deps/java/lang/e_sqrt.P \ -.deps/java/lang/k_cos.P .deps/java/lang/k_rem_pio2.P \ -.deps/java/lang/k_sin.P .deps/java/lang/k_tan.P .deps/java/lang/mprec.P \ -.deps/java/lang/reflect/AccessibleObject.P \ +.deps/java/lang/VerifyError.P .deps/java/lang/VirtualMachineError.P \ +.deps/java/lang/Void.P .deps/java/lang/reflect/AccessibleObject.P \ .deps/java/lang/reflect/Array.P .deps/java/lang/reflect/Constructor.P \ .deps/java/lang/reflect/Field.P \ .deps/java/lang/reflect/InvocationTargetException.P \ .deps/java/lang/reflect/Member.P .deps/java/lang/reflect/Method.P \ -.deps/java/lang/reflect/Modifier.P .deps/java/lang/s_atan.P \ -.deps/java/lang/s_ceil.P .deps/java/lang/s_copysign.P \ -.deps/java/lang/s_cos.P .deps/java/lang/s_fabs.P \ -.deps/java/lang/s_floor.P .deps/java/lang/s_rint.P \ -.deps/java/lang/s_scalbn.P .deps/java/lang/s_sin.P \ -.deps/java/lang/s_tan.P .deps/java/lang/sf_rint.P \ -.deps/java/lang/strtod.P .deps/java/lang/w_acos.P \ -.deps/java/lang/w_asin.P .deps/java/lang/w_atan2.P \ -.deps/java/lang/w_exp.P .deps/java/lang/w_fmod.P \ -.deps/java/lang/w_log.P .deps/java/lang/w_pow.P \ -.deps/java/lang/w_remainder.P .deps/java/lang/w_sqrt.P \ -.deps/java/net/BindException.P .deps/java/net/ConnectException.P \ -.deps/java/net/ContentHandler.P .deps/java/net/ContentHandlerFactory.P \ -.deps/java/net/DatagramPacket.P .deps/java/net/DatagramSocket.P \ -.deps/java/net/DatagramSocketImpl.P .deps/java/net/FileNameMap.P \ -.deps/java/net/HttpURLConnection.P .deps/java/net/InetAddress.P \ +.deps/java/lang/reflect/Modifier.P .deps/java/net/BindException.P \ +.deps/java/net/ConnectException.P .deps/java/net/ContentHandler.P \ +.deps/java/net/ContentHandlerFactory.P .deps/java/net/DatagramPacket.P \ +.deps/java/net/DatagramSocket.P .deps/java/net/DatagramSocketImpl.P \ +.deps/java/net/FileNameMap.P .deps/java/net/HttpURLConnection.P \ +.deps/java/net/InetAddress.P .deps/java/net/JarURLConnection.P \ .deps/java/net/MalformedURLException.P .deps/java/net/MulticastSocket.P \ .deps/java/net/NoRouteToHostException.P \ .deps/java/net/PlainDatagramSocketImpl.P \ @@ -864,16 +849,16 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/net/ServerSocket.P .deps/java/net/Socket.P \ .deps/java/net/SocketException.P .deps/java/net/SocketImpl.P \ .deps/java/net/SocketImplFactory.P .deps/java/net/SocketOptions.P \ -.deps/java/net/URL.P .deps/java/net/URLConnection.P \ -.deps/java/net/URLDecoder.P .deps/java/net/URLEncoder.P \ -.deps/java/net/URLStreamHandler.P \ +.deps/java/net/URL.P .deps/java/net/URLClassLoader.P \ +.deps/java/net/URLConnection.P .deps/java/net/URLDecoder.P \ +.deps/java/net/URLEncoder.P .deps/java/net/URLStreamHandler.P \ .deps/java/net/URLStreamHandlerFactory.P \ .deps/java/net/UnknownHostException.P \ .deps/java/net/UnknownServiceException.P \ .deps/java/security/MessageDigest.P \ .deps/java/security/NoSuchAlgorithmException.P \ -.deps/java/text/BreakIterator.P .deps/java/text/CharacterIterator.P \ -.deps/java/text/ChoiceFormat.P \ +.deps/java/security/SecureClassLoader.P .deps/java/text/BreakIterator.P \ +.deps/java/text/CharacterIterator.P .deps/java/text/ChoiceFormat.P \ .deps/java/text/CollationElementIterator.P \ .deps/java/text/CollationKey.P .deps/java/text/Collator.P \ .deps/java/text/DateFormat.P .deps/java/text/DateFormatSymbols.P \ @@ -897,8 +882,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/util/ResourceBundle.P .deps/java/util/SimpleTimeZone.P \ .deps/java/util/Stack.P .deps/java/util/StringTokenizer.P \ .deps/java/util/TimeZone.P .deps/java/util/TooManyListenersException.P \ -.deps/java/util/Vector.P .deps/java/util/zip/Adler32.P \ -.deps/java/util/zip/CRC32.P .deps/java/util/zip/CheckedInputStream.P \ +.deps/java/util/Vector.P .deps/java/util/jar/JarEntry.P \ +.deps/java/util/jar/JarFile.P .deps/java/util/jar/JarInputStream.P \ +.deps/java/util/zip/Adler32.P .deps/java/util/zip/CRC32.P \ +.deps/java/util/zip/CheckedInputStream.P \ .deps/java/util/zip/CheckedOutputStream.P \ .deps/java/util/zip/Checksum.P \ .deps/java/util/zip/DataFormatException.P \ @@ -910,14 +897,21 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/util/zip/ZipConstants.P .deps/java/util/zip/ZipEntry.P \ .deps/java/util/zip/ZipException.P .deps/java/util/zip/ZipFile.P \ .deps/java/util/zip/ZipInputStream.P \ -.deps/java/util/zip/ZipOutputStream.P .deps/jni.P .deps/no-threads.P \ -.deps/nogc.P .deps/posix-threads.P .deps/prims.P .deps/resolve.P -SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(EXTRA_gij_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES) -OBJECTS = $(libgcj_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(gen_from_JIS_OBJECTS) +.deps/java/util/zip/ZipOutputStream.P .deps/jni.P .deps/k_cos.P \ +.deps/k_rem_pio2.P .deps/k_sin.P .deps/k_tan.P .deps/make-trie.P \ +.deps/mprec.P .deps/no-threads.P .deps/nogc.P .deps/posix-threads.P \ +.deps/prims.P .deps/resolve.P .deps/s_atan.P .deps/s_ceil.P \ +.deps/s_copysign.P .deps/s_cos.P .deps/s_fabs.P .deps/s_floor.P \ +.deps/s_rint.P .deps/s_scalbn.P .deps/s_sin.P .deps/s_tan.P \ +.deps/sf_rint.P .deps/strtod.P .deps/w_acos.P .deps/w_asin.P \ +.deps/w_atan2.P .deps/w_exp.P .deps/w_fmod.P .deps/w_log.P \ +.deps/w_pow.P .deps/w_remainder.P .deps/w_sqrt.P +SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES) $(gij_SOURCES) $(EXTRA_gij_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) +OBJECTS = $(am_libgcj_la_OBJECTS) $(am_gen_from_JIS_OBJECTS) $(am_gij_OBJECTS) $(am_jv_convert_OBJECTS) all: all-redirect .SUFFIXES: -.SUFFIXES: .S .c .cc .class .h .java .lo .o .s +.SUFFIXES: .c .cc .class .h .java .lo .o $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile @@ -939,18 +933,22 @@ include/config.h: include/stamp-h $(MAKE) include/stamp-h; \ else :; fi include/stamp-h: $(srcdir)/include/config.h.in $(top_builddir)/config.status + @rm -f include/stamp-h include/stamp-hT + @echo timestamp > include/stamp-hT 2> /dev/null cd $(top_builddir) \ && CONFIG_FILES= CONFIG_HEADERS=include/config.h \ $(SHELL) ./config.status - @echo timestamp > include/stamp-h 2> /dev/null + @mv include/stamp-hT include/stamp-h $(srcdir)/include/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/include/stamp-h.in @if test ! -f $@; then \ rm -f $(srcdir)/include/stamp-h.in; \ $(MAKE) $(srcdir)/include/stamp-h.in; \ else :; fi $(srcdir)/include/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + @rm -f $(srcdir)/include/stamp-h.in $(srcdir)/include/stamp-h.inT + @echo timestamp > $(srcdir)/include/stamp-h.inT 2> /dev/null cd $(top_srcdir) && $(AUTOHEADER) - @echo timestamp > $(srcdir)/include/stamp-h.in 2> /dev/null + @mv $(srcdir)/include/stamp-h.inT $(srcdir)/include/stamp-h.in mostlyclean-hdr: @@ -977,23 +975,18 @@ install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) $(mkinstalldirs) $(DESTDIR)$(toolexeclibdir) @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ - echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(toolexeclibdir)/$$p"; \ - $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(toolexeclibdir)/$$p; \ + echo "$(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(toolexeclibdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(toolexeclibdir)/$$p; \ else :; fi; \ done uninstall-toolexeclibLTLIBRARIES: @$(NORMAL_UNINSTALL) - list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \ + @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(toolexeclibdir)/$$p"; \ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(toolexeclibdir)/$$p; \ done -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - mostlyclean-compile: -rm -f *.o core *.core @@ -1004,12 +997,6 @@ distclean-compile: maintainer-clean-compile: -.s.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.S.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - mostlyclean-libtool: -rm -f *.lo @@ -1019,6 +1006,743 @@ clean-libtool: distclean-libtool: maintainer-clean-libtool: +dtoa.lo: java/lang/dtoa.c +k_rem_pio2.lo: java/lang/k_rem_pio2.c +s_tan.lo: java/lang/s_tan.c +e_acos.lo: java/lang/e_acos.c +k_sin.lo: java/lang/k_sin.c +strtod.lo: java/lang/strtod.c +e_asin.lo: java/lang/e_asin.c +k_tan.lo: java/lang/k_tan.c +w_acos.lo: java/lang/w_acos.c +e_atan2.lo: java/lang/e_atan2.c +mprec.lo: java/lang/mprec.c +w_asin.lo: java/lang/w_asin.c +e_exp.lo: java/lang/e_exp.c +s_atan.lo: java/lang/s_atan.c +w_atan2.lo: java/lang/w_atan2.c +e_fmod.lo: java/lang/e_fmod.c +s_ceil.lo: java/lang/s_ceil.c +w_exp.lo: java/lang/w_exp.c +e_log.lo: java/lang/e_log.c +s_copysign.lo: java/lang/s_copysign.c +w_fmod.lo: java/lang/w_fmod.c +e_pow.lo: java/lang/e_pow.c +s_cos.lo: java/lang/s_cos.c +w_log.lo: java/lang/w_log.c +e_rem_pio2.lo: java/lang/e_rem_pio2.c +s_fabs.lo: java/lang/s_fabs.c +w_pow.lo: java/lang/w_pow.c +e_remainder.lo: java/lang/e_remainder.c +s_floor.lo: java/lang/s_floor.c +w_remainder.lo: java/lang/w_remainder.c +e_scalb.lo: java/lang/e_scalb.c +s_rint.lo: java/lang/s_rint.c +w_sqrt.lo: java/lang/w_sqrt.c +e_sqrt.lo: java/lang/e_sqrt.c +s_scalbn.lo: java/lang/s_scalbn.c +sf_rint.lo: java/lang/sf_rint.c +k_cos.lo: java/lang/k_cos.c +s_sin.lo: java/lang/s_sin.c +gnu/gcj/convert/.dirstamp: + @$(mkinstalldirs) gnu/gcj/convert + @: > gnu/gcj/convert/.dirstamp +.deps/gnu/gcj/convert/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj/convert + @: > .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/BytesToUnicode.lo: gnu/gcj/convert/BytesToUnicode.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Convert.lo: gnu/gcj/convert/Convert.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_8859_1.lo: gnu/gcj/convert/Input_8859_1.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_EUCJIS.lo: gnu/gcj/convert/Input_EUCJIS.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_JavaSrc.lo: gnu/gcj/convert/Input_JavaSrc.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_SJIS.lo: gnu/gcj/convert/Input_SJIS.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_UTF8.lo: gnu/gcj/convert/Input_UTF8.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_8859_1.lo: gnu/gcj/convert/Output_8859_1.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_EUCJIS.lo: gnu/gcj/convert/Output_EUCJIS.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_JavaSrc.lo: gnu/gcj/convert/Output_JavaSrc.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_SJIS.lo: gnu/gcj/convert/Output_SJIS.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_UTF8.lo: gnu/gcj/convert/Output_UTF8.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/UnicodeToBytes.lo: gnu/gcj/convert/UnicodeToBytes.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/runtime/.dirstamp: + @$(mkinstalldirs) gnu/gcj/runtime + @: > gnu/gcj/runtime/.dirstamp +.deps/gnu/gcj/runtime/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj/runtime + @: > .deps/gnu/gcj/runtime/.dirstamp +gnu/gcj/runtime/MethodInvocation.lo: \ + gnu/gcj/runtime/MethodInvocation.java gnu/gcj/runtime/.dirstamp \ + .deps/gnu/gcj/runtime/.dirstamp +gnu/gcj/runtime/VMClassLoader.lo: gnu/gcj/runtime/VMClassLoader.java \ + gnu/gcj/runtime/.dirstamp .deps/gnu/gcj/runtime/.dirstamp +gnu/gcj/util/path/.dirstamp: + @$(mkinstalldirs) gnu/gcj/util/path + @: > gnu/gcj/util/path/.dirstamp +.deps/gnu/gcj/util/path/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj/util/path + @: > .deps/gnu/gcj/util/path/.dirstamp +gnu/gcj/util/path/SearchPath.lo: gnu/gcj/util/path/SearchPath.java \ + gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp +gnu/gcj/util/path/PathEntry.lo: gnu/gcj/util/path/PathEntry.java \ + gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp +gnu/gcj/util/path/DirectoryPathEntry.lo: \ + gnu/gcj/util/path/DirectoryPathEntry.java \ + gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp +gnu/gcj/util/path/ZipPathEntry.lo: gnu/gcj/util/path/ZipPathEntry.java \ + gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp +gnu/gcj/util/path/URLPathEntry.lo: gnu/gcj/util/path/URLPathEntry.java \ + gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp +gnu/gcj/util/path/CacheEntry.lo: gnu/gcj/util/path/CacheEntry.java \ + gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp +gnu/gcj/text/.dirstamp: + @$(mkinstalldirs) gnu/gcj/text + @: > gnu/gcj/text/.dirstamp +.deps/gnu/gcj/text/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj/text + @: > .deps/gnu/gcj/text/.dirstamp +gnu/gcj/text/BaseBreakIterator.lo: gnu/gcj/text/BaseBreakIterator.java \ + gnu/gcj/text/.dirstamp .deps/gnu/gcj/text/.dirstamp +gnu/gcj/text/CharacterBreakIterator.lo: \ + gnu/gcj/text/CharacterBreakIterator.java gnu/gcj/text/.dirstamp \ + .deps/gnu/gcj/text/.dirstamp +gnu/gcj/text/LineBreakIterator.lo: gnu/gcj/text/LineBreakIterator.java \ + gnu/gcj/text/.dirstamp .deps/gnu/gcj/text/.dirstamp +gnu/gcj/text/LocaleData_en.lo: gnu/gcj/text/LocaleData_en.java \ + gnu/gcj/text/.dirstamp .deps/gnu/gcj/text/.dirstamp +gnu/gcj/text/LocaleData_en_US.lo: gnu/gcj/text/LocaleData_en_US.java \ + gnu/gcj/text/.dirstamp .deps/gnu/gcj/text/.dirstamp +gnu/gcj/text/SentenceBreakIterator.lo: \ + gnu/gcj/text/SentenceBreakIterator.java gnu/gcj/text/.dirstamp \ + .deps/gnu/gcj/text/.dirstamp +gnu/gcj/text/WordBreakIterator.lo: gnu/gcj/text/WordBreakIterator.java \ + gnu/gcj/text/.dirstamp .deps/gnu/gcj/text/.dirstamp +gnu/gcj/protocol/file/.dirstamp: + @$(mkinstalldirs) gnu/gcj/protocol/file + @: > gnu/gcj/protocol/file/.dirstamp +.deps/gnu/gcj/protocol/file/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj/protocol/file + @: > .deps/gnu/gcj/protocol/file/.dirstamp +gnu/gcj/protocol/file/Connection.lo: \ + gnu/gcj/protocol/file/Connection.java \ + gnu/gcj/protocol/file/.dirstamp \ + .deps/gnu/gcj/protocol/file/.dirstamp +gnu/gcj/protocol/file/Handler.lo: gnu/gcj/protocol/file/Handler.java \ + gnu/gcj/protocol/file/.dirstamp \ + .deps/gnu/gcj/protocol/file/.dirstamp +gnu/gcj/protocol/http/.dirstamp: + @$(mkinstalldirs) gnu/gcj/protocol/http + @: > gnu/gcj/protocol/http/.dirstamp +.deps/gnu/gcj/protocol/http/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj/protocol/http + @: > .deps/gnu/gcj/protocol/http/.dirstamp +gnu/gcj/protocol/http/Connection.lo: \ + gnu/gcj/protocol/http/Connection.java \ + gnu/gcj/protocol/http/.dirstamp \ + .deps/gnu/gcj/protocol/http/.dirstamp +gnu/gcj/protocol/http/Handler.lo: gnu/gcj/protocol/http/Handler.java \ + gnu/gcj/protocol/http/.dirstamp \ + .deps/gnu/gcj/protocol/http/.dirstamp +gnu/gcj/protocol/jar/.dirstamp: + @$(mkinstalldirs) gnu/gcj/protocol/jar + @: > gnu/gcj/protocol/jar/.dirstamp +.deps/gnu/gcj/protocol/jar/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj/protocol/jar + @: > .deps/gnu/gcj/protocol/jar/.dirstamp +gnu/gcj/protocol/jar/Handler.lo: gnu/gcj/protocol/jar/Handler.java \ + gnu/gcj/protocol/jar/.dirstamp \ + .deps/gnu/gcj/protocol/jar/.dirstamp +gnu/gcj/protocol/jar/Connection.lo: gnu/gcj/protocol/jar/Connection.java \ + gnu/gcj/protocol/jar/.dirstamp \ + .deps/gnu/gcj/protocol/jar/.dirstamp +gnu/gcj/.dirstamp: + @$(mkinstalldirs) gnu/gcj + @: > gnu/gcj/.dirstamp +.deps/gnu/gcj/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj + @: > .deps/gnu/gcj/.dirstamp +gnu/gcj/RawData.lo: gnu/gcj/RawData.java gnu/gcj/.dirstamp \ + .deps/gnu/gcj/.dirstamp +gnu/gcj/util/.dirstamp: + @$(mkinstalldirs) gnu/gcj/util + @: > gnu/gcj/util/.dirstamp +.deps/gnu/gcj/util/.dirstamp: + @$(mkinstalldirs) .deps/gnu/gcj/util + @: > .deps/gnu/gcj/util/.dirstamp +gnu/gcj/util/EnumerationChain.lo: gnu/gcj/util/EnumerationChain.java \ + gnu/gcj/util/.dirstamp .deps/gnu/gcj/util/.dirstamp +java/io/.dirstamp: + @$(mkinstalldirs) java/io + @: > java/io/.dirstamp +.deps/java/io/.dirstamp: + @$(mkinstalldirs) .deps/java/io + @: > .deps/java/io/.dirstamp +java/io/BufferedInputStream.lo: java/io/BufferedInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/BufferedOutputStream.lo: java/io/BufferedOutputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/BufferedReader.lo: java/io/BufferedReader.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/BufferedWriter.lo: java/io/BufferedWriter.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/ByteArrayInputStream.lo: java/io/ByteArrayInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/ByteArrayOutputStream.lo: java/io/ByteArrayOutputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/CharArrayReader.lo: java/io/CharArrayReader.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/CharArrayWriter.lo: java/io/CharArrayWriter.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/CharConversionException.lo: java/io/CharConversionException.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/DataInput.lo: java/io/DataInput.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/DataInputStream.lo: java/io/DataInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/DataOutput.lo: java/io/DataOutput.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/DataOutputStream.lo: java/io/DataOutputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/EOFException.lo: java/io/EOFException.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/File.lo: java/io/File.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/FileDescriptor.lo: java/io/FileDescriptor.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/FileInputStream.lo: java/io/FileInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/FileNotFoundException.lo: java/io/FileNotFoundException.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/FileOutputStream.lo: java/io/FileOutputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/FileReader.lo: java/io/FileReader.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/FileWriter.lo: java/io/FileWriter.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/FilenameFilter.lo: java/io/FilenameFilter.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/FilterInputStream.lo: java/io/FilterInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/FilterOutputStream.lo: java/io/FilterOutputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/FilterReader.lo: java/io/FilterReader.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/FilterWriter.lo: java/io/FilterWriter.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/IOException.lo: java/io/IOException.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/InputStream.lo: java/io/InputStream.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/InputStreamReader.lo: java/io/InputStreamReader.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/InterruptedIOException.lo: java/io/InterruptedIOException.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/LineNumberInputStream.lo: java/io/LineNumberInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/LineNumberReader.lo: java/io/LineNumberReader.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/OutputStream.lo: java/io/OutputStream.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/OutputStreamWriter.lo: java/io/OutputStreamWriter.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/PipedInputStream.lo: java/io/PipedInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/PipedOutputStream.lo: java/io/PipedOutputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/PipedReader.lo: java/io/PipedReader.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/PipedWriter.lo: java/io/PipedWriter.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/PrintStream.lo: java/io/PrintStream.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/PrintWriter.lo: java/io/PrintWriter.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/PushbackInputStream.lo: java/io/PushbackInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/PushbackReader.lo: java/io/PushbackReader.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/RandomAccessFile.lo: java/io/RandomAccessFile.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/Reader.lo: java/io/Reader.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/SequenceInputStream.lo: java/io/SequenceInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/Serializable.lo: java/io/Serializable.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/StreamTokenizer.lo: java/io/StreamTokenizer.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/StringBufferInputStream.lo: java/io/StringBufferInputStream.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/StringReader.lo: java/io/StringReader.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/StringWriter.lo: java/io/StringWriter.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/SyncFailedException.lo: java/io/SyncFailedException.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/UTFDataFormatException.lo: java/io/UTFDataFormatException.java \ + java/io/.dirstamp .deps/java/io/.dirstamp +java/io/UnsupportedEncodingException.lo: \ + java/io/UnsupportedEncodingException.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/io/Writer.lo: java/io/Writer.java java/io/.dirstamp \ + .deps/java/io/.dirstamp +java/lang/.dirstamp: + @$(mkinstalldirs) java/lang + @: > java/lang/.dirstamp +.deps/java/lang/.dirstamp: + @$(mkinstalldirs) .deps/java/lang + @: > .deps/java/lang/.dirstamp +java/lang/AbstractMethodError.lo: java/lang/AbstractMethodError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/ArithmeticException.lo: java/lang/ArithmeticException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/ArrayIndexOutOfBoundsException.lo: \ + java/lang/ArrayIndexOutOfBoundsException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/ArrayStoreException.lo: java/lang/ArrayStoreException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/Boolean.lo: java/lang/Boolean.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Byte.lo: java/lang/Byte.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Character.lo: java/lang/Character.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/ClassCastException.lo: java/lang/ClassCastException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/ClassCircularityError.lo: java/lang/ClassCircularityError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/ClassFormatError.lo: java/lang/ClassFormatError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/ClassLoader.lo: java/lang/ClassLoader.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/ClassNotFoundException.lo: \ + java/lang/ClassNotFoundException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/CloneNotSupportedException.lo: \ + java/lang/CloneNotSupportedException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Cloneable.lo: java/lang/Cloneable.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Comparable.lo: java/lang/Comparable.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Compiler.lo: java/lang/Compiler.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Double.lo: java/lang/Double.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Error.lo: java/lang/Error.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Exception.lo: java/lang/Exception.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/ExceptionInInitializerError.lo: \ + java/lang/ExceptionInInitializerError.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/FirstThread.lo: java/lang/FirstThread.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Float.lo: java/lang/Float.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/IllegalAccessError.lo: java/lang/IllegalAccessError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/IllegalAccessException.lo: \ + java/lang/IllegalAccessException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/IllegalArgumentException.lo: \ + java/lang/IllegalArgumentException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/IllegalMonitorStateException.lo: \ + java/lang/IllegalMonitorStateException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/IllegalStateException.lo: java/lang/IllegalStateException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/IllegalThreadStateException.lo: \ + java/lang/IllegalThreadStateException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/IncompatibleClassChangeError.lo: \ + java/lang/IncompatibleClassChangeError.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/IndexOutOfBoundsException.lo: \ + java/lang/IndexOutOfBoundsException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/InstantiationError.lo: java/lang/InstantiationError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/InstantiationException.lo: \ + java/lang/InstantiationException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Integer.lo: java/lang/Integer.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/InternalError.lo: java/lang/InternalError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/InterruptedException.lo: java/lang/InterruptedException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/LinkageError.lo: java/lang/LinkageError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/Long.lo: java/lang/Long.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Math.lo: java/lang/Math.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/NegativeArraySizeException.lo: \ + java/lang/NegativeArraySizeException.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/NoClassDefFoundError.lo: java/lang/NoClassDefFoundError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/NoSuchFieldError.lo: java/lang/NoSuchFieldError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/NoSuchFieldException.lo: java/lang/NoSuchFieldException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/NoSuchMethodError.lo: java/lang/NoSuchMethodError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/NoSuchMethodException.lo: java/lang/NoSuchMethodException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/NullPointerException.lo: java/lang/NullPointerException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/Number.lo: java/lang/Number.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/NumberFormatException.lo: java/lang/NumberFormatException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/OutOfMemoryError.lo: java/lang/OutOfMemoryError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/Process.lo: java/lang/Process.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Runnable.lo: java/lang/Runnable.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Runtime.lo: java/lang/Runtime.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/RuntimeException.lo: java/lang/RuntimeException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/SecurityException.lo: java/lang/SecurityException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/SecurityManager.lo: java/lang/SecurityManager.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/Short.lo: java/lang/Short.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/StackOverflowError.lo: java/lang/StackOverflowError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/String.lo: java/lang/String.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/StringBuffer.lo: java/lang/StringBuffer.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/StringIndexOutOfBoundsException.lo: \ + java/lang/StringIndexOutOfBoundsException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/System.lo: java/lang/System.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Thread.lo: java/lang/Thread.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/ThreadDeath.lo: java/lang/ThreadDeath.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/ThreadGroup.lo: java/lang/ThreadGroup.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Throwable.lo: java/lang/Throwable.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/UnknownError.lo: java/lang/UnknownError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/UnsatisfiedLinkError.lo: java/lang/UnsatisfiedLinkError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/UnsupportedOperationException.lo: \ + java/lang/UnsupportedOperationException.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/VerifyError.lo: java/lang/VerifyError.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/VirtualMachineError.lo: java/lang/VirtualMachineError.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp +java/lang/Void.lo: java/lang/Void.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/reflect/.dirstamp: + @$(mkinstalldirs) java/lang/reflect + @: > java/lang/reflect/.dirstamp +.deps/java/lang/reflect/.dirstamp: + @$(mkinstalldirs) .deps/java/lang/reflect + @: > .deps/java/lang/reflect/.dirstamp +java/lang/reflect/AccessibleObject.lo: \ + java/lang/reflect/AccessibleObject.java \ + java/lang/reflect/.dirstamp .deps/java/lang/reflect/.dirstamp +java/lang/reflect/Array.lo: java/lang/reflect/Array.java \ + java/lang/reflect/.dirstamp .deps/java/lang/reflect/.dirstamp +java/lang/reflect/Constructor.lo: java/lang/reflect/Constructor.java \ + java/lang/reflect/.dirstamp .deps/java/lang/reflect/.dirstamp +java/lang/reflect/Field.lo: java/lang/reflect/Field.java \ + java/lang/reflect/.dirstamp .deps/java/lang/reflect/.dirstamp +java/lang/reflect/InvocationTargetException.lo: \ + java/lang/reflect/InvocationTargetException.java \ + java/lang/reflect/.dirstamp .deps/java/lang/reflect/.dirstamp +java/lang/reflect/Member.lo: java/lang/reflect/Member.java \ + java/lang/reflect/.dirstamp .deps/java/lang/reflect/.dirstamp +java/lang/reflect/Method.lo: java/lang/reflect/Method.java \ + java/lang/reflect/.dirstamp .deps/java/lang/reflect/.dirstamp +java/lang/reflect/Modifier.lo: java/lang/reflect/Modifier.java \ + java/lang/reflect/.dirstamp .deps/java/lang/reflect/.dirstamp +java/net/.dirstamp: + @$(mkinstalldirs) java/net + @: > java/net/.dirstamp +.deps/java/net/.dirstamp: + @$(mkinstalldirs) .deps/java/net + @: > .deps/java/net/.dirstamp +java/net/BindException.lo: java/net/BindException.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/ConnectException.lo: java/net/ConnectException.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/ContentHandler.lo: java/net/ContentHandler.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/ContentHandlerFactory.lo: java/net/ContentHandlerFactory.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/DatagramPacket.lo: java/net/DatagramPacket.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/DatagramSocket.lo: java/net/DatagramSocket.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/DatagramSocketImpl.lo: java/net/DatagramSocketImpl.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/FileNameMap.lo: java/net/FileNameMap.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/HttpURLConnection.lo: java/net/HttpURLConnection.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/InetAddress.lo: java/net/InetAddress.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/JarURLConnection.lo: java/net/JarURLConnection.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/MalformedURLException.lo: java/net/MalformedURLException.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/MulticastSocket.lo: java/net/MulticastSocket.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/NoRouteToHostException.lo: java/net/NoRouteToHostException.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/PlainDatagramSocketImpl.lo: \ + java/net/PlainDatagramSocketImpl.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/PlainSocketImpl.lo: java/net/PlainSocketImpl.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/ProtocolException.lo: java/net/ProtocolException.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/ServerSocket.lo: java/net/ServerSocket.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/Socket.lo: java/net/Socket.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/SocketException.lo: java/net/SocketException.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/SocketImpl.lo: java/net/SocketImpl.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/SocketImplFactory.lo: java/net/SocketImplFactory.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/SocketOptions.lo: java/net/SocketOptions.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/URL.lo: java/net/URL.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/URLClassLoader.lo: java/net/URLClassLoader.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/URLConnection.lo: java/net/URLConnection.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/URLDecoder.lo: java/net/URLDecoder.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/URLEncoder.lo: java/net/URLEncoder.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/URLStreamHandler.lo: java/net/URLStreamHandler.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/URLStreamHandlerFactory.lo: \ + java/net/URLStreamHandlerFactory.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/net/UnknownHostException.lo: java/net/UnknownHostException.java \ + java/net/.dirstamp .deps/java/net/.dirstamp +java/net/UnknownServiceException.lo: \ + java/net/UnknownServiceException.java java/net/.dirstamp \ + .deps/java/net/.dirstamp +java/security/.dirstamp: + @$(mkinstalldirs) java/security + @: > java/security/.dirstamp +.deps/java/security/.dirstamp: + @$(mkinstalldirs) .deps/java/security + @: > .deps/java/security/.dirstamp +java/security/MessageDigest.lo: java/security/MessageDigest.java \ + java/security/.dirstamp .deps/java/security/.dirstamp +java/security/NoSuchAlgorithmException.lo: \ + java/security/NoSuchAlgorithmException.java \ + java/security/.dirstamp .deps/java/security/.dirstamp +java/security/SecureClassLoader.lo: java/security/SecureClassLoader.java \ + java/security/.dirstamp .deps/java/security/.dirstamp +java/text/.dirstamp: + @$(mkinstalldirs) java/text + @: > java/text/.dirstamp +.deps/java/text/.dirstamp: + @$(mkinstalldirs) .deps/java/text + @: > .deps/java/text/.dirstamp +java/text/BreakIterator.lo: java/text/BreakIterator.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/CharacterIterator.lo: java/text/CharacterIterator.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/ChoiceFormat.lo: java/text/ChoiceFormat.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/CollationElementIterator.lo: \ + java/text/CollationElementIterator.java java/text/.dirstamp \ + .deps/java/text/.dirstamp +java/text/CollationKey.lo: java/text/CollationKey.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/Collator.lo: java/text/Collator.java java/text/.dirstamp \ + .deps/java/text/.dirstamp +java/text/DateFormat.lo: java/text/DateFormat.java java/text/.dirstamp \ + .deps/java/text/.dirstamp +java/text/DateFormatSymbols.lo: java/text/DateFormatSymbols.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/DecimalFormat.lo: java/text/DecimalFormat.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/DecimalFormatSymbols.lo: java/text/DecimalFormatSymbols.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/FieldPosition.lo: java/text/FieldPosition.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/Format.lo: java/text/Format.java java/text/.dirstamp \ + .deps/java/text/.dirstamp +java/text/MessageFormat.lo: java/text/MessageFormat.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/NumberFormat.lo: java/text/NumberFormat.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/ParseException.lo: java/text/ParseException.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/ParsePosition.lo: java/text/ParsePosition.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/RuleBasedCollator.lo: java/text/RuleBasedCollator.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/SimpleDateFormat.lo: java/text/SimpleDateFormat.java \ + java/text/.dirstamp .deps/java/text/.dirstamp +java/text/StringCharacterIterator.lo: \ + java/text/StringCharacterIterator.java java/text/.dirstamp \ + .deps/java/text/.dirstamp +java/util/.dirstamp: + @$(mkinstalldirs) java/util + @: > java/util/.dirstamp +.deps/java/util/.dirstamp: + @$(mkinstalldirs) .deps/java/util + @: > .deps/java/util/.dirstamp +java/util/BitSet.lo: java/util/BitSet.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/Calendar.lo: java/util/Calendar.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/ConcurrentModificationException.lo: \ + java/util/ConcurrentModificationException.java \ + java/util/.dirstamp .deps/java/util/.dirstamp +java/util/Date.lo: java/util/Date.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/Dictionary.lo: java/util/Dictionary.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/EmptyStackException.lo: java/util/EmptyStackException.java \ + java/util/.dirstamp .deps/java/util/.dirstamp +java/util/Enumeration.lo: java/util/Enumeration.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/EventListener.lo: java/util/EventListener.java \ + java/util/.dirstamp .deps/java/util/.dirstamp +java/util/EventObject.lo: java/util/EventObject.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/GregorianCalendar.lo: java/util/GregorianCalendar.java \ + java/util/.dirstamp .deps/java/util/.dirstamp +java/util/Hashtable.lo: java/util/Hashtable.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/ListResourceBundle.lo: java/util/ListResourceBundle.java \ + java/util/.dirstamp .deps/java/util/.dirstamp +java/util/Locale.lo: java/util/Locale.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/MissingResourceException.lo: \ + java/util/MissingResourceException.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/NoSuchElementException.lo: \ + java/util/NoSuchElementException.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/Observable.lo: java/util/Observable.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/Observer.lo: java/util/Observer.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/Properties.lo: java/util/Properties.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/PropertyResourceBundle.lo: \ + java/util/PropertyResourceBundle.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/Random.lo: java/util/Random.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/ResourceBundle.lo: java/util/ResourceBundle.java \ + java/util/.dirstamp .deps/java/util/.dirstamp +java/util/SimpleTimeZone.lo: java/util/SimpleTimeZone.java \ + java/util/.dirstamp .deps/java/util/.dirstamp +java/util/Stack.lo: java/util/Stack.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/StringTokenizer.lo: java/util/StringTokenizer.java \ + java/util/.dirstamp .deps/java/util/.dirstamp +java/util/TimeZone.lo: java/util/TimeZone.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/TooManyListenersException.lo: \ + java/util/TooManyListenersException.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/Vector.lo: java/util/Vector.java java/util/.dirstamp \ + .deps/java/util/.dirstamp +java/util/jar/.dirstamp: + @$(mkinstalldirs) java/util/jar + @: > java/util/jar/.dirstamp +.deps/java/util/jar/.dirstamp: + @$(mkinstalldirs) .deps/java/util/jar + @: > .deps/java/util/jar/.dirstamp +java/util/jar/JarFile.lo: java/util/jar/JarFile.java \ + java/util/jar/.dirstamp .deps/java/util/jar/.dirstamp +java/util/jar/JarInputStream.lo: java/util/jar/JarInputStream.java \ + java/util/jar/.dirstamp .deps/java/util/jar/.dirstamp +java/util/jar/JarEntry.lo: java/util/jar/JarEntry.java \ + java/util/jar/.dirstamp .deps/java/util/jar/.dirstamp +java/util/zip/.dirstamp: + @$(mkinstalldirs) java/util/zip + @: > java/util/zip/.dirstamp +.deps/java/util/zip/.dirstamp: + @$(mkinstalldirs) .deps/java/util/zip + @: > .deps/java/util/zip/.dirstamp +java/util/zip/Adler32.lo: java/util/zip/Adler32.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/CRC32.lo: java/util/zip/CRC32.java java/util/zip/.dirstamp \ + .deps/java/util/zip/.dirstamp +java/util/zip/CheckedInputStream.lo: \ + java/util/zip/CheckedInputStream.java java/util/zip/.dirstamp \ + .deps/java/util/zip/.dirstamp +java/util/zip/CheckedOutputStream.lo: \ + java/util/zip/CheckedOutputStream.java java/util/zip/.dirstamp \ + .deps/java/util/zip/.dirstamp +java/util/zip/Checksum.lo: java/util/zip/Checksum.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/DataFormatException.lo: \ + java/util/zip/DataFormatException.java java/util/zip/.dirstamp \ + .deps/java/util/zip/.dirstamp +java/util/zip/Deflater.lo: java/util/zip/Deflater.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/DeflaterOutputStream.lo: \ + java/util/zip/DeflaterOutputStream.java java/util/zip/.dirstamp \ + .deps/java/util/zip/.dirstamp +java/util/zip/GZIPInputStream.lo: java/util/zip/GZIPInputStream.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/GZIPOutputStream.lo: java/util/zip/GZIPOutputStream.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/Inflater.lo: java/util/zip/Inflater.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/InflaterInputStream.lo: \ + java/util/zip/InflaterInputStream.java java/util/zip/.dirstamp \ + .deps/java/util/zip/.dirstamp +java/util/zip/ZipConstants.lo: java/util/zip/ZipConstants.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/ZipEntry.lo: java/util/zip/ZipEntry.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/ZipException.lo: java/util/zip/ZipException.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/ZipFile.lo: java/util/zip/ZipFile.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/ZipInputStream.lo: java/util/zip/ZipInputStream.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/util/zip/ZipOutputStream.lo: java/util/zip/ZipOutputStream.java \ + java/util/zip/.dirstamp .deps/java/util/zip/.dirstamp +java/lang/Class.lo: java/lang/Class.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/Object.lo: java/lang/Object.java java/lang/.dirstamp \ + .deps/java/lang/.dirstamp +java/lang/ConcreteProcess.lo: java/lang/ConcreteProcess.java \ + java/lang/.dirstamp .deps/java/lang/.dirstamp libgcj.la: $(libgcj_la_OBJECTS) $(libgcj_la_DEPENDENCIES) $(CXXLINK) -rpath $(toolexeclibdir) $(libgcj_la_LDFLAGS) $(libgcj_la_OBJECTS) $(libgcj_la_LIBADD) $(LIBS) @@ -1037,15 +1761,18 @@ install-binPROGRAMS: $(bin_PROGRAMS) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + f="`echo $$p|sed -e 's/$(EXEEXT)$$//' -e '$(transform)' -e 's/$$/$(EXEEXT)/'`"; \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/$$f; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) - list='$(bin_PROGRAMS)'; for p in $$list; do \ - rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f="`echo $$p|sed -e 's/$(EXEEXT)$$//' -e '$(transform)' -e 's/$$/$(EXEEXT)/'`"; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ done mostlyclean-noinstPROGRAMS: @@ -1056,59 +1783,93 @@ clean-noinstPROGRAMS: distclean-noinstPROGRAMS: maintainer-clean-noinstPROGRAMS: +gen-from-JIS.o: $(srcdir)/$(CONVERT_DIR)/gen-from-JIS.c +make-trie.o: $(srcdir)/$(CONVERT_DIR)/make-trie.c -jv-convert$(EXEEXT): $(jv_convert_OBJECTS) $(jv_convert_DEPENDENCIES) - @rm -f jv-convert$(EXEEXT) - $(jv_convert_LINK) $(jv_convert_LDFLAGS) $(jv_convert_OBJECTS) $(jv_convert_LDADD) $(LIBS) +gen-from-JIS$(EXEEXT): $(gen_from_JIS_OBJECTS) $(gen_from_JIS_DEPENDENCIES) + @rm -f gen-from-JIS$(EXEEXT) + $(LINK) $(gen_from_JIS_LDFLAGS) $(gen_from_JIS_OBJECTS) $(gen_from_JIS_LDADD) $(LIBS) gij$(EXEEXT): $(gij_OBJECTS) $(gij_DEPENDENCIES) @rm -f gij$(EXEEXT) $(gij_LINK) $(gij_LDFLAGS) $(gij_OBJECTS) $(gij_LDADD) $(LIBS) +gnu/gcj/convert/BytesToUnicode.o: gnu/gcj/convert/BytesToUnicode.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Convert.o: gnu/gcj/convert/Convert.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_8859_1.o: gnu/gcj/convert/Input_8859_1.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_EUCJIS.o: gnu/gcj/convert/Input_EUCJIS.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_JavaSrc.o: gnu/gcj/convert/Input_JavaSrc.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_SJIS.o: gnu/gcj/convert/Input_SJIS.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Input_UTF8.o: gnu/gcj/convert/Input_UTF8.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_8859_1.o: gnu/gcj/convert/Output_8859_1.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_EUCJIS.o: gnu/gcj/convert/Output_EUCJIS.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_JavaSrc.o: gnu/gcj/convert/Output_JavaSrc.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_SJIS.o: gnu/gcj/convert/Output_SJIS.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/Output_UTF8.o: gnu/gcj/convert/Output_UTF8.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp +gnu/gcj/convert/UnicodeToBytes.o: gnu/gcj/convert/UnicodeToBytes.java \ + gnu/gcj/convert/.dirstamp .deps/gnu/gcj/convert/.dirstamp -gen-from-JIS$(EXEEXT): $(gen_from_JIS_OBJECTS) $(gen_from_JIS_DEPENDENCIES) - @rm -f gen-from-JIS$(EXEEXT) - $(LINK) $(gen_from_JIS_LDFLAGS) $(gen_from_JIS_OBJECTS) $(gen_from_JIS_LDADD) $(LIBS) +jv-convert$(EXEEXT): $(jv_convert_OBJECTS) $(jv_convert_DEPENDENCIES) + @rm -f jv-convert$(EXEEXT) + $(jv_convert_LINK) $(jv_convert_LDFLAGS) $(jv_convert_OBJECTS) $(jv_convert_LDADD) $(LIBS) +.c.o: + $(COMPILE) -c $< +.c.lo: + $(LTCOMPILE) -c -o $@ $< .cc.o: - $(CXXCOMPILE) -c $< + $(CXXCOMPILE) -c -o $@ $< .cc.lo: - $(LTCXXCOMPILE) -c $< + $(LTCXXCOMPILE) -c -o $@ $< +.java.o: + $(GCJCOMPILE) -c -o $@ $< +.java.lo: + $(LTGCJCOMPILE) -c -o $@ $< install-dataDATA: $(data_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(datadir) @list='$(data_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(datadir)/$$p"; \ - $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(datadir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(datadir)/$$p"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(datadir)/$$p; \ - fi; fi; \ + if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(datadir)/$$f"; \ + $(INSTALL_DATA) $$d$$p $(DESTDIR)$(datadir)/$$f; \ done uninstall-dataDATA: @$(NORMAL_UNINSTALL) - list='$(data_DATA)'; for p in $$list; do \ - rm -f $(DESTDIR)$(datadir)/$$p; \ + @list='$(data_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(datadir)/$$f"; \ + rm -f $(DESTDIR)$(datadir)/$$f; \ done install-toolexeclibDATA: $(toolexeclib_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(toolexeclibdir) @list='$(toolexeclib_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(toolexeclibdir)/$$p"; \ - $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(toolexeclibdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(toolexeclibdir)/$$p"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(toolexeclibdir)/$$p; \ - fi; fi; \ + if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(toolexeclibdir)/$$f"; \ + $(INSTALL_DATA) $$d$$p $(DESTDIR)$(toolexeclibdir)/$$f; \ done uninstall-toolexeclibDATA: @$(NORMAL_UNINSTALL) - list='$(toolexeclib_DATA)'; for p in $$list; do \ - rm -f $(DESTDIR)$(toolexeclibdir)/$$p; \ + @list='$(toolexeclib_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(toolexeclibdir)/$$f"; \ + rm -f $(DESTDIR)$(toolexeclibdir)/$$f; \ done # This directory's subdirectories are mostly independent; you can cd @@ -1147,7 +1908,7 @@ maintainer-clean-recursive: dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ + if test "$$subdir" = "."; then dot_seen=yes; else :; fi; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ @@ -1168,15 +1929,17 @@ tags-recursive: tags: TAGS -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) + mkid -f$$here/ID $$unique $(LISP) -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -1184,12 +1947,14 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) mostlyclean-tags: @@ -1208,11 +1973,11 @@ top_distdir = $(distdir) # tarfile. distcheck: dist -rm -rf $(distdir) - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - mkdir $(distdir)/=build mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ + dc_install_base=`cd $(distdir)/=inst && pwd` \ + && cd $(distdir)/=build \ && ../configure --srcdir=.. --prefix=$$dc_install_base \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ @@ -1227,17 +1992,22 @@ distcheck: dist echo "$$banner"; \ echo "$$dashes" dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) + $(AMTAR) ch$(AMTARFLAGS)f - $(distdir) | GZIP=$(GZIP_ENV) gzip -c > $(distdir).tar.gz -rm -rf $(distdir) dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) + $(AMTAR) ch$(AMTARFLAGS)f - $(distdir) | GZIP=$(GZIP_ENV) gzip -c > $(distdir).tar.gz -rm -rf $(distdir) distdir: $(DISTFILES) -rm -rf $(distdir) mkdir $(distdir) - -chmod 777 $(distdir) here=`cd $(top_builddir) && pwd`; \ top_distdir=`cd $(distdir) && pwd`; \ distdir=`cd $(distdir) && pwd`; \ @@ -1246,7 +2016,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ + cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ @@ -1258,7 +2028,6 @@ distdir: $(DISTFILES) test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ fi; \ @@ -1278,42 +2047,42 @@ distclean-depend: maintainer-clean-depend: %.o: %.c - @echo '$(COMPILE) -c $<'; \ - $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ + @echo '$(COMPILE) -c -o $@ $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $< + @-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \ + tr ' ' '\012' < .deps/$(*D)/$(*F).pp \ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp + >> .deps/$(*D)/$(*F).P; \ + rm .deps/$(*D)/$(*F).pp %.lo: %.c - @echo '$(LTCOMPILE) -c $<'; \ - $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @echo '$(LTCOMPILE) -c -o $@ $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $< @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ + < .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \ + tr ' ' '\012' < .deps/$(*D)/$(*F).pp \ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp + >> .deps/$(*D)/$(*F).P; \ + rm -f .deps/$(*D)/$(*F).pp %.o: %.cc - @echo '$(CXXCOMPILE) -c $<'; \ - $(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ + @echo '$(CXXCOMPILE) -c -o $@ $<'; \ + $(CXXCOMPILE) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $< + @-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \ + tr ' ' '\012' < .deps/$(*D)/$(*F).pp \ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp + >> .deps/$(*D)/$(*F).P; \ + rm .deps/$(*D)/$(*F).pp %.lo: %.cc - @echo '$(LTCXXCOMPILE) -c $<'; \ - $(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @echo '$(LTCXXCOMPILE) -c -o $@ $<'; \ + $(LTCXXCOMPILE) -Wp,-MD,.deps/$(*D)/$(*F).pp -c -o $@ $< @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ + < .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \ + tr ' ' '\012' < .deps/$(*D)/$(*F).pp \ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp + >> .deps/$(*D)/$(*F).P; \ + rm -f .deps/$(*D)/$(*F).pp info-am: info: info-recursive dvi-am: @@ -1340,7 +2109,7 @@ uninstall: uninstall-recursive all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) all-redirect: all-recursive install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install + $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install installdirs: installdirs-recursive installdirs-am: $(mkinstalldirs) $(DESTDIR)$(toolexeclibdir) $(DESTDIR)$(bindir) \ @@ -1406,20 +2175,22 @@ distclean-binPROGRAMS clean-binPROGRAMS maintainer-clean-binPROGRAMS \ uninstall-binPROGRAMS install-binPROGRAMS mostlyclean-noinstPROGRAMS \ distclean-noinstPROGRAMS clean-noinstPROGRAMS \ maintainer-clean-noinstPROGRAMS uninstall-dataDATA install-dataDATA \ -uninstall-toolexeclibDATA install-toolexeclibDATA \ -install-data-recursive uninstall-data-recursive install-exec-recursive \ -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -all-recursive check-recursive installcheck-recursive info-recursive \ -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +uninstall-toolexeclibDATA install-toolexeclibDATA install-recursive \ +uninstall-recursive install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir \ mostlyclean-depend distclean-depend clean-depend \ maintainer-clean-depend info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-info-am install-info \ install-exec-am install-exec install-data-am install-data install-am \ -install uninstall-am uninstall all-redirect all-am all installdirs-am \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean +install uninstall-am uninstall all-redirect all-am all install-strip \ +installdirs-am installdirs mostlyclean-generic distclean-generic \ +clean-generic maintainer-clean-generic clean mostlyclean distclean \ +maintainer-clean $(java_source_files:.java=.class): libgcj.zip @@ -1464,11 +2235,17 @@ $(javao_files): %.lo: %.java $(GCJH) -classpath $(top_builddir) $(basename $<) $(nat_headers): libgcj.zip + java/lang/FirstThread.h: java/lang/FirstThread.class libgcj.zip - $(GCJH) -classpath $(top_builddir) -friend '$(FTFRIEND);' \ + $(GCJH) -classpath $(top_builddir) \ + -friend 'void JvRunMain (jclass, int, const char **);' \ + -friend 'void _Jv_RunMain (const char*, int, const char **);' \ $(basename $<) + java/lang/ThreadGroup.h: java/lang/ThreadGroup.class libgcj.zip - $(GCJH) -classpath $(top_builddir) -friend '$(TGFRIEND);' \ + $(GCJH) -classpath $(top_builddir) \ + -friend 'void JvRunMain (jclass, int, const char **);' \ + -friend 'void _Jv_RunMain (const char*, int, const char **);' \ $(basename $<) java/lang/String.h: java/lang/String.class libgcj.zip @@ -1494,7 +2271,7 @@ java/lang/reflect/Method.h: java/lang/reflect/Method.class libgcj.zip -friend 'java::lang::Class;' \ $(basename $<) -java/lang/VMClassLoader.h: java/lang/VMClassLoader.class libgcj.zip +gnu/gcj/runtime/VMClassLoader.h: gnu/gcj/runtime/VMClassLoader.class libgcj.zip $(GCJH) -classpath $(top_builddir) \ -friend 'java::lang::ClassLoader;' \ $(basename $<) diff --git a/libjava/gij.cc b/libjava/gij.cc index f29e82520d1..5bd2451275e 100644 --- a/libjava/gij.cc +++ b/libjava/gij.cc @@ -23,5 +23,5 @@ int main (int argc, const char **argv) exit (1); } - JvRunMain (0, argc, argv); + _Jv_RunMain (argv[1], argc-1, argv+1); } diff --git a/libjava/gnu/gcj/protocol/jar/Connection.java b/libjava/gnu/gcj/protocol/jar/Connection.java new file mode 100644 index 00000000000..4d7421b2f79 --- /dev/null +++ b/libjava/gnu/gcj/protocol/jar/Connection.java @@ -0,0 +1,86 @@ +/* Copyright (C) 1999 Cygnus Solutions + + 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. */ + +package gnu.gcj.protocol.jar; + +import java.net.URL; +import java.net.JarURLConnection; +import java.net.URLStreamHandler; +import java.net.MalformedURLException; +import java.net.ProtocolException; +import java.io.IOException; +import java.util.jar.JarFile; +import java.util.Hashtable; + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Needs a way to download jar files and store them in the local file + * system. I don't know how to do that in a portable way. For now, it can only handle + * connections to a jar:file: url's. + * + * @author Kresten Krab Thorup <krab@gnu.org> + * @date Aug 10, 1999. + */ + + + +public class Connection extends JarURLConnection +{ + static Hashtable file_cache = new Hashtable(); + private JarFile jarfile; + + public Connection(URL url) + throws MalformedURLException + { + super(url); + } + + public synchronized JarFile getJarFile() throws java.io.IOException + { + if (!connected) + connect(); + + if (! doInput) + throw new ProtocolException("Can't open JarFile if doInput is false"); + + if (jarfile != null) + return jarfile; + + URL jarFileURL = getJarFileURL (); + + if (jarFileURL.getProtocol ().equals ("file") + && jarFileURL.getHost ().equals ("")) + { + if (getUseCaches()) + { + jarfile = (JarFile) file_cache.get(jarFileURL); + if (jarFileURL == null) + { + jarfile = new JarFile (jarFileURL.getFile ()); + file_cache.put (jarFileURL, jarfile); + } + } + else + jarfile = new JarFile (jarFileURL.getFile ()); + } + else + { + /* + FIXME: Here we need to download and cache the jar + file in the local file system! Stupid design. Why + can't we just create a JarFile from a bag of bytes? + */ + + throw new java.io.IOException("cannot create jar file from " + + jarFileURL); + } + + return jarfile; + } + +} diff --git a/libjava/gnu/gcj/protocol/jar/Handler.java b/libjava/gnu/gcj/protocol/jar/Handler.java new file mode 100644 index 00000000000..f9feb7d9977 --- /dev/null +++ b/libjava/gnu/gcj/protocol/jar/Handler.java @@ -0,0 +1,29 @@ +// Handler.java - URLStreamHandler for file protocol. + +/* Copyright (C) 1999 Cygnus Solutions + + 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. */ + +package gnu.gcj.protocol.jar; + +import java.net.URL; +import java.net.URLConnection; +import java.net.URLStreamHandler; +import java.io.IOException; + +/** + * @author Kresten Krab Thorup <krab@gnu.org> + * @date August 13, 1999. + */ + +public class Handler extends URLStreamHandler +{ + protected URLConnection openConnection(URL url) throws IOException + { + return new Connection(url); + } +} diff --git a/libjava/gnu/gcj/runtime/VMClassLoader.java b/libjava/gnu/gcj/runtime/VMClassLoader.java new file mode 100644 index 00000000000..bfdb3627073 --- /dev/null +++ b/libjava/gnu/gcj/runtime/VMClassLoader.java @@ -0,0 +1,62 @@ +/* Copyright (C) 1999 Cygnus Solutions + + 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@gnu.org> */ + +package gnu.gcj.runtime; + +import java.io.*; +import java.util.StringTokenizer; +import java.net.URL; + +final class VMClassLoader extends java.net.URLClassLoader +{ + private VMClassLoader () + { + super (init()); + } + + private static URL[] init() + { + StringTokenizer st + = new StringTokenizer (System.getProperty ("java.class.path", "."), + System.getProperty ("path.separator", ":")); + + java.util.Vector p = new java.util.Vector(); + while (st.hasMoreElements ()) + { + String e = st.nextToken (); + try + { + if (e.endsWith(".jar") || e.endsWith (".zip")) + p.addElement(new URL("jar", "", -1, "file:///"+e+"!/")); + else if (e.endsWith ("/")) + p.addElement (new URL("file", "", -1, e)); + else if (new File (e).isDirectory ()) + p.addElement (new URL("file", "", -1, e + "/")); + else + /* Ignore path element. */; + } + catch (java.net.MalformedURLException x) + { + /* Ignore this path element */ + } + } + + URL[] urls = new URL[p.size()]; + p.copyInto (urls); + return urls; + } + + /** This is overridden to search the internal hash table, which + * will only search existing linked-in classes. This will make + * the default implementation of loadClass (in ClassLoader) work right. + */ + protected final native Class findSystemClass(String name) + throws java.lang.ClassNotFoundException, java.lang.LinkageError; +} diff --git a/libjava/include/java-array.h b/libjava/include/java-array.h index 3be61b635a2..ff1c122c2f9 100644 --- a/libjava/include/java-array.h +++ b/libjava/include/java-array.h @@ -72,6 +72,7 @@ inline jobjectArray JvNewObjectArray (jsize length, jclass cls, jobject init) extern "C" jstringArray JvConvertArgv(int argc, const char **argv); extern "C" void JvRunMain (jclass klass, int argc, const char **argv); +void _Jv_RunMain (const char* name, int argc, const char **argv); inline jsize JvGetArrayLength (jarray array) { return array->length; } diff --git a/libjava/interpret.cc b/libjava/interpret.cc index 6ca6f0da606..2ecaf03de9e 100644 --- a/libjava/interpret.cc +++ b/libjava/interpret.cc @@ -109,22 +109,25 @@ static inline void dupx (_Jv_word *&sp, int n, int x) }; -#define PUSHA(V) \ - ({ jobject __v=(V); (sp++)->o = __v; }) -#define PUSHI(V) \ - ({ jint __v=(V); (sp++)->i = __v; }) -#define PUSHF(V) \ - ({ jfloat __v=(V); (sp++)->f = __v; }) -#define PUSHL(V) \ - ({ jlong __v=(V); _Jv_storeLong(sp,__v); sp+=2; }) -#define PUSHD(V) \ - ({ jdouble __v=(V); _Jv_storeDouble(sp,__v); sp+=2; }) +#define PUSHA(V) (sp++)->o = (V) +#define PUSHI(V) (sp++)->i = (V) +#define PUSHF(V) (sp++)->f = (V) +#define PUSHL(V) ({ _Jv_word2 w2; w2.l=(V); \ + (sp++)->ia[0] = w2.ia[0]; \ + (sp++)->ia[0] = w2.ia[1]; }) +#define PUSHD(V) ({ _Jv_word2 w2; w2.d=(V); \ + (sp++)->ia[0] = w2.ia[0]; \ + (sp++)->ia[0] = w2.ia[1]; }) #define POPA() ((--sp)->o) #define POPI() ((jint) (--sp)->i) // cast since it may be promoted #define POPF() ((jfloat) (--sp)->f) -#define POPL() ({ sp-=2; _Jv_loadLong (sp); }) -#define POPD() ({ sp-=2; _Jv_loadDouble (sp); }) +#define POPL() ({ _Jv_word2 w2; \ + w2.ia[1] = (--sp)->ia[0]; \ + w2.ia[0] = (--sp)->ia[0]; w2.l; }) +#define POPD() ({ _Jv_word2 w2; \ + w2.ia[1] = (--sp)->ia[0]; \ + w2.ia[0] = (--sp)->ia[0]; w2.d; }) #define LOADA(I) (sp++)->o = locals[I].o #define LOADI(I) (sp++)->i = locals[I].i @@ -456,17 +459,6 @@ dump_time () void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv) { - /* for some reason, which I do not understand, the compiler on x86 - * allocates almost 4k stack space for this function! Even though - * there are many local variables, they are all nicely contained - * within a block scope, except for the few declared right below - * here. What's going on?? It could well be, that there in fact is - * on the order of 1000 local variables, including all those inlined - * and expanded from macros... Compiling with -O0, it allocates a - * "modest" 300 bytes of stack space. Among all those options of - * gcc, why isn't there a -fpack-stack, allowing reuse of stack - * locations? */ - _Jv_word *sp = inv->sp; unsigned char *pc = inv->pc; _Jv_word *locals = inv->local_base (); @@ -542,9 +534,6 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv) #endif opcode = *pc++; - /* we special-case the single opcode aload_0 -- it makes - up 10% of the time spent in the main loop. */ - switch (opcode) { case op_aload_0: // 0x2a @@ -1359,63 +1348,63 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv) goto next_insn; case op_i2l: - PUSHL ((jlong)POPI ()); + {jlong value = POPI(); PUSHL (value);} goto next_insn; case op_i2f: - PUSHF ((jfloat)POPI ()); + {jfloat value = POPI(); PUSHF (value);} goto next_insn; case op_i2d: - PUSHD ((jdouble)POPI ()); + {jdouble value = POPI(); PUSHD (value);} goto next_insn; case op_l2i: - PUSHI ((jint)POPL ()); + {jint value = POPL(); PUSHI (value);} goto next_insn; case op_l2f: - PUSHF ((jfloat)POPL ()); + {jfloat value = POPL(); PUSHF (value);} goto next_insn; case op_l2d: - PUSHD ((jdouble)POPL ()); + {jdouble value = POPL(); PUSHD (value);} goto next_insn; case op_f2i: - PUSHI ((jint)POPF ()); + { jint value = (jint)POPF (); PUSHI(value); } goto next_insn; case op_f2l: - PUSHL ((jlong)POPF ()); + { jlong value = (jlong)POPF (); PUSHL(value); } goto next_insn; case op_f2d: - PUSHD ((jdouble)POPF ()); + { jdouble value = POPF (); PUSHD(value); } goto next_insn; case op_d2i: - PUSHI ((jint)POPD ()); + { jint value = (jint)POPD (); PUSHI(value); } goto next_insn; case op_d2l: - PUSHL ((jlong)POPD ()); + { jlong value = (jlong)POPD (); PUSHL(value); } goto next_insn; case op_d2f: - PUSHF ((jfloat)POPD ()); + { jfloat value = POPD (); PUSHF(value); } goto next_insn; case op_i2b: - PUSHI ((jbyte)POPI ()); + { jbyte value = POPI (); PUSHI(value); } goto next_insn; case op_i2c: - PUSHI ((jchar)POPI ()); + { jchar value = POPI (); PUSHI(value); } goto next_insn; case op_i2s: - PUSHI ((jshort)POPI ()); + { jshort value = POPI (); PUSHI(value); } goto next_insn; case op_lcmp: diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h index c4600bf329d..b038c349826 100644 --- a/libjava/java/lang/Class.h +++ b/libjava/java/lang/Class.h @@ -16,6 +16,7 @@ details. */ #include <java/lang/Object.h> #include <java/lang/String.h> +#include <java/net/URL.h> // We declare these here to avoid including cni.h. extern "C" void _Jv_InitClass (jclass klass); @@ -108,6 +109,7 @@ public: jstring getName (void); + java::net::URL *getResource (jstring resourceName); java::io::InputStream *getResourceAsStream (jstring resourceName); JArray<jobject> *getSigners (void); @@ -182,7 +184,7 @@ private: friend jclass _Jv_NewClass (_Jv_Utf8Const *name, jclass superclass, java::lang::ClassLoader *loader); - friend void _Jv_InternClassStrings (jclass); + friend void _Jv_PrepareCompiledClass (jclass); #ifdef INTERPRETER friend jboolean _Jv_IsInterpretedClass (jclass); diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java index bc826e9029b..f9bd59b2598 100644 --- a/libjava/java/lang/Class.java +++ b/libjava/java/lang/Class.java @@ -80,13 +80,41 @@ public final class Class implements Serializable public native int getModifiers (); public native String getName (); - // FIXME: can't implement this until we have java.net. - // public URL getResource (String resourceName); + public java.net.URL getResource (String resourceName) + { + String name = resourcePath (resourceName); + ClassLoader loader = getClassLoader (); + if (loader == null) + return ClassLoader.getSystemResource (name); + else + return loader.getResource (name); + } - // FIXME: implement. - public InputStream getResourceAsStream (String resourceName) + public java.io.InputStream getResourceAsStream (String resourceName) { - return null; + String name = resourcePath (resourceName); + ClassLoader loader = getClassLoader (); + if (loader == null) + return ClassLoader.getSystemResourceAsStream (name); + else + return loader.getResourceAsStream (name); + } + + private String resourcePath (String resourceName) + { + if (resourceName.startsWith ("/")) + return resourceName.substring (1); + + Class c = this; + while (c.isArray ()) + c = c.getComponentType (); + + String packageName = c.getName ().replace ('.', '/'); + int end = packageName.lastIndexOf ('/'); + if (end == -1) + return resourceName; + else + return packageName.substring (0, end+1) + resourceName; } // FIXME: implement. Requires java.security. diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java index 3135740a88e..4d520bb6c19 100644 --- a/libjava/java/lang/ClassLoader.java +++ b/libjava/java/lang/ClassLoader.java @@ -26,6 +26,13 @@ import java.util.Stack; public abstract class ClassLoader { static private ClassLoader system; + private ClassLoader parent; + + public ClassLoader getParent () + { + /* FIXME: security */ + return parent; + } private static native ClassLoader getVMClassLoader0 (); @@ -36,17 +43,29 @@ public abstract class ClassLoader { } /** - * Creates a <code>ClassLoader</code>. The only thing this + * Creates a <code>ClassLoader</code> with no parent. + * @exception java.lang.SecurityException if not allowed + */ + protected ClassLoader() + { + this (null); + } + + /** + * Creates a <code>ClassLoader</code> with the given parent. + * The parent may be <code>null</code>. + * The only thing this * constructor does, is to call * <code>checkCreateClassLoader</code> on the current * security manager. * @exception java.lang.SecurityException if not allowed */ - protected ClassLoader() + protected ClassLoader(ClassLoader parent) { SecurityManager security = System.getSecurityManager (); if (security != null) security.checkCreateClassLoader (); + this.parent = parent; } /** @@ -59,22 +78,68 @@ public abstract class ClassLoader { public Class loadClass(String name) throws java.lang.ClassNotFoundException, java.lang.LinkageError { - return loadClass (name, true); + return loadClass (name, false); } /** - * Loads the class by the given name. - * As per java 1.1, this has been deprecated. Use - * <code>loadClass(String)</code> - * instead. + * Loads the class by the given name. The default implementation + * will search for the class in the following order (similar to jdk 1.2) + * <ul> + * <li> First <code>findLoadedClass</code>. + * <li> If parent is non-null, <code>parent.loadClass</code>; + * otherwise <code>findSystemClass</code>. + * <li> <code>findClass</code>. + * </ul> + * If <code>link</code> is true, <code>resolveClass</code> is then + * called. <p> Normally, this need not be overridden; override + * <code>findClass</code> instead. * @param name the name of the class. * @param link if the class should be linked. * @return the class loaded. * @exception java.lang.ClassNotFoundException * @deprecated */ - protected abstract Class loadClass(String name, boolean link) - throws java.lang.ClassNotFoundException, java.lang.LinkageError; + protected Class loadClass(String name, boolean link) + throws java.lang.ClassNotFoundException, java.lang.LinkageError + { + Class c = findLoadedClass (name); + + if (c == null) + { + try { + if (parent != null) + return parent.loadClass (name, link); + else + c = findSystemClass (name); + } catch (ClassNotFoundException ex) { + /* ignore, we'll try findClass */; + } + } + + if (c == null) + c = findClass (name); + + if (c == null) + throw new ClassNotFoundException (name); + + if (link) + resolveClass (c); + + return c; + } + + /** Find a class. This should be overridden by subclasses; the + * default implementation throws ClassNotFoundException. + * + * @param name Name of the class to find. + * @return The class found. + * @exception java.lang.ClassNotFoundException + */ + protected Class findClass (String name) + throws ClassNotFoundException + { + throw new ClassNotFoundException (); + } /** * Defines a class, given the class-data. According to the JVM, this @@ -251,7 +316,7 @@ public abstract class ClassLoader { } /** Internal method. Calls _Jv_PrepareClass and - * _Jv_InternClassStrings. This is only called from resolveClass. */ + * _Jv_PrepareCompiledClass. This is only called from resolveClass. */ private static native void linkClass0(Class clazz) throws java.lang.LinkageError; @@ -263,15 +328,19 @@ public abstract class ClassLoader { /** * Returns a class found in a system-specific way, typically - * via the <code>java.class.path</code> system property. + * via the <code>java.class.path</code> system property. Loads the + * class if necessary. * * @param name the class to resolve. * @return the class loaded. * @exception java.lang.LinkageError * @exception java.lang.ClassNotFoundException */ - protected native Class findSystemClass(String name) - throws java.lang.ClassNotFoundException, java.lang.LinkageError; + protected Class findSystemClass(String name) + throws java.lang.ClassNotFoundException, java.lang.LinkageError + { + return getSystemClassLoader ().loadClass (name); + } /* * Does currently nothing. @@ -280,10 +349,11 @@ public abstract class ClassLoader { /* claz.setSigners (signers); */ } - /* + /** * If a class named <code>name</code> was previously loaded using * this <code>ClassLoader</code>, then it is returned. Otherwise - * it returns <code>null</code>. + * it returns <code>null</code>. (Unlike the JDK this is native, + * since we implement the class table internally.) * @param name class to find. * @return the class loaded, or null. */ @@ -297,10 +367,6 @@ public abstract class ClassLoader { return system.getResource (name); } - public static final byte[] getSystemResourceAsBytes(String name) { - return system.getResourceAsBytes (name); - } - /** * Return an InputStream representing the resource name. * This is essentially like @@ -309,7 +375,6 @@ public abstract class ClassLoader { * @param name resource to load * @return an InputStream, or null * @see java.lang.ClassLoader#getResource(String) - * @see java.lang.ClassLoader#getResourceAsBytes(String) * @see java.io.InputStream */ public InputStream getResourceAsStream(String name) @@ -324,41 +389,8 @@ public abstract class ClassLoader { } /** - * Return a byte array <code>byte[]</code> representing the - * resouce <code>name</code>. This only works for resources - * that have a known <code>content-length</code>, and - * it will block while loading the resource. Returns null - * for error conditions.<p> - * Since it is synchroneous, this is only convenient for - * resources that are "readily" available. System resources - * can conveniently be loaded this way, and the runtime - * system uses this to load class files. <p> - * To find the class data for a given class, use - * something like the following: - * <ul><code> - * String res = clazz.getName().replace ('.', '/')) + ".class";<br> - * byte[] data = getResourceAsBytes (res); - * </code></ul> - * @param name resource to load - * @return a byte array, or null - * @see java.lang.ClassLoader#getResource(String) - * @see java.lang.ClassLoader#getResourceAsStream(String) - */ - public byte[] getResourceAsBytes(String name) { - try { - URL res = getResource (name); - if (res == null) return null; - URLConnection conn = res.openConnection (); - int len = conn.getContentLength (); - if (len == -1) return null; - return readbytes (conn.getInputStream (), len); - } catch (java.io.IOException x) { - return null; - } - } - - /** * Return an java.io.URL representing the resouce <code>name</code>. + * The default implementation just returns <code>null</code>. * @param name resource to load * @return a URL, or null if there is no such resource. * @see java.lang.ClassLoader#getResourceAsBytes(String) @@ -369,31 +401,5 @@ public abstract class ClassLoader { return null; } - /** - * Utility routine to read a resource fully, even if the given - * InputStream only provides partial results. - */ - private static byte[] readbytes (InputStream is, int length) - { - try { - - byte[] data = new byte[length]; - int read; - int off = 0; - - while (off != length) - { - read = is.read (data, off, (int) (length-off)); - - if (read == -1) - return null; - - off += read; - } - - return data; - } catch (java.io.IOException x) { - return null; - } - } } + diff --git a/libjava/java/lang/VMClassLoader.java b/libjava/java/lang/VMClassLoader.java deleted file mode 100644 index 026f6d8d1fb..00000000000 --- a/libjava/java/lang/VMClassLoader.java +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (C) 1999 Cygnus Solutions - - 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@gnu.org> */ - -package java.lang; - -import java.io.*; -import java.net.URL; -import gnu.gcj.util.path.SearchPath; - -final class VMClassLoader extends java.lang.ClassLoader -{ - private SearchPath path; - private final String path_seperator; - private final String file_seperator; - private final char file_seperator_char; - - private VMClassLoader () { - path_seperator = System.getProperty ("path.separator", ":"); - file_seperator = System.getProperty ("file.separator", "/"); - - file_seperator_char = file_seperator.charAt (0); - - String class_path = System.getProperty ("java.class.path", "."); - path = new SearchPath (class_path); - } - - protected Class loadClass(String name, - boolean resolve) - throws java.lang.ClassNotFoundException, java.lang.LinkageError - { - return loadClassInternal (name, resolve, false); - } - - /** I'm a little in doubt here, if this method is - actually supposed to throw a LinkageError, or not. - The spec, 20.14.3, is a little unclear. It says: - - `` The general contract of loadClass is that, given the name - of a class, it either returns the Class object for the class - or throws a ClassNotFoundException.'' - - However, by making LinkageError a checked exception, - i.e., mention it directly in the throws clause, - we'll force caller to consider that case as well. - **/ - - protected Class loadClassInternal(String name, - boolean resolve, - boolean fromBootLoader) - throws java.lang.ClassNotFoundException, java.lang.LinkageError - { - Class clazz; - - /** TODO: call _Jv_VerifyClassName **/ - if ( (name.indexOf ('/') != -1) - || (name.charAt (0) == '.') - || (name.indexOf (file_seperator) != -1) - || (name.indexOf ("..") != -1)) - { - throw new IllegalArgumentException (name); - } - - // already loaded? - clazz = findLoadedClass (name); - - // we need access to the boot class loader here - if (clazz == null && !fromBootLoader) - clazz = findBootClass (name); - - if (clazz == null) - { - StringBuffer res = new StringBuffer (); - - // here we do actually replace .'s with /'s because - // we're going to find something in the file system. - res.append (name.replace ('.', file_seperator_char)); - res.append (".class"); - - byte[] data = getResourceAsBytes (res.toString ()); - - if (data == null) - throw new ClassNotFoundException (name); - - clazz = defineClass (name, data, 0, data.length); - - } - - if (resolve && clazz != null) - resolveClass (clazz); - - return clazz; - } - - private native Class findBootClass (String name); - - public InputStream getResourceAsStream(String name) - { - return path.getStream (name); - } - - public URL getResource(String name) - { - return path.getURL (name); - } - - public byte[] getResourceAsBytes(String name) - { - return path.getBytes (name); - } -} diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 01058dc0e6b..ff5e9c65da5 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -92,8 +92,6 @@ java::lang::Class::forName (jstring className) if (! klass) JvThrow (new java::lang::ClassNotFoundException (className)); - _Jv_InitClass (klass); - return klass; } @@ -354,6 +352,8 @@ java::lang::Class::newInstance (void) || java::lang::reflect::Modifier::isAbstract(accflags)) JvThrow (new java::lang::InstantiationException); + _Jv_InitClass (this); + _Jv_Method *meth = _Jv_GetMethodLocal (this, init_name, void_signature); if (! meth) JvThrow (new java::lang::NoSuchMethodException); @@ -408,7 +408,7 @@ java::lang::Class::initializeClass (void) { // Step 1. _Jv_MonitorEnter (this); - _Jv_InternClassStrings (this); + _Jv_PrepareCompiledClass (this); } } else diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index 0caaa4cbffd..c35417c87db 100644 --- a/libjava/java/lang/natClassLoader.cc +++ b/libjava/java/lang/natClassLoader.cc @@ -20,8 +20,9 @@ details. */ #include <java/lang/Character.h> #include <java/lang/Thread.h> #include <java/lang/ClassLoader.h> -#include <java/lang/VMClassLoader.h> +#include <gnu/gcj/runtime/VMClassLoader.h> #include <java/lang/InternalError.h> +#include <java/lang/IllegalAccessError.h> #include <java/lang/LinkageError.h> #include <java/lang/ClassFormatError.h> #include <java/lang/NoClassDefFoundError.h> @@ -46,7 +47,7 @@ extern java::lang::Class ClassLoaderClass; /////////// java.lang.ClassLoader native methods //////////// #ifdef INTERPRETER -java::lang::VMClassLoader *redirect = 0; +gnu::gcj::runtime::VMClassLoader *redirect = 0; #endif java::lang::ClassLoader* @@ -54,7 +55,7 @@ java::lang::ClassLoader::getVMClassLoader0 () { #ifdef INTERPRETER if (redirect == 0) - redirect = new java::lang::VMClassLoader; + redirect = new gnu::gcj::runtime::VMClassLoader; return redirect; #else return 0; @@ -144,7 +145,7 @@ _Jv_WaitForState (jclass klass, int state) if (state == JV_STATE_LINKED) { _Jv_MonitorExit (klass); - _Jv_InternClassStrings (klass); + _Jv_PrepareCompiledClass (klass); return; } @@ -179,7 +180,7 @@ java::lang::ClassLoader::linkClass0 (java::lang::Class *klass) } #endif - _Jv_InternClassStrings (klass); + _Jv_PrepareCompiledClass (klass); } void @@ -193,7 +194,7 @@ java::lang::ClassLoader::markClassErrorState0 (java::lang::Class *klass) /** this is the only native method in VMClassLoader, so we define it here. */ jclass -java::lang::VMClassLoader::findBootClass (jstring name) +gnu::gcj::runtime::VMClassLoader::findSystemClass (jstring name) { return _Jv_FindClassInCache (_Jv_makeUtf8Const (name), 0); } @@ -204,22 +205,27 @@ java::lang::ClassLoader::findLoadedClass (jstring name) return _Jv_FindClassInCache (_Jv_makeUtf8Const (name), this); } -jclass -java::lang::ClassLoader::findSystemClass (jstring name) -{ - return _Jv_FindClass (_Jv_makeUtf8Const (name), 0); -} - - -/* This is the final step of linking, internalizing the constant strings - * of a class. This is called for both compiled and interpreted - * classes, and it is *only* called from ClassLoader::linkClass0, - * which is always in a context where the current thread has a lock on - * the class in question. We define it here, and not in resolve.cc, so that - * the entire resolve.cc can be #ifdef'ed away when not using the - * interpreter. */ +static const int PUBLIC = 0x001; +static const int PRIVATE = 0x002; +static const int PROTECTED = 0x004; +static const int STATIC = 0x008; +static const int FINAL = 0x010; +static const int SYNCHRONIZED = 0x020; +static const int VOLATILE = 0x040; +static const int TRANSIENT = 0x080; +static const int NATIVE = 0x100; +static const int INTERFACE = 0x200; +static const int ABSTRACT = 0x400; +static const int ALL_FLAGS = 0x7FF; + + +/** This function does class-preparation for compiled classes. + NOTE: This function replicates functionality from + _Jv_ResolvePoolEntry, and this is intentional, since that function + is + */ void -_Jv_InternClassStrings(jclass klass) +_Jv_PrepareCompiledClass(jclass klass) { if (klass->state >= JV_STATE_LINKED) return; @@ -228,14 +234,44 @@ _Jv_InternClassStrings(jclass klass) klass->state = JV_STATE_LINKED; _Jv_Constants *pool = &klass->constants; - for (int i = 1; i < pool->size; ++i) + for (int index = 1; index < pool->size; ++index) { - if (pool->tags[i] == JV_CONSTANT_String) + if (pool->tags[index] == JV_CONSTANT_Class) + { + _Jv_Utf8Const *name = pool->data[index].utf8; + + jclass found; + if (name->data[0] == '[') + found = _Jv_FindClassFromSignature (&name->data[0], + klass->loader); + else + found = _Jv_FindClass (name, klass->loader); + + if (! found) + { + jstring str = _Jv_NewStringUTF (name->data); + JvThrow (new java::lang::ClassNotFoundException (str)); + } + + if ((found->accflags & PUBLIC) == PUBLIC + || (_Jv_ClassNameSamePackage (found->name, + klass->name))) + { + pool->data[index].clazz = found; + pool->tags[index] |= JV_CONSTANT_ResolvedFlag; + } + else + { + JvThrow (new java::lang::IllegalAccessError (found->getName())); + } + } + + else if (pool->tags[index] == JV_CONSTANT_String) { jstring str; - str = _Jv_NewStringUtf8Const (pool->data[i].utf8); - pool->data[i].string = str; - pool->tags[i] |= JV_CONSTANT_ResolvedFlag; + str = _Jv_NewStringUtf8Const (pool->data[index].utf8); + pool->data[index].o = str; + pool->tags[index] |= JV_CONSTANT_ResolvedFlag; } } @@ -443,7 +479,7 @@ jclass _Jv_FindClass (_Jv_Utf8Const *name, } // Load using the bootstrap loader jmspec 5.3.1 - klass = redirect -> loadClassInternal (sname, false, true); + klass = redirect -> loadClass (sname, false); // register that we're an initiating loader if (klass) diff --git a/libjava/java/net/JarURLConnection.java b/libjava/java/net/JarURLConnection.java new file mode 100644 index 00000000000..8eb4b7d996c --- /dev/null +++ b/libjava/java/net/JarURLConnection.java @@ -0,0 +1,301 @@ +/* Copyright (C) 1999 Cygnus Solutions + + 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. */ + +package java.net; + +import java.net.*; +import java.io.*; +import java.util.jar.*; +import java.util.zip.*; +import java.util.Vector; +import java.util.Hashtable; + +/** + * @author Kresten Krab Thorup <krab@gnu.org> + * @date Aug 10, 1999. + */ + + +public abstract class JarURLConnection extends URLConnection +{ + // three different ways to say the same thing + private final URL jarFileURL; + + /** The connection to the jar file itself. A JarURLConnection + * can represent an entry in a jar file or an entire jar file. In + * either case this describes just the jar file itself. */ + protected URLConnection jarFileURLConnection; + + // If this is a connection to a jar file element this is set, otherwose null. + private final String element; + + // Cached JarURLConnection's + static Hashtable conn_cache = new Hashtable(); + + public URL getJarFileURL () + { + return jarFileURL; + } + + public String getEntryName () + { + return element; + } + + public JarURLConnection(URL url) + throws MalformedURLException + { + super(url); + + String spec = url.getFile(); + int bang = spec.indexOf ("!/", 0); + if (bang == -1) + throw new MalformedURLException (url + ": No `!/' in spec."); + + // Extact the url for the jar itself. + jarFileURL = new URL(spec.substring (0, bang)); + + // Get the name of the element, if any. + element = (bang+2==spec.length() ? null : spec.substring (bang+2)); + } + + public synchronized void connect() throws IOException + { + // Call is ignored if already connected. + if (connected) + return; + + if (getUseCaches()) + { + jarFileURLConnection = (URLConnection) conn_cache.get (jarFileURL); + + if (jarFileURLConnection == null) + { + jarFileURLConnection = jarFileURL.openConnection (); + jarFileURLConnection.setUseCaches (true); + jarFileURLConnection.connect (); + conn_cache.put (jarFileURL, jarFileURLConnection); + } + } + else + { + jarFileURLConnection = jarFileURL.openConnection (); + jarFileURLConnection.connect (); + } + + connected = true; + } + + public InputStream getInputStream() throws IOException + { + if (!connected) + connect(); + + if (! doInput) + throw new ProtocolException("Can't open InputStream if doInput is false"); + + if (element == null) + { + // This is a JarURLConnection for the entire jar file. + + InputStream jar_is = new BufferedInputStream(jarFileURLConnection.getInputStream ()); + return new JarInputStream(jar_is); + } + + // Reaching this point, we're looking for an element of a jar file. + + JarFile jarfile = null; + + try + { + jarfile = getJarFile (); + } + catch (java.io.IOException x) + { + /* ignore */ + } + + if (jarfile != null) + { + // this is the easy way... + return jarfile.getInputStream (jarfile.getEntry (element)); + } + else + { + // If the jar file is not local, ... + JarInputStream zis = new JarInputStream(jarFileURLConnection.getInputStream ()); + + // This is hideous, we're doing a linear search... + for (ZipEntry ent = zis.getNextEntry (); + ent != null; + ent = zis.getNextEntry ()) + { + if (element.equals (ent.getName ())) + { + int size = (int)ent.getSize(); + byte[] data = new byte[size]; + zis.read (data, 0, size); + return new ByteArrayInputStream (data); + } + } + } + + return null; + } + + public JarEntry getJarEntry (String name) + throws java.io.IOException + { + JarFile jarfile = null; + + if (! doInput) + throw new ProtocolException("Can't open JarEntry if doInput is false"); + + try + { + jarfile = getJarFile (); + } + catch (java.io.IOException x) + { + /* ignore */ + } + + if (jarfile == null) + { + JarInputStream zis = new JarInputStream(jarFileURLConnection.getInputStream ()); + + // This is hideous, we're doing a linear search for the thing... + for (ZipEntry ent = zis.getNextEntry (); + ent != null; + ent = zis.getNextEntry ()) + { + if (element.equals (ent.getName ())) + { + return new JarEntry (ent); + } + } + } + + else + { + return jarfile.getJarEntry (element); + } + + return null; + } + + public abstract JarFile getJarFile() throws java.io.IOException; + + + // Steal and borrow from protocol/file/Connection.java + + private Hashtable hdrHash = new Hashtable(); + private Vector hdrVec = new Vector(); + private boolean gotHeaders = false; + + // Override default method in URLConnection. + public String getHeaderField(String name) + { + try + { + getHeaders(); + } + catch (IOException x) + { + return null; + } + return (String) hdrHash.get(name.toLowerCase()); + } + + // Override default method in URLConnection. + public String getHeaderField(int n) + { + try + { + getHeaders(); + } + catch (IOException x) + { + return null; + } + if (n < hdrVec.size()) + return getField((String) hdrVec.elementAt(n)); + + return null; + } + + // Override default method in URLConnection. + public String getHeaderFieldKey(int n) + { + try + { + getHeaders(); + } + catch (IOException x) + { + return null; + } + if (n < hdrVec.size()) + return getKey((String) hdrVec.elementAt(n)); + + return null; + } + + private String getKey(String str) + { + if (str == null) + return null; + int index = str.indexOf(':'); + if (index >= 0) + return str.substring(0, index); + else + return null; + } + + private String getField(String str) + { + if (str == null) + return null; + int index = str.indexOf(':'); + if (index >= 0) + return str.substring(index + 1).trim(); + else + return str; + } + + private void getHeaders() throws IOException + { + if (gotHeaders) + return; + gotHeaders = true; + + connect(); + + // Yes, it is overkill to use the hash table and vector here since + // we're only putting one header in the file, but in case we need + // to add others later and for consistency, we'll implement it this way. + + // Add the only header we know about right now: Content-length. + long len; + + if (element == null) + len = jarFileURLConnection.getContentLength (); + else + len = getJarEntry (element).getSize (); + + String line = "Content-length: " + len; + hdrVec.addElement(line); + + // The key will never be null in this scenario since we build up the + // headers ourselves. If we ever rely on getting a header from somewhere + // else, then we may have to check if the result of getKey() is null. + String key = getKey(line); + hdrHash.put(key.toLowerCase(), Long.toString(len)); + } + +} diff --git a/libjava/java/net/URLClassLoader.java b/libjava/java/net/URLClassLoader.java new file mode 100644 index 00000000000..df34306a89e --- /dev/null +++ b/libjava/java/net/URLClassLoader.java @@ -0,0 +1,221 @@ +/* Copyright (C) 1999 Cygnus Solutions + + 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. */ + +package java.net; + +import java.io.*; +import java.util.jar.*; +import java.util.Vector; + +public class URLClassLoader extends ClassLoader +{ + // The URLStreamHandlerFactory + URLStreamHandlerFactory factory = null; + + // `path' contains simply the URL's we're using for the searching. + private Vector path; + + // If path[n] is a zip/jar, then this holds a JarURLConnection for that thing, + // otherwise, path[n] is null. + private Vector info; + + private URLStreamHandler getHandler0 (String protocol) + { + if (factory != null) + return factory.createURLStreamHandler(protocol); + else + return null; + } + + public URLClassLoader (URL[] urls) + { + this (urls, null, null); + } + + public URLClassLoader (URL[] urls, ClassLoader parent) + { + this (urls, parent, null); + } + + public URLClassLoader (URL[] urls, ClassLoader parent, + URLStreamHandlerFactory fac) + { + super (parent); + + factory = fac; + + if (urls == null || urls.length == 0) + { + path = new Vector (1); + info = new Vector (1); + return; + } + + path = new Vector (urls.length); + info = new Vector (urls.length); + + for (int i = 0; i < urls.length; i++) + { + URL u = urls[i]; + + // If it is a jar url, then we'll search it as is. + if (! u.getProtocol ().equals ("jar")) + { + String f = u.getFile (); + + // If it ends with '/' we'll take it for a directory, + // otherwise it's a jar file. This is how JDK 1.2 defines + // it, so we will not try to be smart here. + if (f.charAt (f.length ()-1) != '/') + { + try + { + u = new URL ("jar", "", -1, (u.toExternalForm ())+"!/", + getHandler0 ("jar")); + } + catch (MalformedURLException x) + { + /* ignore */ + } + } + } + + path.insertElementAt (u, i); + + if (u.getProtocol ().equals ("jar")) + { + JarURLConnection conn = null; + try + { + conn = (JarURLConnection) u.openConnection (); + } + catch (java.io.IOException x) + { + /* ignore */ + } + info.insertElementAt (conn, i); + } + else + { + info.insertElementAt (null, i); + } + } + } + + public URL getResource (String name) + { + for (int i = 0; i < path.size(); i++) + { + URL u = (URL)path.elementAt (i); + + try { + JarURLConnection conn = (JarURLConnection) info.elementAt (i); + + if (conn != null) + { + if (conn.getJarEntry (name) != null) + return new URL(u, name, getHandler0 (u.getProtocol())); + } + else + { + URL p = new URL (u, name, getHandler0 (u.getProtocol())); + + InputStream is = p.openStream(); + if (is != null) + { + is.close(); + return p; + } + } + + // if we get an exception ... try the next path element + } catch (IOException x) { + continue; + } + } + + return null; + } + + /** IN jdk 1.2 this method is not overridden, but we gain performance + by doing so. + */ + + public InputStream getResourceAsStream (String name) + { + for (int i = 0; i < path.size(); i++) + { + URL u = (URL)path.elementAt (i); + + try { + JarURLConnection conn = (JarURLConnection) info.elementAt (i); + + if (conn != null) + { + JarFile file = conn.getJarFile (); + JarEntry ent = file.getJarEntry (name); + if (ent != null) + return file.getInputStream(ent); + } + else + { + InputStream is = new URL(u, name, getHandler0 (u.getProtocol())).openStream(); + if (is != null) + return is; + } + + // if we get an exception ... try the next path element + } catch (IOException x) { + continue; + } + } + + return null; + } + + // and finally, we can implement our class loader functionality. + protected Class findClass (String name) + throws ClassNotFoundException + { + if (name == null) + throw new ClassNotFoundException ("null"); + + try + { + InputStream is = getResourceAsStream (name.replace ('.', '/') + ".class"); + + if (is == null) + throw new ClassNotFoundException (name); + + // Here we have to rely on available() to provide the length of + // the class; which might not be exactly right in some cases... + + int len = is.available (); + byte[] data = new byte[len]; + + int left = len; + int off = 0; + while (left > 0) + { + int c = is.read (data, off, len-off); + if (c == -1 || c == 0) + throw new InternalError ("premature end of file"); + left -= c; + off += c; + } + + return defineClass (name, data, 0, len); + } + catch (java.io.IOException x) + { + throw new ClassNotFoundException(name); + } + } + +} + diff --git a/libjava/java/security/SecureClassLoader.java b/libjava/java/security/SecureClassLoader.java new file mode 100644 index 00000000000..b19503519da --- /dev/null +++ b/libjava/java/security/SecureClassLoader.java @@ -0,0 +1,23 @@ +/* Copyright (C) 1998, 1999 Cygnus Solutions + + 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. */ + +package java.security; + +public class SecureClassLoader extends ClassLoader +{ + public SecureClassLoader () + { + this (null); + } + + public SecureClassLoader (ClassLoader parent) + { + super (parent); + } +} + diff --git a/libjava/java/util/jar/JarEntry.java b/libjava/java/util/jar/JarEntry.java new file mode 100644 index 00000000000..0fe202bcac5 --- /dev/null +++ b/libjava/java/util/jar/JarEntry.java @@ -0,0 +1,39 @@ +/* Copyright (C) 1999 Cygnus Solutions + + 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. */ + +package java.util.jar; + +import java.util.zip.*; + +/** + * Does not implement the security and manifest methods. + * + * @author Kresten Krab Thorup <krab@gnu.org> + * @date August 10, 1999. + */ + +public class JarEntry extends ZipEntry +{ + ZipEntry zip; + + public JarEntry (ZipEntry ent) + { + super (ent); + } + + public JarEntry (JarEntry ent) + { + super (ent); + } + + public JarEntry (String name) + { + super (name); + } + +} diff --git a/libjava/java/util/jar/JarFile.java b/libjava/java/util/jar/JarFile.java new file mode 100644 index 00000000000..efab3c2d813 --- /dev/null +++ b/libjava/java/util/jar/JarFile.java @@ -0,0 +1,56 @@ +/* Copyright (C) 1999 Cygnus Solutions + + 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. */ + +package java.util.jar; + +import java.util.zip.*; +import java.io.File; + +/** + * Does not implement any of the security. Just a place holder, so + * that I can implement URLClassLoader. + * + * @author Kresten Krab Thorup <krab@gnu.org> + * @date August 10, 1999. + */ + +public class JarFile extends ZipFile +{ + private boolean verify; + + public JarFile (String file) throws java.io.IOException + { + super (file); + } + + public JarFile (File file) throws java.io.IOException + { + super (file); + } + + public JarFile (String file, boolean verify) throws java.io.IOException + { + super (file); + this.verify = verify; + } + + public JarFile (File file, boolean verify) throws java.io.IOException + { + super (file); + this.verify = verify; + } + + public JarEntry getJarEntry (String name) + { + ZipEntry ent = getEntry(name); + if (ent == null) + return null; + else + return new JarEntry(ent); + } +} diff --git a/libjava/java/util/jar/JarInputStream.java b/libjava/java/util/jar/JarInputStream.java new file mode 100644 index 00000000000..476e75fbe92 --- /dev/null +++ b/libjava/java/util/jar/JarInputStream.java @@ -0,0 +1,32 @@ +/* Copyright (C) 1999 Cygnus Solutions + + 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. */ + +package java.util.jar; + +import java.util.zip.*; + +/** + * Does not implement any of the security. Just a place holder, so + * that I can implement URLClassLoader. + * + * @author Kresten Krab Thorup <krab@gnu.org> + * @date August 10, 1999. + */ + +public class JarInputStream extends ZipInputStream +{ + public JarEntry getNextJarEntry () throws java.io.IOException + { + return new JarEntry (getNextEntry ()); + } + + public JarInputStream (java.io.InputStream is) + { + super(is); + } +} diff --git a/libjava/java/util/zip/ZipEntry.java b/libjava/java/util/zip/ZipEntry.java index 9bd3c41a9ab..915c4b2bf31 100644 --- a/libjava/java/util/zip/ZipEntry.java +++ b/libjava/java/util/zip/ZipEntry.java @@ -46,6 +46,18 @@ public class ZipEntry implements ZipConstants this.name = name; } + public ZipEntry (ZipEntry ent) + { + comment = ent.comment; + compressedSize = ent.compressedSize; + crc = ent.crc; + extra = ent.extra; + method = ent.method; + size = ent.size; + time = ent.time; + relativeOffset = ent.relativeOffset; + } + public String getComment () { return comment; } public long getCompressedSize () { return compressedSize; } diff --git a/libjava/java/util/zip/ZipFile.java b/libjava/java/util/zip/ZipFile.java index bfb077d4585..1b0ebcee8ba 100644 --- a/libjava/java/util/zip/ZipFile.java +++ b/libjava/java/util/zip/ZipFile.java @@ -22,12 +22,14 @@ public class ZipFile implements ZipConstants { file = new RandomAccessFile(fname, "r"); name = fname; + readDirectory (); } public ZipFile (File f) throws IOException { file = new RandomAccessFile(f, "r"); name = f.getName(); + readDirectory (); } void readDirectory () throws IOException diff --git a/libjava/prims.cc b/libjava/prims.cc index 90fd96de9f3..3b0863c2d77 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -611,21 +611,38 @@ JvRunMain (jclass klass, int argc, const char **argv) LTDL_SET_PRELOADED_SYMBOLS (); #endif - if (klass == NULL) - { - arg_vec = JvConvertArgv (argc - 2, argv + 2); - main_group = new java::lang::ThreadGroup (23); - main_thread = new java::lang::FirstThread (main_group, - JvNewStringLatin1 (argv[1]), - arg_vec); - } - else - { - arg_vec = JvConvertArgv (argc - 1, argv + 1); - main_group = new java::lang::ThreadGroup (23); - main_thread = new java::lang::FirstThread (main_group, klass, arg_vec); - } + arg_vec = JvConvertArgv (argc - 1, argv + 1); + main_group = new java::lang::ThreadGroup (23); + main_thread = new java::lang::FirstThread (main_group, klass, arg_vec); + + main_thread->start(); + _Jv_ThreadWait (); + + java::lang::Runtime::getRuntime ()->exit (0); +} + +void +_Jv_RunMain (const char *class_name, int argc, const char **argv) +{ + INIT_SEGV; +#ifdef HANDLE_FPE + INIT_FPE; +#else + arithexception = new java::lang::ArithmeticException + (JvNewStringLatin1 ("/ by zero")); +#endif + + no_memory = new java::lang::OutOfMemoryError; + +#ifdef USE_LTDL + LTDL_SET_PRELOADED_SYMBOLS (); +#endif + arg_vec = JvConvertArgv (argc - 1, argv + 1); + main_group = new java::lang::ThreadGroup (23); + main_thread = new java::lang::FirstThread (main_group, + JvNewStringLatin1 (class_name), + arg_vec); main_thread->start(); _Jv_ThreadWait (); diff --git a/libjava/resolve.cc b/libjava/resolve.cc index d5ab739833a..9b3167a36e9 100644 --- a/libjava/resolve.cc +++ b/libjava/resolve.cc @@ -12,8 +12,6 @@ details. */ #include <java-interp.h> -#ifdef INTERPRETER - #include <cni.h> #include <jvm.h> #include <string.h> @@ -30,6 +28,8 @@ details. */ #include <java/lang/ClassNotFoundException.h> #include <java/lang/IncompatibleClassChangeError.h> +#ifdef INTERPRETER + static void throw_internal_error (char *msg) __attribute__ ((__noreturn__)); static void throw_class_format_error (jstring msg) @@ -124,6 +124,7 @@ _Jv_ResolvePoolEntry (jclass klass, int index) } break; + case JV_CONSTANT_Fieldref: { _Jv_ushort class_index, name_and_type_index; @@ -316,6 +317,7 @@ _Jv_ResolvePoolEntry (jclass klass, int index) return pool->data[index]; } + void _Jv_ResolveField (_Jv_Field *field, java::lang::ClassLoader *loader) { diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in index ac2e92d1b0d..34c91863705 100644 --- a/libjava/testsuite/Makefile.in +++ b/libjava/testsuite/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4a from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -10,7 +10,6 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. - SHELL = @SHELL@ srcdir = @srcdir@ @@ -46,9 +45,10 @@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_FLAG = transform = @program_transform_name@ NORMAL_INSTALL = : @@ -108,6 +108,7 @@ ZLIBSPEC = @ZLIBSPEC@ here = @here@ libgcj_basedir = @libgcj_basedir@ + AUTOMAKE_OPTIONS = foreign dejagnu no-installinfo # Setup the testing framework, if you have one @@ -122,15 +123,16 @@ RUNTEST = `if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \ RUNTESTFLAGS = @AM_RUNTESTFLAGS@ +subdir = testsuite mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = ../include/config.h CONFIG_CLEAN_FILES = +DIST_SOURCES = DIST_COMMON = ChangeLog Makefile.am Makefile.in -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: @@ -147,8 +149,6 @@ TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -subdir = testsuite - distdir: $(DISTFILES) here=`cd $(top_builddir) && pwd`; \ top_distdir=`cd $(top_distdir) && pwd`; \ @@ -158,7 +158,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ + cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ @@ -222,7 +222,7 @@ uninstall: uninstall-am all-am: Makefile all-redirect: all-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install + $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install installdirs: @@ -257,8 +257,8 @@ maintainer-clean: maintainer-clean-am .PHONY: tags distdir check-DEJAGNU info-am info dvi-am dvi check \ check-am installcheck-am installcheck install-info-am install-info \ install-exec-am install-exec install-data-am install-data install-am \ -install uninstall-am uninstall all-redirect all-am all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ +install uninstall-am uninstall all-redirect all-am all install-strip \ +installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean |