aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/doc/install.texi39
-rw-r--r--gcc/java/ChangeLog11
-rw-r--r--gcc/java/Make-lang.in19
-rw-r--r--gcc/java/gcj.texi91
-rw-r--r--libjava/ChangeLog33
-rw-r--r--libjava/Makefile.am146
-rw-r--r--libjava/Makefile.in223
-rwxr-xr-xlibjava/configure402
-rw-r--r--libjava/configure.ac206
-rw-r--r--libjava/contrib/aot-compile-rpm.in97
-rw-r--r--libjava/contrib/aot-compile.in88
-rw-r--r--libjava/contrib/aotcompile.py.in412
-rw-r--r--libjava/contrib/classfile.py221
-rw-r--r--libjava/contrib/rebuild-gcj-db.in27
-rw-r--r--libjava/gcj/Makefile.in27
-rw-r--r--libjava/include/Makefile.in27
-rw-r--r--libjava/testsuite/Makefile.in27
18 files changed, 2043 insertions, 65 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9a0c283..f6da145 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2008-07-02 Joshua Sumali <jsumali@redhat.com>
+
+ * doc/install.texi (--enable-java-home): Document.
+ (--enable-aot-compile-rpm): Likewise.
+ (--with-arch-directory): Likewise.
+ (--with-os-directory): Likewise.
+ (--with-origin-name): Likewise.
+ (--with-arch-suffix): Likewise.
+ (--with-jvm-root-dir): Likewise.
+ (--with-jvm-jar-dir): Likewise.
+ (--with-python-dir): Likewise.
+
2008-07-02 Richard Guenther <rguenther@suse.de>
* tree-ssa-forwprop.c (can_propagate_from): Exclude loads
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index b1b8965..86c2f46 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1607,6 +1607,45 @@ Use installed @samp{zlib} rather than that included with GCC@.
@item --with-win32-nlsapi=ansi, unicows or unicode
Indicates how MinGW @samp{libgcj} translates between UNICODE
characters and the Win32 API@.
+
+@item --enable-java-home
+If enabled, this creates a JPackage compatible SDK environment during install.
+Note that if --enable-java-home is used, --with-arch-directory=ARCH must also
+be specified.
+
+@item --with-arch-directory=ARCH
+Specifies the name to use for the @file{jre/lib/ARCH} directory in the SDK
+environment created when --enable-java-home is passed. Typical names for this
+directory include i386, amd64, ia64, etc.
+
+@item --with-os-directory=DIR
+Specifies the OS directory for the SDK include directory. This is set to auto
+detect, and is typically 'linux'.
+
+@item --with-origin-name=NAME
+Specifies the JPackage origin name. This defaults to the 'gcj' in
+java-1.5.0-gcj.
+
+@item --with-arch-suffix=SUFFIX
+Specifies the suffix for the sdk directory. Defaults to the empty string.
+Examples include '.x86_64' in 'java-1.5.0-gcj-1.5.0.0.x86_64'.
+
+@item --with-jvm-root-dir=DIR
+Specifies where to install the SDK. Default is $(prefix)/lib/jvm.
+
+@item --with-jvm-jar-dir=DIR
+Specifies where to install jars. Default is $(prefix)/lib/jvm-exports.
+
+@item --with-python-dir=DIR
+Specifies where to install the Python modules used for aot-compile. DIR should
+not include the prefix used in installation. For example, if the Python modules
+are to be installed in /usr/lib/python2.5/site-packages, then
+--with-python-dir=/lib/python2.5/site-packages should be passed. If this is
+not specified, then the Python modules are installed in $(prefix)/share/python.
+
+@item --enable-aot-compile-rpm
+Adds aot-compile-rpm to the list of installed scripts.
+
@table @code
@item ansi
Use the single-byte @code{char} and the Win32 A functions natively,
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index b5ceb09..33ac01f 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,14 @@
+2008-06-30 Joshua Sumali <jsumali@redhat.com>
+
+ * Make-lang.in (JAVA_MANFILES): Add doc/aot-compile.1 and
+ doc/rebuild-gcj-db.1
+ (java.uninstall): Likewise.
+ (java.maintainer-clean): Likewise.
+ (aot-compile.pod): New rule.
+ (rebuild-gcj-db.pod): New rule.
+ (java.install-man): Install doc/aot-compile.1 and doc/rebuild-gcj-db.1
+ * gcj.texi: Add new sections for aot-compile and rebuild-gcj-db.
+
2008-06-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* Make-lang.in (java/jcf-io.o-warn): New.
diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in
index badbb7f..cab40af 100644
--- a/gcc/java/Make-lang.in
+++ b/gcc/java/Make-lang.in
@@ -146,8 +146,9 @@ java.pdf: $(JAVA_PDFFILES)
java.html: $(build_htmldir)/java/index.html
JAVA_MANFILES = doc/gcj.1 doc/jcf-dump.1 doc/gij.1 \
- doc/jv-convert.1 doc/grmic.1\
- doc/gcj-dbtool.1 doc/gc-analyze.1
+ doc/jv-convert.1 doc/grmic.1 \
+ doc/gcj-dbtool.1 doc/gc-analyze.1 doc/aot-compile.1 \
+ doc/rebuild-gcj-db.1
java.man: $(JAVA_MANFILES)
@@ -192,6 +193,8 @@ java.uninstall:
-rm -rf $(DESTDIR)$(man1dir)/gij$(man1ext)
-rm -rf $(DESTDIR)$(man1dir)/jv-convert$(man1ext)
-rm -rf $(DESTDIR)$(man1dir)/gcj-dbtool$(man1ext)
+ -rm -rf $(DESTDIR)$(man1dir)/aot-compile$(man1ext)
+ -rm -rf $(DESTDIR)$(man1dir)/rebuild-gcj-db$(man1ext)
java.install-info: $(DESTDIR)$(infodir)/gcj.info
@@ -226,6 +229,8 @@ java.maintainer-clean:
-rm -f $(docobjdir)/grmic.1
-rm -f $(docobjdir)/gcj-dbtool.1
-rm -f $(docobjdir)/gc-analyze.1
+ -rm -f $(docobjdir)/aot-compile.1
+ -rm -f $(docobjdir)/rebuild-gcj-db.1
#
# Stage hooks:
# The main makefile has already created stage?/java.
@@ -356,15 +361,21 @@ gcj-dbtool.pod: java/gcj.texi
-$(TEXI2POD) -D gcj-dbtool < $< > $@
gc-analyze.pod: java/gcj.texi
-$(TEXI2POD) -D gc-analyze < $< > $@
+aot-compile.pod: java/gcj.texi
+ -$(TEXI2POD) -D aot-compile < $< > $@
+rebuild-gcj-db.pod: java/gcj.texi
+ -$(TEXI2POD) -D rebuild-gcj-db < $< > $@
# Install the man pages.
java.install-man: installdirs \
$(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext) \
$(JAVA_TARGET_INDEPENDENT_BIN_TOOLS:%=doc/%.1) \
doc/gij.1 doc/jv-convert.1 doc/grmic.1 \
- doc/gcj-dbtool.1 doc/gc-analyze.1
+ doc/gcj-dbtool.1 doc/gc-analyze.1 \
+ doc/aot-compile.1 doc/rebuild-gcj-db.1
for tool in $(JAVA_TARGET_INDEPENDENT_BIN_TOOLS) \
- gij jv-convert grmic gcj-dbtool gc-analyze ; do \
+ gij jv-convert grmic gcj-dbtool gc-analyze aot-compile \
+ rebuild-gcj-db; do \
tool_transformed_name=`echo $$tool|sed '$(program_transform_name)'`; \
man_name=$(DESTDIR)$(man1dir)/$${tool_transformed_name}$(man1ext); \
rm -f $$man_name ; \
diff --git a/gcc/java/gcj.texi b/gcc/java/gcj.texi
index 94172d8..179e620 100644
--- a/gcc/java/gcj.texi
+++ b/gcc/java/gcj.texi
@@ -72,6 +72,11 @@ man page gfdl(7).
Generate stubs for Remote Method Invocation.
* gc-analyze: (gcj)Invoking gc-analyze.
Analyze Garbage Collector (GC) memory dumps.
+* aot-compile: (gcj)Invoking aot-compile.
+ Compile bytecode to native and generate databases.
+* rebuild-gcj-db: (gcj)Invoking rebuild-gcj-db.
+ Merge the per-solib databases made by aot-compile
+ into one system-wide database.
@end direntry
@end format
@@ -115,6 +120,9 @@ files and object files, and it can read both Java source code and
* Invoking jv-convert:: Converting from one encoding to another
* Invoking grmic:: Generate stubs for Remote Method Invocation.
* Invoking gc-analyze:: Analyze Garbage Collector (GC) memory dumps.
+* Invoking aot-compile:: Compile bytecode to native and generate databases.
+* Invoking rebuild-gcj-db:: Merge the per-solib databases made by aot-compile
+ into one system-wide database.
* About CNI:: Description of the Compiled Native Interface
* System properties:: Modifying runtime behavior of the libgcj library
* Resources:: Where to look for more information
@@ -921,7 +929,7 @@ gcj-dbtool [@option{-0}] [@option{-}] [@option{-n}] [@option{-a}] [@option{-f}]
[@option{-v}] [@option{-m}] [@option{--version}] [@option{--help}]
@c man end
-@c man begin SEEALSO gij
+@c man begin SEEALSO gcj-dbtool
gcc(1), gcj(1), gcjh(1), jcf-dump(1), gfdl(7),
and the Info entries for @file{gcj} and @file{gcc}.
@c man end
@@ -1219,6 +1227,87 @@ Print version information, then exit.
@c man end
+@node Invoking aot-compile
+@chapter Invoking aot-compile
+
+@c man title aot-compile Compile bytecode to native and generate databases
+
+@ignore
+
+@c man begin SYNOPSIS aot-compile
+aot-compile [@option{OPTION}] @dots{} @var{SRCDIR} @var{DSTDIR}
+
+aot-compile [@option{-M, --make}=@var{PATH}] [@option{-C, --gcj}=@var{PATH}]
+ [@option{-D, --dbtool}=@var{PATH}] [@option{-m, --makeflags}=@var{FLAGS}]
+ [@option{-c, --gcjflags}=@var{FLAGS}] [@option{-l, --ldflags}=@var{FLAGS}]
+ [@option{-e, --exclude}=@var{PATH}]
+@c man end
+
+@c man begin SEEALSO aot-compile
+gcc(1), gcj(1), gcjh(1), jcf-dump(1), gfdl(7),
+and the Info entries for @file{gcj} and @file{gcc}.
+@c man end
+
+@end ignore
+
+@c man begin DESCRIPTION aot-compile
+@code{aot-compile} is a script that searches a directory for Java bytecode
+(as class files, or in jars) and uses @code{gcj} to compile it to native
+code and generate the databases from it.
+@c man end
+
+@c man begin OPTIONS aot-compile
+@table @gcctabopt
+@item -M, --make=@var{PATH}
+Specify the path to the @code{make} executable to use.
+
+@item -C, --gcj=@var{PATH}
+Specify the path to the @code{gcj} executable to use.
+
+@item -D, --dbtool=@var{PATH}
+Specify the path to the @code{gcj-dbtool} executable to use.
+
+@item -m, --makeflags=@var{FLAGS}
+Specify flags to pass to @code{make} during the build.
+
+@item -c, --gcjflags=@var{FLAGS}
+Specify flags to pass to @code{gcj} during compilation, in addition to
+'-fPIC -findirect-dispatch -fjni'.
+
+@item -l, --ldflags=@var{FLAGS}
+Specify flags to pass to @code{gcj} during linking, in addition to
+'-Wl,-Bsymbolic'.
+
+@item -e, --exclude=@var{PATH}
+Do not compile @var{PATH}.
+
+@end table
+
+@c man end
+
+@node Invoking rebuild-gcj-db
+@chapter Invoking rebuild-gcj-db
+
+@c man title rebuild-gcj-db Merge the per-solib databases made by aot-compile into one system-wide database.
+@ignore
+
+@c man begin SYNOPSIS rebuild-gcj-db
+rebuild-gcj-db
+@c man end
+
+@c man begin SEEALSO rebuild-gcj-db
+gcc(1), gcj(1), gcjh(1), jcf-dump(1), gfdl(7),
+and the Info entries for @file{gcj} and @file{gcc}.
+@c man end
+
+@end ignore
+
+@c man begin DESCRIPTION rebuild-gcj-db
+@code{rebuild-gcj-db} is a script that merges the per-solib databases made by
+@code{aot-compile} into one system-wide database so @code{gij} can find the
+solibs.
+@c man end
+
@node About CNI
@chapter About CNI
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 01f31a5..d0c1d06 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,36 @@
+2008-06-30 Joshua Sumali <jsumali@redhat.com>
+ Andrew Haley <aph@redhat.com>
+
+ * configure.ac (java-home): new AC_ARG_ENABLE.
+ (aot-compile-rpm): Likewise.
+ (CREATE_JAVA_HOME): new AM_CONDITIONAL.
+ (INSTALL_AOT_RPM): Likewise.
+ (gcc-suffix): new AC_ARG_WITH.
+ (arch-directory): Likewise.
+ (os-directory): Likewise.
+ (origin-name): Likewise.
+ (arch-suffix): Likewise.
+ (jvm-root-dir): Likewise.
+ (jvm-jar-dir): Likewise.
+ (python-dir): Likewise.
+ (AC_CONFIG_FILES): Add contrib/aotcompile.py, contrib/aot-compile,
+ contrib/aot-compile-rpm, contrib/rebuild-gcj-db.
+ (gcjsubdir): New AC_SUBST.
+ * Makefile.am (install-data-local): Install Python modules for
+ aot-compile. Also install an sdk style directory if
+ --enable-java-home is passed to configure.
+ (bin_SCRIPTS): Add
+ contrib/rebuild-gcj-db and contrib/aot-compile.
+ (gcjsubdir): Add.
+ (db_pathtail): Redefine in terms of gcjsubdir.
+ * contrib/aot-compile.in: New file.
+ * contrib/aotcompile.py.in: Likewise.
+ * contrib/aot-compile-rpm.in: Likewise.
+ * contrib/classfile.py: Likewise.
+ * contrib/rebuild-gcj-db.in: Likewise.
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+
2008-06-28 Matthias Klose <doko@ubuntu.com>
Import GNU Classpath (classpath-0_97_2-release).
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index 559f73a..c074f57 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -74,7 +74,8 @@ endif
## Name of the default .db.
db_name = classmap.db
## Compiler specific component of the .db file
-db_pathtail = gcj-$(gcc_version)/$(db_name)
+gcjsubdir = @gcjsubdir@
+db_pathtail = $(gcjsubdir)/$(db_name)
## For now, only on native systems. FIXME.
if NATIVE
@@ -85,9 +86,13 @@ bin_PROGRAMS = jv-convert gij grmic grmiregistry gcj-dbtool \
## It is convenient to actually build and install the default database
## when gcj-dbtool is available.
dbexec_DATA = $(db_name)
-endif
+endif
-bin_SCRIPTS = addr2name.awk
+bin_SCRIPTS = addr2name.awk contrib/rebuild-gcj-db contrib/aot-compile
+
+if INSTALL_AOT_RPM
+bin_SCRIPTS += contrib/aot-compile-rpm
+endif
if BUILD_ECJ1
## We build ecjx and not ecj1 because in one mode, ecjx will not work
@@ -528,7 +533,140 @@ install-data-local:
$(INSTALL_DATA) $(srcdir)/'gnu/java/nio/PipeImpl$$SinkChannelImpl.h' $(DESTDIR)$(gxx_include_dir)/gnu/java/nio/
$(INSTALL_DATA) $(srcdir)/'gnu/java/nio/PipeImpl$$SourceChannelImpl.h' $(DESTDIR)$(gxx_include_dir)/gnu/java/nio/
## Don't install java/nio/DirectByteBufferImpl$$ReadWrite.h here. It's for internal use only.
-
+## Install Python modules for aot-compile.
+ $(mkinstalldirs) $(DESTDIR)$(python_mod_dir); \
+ $(INSTALL_DATA) $(srcdir)/contrib/classfile.py \
+ $(DESTDIR)$(python_mod_dir)/classfile.py; \
+ $(INSTALL_DATA) contrib/aotcompile.py \
+ $(DESTDIR)$(python_mod_dir)/aotcompile.py;
+if CREATE_JAVA_HOME
+## Create sdk style directories
+ $(mkinstalldirs) $(DESTDIR)$(JRE_BIN_DIR)
+ $(mkinstalldirs) $(DESTDIR)$(SDK_BIN_DIR)
+ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)
+ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)
+ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)
+ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS)
+ relative() { \
+ $(PERL) -e 'use File::Spec; \
+ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \
+ }; \
+ RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \
+ ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/java; \
+ ln -sf $$RELATIVE/`echo gjar | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/jar; \
+ ln -sf $$RELATIVE/`echo gjdoc | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/javadoc; \
+ ln -sf $$RELATIVE/`echo grmic | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/rmic; \
+ ln -sf $$RELATIVE/`echo gjavah | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/javah; \
+ ln -sf $$RELATIVE/ecj $(DESTDIR)$(SDK_BIN_DIR)/javac; \
+ ln -sf $$RELATIVE/`echo gappletviewer | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/appletviewer; \
+ ln -sf $$RELATIVE/`echo gjarsigner | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/jarsigner; \
+ ln -sf $$RELATIVE/`echo grmiregistry | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/rmiregistry; \
+ ln -sf $$RELATIVE/`echo gkeytool | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/keytool; \
+ ln -sf $$RELATIVE/`echo gorbd | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/orbd; \
+ ln -sf $$RELATIVE/`echo gnative2ascii | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/native2ascii; \
+ ln -sf $$RELATIVE/`echo grmid | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/rmid; \
+ ln -sf $$RELATIVE/`echo gtnameserv | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/tnameserv; \
+ ln -sf $$RELATIVE/`echo gserialver | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(SDK_BIN_DIR)/serialver; \
+ RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(JRE_BIN_DIR)); \
+ ln -sf $$RELATIVE/`echo grmiregistry | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(JRE_BIN_DIR)/rmiregistry; \
+ ln -sf $$RELATIVE/`echo gkeytool | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(JRE_BIN_DIR)/keytool; \
+ ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(JRE_BIN_DIR)/java; \
+ ln -sf $$RELATIVE/`echo gorbd | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(JRE_BIN_DIR)/orbd; \
+ ln -sf $$RELATIVE/`echo grmid | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(JRE_BIN_DIR)/rmid; \
+ ln -sf $$RELATIVE/`echo gtnameserv | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+ $(DESTDIR)$(JRE_BIN_DIR)/tnameserv; \
+ $(mkinstalldirs) $(DESTDIR)$(JVM_JAR_DIR); \
+ version=$(JAVA_VERSION).$(BUILD_VERSION); \
+ working_dir=`pwd`; \
+ cd $(DESTDIR)$(JVM_JAR_DIR); \
+ for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \
+ jndi-ldap jndi-rmi jsse sasl; \
+ do \
+ ln -s $$RELATIVE/$$jarname.jar $$jarname-$$version.jar; \
+ done; \
+ for jar in *-$$version.jar; \
+ do \
+ ln -sf $$jar $$(echo $$jar | sed "s|-$$version.jar|-$(JAVA_VERSION).jar|g"); \
+ ln -sf $$jar $$(echo $$jar | sed "s|-$$version.jar|.jar|g"); \
+ done; \
+ cd $$working_dir; \
+ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/security; \
+ RELATIVE=$$(relative $(DESTDIR)$(libdir)/security \
+ $(DESTDIR)$(JRE_LIB_DIR)/security); \
+ cd $(DESTDIR)$(JRE_LIB_DIR)/security; \
+ ln -sf $$RELATIVE/classpath.security java.security; \
+ cd $$working_dir; \
+ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/linux; \
+ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client; \
+ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server; \
+ $(mkinstalldirs) $(DESTDIR)$(SDK_LIB_DIR); \
+ cd $(DESTDIR)$(JRE_LIB_DIR); \
+ for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \
+ jndi-ldap jndi-rmi jsse sasl; \
+ do \
+ ln -s rt.jar $$jarname.jar; \
+ done; \
+ cd $$working_dir; \
+ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+ $(DESTDIR)$(JRE_LIB_DIR)); \
+ ln -sf $$RELATIVE/libgcj-$(gcc_version).jar \
+ $(DESTDIR)$(JRE_LIB_DIR)/rt.jar; \
+ RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)); \
+ ln -sf $$RELATIVE/libjawt.so \
+ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/libjawt.so; \
+ RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client); \
+ ln -sf $$RELATIVE/libjvm.so \
+ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client/libjvm.so; \
+ RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server); \
+ ln -sf $$RELATIVE/libjvm.so \
+ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server/libjvm.so; \
+ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+ $(DESTDIR)$(SDK_LIB_DIR)); \
+ ln -sf $$RELATIVE/libgcj-tools-$(gcc_version).jar \
+ $(DESTDIR)$(SDK_LIB_DIR)/tools.jar; \
+ for headername in jawt jni; do \
+ DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \
+ -print-file-name=include/$$headername.h)); \
+ RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \
+ $(DESTDIR)$(SDK_INCLUDE_DIR)); \
+ ln -sf $$RELATIVE/$$headername.h \
+ $(DESTDIR)$(SDK_INCLUDE_DIR)/$$headername.h; \
+ done; \
+ for headername in jawt_md jni_md; do \
+ DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \
+ -print-file-name=include/$$headername.h)); \
+ RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \
+ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux); \
+ ln -sf $$RELATIVE/$$headername.h \
+ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux/$$headername.h; \
+ done; \
+ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); \
+ ln -sf $$RELATIVE/src-$(gcc_version).zip \
+ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)/src.zip;
+endif
## ################################################################
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index c42c692..ba48788 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -52,18 +52,19 @@ target_triplet = @target@
@NATIVE_TRUE@ gnative2ascii$(EXEEXT) gorbd$(EXEEXT) \
@NATIVE_TRUE@ grmid$(EXEEXT) gserialver$(EXEEXT) \
@NATIVE_TRUE@ gtnameserv$(EXEEXT) gc-analyze$(EXEEXT)
+@INSTALL_AOT_RPM_TRUE@am__append_5 = contrib/aot-compile-rpm
@BUILD_ECJ1_TRUE@libexecsub_PROGRAMS = ecjx$(EXEEXT)
-@ANONVERSCRIPT_TRUE@am__append_5 = -Wl,--version-script=$(srcdir)/libgcj.ver
-@USING_GCC_TRUE@am__append_6 = $(WARNINGS)
-@USING_BOEHMGC_TRUE@am__append_7 = boehm.cc
-@USING_NOGC_TRUE@am__append_8 = nogc.cc
-@USING_POSIX_PLATFORM_TRUE@am__append_9 = posix.cc
-@USING_WIN32_PLATFORM_TRUE@am__append_10 = win32.cc
-@USING_DARWIN_CRT_TRUE@am__append_11 = darwin.cc
-@USING_POSIX_THREADS_TRUE@am__append_12 = posix-threads.cc
-@USING_WIN32_THREADS_TRUE@am__append_13 = win32-threads.cc
-@USING_NO_THREADS_TRUE@am__append_14 = no-threads.cc
-@ANONVERSCRIPT_TRUE@am__append_15 = $(srcdir)/libgcj.ver
+@ANONVERSCRIPT_TRUE@am__append_6 = -Wl,--version-script=$(srcdir)/libgcj.ver
+@USING_GCC_TRUE@am__append_7 = $(WARNINGS)
+@USING_BOEHMGC_TRUE@am__append_8 = boehm.cc
+@USING_NOGC_TRUE@am__append_9 = nogc.cc
+@USING_POSIX_PLATFORM_TRUE@am__append_10 = posix.cc
+@USING_WIN32_PLATFORM_TRUE@am__append_11 = win32.cc
+@USING_DARWIN_CRT_TRUE@am__append_12 = darwin.cc
+@USING_POSIX_THREADS_TRUE@am__append_13 = posix-threads.cc
+@USING_WIN32_THREADS_TRUE@am__append_14 = win32-threads.cc
+@USING_NO_THREADS_TRUE@am__append_15 = no-threads.cc
+@ANONVERSCRIPT_TRUE@am__append_16 = $(srcdir)/libgcj.ver
DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \
$(srcdir)/../config.guess $(srcdir)/../config.sub \
$(srcdir)/../depcomp $(srcdir)/../install-sh \
@@ -72,11 +73,15 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \
$(srcdir)/Makefile.in $(srcdir)/libgcj-test.spec.in \
$(srcdir)/libgcj.pc.in $(srcdir)/libgcj.spec.in \
$(srcdir)/sources.am $(top_srcdir)/configure \
+ $(top_srcdir)/contrib/aot-compile-rpm.in \
+ $(top_srcdir)/contrib/aot-compile.in \
+ $(top_srcdir)/contrib/aotcompile.py.in \
+ $(top_srcdir)/contrib/rebuild-gcj-db.in \
$(top_srcdir)/scripts/jar.in COPYING ChangeLog NEWS THANKS
@MAINTAINER_MODE_TRUE@@NATIVE_TRUE@noinst_PROGRAMS = \
@MAINTAINER_MODE_TRUE@@NATIVE_TRUE@ gen-from-JIS$(EXEEXT)
-@NATIVE_TRUE@@USE_LIBGCJ_BC_TRUE@am__append_16 = libgcj_bc.la
-@XLIB_AWT_TRUE@am__append_17 = $(xlib_nat_headers)
+@NATIVE_TRUE@@USE_LIBGCJ_BC_TRUE@am__append_17 = libgcj_bc.la
+@XLIB_AWT_TRUE@am__append_18 = $(xlib_nat_headers)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/libltdl/acinclude.m4 \
@@ -109,7 +114,9 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
CONFIG_HEADER = $(top_builddir)/include/config.h \
$(top_builddir)/gcj/libgcj-config.h
CONFIG_CLEAN_FILES = libgcj.pc libgcj.spec libgcj-test.spec \
- scripts/jar java/io/natFile.cc java/lang/natConcreteProcess.cc \
+ contrib/aotcompile.py contrib/aot-compile \
+ contrib/aot-compile-rpm contrib/rebuild-gcj-db scripts/jar \
+ java/io/natFile.cc java/lang/natConcreteProcess.cc \
java/net/natVMInetAddress.cc java/net/natVMNetworkInterface.cc \
gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/natPlainDatagramSocketImpl.cc \
@@ -581,6 +588,7 @@ AWK = @AWK@
BACKTRACESPEC = @BACKTRACESPEC@
BUILD_ECJ1_FALSE = @BUILD_ECJ1_FALSE@
BUILD_ECJ1_TRUE = @BUILD_ECJ1_TRUE@
+BUILD_VERSION = @BUILD_VERSION@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -588,6 +596,9 @@ CHECKREFSPEC = @CHECKREFSPEC@
CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CPU = @CPU@
+CREATE_JAVA_HOME_FALSE = @CREATE_JAVA_HOME_FALSE@
+CREATE_JAVA_HOME_TRUE = @CREATE_JAVA_HOME_TRUE@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
@@ -617,6 +628,7 @@ GCJDEPMODE = @GCJDEPMODE@
GCJFLAGS = @GCJFLAGS@
GCJH = @GCJH@
GCJVERSION = @GCJVERSION@
+GCJ_BIN_DIR = @GCJ_BIN_DIR@
GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
GCLIBS = @GCLIBS@
GCSPEC = @GCSPEC@
@@ -629,6 +641,8 @@ GTK_LIBS = @GTK_LIBS@
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
IEEESPEC = @IEEESPEC@
INCLTDL = @INCLTDL@
+INSTALL_AOT_RPM_FALSE = @INSTALL_AOT_RPM_FALSE@
+INSTALL_AOT_RPM_TRUE = @INSTALL_AOT_RPM_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_ECJ_JAR_FALSE = @INSTALL_ECJ_JAR_FALSE@
INSTALL_ECJ_JAR_TRUE = @INSTALL_ECJ_JAR_TRUE@
@@ -644,13 +658,22 @@ JAVA_HOME_SET_FALSE = @JAVA_HOME_SET_FALSE@
JAVA_HOME_SET_TRUE = @JAVA_HOME_SET_TRUE@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
+JAVA_VERSION = @JAVA_VERSION@
JC1GCSPEC = @JC1GCSPEC@
+JRE_BIN_DIR = @JRE_BIN_DIR@
+JRE_DIR = @JRE_DIR@
+JRE_LIB_DIR = @JRE_LIB_DIR@
+JRE_LNK = @JRE_LNK@
+JVM_JAR_DIR = @JVM_JAR_DIR@
+JVM_JAR_ROOT_DIR = @JVM_JAR_ROOT_DIR@
+JVM_ROOT_DIR = @JVM_ROOT_DIR@
LD = @LD@
LDFLAGS = @LDFLAGS@
LD_FINISH_STATIC_SPEC = @LD_FINISH_STATIC_SPEC@
LD_START_STATIC_SPEC = @LD_START_STATIC_SPEC@
LIBART_CFLAGS = @LIBART_CFLAGS@
LIBART_LIBS = @LIBART_LIBS@
+LIBDIR = @LIBDIR@
LIBFFI = @LIBFFI@
LIBFFIINCS = @LIBFFIINCS@
LIBGCJDEBUG = @LIBGCJDEBUG@
@@ -673,6 +696,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKE = @MAKE@
MAKEINFO = @MAKEINFO@
NATIVE_FALSE = @NATIVE_FALSE@
NATIVE_TRUE = @NATIVE_TRUE@
@@ -680,6 +704,7 @@ NEEDS_DATA_START_FALSE = @NEEDS_DATA_START_FALSE@
NEEDS_DATA_START_TRUE = @NEEDS_DATA_START_TRUE@
NM = nm
OBJEXT = @OBJEXT@
+OS = @OS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -691,6 +716,11 @@ PERL = @PERL@
PKG_CONFIG = @PKG_CONFIG@
PLATFORM = @PLATFORM@
RANLIB = @RANLIB@
+SDK_BIN_DIR = @SDK_BIN_DIR@
+SDK_DIR = @SDK_DIR@
+SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@
+SDK_LIB_DIR = @SDK_LIB_DIR@
+SDK_LNK = @SDK_LNK@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -777,7 +807,9 @@ dbexecdir = @dbexecdir@
exec_prefix = @exec_prefix@
extra_gij_ldflags = @extra_gij_ldflags@
extra_ldflags = @extra_ldflags@
-extra_ldflags_libjava = @extra_ldflags_libjava@ $(am__append_5)
+extra_ldflags_libjava = @extra_ldflags_libjava@ $(am__append_6)
+gcc_suffix = @gcc_suffix@
+gcjsubdir = @gcjsubdir@
gxx_include_dir = @gxx_include_dir@
here = @here@
host = @host@
@@ -802,6 +834,8 @@ multi_basedir = @multi_basedir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+python_mod_dir = @python_mod_dir@
+python_mod_dir_expanded = @python_mod_dir_expanded@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
@@ -858,9 +892,10 @@ jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar \
@JAVA_HOME_SET_FALSE@BOOT_CLASS_PATH_DIR = $(jardir)/libgcj-$(gcc_version).jar
@JAVA_HOME_SET_TRUE@BOOT_CLASS_PATH_DIR = $(JAVA_HOME)/lib/rt.jar
db_name = classmap.db
-db_pathtail = gcj-$(gcc_version)/$(db_name)
+db_pathtail = $(gcjsubdir)/$(db_name)
@NATIVE_TRUE@dbexec_DATA = $(db_name)
-bin_SCRIPTS = addr2name.awk
+bin_SCRIPTS = addr2name.awk contrib/rebuild-gcj-db contrib/aot-compile \
+ $(am__append_5)
GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated
GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \
$(LDFLAGS) -o $@
@@ -898,7 +933,7 @@ AM_GCJFLAGS = \
--encoding=UTF-8 \
-Wno-deprecated -fbootstrap-classes
-AM_CFLAGS = @LIBGCJ_CFLAGS@ $(am__append_6)
+AM_CFLAGS = @LIBGCJ_CFLAGS@ $(am__append_7)
@SUPPRESS_LIBGCJ_BC_FALSE@LIBGCJ_BC_FLAGS = -findirect-dispatch -fno-indirect-classes
@SUPPRESS_LIBGCJ_BC_TRUE@LIBGCJ_BC_FLAGS =
PEDANTIC_CFLAGS = -ansi -pedantic -Wall -Wno-long-long
@@ -923,9 +958,9 @@ libgij_la_LDFLAGS = -rpath $(toolexeclibdir) \
@INTERPRETER_TRUE@libgcj_interpret_source_files = jvmti.cc interpret.cc
libgcj_la_SOURCES = prims.cc jni.cc exception.cc stacktrace.cc link.cc \
defineclass.cc verify.cc $(libgcj_interpret_source_files) \
- $(nat_source_files) $(am__append_7) $(am__append_8) \
- $(am__append_9) $(am__append_10) $(am__append_11) \
- $(am__append_12) $(am__append_13) $(am__append_14)
+ $(nat_source_files) $(am__append_8) $(am__append_9) \
+ $(am__append_10) $(am__append_11) $(am__append_12) \
+ $(am__append_13) $(am__append_14) $(am__append_15)
nat_files = $(nat_source_files:.cc=.lo)
xlib_nat_files = $(xlib_nat_source_files:.cc=.lo)
@@ -949,7 +984,7 @@ libgcj_la_LIBADD = \
libgcj_la_DEPENDENCIES = libgcj-$(gcc_version).jar java/lang/Object.lo \
java/lang/Class.lo java/process-$(PLATFORM).lo \
$(all_packages_source_files:.list=.lo) $(LIBLTDL) \
- $(libgcj_la_LIBADD) $(am__append_15)
+ $(libgcj_la_LIBADD) $(am__append_16)
libgcj_la_LINK = $(LIBLINK)
EXTRA_libgcj_la_SOURCES = java/lang/Object.java
libgcj_tools_la_SOURCES = classpath/tools/tools.zip
@@ -8192,7 +8227,7 @@ ECJX_BASE_FLAGS = -findirect-dispatch \
@NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs libgcj.la
@NATIVE_FALSE@ecjx_DEPENDENCIES =
@NATIVE_TRUE@ecjx_DEPENDENCIES = libgcj.la libgcj.spec \
-@NATIVE_TRUE@ $(am__append_16)
+@NATIVE_TRUE@ $(am__append_17)
gappletviewer_SOURCES =
gappletviewer_LDFLAGS = --main=gnu.classpath.tools.appletviewer.Main \
-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
@@ -8401,7 +8436,7 @@ gnu/gcj/xlib/natXImage.cc \
gnu/gcj/xlib/natXUnmapEvent.cc
sourcesdir = $(jardir)
-headers_to_make = $(nat_headers) $(am__append_17)
+headers_to_make = $(nat_headers) $(am__append_18)
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
@@ -8500,6 +8535,14 @@ libgcj.spec: $(top_builddir)/config.status $(srcdir)/libgcj.spec.in
cd $(top_builddir) && $(SHELL) ./config.status $@
libgcj-test.spec: $(top_builddir)/config.status $(srcdir)/libgcj-test.spec.in
cd $(top_builddir) && $(SHELL) ./config.status $@
+contrib/aotcompile.py: $(top_builddir)/config.status $(top_srcdir)/contrib/aotcompile.py.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+contrib/aot-compile: $(top_builddir)/config.status $(top_srcdir)/contrib/aot-compile.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+contrib/aot-compile-rpm: $(top_builddir)/config.status $(top_srcdir)/contrib/aot-compile-rpm.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+contrib/rebuild-gcj-db: $(top_builddir)/config.status $(top_srcdir)/contrib/rebuild-gcj-db.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
scripts/jar: $(top_builddir)/config.status $(top_srcdir)/scripts/jar.in
cd $(top_builddir) && $(SHELL) ./config.status $@
install-dbexecLTLIBRARIES: $(dbexec_LTLIBRARIES)
@@ -9972,7 +10015,7 @@ distclean-tags:
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
- $(mkdir_p) $(distdir)/. $(distdir)/.. $(distdir)/../config $(distdir)/libltdl $(distdir)/scripts
+ $(mkdir_p) $(distdir)/. $(distdir)/.. $(distdir)/../config $(distdir)/contrib $(distdir)/libltdl $(distdir)/scripts
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -12189,6 +12232,136 @@ install-data-local:
$(INSTALL_DATA) $(srcdir)/'gnu/java/net/PlainSocketImpl$$SocketOutputStream.h' $(DESTDIR)$(gxx_include_dir)/gnu/java/net/
$(INSTALL_DATA) $(srcdir)/'gnu/java/nio/PipeImpl$$SinkChannelImpl.h' $(DESTDIR)$(gxx_include_dir)/gnu/java/nio/
$(INSTALL_DATA) $(srcdir)/'gnu/java/nio/PipeImpl$$SourceChannelImpl.h' $(DESTDIR)$(gxx_include_dir)/gnu/java/nio/
+ $(mkinstalldirs) $(DESTDIR)$(python_mod_dir); \
+ $(INSTALL_DATA) $(srcdir)/contrib/classfile.py \
+ $(DESTDIR)$(python_mod_dir)/classfile.py; \
+ $(INSTALL_DATA) contrib/aotcompile.py \
+ $(DESTDIR)$(python_mod_dir)/aotcompile.py;
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_BIN_DIR)
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_BIN_DIR)
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS)
+@CREATE_JAVA_HOME_TRUE@ relative() { \
+@CREATE_JAVA_HOME_TRUE@ $(PERL) -e 'use File::Spec; \
+@CREATE_JAVA_HOME_TRUE@ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \
+@CREATE_JAVA_HOME_TRUE@ }; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/java; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gjar | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/jar; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gjdoc | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/javadoc; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo grmic | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/rmic; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gjavah | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/javah; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/ecj $(DESTDIR)$(SDK_BIN_DIR)/javac; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gappletviewer | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/appletviewer; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gjarsigner | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/jarsigner; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo grmiregistry | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/rmiregistry; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gkeytool | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/keytool; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gorbd | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/orbd; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gnative2ascii | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/native2ascii; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo grmid | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/rmid; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gtnameserv | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/tnameserv; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gserialver | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_BIN_DIR)/serialver; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(JRE_BIN_DIR)); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo grmiregistry | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_BIN_DIR)/rmiregistry; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gkeytool | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_BIN_DIR)/keytool; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_BIN_DIR)/java; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gorbd | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_BIN_DIR)/orbd; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo grmid | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_BIN_DIR)/rmid; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gtnameserv | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_BIN_DIR)/tnameserv; \
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JVM_JAR_DIR); \
+@CREATE_JAVA_HOME_TRUE@ version=$(JAVA_VERSION).$(BUILD_VERSION); \
+@CREATE_JAVA_HOME_TRUE@ working_dir=`pwd`; \
+@CREATE_JAVA_HOME_TRUE@ cd $(DESTDIR)$(JVM_JAR_DIR); \
+@CREATE_JAVA_HOME_TRUE@ for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \
+@CREATE_JAVA_HOME_TRUE@ jndi-ldap jndi-rmi jsse sasl; \
+@CREATE_JAVA_HOME_TRUE@ do \
+@CREATE_JAVA_HOME_TRUE@ ln -s $$RELATIVE/$$jarname.jar $$jarname-$$version.jar; \
+@CREATE_JAVA_HOME_TRUE@ done; \
+@CREATE_JAVA_HOME_TRUE@ for jar in *-$$version.jar; \
+@CREATE_JAVA_HOME_TRUE@ do \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$jar $$(echo $$jar | sed "s|-$$version.jar|-$(JAVA_VERSION).jar|g"); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$jar $$(echo $$jar | sed "s|-$$version.jar|.jar|g"); \
+@CREATE_JAVA_HOME_TRUE@ done; \
+@CREATE_JAVA_HOME_TRUE@ cd $$working_dir; \
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/security; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(libdir)/security \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/security); \
+@CREATE_JAVA_HOME_TRUE@ cd $(DESTDIR)$(JRE_LIB_DIR)/security; \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/classpath.security java.security; \
+@CREATE_JAVA_HOME_TRUE@ cd $$working_dir; \
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/linux; \
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client; \
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server; \
+@CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_LIB_DIR); \
+@CREATE_JAVA_HOME_TRUE@ cd $(DESTDIR)$(JRE_LIB_DIR); \
+@CREATE_JAVA_HOME_TRUE@ for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \
+@CREATE_JAVA_HOME_TRUE@ jndi-ldap jndi-rmi jsse sasl; \
+@CREATE_JAVA_HOME_TRUE@ do \
+@CREATE_JAVA_HOME_TRUE@ ln -s rt.jar $$jarname.jar; \
+@CREATE_JAVA_HOME_TRUE@ done; \
+@CREATE_JAVA_HOME_TRUE@ cd $$working_dir; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/libgcj-$(gcc_version).jar \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/rt.jar; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/libjawt.so \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/libjawt.so; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/libjvm.so \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client/libjvm.so; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/libjvm.so \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server/libjvm.so; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_LIB_DIR)); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/libgcj-tools-$(gcc_version).jar \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_LIB_DIR)/tools.jar; \
+@CREATE_JAVA_HOME_TRUE@ for headername in jawt jni; do \
+@CREATE_JAVA_HOME_TRUE@ DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \
+@CREATE_JAVA_HOME_TRUE@ -print-file-name=include/$$headername.h)); \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/$$headername.h \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)/$$headername.h; \
+@CREATE_JAVA_HOME_TRUE@ done; \
+@CREATE_JAVA_HOME_TRUE@ for headername in jawt_md jni_md; do \
+@CREATE_JAVA_HOME_TRUE@ DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \
+@CREATE_JAVA_HOME_TRUE@ -print-file-name=include/$$headername.h)); \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/$$headername.h \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux/$$headername.h; \
+@CREATE_JAVA_HOME_TRUE@ done; \
+@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); \
+@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/src-$(gcc_version).zip \
+@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)/src.zip;
maintainer-check: libgcj.la
$(NM) .libs/libgcj.a | grep ' T ' \
diff --git a/libjava/configure b/libjava/configure
index 03a4811..3547e9d 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -459,7 +459,7 @@ ac_includes_default="\
#endif"
ac_subdirs_all="$ac_subdirs_all classpath libltdl"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir multi_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJ_LD_SYMBOLIC_FUNCTIONS LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE X_AWT_TRUE X_AWT_FALSE GCJ_FOR_ECJX GCJH host_exeext INCLTDL LIBLTDL DIRLTDL LIBTOOL SED EGREP FGREP GREP DUMPBIN ac_ct_DUMPBIN NM lt_ECHO CPP CPPFLAGS CXXCPP GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE ECJ_BUILD_JAR ECJ_JAR BUILD_ECJ1_TRUE BUILD_ECJ1_FALSE INSTALL_ECJ_JAR_TRUE INSTALL_ECJ_JAR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME SUPPRESS_LIBGCJ_BC_TRUE SUPPRESS_LIBGCJ_BC_FALSE INTERPRETER INTERPRETER_TRUE INTERPRETER_FALSE LIBFFI LIBFFIINCS PLATFORM USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava extra_gij_ldflags extra_ldflags LIBSTDCXXSPEC LIBGCJTESTSPEC GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE ENABLE_SHARED_TRUE ENABLE_SHARED_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir GCJVERSION dbexecdir gxx_include_dir libstdcxx_incdir PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir multi_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJ_LD_SYMBOLIC_FUNCTIONS LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE X_AWT_TRUE X_AWT_FALSE GCJ_FOR_ECJX GCJH host_exeext INCLTDL LIBLTDL DIRLTDL LIBTOOL SED EGREP FGREP GREP DUMPBIN ac_ct_DUMPBIN NM lt_ECHO CPP CPPFLAGS CXXCPP GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE ECJ_BUILD_JAR ECJ_JAR BUILD_ECJ1_TRUE BUILD_ECJ1_FALSE INSTALL_ECJ_JAR_TRUE INSTALL_ECJ_JAR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME SUPPRESS_LIBGCJ_BC_TRUE SUPPRESS_LIBGCJ_BC_FALSE INTERPRETER INTERPRETER_TRUE INTERPRETER_FALSE LIBFFI LIBFFIINCS PLATFORM USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava extra_gij_ldflags extra_ldflags LIBSTDCXXSPEC LIBGCJTESTSPEC GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE ENABLE_SHARED_TRUE ENABLE_SHARED_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir GCJVERSION dbexecdir gcjsubdir gxx_include_dir libstdcxx_incdir PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here python_mod_dir python_mod_dir_expanded MAKE INSTALL_AOT_RPM_TRUE INSTALL_AOT_RPM_FALSE CREATE_JAVA_HOME_TRUE CREATE_JAVA_HOME_FALSE gcc_suffix JAVA_VERSION BUILD_VERSION JVM_ROOT_DIR JVM_JAR_ROOT_DIR JVM_JAR_DIR JRE_DIR SDK_DIR JRE_LNK SDK_LNK SDK_BIN_DIR SDK_LIB_DIR SDK_INCLUDE_DIR JRE_BIN_DIR JRE_LIB_DIR GCJ_BIN_DIR CPU OS LIBDIR LIBOBJS LTLIBOBJS'
ac_subst_files=''
ac_pwd=`pwd`
@@ -1047,6 +1047,10 @@ Optional Features:
--enable-java-gc=TYPE choose garbage collector (default is boehm)
--disable-rpath do not hardcode runtime library paths
--enable-tls Use thread-local storage [default=yes]
+ --enable-aot-compile-rpm
+ enable installation of aot-compile-rpm [default=no]
+ --enable-java-home create a standard JDK-style directory layout in the
+ install tree [default=no]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1072,6 +1076,20 @@ Optional Packages:
--with-gnu-ld assume the C compiler uses GNU ld default=no
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
+ --with-python-dir the location to install Python modules. This path
+ should NOT include the prefix.
+ --with-gcc-suffix the GCC tool suffix (defaults to empty string)
+ --with-arch-directory the arch directory under jre/lib (defaults to
+ auto-detect)
+ --with-os-directory the os directory under include (defaults to
+ auto-detect)
+ --with-origin-name the JPackage origin name of this package (default is
+ gcj${gcc_suffix}
+ --with-arch-suffix the arch directory suffix (default is the empty
+ string
+ --with-jvm-root-dir where to install SDK (default is ${prefix}/lib/jvm)
+ --with-jvm-jar-dir where to install jars (default is
+ ${prefix}/lib/jvm-exports)
Some influential environment variables:
CC C compiler command
@@ -6003,13 +6021,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:6006: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:6024: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:6009: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:6027: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:6012: output\"" >&5)
+ (eval echo "\"\$as_me:6030: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -7053,7 +7071,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 7056 "configure"' > conftest.$ac_ext
+ echo '#line 7074 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -8754,11 +8772,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8757: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8775: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8761: \$? = $ac_status" >&5
+ echo "$as_me:8779: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9076,11 +9094,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9079: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9097: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9083: \$? = $ac_status" >&5
+ echo "$as_me:9101: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9181,11 +9199,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9184: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9202: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9188: \$? = $ac_status" >&5
+ echo "$as_me:9206: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9236,11 +9254,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9239: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9257: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9243: \$? = $ac_status" >&5
+ echo "$as_me:9261: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -12088,7 +12106,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12091 "configure"
+#line 12109 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12188,7 +12206,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12191 "configure"
+#line 12209 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -14226,11 +14244,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14229: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14247: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:14233: \$? = $ac_status" >&5
+ echo "$as_me:14251: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -14325,11 +14343,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14328: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14346: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14332: \$? = $ac_status" >&5
+ echo "$as_me:14350: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14377,11 +14395,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14380: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14398: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14384: \$? = $ac_status" >&5
+ echo "$as_me:14402: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -15765,11 +15783,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15768: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15786: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15772: \$? = $ac_status" >&5
+ echo "$as_me:15790: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -16081,11 +16099,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16084: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16102: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16088: \$? = $ac_status" >&5
+ echo "$as_me:16106: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -16180,11 +16198,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16183: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16201: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16187: \$? = $ac_status" >&5
+ echo "$as_me:16205: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -16232,11 +16250,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16235: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16253: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16239: \$? = $ac_status" >&5
+ echo "$as_me:16257: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -18588,7 +18606,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then
:
else
cat > conftest.$ac_ext << EOF
-#line 18591 "configure"
+#line 18609 "configure"
struct S { ~S(); };
void bar();
void foo()
@@ -26299,6 +26317,7 @@ esac
+
cat >>confdefs.h <<\_ACEOF
#define JV_VERSION "1.5.0"
_ACEOF
@@ -27872,7 +27891,283 @@ here=`${PWDCMD-pwd}`
# We get this from the environment.
- ac_config_files="$ac_config_files Makefile libgcj.pc libgcj.spec libgcj-test.spec gcj/Makefile include/Makefile testsuite/Makefile"
+
+# Check whether --with-python-dir or --without-python-dir was given.
+if test "${with_python_dir+set}" = set; then
+ withval="$with_python_dir"
+ with_python_dir=$withval
+else
+ with_python_dir=""
+fi;
+
+if test "x${with_python_dir}" = "x"
+then
+ # Needed for installing Python modules during make install.
+ python_mod_dir="\${prefix}/share/python"
+ # Needed for substituting into aot-compile*
+ python_mod_dir_expanded="${prefix}/share/python"
+else
+ python_mod_dir="\${prefix}${with_python_dir}"
+ python_mod_dir_expanded="${prefix}${with_python_dir}"
+fi
+echo "$as_me:$LINENO: result: Python modules dir: ${python_mod_dir_expanded}" >&5
+echo "${ECHO_T}Python modules dir: ${python_mod_dir_expanded}" >&6;
+
+
+
+# needed for aot-compile-rpm
+MAKE=`which make`
+
+
+# Check whether --enable-aot-compile-rpm or --disable-aot-compile-rpm was given.
+if test "${enable_aot_compile_rpm+set}" = set; then
+ enableval="$enable_aot_compile_rpm"
+ case "${enableval}" in
+ yes) AOT_RPM_ENABLED=yes ;;
+ no) AOT_RPM_ENABLED=no ;;
+ *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable aot-compile-rpm" >&5
+echo "$as_me: error: Unknown argument to enable/disable aot-compile-rpm" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ AOT_RPM_ENABLED=no
+
+fi;
+
+
+if test "x${AOT_RPM_ENABLED}" == xyes; then
+ INSTALL_AOT_RPM_TRUE=
+ INSTALL_AOT_RPM_FALSE='#'
+else
+ INSTALL_AOT_RPM_TRUE='#'
+ INSTALL_AOT_RPM_FALSE=
+fi
+
+
+# Check whether --enable-java-home or --disable-java-home was given.
+if test "${enable_java_home+set}" = set; then
+ enableval="$enable_java_home"
+ case "${enableval}" in
+ yes) JAVA_HOME_ENABLED=yes ;;
+ no) JAVA_HOME_ENABLED=no ;;
+ *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable java-home" >&5
+echo "$as_me: error: Unknown argument to enable/disable java-home" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ JAVA_HOME_ENABLED=no
+
+fi;
+
+
+if test "x${JAVA_HOME_ENABLED}" == xyes; then
+ CREATE_JAVA_HOME_TRUE=
+ CREATE_JAVA_HOME_FALSE='#'
+else
+ CREATE_JAVA_HOME_TRUE='#'
+ CREATE_JAVA_HOME_FALSE=
+fi
+
+
+# Only do these checks if java-home above is enabled.
+if test "x${JAVA_HOME_ENABLED}" == xyes
+then
+
+
+# Check whether --with-gcc-suffix or --without-gcc-suffix was given.
+if test "${with_gcc_suffix+set}" = set; then
+ withval="$with_gcc_suffix"
+ gcc_suffix=$withval
+else
+ gcc_suffix=""
+fi;
+ echo "$as_me:$LINENO: result: GCC suffix: ${gcc_suffix}" >&5
+echo "${ECHO_T}GCC suffix: ${gcc_suffix}" >&6
+
+
+
+# Check whether --with-arch-directory or --without-arch-directory was given.
+if test "${with_arch_directory+set}" = set; then
+ withval="$with_arch_directory"
+ host_cpu=$withval
+else
+ host_cpu=""
+fi;
+
+
+# Check whether --with-os-directory or --without-os-directory was given.
+if test "${with_os_directory+set}" = set; then
+ withval="$with_os_directory"
+ host_os=$withval
+else
+ host_os=""
+fi;
+
+
+# Check whether --with-origin-name or --without-origin-name was given.
+if test "${with_origin_name+set}" = set; then
+ withval="$with_origin_name"
+ origin_name=$withval
+else
+ origin_name=gcj${gcc_suffix}
+fi;
+ echo "$as_me:$LINENO: result: JPackage origin name: ${origin_name}" >&5
+echo "${ECHO_T}JPackage origin name: ${origin_name}" >&6
+
+
+# Check whether --with-arch-suffix or --without-arch-suffix was given.
+if test "${with_arch_suffix+set}" = set; then
+ withval="$with_arch_suffix"
+ arch_suffix=$withval
+else
+ arch_suffix=""
+fi;
+ echo "$as_me:$LINENO: result: arch suffix: ${arch_suffix}" >&5
+echo "${ECHO_T}arch suffix: ${arch_suffix}" >&6
+
+
+# Check whether --with-jvm-root-dir or --without-jvm-root-dir was given.
+if test "${with_jvm_root_dir+set}" = set; then
+ withval="$with_jvm_root_dir"
+ jvm_root_dir=$withval
+else
+ jvm_root_dir="\${prefix}/lib/jvm"
+fi;
+ echo "$as_me:$LINENO: result: JVM root installation directory: ${jvm_root_dir}" >&5
+echo "${ECHO_T}JVM root installation directory: ${jvm_root_dir}" >&6
+
+
+# Check whether --with-jvm-jar-dir or --without-jvm-jar-dir was given.
+if test "${with_jvm_jar_dir+set}" = set; then
+ withval="$with_jvm_jar_dir"
+ jvm_jar_dir=$withval
+else
+ jvm_jar_dir=\${prefix}/lib/jvm-exports
+fi;
+ echo "$as_me:$LINENO: result: JAR root installation directory: ${jvm_jar_dir}" >&5
+echo "${ECHO_T}JAR root installation directory: ${jvm_jar_dir}" >&6
+
+ JAVA_VERSION=1.5.0
+ BUILD_VERSION=0
+
+
+ echo "$as_me:$LINENO: result: Java version: ${JAVA_VERSION}" >&5
+echo "${ECHO_T}Java version: ${JAVA_VERSION}" >&6
+
+ jre_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix}/jre
+ sdk_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix}
+ jre_lnk=jre-${JAVA_VERSION}-${origin_name}
+ sdk_lnk=java-${JAVA_VERSION}-${origin_name}
+
+ JVM_ROOT_DIR=${jvm_root_dir}
+
+ echo "$as_me:$LINENO: result: JVM ROOT directory: ${JVM_ROOT_DIR}" >&5
+echo "${ECHO_T}JVM ROOT directory: ${JVM_ROOT_DIR}" >&6
+
+ JVM_JAR_ROOT_DIR=${jvm_jar_dir}
+
+ echo "$as_me:$LINENO: result: JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR}" >&5
+echo "${ECHO_T}JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR}" >&6
+
+ JVM_JAR_DIR=${jvm_jar_dir}/${sdk_dir}
+
+ echo "$as_me:$LINENO: result: JVM JAR directory: ${JVM_JAR_DIR}" >&5
+echo "${ECHO_T}JVM JAR directory: ${JVM_JAR_DIR}" >&6
+
+ JRE_DIR=${jre_dir}
+
+
+ SDK_DIR=${sdk_dir}
+
+
+ JRE_LNK=${jre_lnk}
+
+
+ SDK_LNK=${sdk_lnk}
+
+
+ SDK_BIN_DIR=${jvm_root_dir}/${sdk_dir}/bin
+
+ echo "$as_me:$LINENO: result: SDK tools directory: ${SDK_BIN_DIR}" >&5
+echo "${ECHO_T}SDK tools directory: ${SDK_BIN_DIR}" >&6
+
+ SDK_LIB_DIR=${jvm_root_dir}/${sdk_dir}/lib
+
+ echo "$as_me:$LINENO: result: SDK jar directory: ${SDK_LIB_DIR}" >&5
+echo "${ECHO_T}SDK jar directory: ${SDK_LIB_DIR}" >&6
+
+ SDK_INCLUDE_DIR=${jvm_root_dir}/${sdk_dir}/include
+
+ echo "$as_me:$LINENO: result: SDK include directory: ${SDK_INCLUDE_DIR}" >&5
+echo "${ECHO_T}SDK include directory: ${SDK_INCLUDE_DIR}" >&6
+
+ JRE_BIN_DIR=${jvm_root_dir}/${jre_dir}/bin
+
+ echo "$as_me:$LINENO: result: JRE tools directory: ${JRE_BIN_DIR}" >&5
+echo "${ECHO_T}JRE tools directory: ${JRE_BIN_DIR}" >&6
+
+ JRE_LIB_DIR=${jvm_root_dir}/${jre_dir}/lib
+
+ echo "$as_me:$LINENO: result: JRE lib directory: ${JRE_LIB_DIR}" >&5
+echo "${ECHO_T}JRE lib directory: ${JRE_LIB_DIR}" >&6
+
+ # Find gcj prefix using gcj found in PATH.
+ gcj_prefix=`which gcj${gcc_suffix} | sed "s%/bin/gcj${gcc_suffix}%%"`
+
+ # Where do the gcj binaries live?
+ # For jhbuild based builds, they all live in a sibling of bin called
+ # gcj-bin. Check for gcj-bin first, and use bin otherwise.
+ GCJ_BIN_DIR=`if test -d ${gcj_prefix}/gcj-bin; then echo ${gcj_prefix}/gcj-bin; else echo ${gcj_prefix}/bin; fi`
+
+ echo "$as_me:$LINENO: result: GCJ tools directory: ${GCJ_BIN_DIR}" >&5
+echo "${ECHO_T}GCJ tools directory: ${GCJ_BIN_DIR}" >&6
+
+ echo host is ${host}
+ if test "x${host_cpu}" = "x"
+ then
+ case ${host} in
+ *-mingw* | *-cygwin*)
+ host_cpu=x86;;
+ i486-* | i586-* | i686-*)
+ host_cpu=i386;;
+ *)
+ host_cpu=${host_cpu};;
+ esac
+ fi
+ echo "$as_me:$LINENO: result: arch directory: ${host_cpu}" >&5
+echo "${ECHO_T}arch directory: ${host_cpu}" >&6
+ CPU=${host_cpu}
+
+
+ if test "x${host_os}" = "x"
+ then
+ case ${host} in
+ *-mingw* | *-cygwin*)
+ host_os=win32;;
+ *-linux*)
+ host_os=linux;;
+ *)
+ host_os=${host_os};;
+ esac
+ fi
+ echo os directory: ${host_os}
+ OS=${host_os}
+
+
+ # make an expanded $libdir, for substituting into
+ # scripts (and other non-Makefile things).
+ LIBDIR=$libdir
+ if test "x${exec_prefix}" = "xNONE"
+ then
+ lib_exec_prefix=$prefix
+ else
+ lib_exec_prefix=$exec_prefix
+ fi
+ LIBDIR=`echo $libdir | sed "s:\\\${exec_prefix}:$lib_exec_prefix:g"`
+
+fi
+
+ ac_config_files="$ac_config_files Makefile libgcj.pc libgcj.spec libgcj-test.spec gcj/Makefile include/Makefile testsuite/Makefile contrib/aotcompile.py contrib/aot-compile contrib/aot-compile-rpm contrib/rebuild-gcj-db"
if test ${multilib} = yes; then
@@ -28184,6 +28479,20 @@ echo "$as_me: error: conditional \"ANONVERSCRIPT\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${INSTALL_AOT_RPM_TRUE}" && test -z "${INSTALL_AOT_RPM_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"INSTALL_AOT_RPM\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"INSTALL_AOT_RPM\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${CREATE_JAVA_HOME_TRUE}" && test -z "${CREATE_JAVA_HOME_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"CREATE_JAVA_HOME\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"CREATE_JAVA_HOME\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
: ${CONFIG_STATUS=./config.status}
ac_clean_files_save=$ac_clean_files
@@ -29064,6 +29373,10 @@ do
"gcj/Makefile" ) CONFIG_FILES="$CONFIG_FILES gcj/Makefile" ;;
"include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
"testsuite/Makefile" ) CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
+ "contrib/aotcompile.py" ) CONFIG_FILES="$CONFIG_FILES contrib/aotcompile.py" ;;
+ "contrib/aot-compile" ) CONFIG_FILES="$CONFIG_FILES contrib/aot-compile" ;;
+ "contrib/aot-compile-rpm" ) CONFIG_FILES="$CONFIG_FILES contrib/aot-compile-rpm" ;;
+ "contrib/rebuild-gcj-db" ) CONFIG_FILES="$CONFIG_FILES contrib/rebuild-gcj-db" ;;
"scripts/jar" ) CONFIG_FILES="$CONFIG_FILES scripts/jar" ;;
"include/platform.h" ) CONFIG_LINKS="$CONFIG_LINKS include/platform.h:include/$PLATFORMH" ;;
"java/io/natFile.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/io/natFile.cc:java/io/natFile${FILE-${PLATFORM}}.cc" ;;
@@ -29383,6 +29696,7 @@ s,@toolexecmainlibdir@,$toolexecmainlibdir,;t t
s,@toolexeclibdir@,$toolexeclibdir,;t t
s,@GCJVERSION@,$GCJVERSION,;t t
s,@dbexecdir@,$dbexecdir,;t t
+s,@gcjsubdir@,$gcjsubdir,;t t
s,@gxx_include_dir@,$gxx_include_dir,;t t
s,@libstdcxx_incdir@,$libstdcxx_incdir,;t t
s,@PERL@,$PERL,;t t
@@ -29392,6 +29706,32 @@ s,@ANONVERSCRIPT_FALSE@,$ANONVERSCRIPT_FALSE,;t t
s,@LD_START_STATIC_SPEC@,$LD_START_STATIC_SPEC,;t t
s,@LD_FINISH_STATIC_SPEC@,$LD_FINISH_STATIC_SPEC,;t t
s,@here@,$here,;t t
+s,@python_mod_dir@,$python_mod_dir,;t t
+s,@python_mod_dir_expanded@,$python_mod_dir_expanded,;t t
+s,@MAKE@,$MAKE,;t t
+s,@INSTALL_AOT_RPM_TRUE@,$INSTALL_AOT_RPM_TRUE,;t t
+s,@INSTALL_AOT_RPM_FALSE@,$INSTALL_AOT_RPM_FALSE,;t t
+s,@CREATE_JAVA_HOME_TRUE@,$CREATE_JAVA_HOME_TRUE,;t t
+s,@CREATE_JAVA_HOME_FALSE@,$CREATE_JAVA_HOME_FALSE,;t t
+s,@gcc_suffix@,$gcc_suffix,;t t
+s,@JAVA_VERSION@,$JAVA_VERSION,;t t
+s,@BUILD_VERSION@,$BUILD_VERSION,;t t
+s,@JVM_ROOT_DIR@,$JVM_ROOT_DIR,;t t
+s,@JVM_JAR_ROOT_DIR@,$JVM_JAR_ROOT_DIR,;t t
+s,@JVM_JAR_DIR@,$JVM_JAR_DIR,;t t
+s,@JRE_DIR@,$JRE_DIR,;t t
+s,@SDK_DIR@,$SDK_DIR,;t t
+s,@JRE_LNK@,$JRE_LNK,;t t
+s,@SDK_LNK@,$SDK_LNK,;t t
+s,@SDK_BIN_DIR@,$SDK_BIN_DIR,;t t
+s,@SDK_LIB_DIR@,$SDK_LIB_DIR,;t t
+s,@SDK_INCLUDE_DIR@,$SDK_INCLUDE_DIR,;t t
+s,@JRE_BIN_DIR@,$JRE_BIN_DIR,;t t
+s,@JRE_LIB_DIR@,$JRE_LIB_DIR,;t t
+s,@GCJ_BIN_DIR@,$GCJ_BIN_DIR,;t t
+s,@CPU@,$CPU,;t t
+s,@OS@,$OS,;t t
+s,@LIBDIR@,$LIBDIR,;t t
s,@LIBOBJS@,$LIBOBJS,;t t
s,@LTLIBOBJS@,$LTLIBOBJS,;t t
CEOF
diff --git a/libjava/configure.ac b/libjava/configure.ac
index 9d86cd8..6b7949f 100644
--- a/libjava/configure.ac
+++ b/libjava/configure.ac
@@ -1416,6 +1416,7 @@ case $multi_os_directory in
;;
esac
AC_SUBST(dbexecdir)
+AC_SUBST(gcjsubdir)
AC_DEFINE(JV_VERSION, "1.5.0", [Compatibility version string])
AC_DEFINE(JV_API_VERSION, "1.5", [API compatibility version string])
@@ -1628,6 +1629,207 @@ AC_SUBST(here)
# We get this from the environment.
AC_SUBST(GCJFLAGS)
+AC_ARG_WITH([python-dir],
+ AS_HELP_STRING([--with-python-dir],
+ [the location to install Python modules. This path should NOT include the prefix.]),
+ [with_python_dir=$withval], [with_python_dir=""])
+
+if test "x${with_python_dir}" = "x"
+then
+ # Needed for installing Python modules during make install.
+ python_mod_dir="\${prefix}/share/python"
+ # Needed for substituting into aot-compile*
+ python_mod_dir_expanded="${prefix}/share/python"
+else
+ python_mod_dir="\${prefix}${with_python_dir}"
+ python_mod_dir_expanded="${prefix}${with_python_dir}"
+fi
+AC_MSG_RESULT(Python modules dir: ${python_mod_dir_expanded});
+AC_SUBST(python_mod_dir)
+AC_SUBST(python_mod_dir_expanded)
+
+# needed for aot-compile-rpm
+MAKE=`which make`
+AC_SUBST(MAKE)
+
+AC_ARG_ENABLE([aot-compile-rpm],
+ [AS_HELP_STRING([--enable-aot-compile-rpm],
+ [enable installation of aot-compile-rpm [default=no]])],
+ [case "${enableval}" in
+ yes) AOT_RPM_ENABLED=yes ;;
+ no) AOT_RPM_ENABLED=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable aot-compile-rpm]) ;;
+ esac],
+ [AOT_RPM_ENABLED=no]
+)
+AM_CONDITIONAL(INSTALL_AOT_RPM, test "x${AOT_RPM_ENABLED}" == xyes)
+
+AC_ARG_ENABLE([java-home],
+ [AS_HELP_STRING([--enable-java-home],
+ [create a standard JDK-style directory layout in the install tree [default=no]])],
+ [case "${enableval}" in
+ yes) JAVA_HOME_ENABLED=yes ;;
+ no) JAVA_HOME_ENABLED=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable java-home]) ;;
+ esac],
+ [JAVA_HOME_ENABLED=no]
+)
+AM_CONDITIONAL(CREATE_JAVA_HOME, test "x${JAVA_HOME_ENABLED}" == xyes)
+
+# Only do these checks if java-home above is enabled.
+if test "x${JAVA_HOME_ENABLED}" == xyes
+then
+
+ AC_ARG_WITH([gcc-suffix],
+ AS_HELP_STRING([--with-gcc-suffix],
+ [the GCC tool suffix (defaults to empty string)]),
+ [gcc_suffix=$withval], [gcc_suffix=""])
+ AC_MSG_RESULT(GCC suffix: ${gcc_suffix})
+ AC_SUBST(gcc_suffix)
+
+ AC_ARG_WITH([arch-directory],
+ AS_HELP_STRING([--with-arch-directory],
+ [the arch directory under jre/lib (defaults to auto-detect)]),
+ [host_cpu=$withval], [host_cpu=""])
+
+ AC_ARG_WITH([os-directory],
+ AS_HELP_STRING([--with-os-directory],
+ [the os directory under include (defaults to auto-detect)]),
+ [host_os=$withval], [host_os=""])
+
+ AC_ARG_WITH([origin-name],
+ AS_HELP_STRING([--with-origin-name],
+ [the JPackage origin name of this package (default is gcj${gcc_suffix}]),
+ [origin_name=$withval], [origin_name=gcj${gcc_suffix}])
+ AC_MSG_RESULT(JPackage origin name: ${origin_name})
+
+ AC_ARG_WITH([arch-suffix],
+ AS_HELP_STRING([--with-arch-suffix],
+ [the arch directory suffix (default is the empty string]),
+ [arch_suffix=$withval], [arch_suffix=""])
+ AC_MSG_RESULT(arch suffix: ${arch_suffix})
+
+ AC_ARG_WITH([jvm-root-dir],
+ AS_HELP_STRING([--with-jvm-root-dir],
+ [where to install SDK (default is ${prefix}/lib/jvm)]),
+ [jvm_root_dir=$withval], [jvm_root_dir="\${prefix}/lib/jvm"])
+ AC_MSG_RESULT(JVM root installation directory: ${jvm_root_dir})
+
+ AC_ARG_WITH([jvm-jar-dir],
+ AS_HELP_STRING([--with-jvm-jar-dir],
+ [where to install jars (default is ${prefix}/lib/jvm-exports)]),
+ [jvm_jar_dir=$withval], [jvm_jar_dir=\${prefix}/lib/jvm-exports])
+ AC_MSG_RESULT(JAR root installation directory: ${jvm_jar_dir})
+
+ JAVA_VERSION=1.5.0
+ BUILD_VERSION=0
+ AC_SUBST(JAVA_VERSION)
+ AC_SUBST(BUILD_VERSION)
+ AC_MSG_RESULT(Java version: ${JAVA_VERSION})
+
+ jre_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix}/jre
+ sdk_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix}
+ jre_lnk=jre-${JAVA_VERSION}-${origin_name}
+ sdk_lnk=java-${JAVA_VERSION}-${origin_name}
+
+ JVM_ROOT_DIR=${jvm_root_dir}
+ AC_SUBST(JVM_ROOT_DIR)
+ AC_MSG_RESULT(JVM ROOT directory: ${JVM_ROOT_DIR})
+
+ JVM_JAR_ROOT_DIR=${jvm_jar_dir}
+ AC_SUBST(JVM_JAR_ROOT_DIR)
+ AC_MSG_RESULT(JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR})
+
+ JVM_JAR_DIR=${jvm_jar_dir}/${sdk_dir}
+ AC_SUBST(JVM_JAR_DIR)
+ AC_MSG_RESULT(JVM JAR directory: ${JVM_JAR_DIR})
+
+ JRE_DIR=${jre_dir}
+ AC_SUBST(JRE_DIR)
+
+ SDK_DIR=${sdk_dir}
+ AC_SUBST(SDK_DIR)
+
+ JRE_LNK=${jre_lnk}
+ AC_SUBST(JRE_LNK)
+
+ SDK_LNK=${sdk_lnk}
+ AC_SUBST(SDK_LNK)
+
+ SDK_BIN_DIR=${jvm_root_dir}/${sdk_dir}/bin
+ AC_SUBST(SDK_BIN_DIR)
+ AC_MSG_RESULT(SDK tools directory: ${SDK_BIN_DIR})
+
+ SDK_LIB_DIR=${jvm_root_dir}/${sdk_dir}/lib
+ AC_SUBST(SDK_LIB_DIR)
+ AC_MSG_RESULT(SDK jar directory: ${SDK_LIB_DIR})
+
+ SDK_INCLUDE_DIR=${jvm_root_dir}/${sdk_dir}/include
+ AC_SUBST(SDK_INCLUDE_DIR)
+ AC_MSG_RESULT(SDK include directory: ${SDK_INCLUDE_DIR})
+
+ JRE_BIN_DIR=${jvm_root_dir}/${jre_dir}/bin
+ AC_SUBST(JRE_BIN_DIR)
+ AC_MSG_RESULT(JRE tools directory: ${JRE_BIN_DIR})
+
+ JRE_LIB_DIR=${jvm_root_dir}/${jre_dir}/lib
+ AC_SUBST(JRE_LIB_DIR)
+ AC_MSG_RESULT(JRE lib directory: ${JRE_LIB_DIR})
+
+ # Find gcj prefix using gcj found in PATH.
+ gcj_prefix=`which gcj${gcc_suffix} | sed "s%/bin/gcj${gcc_suffix}%%"`
+
+ # Where do the gcj binaries live?
+ # For jhbuild based builds, they all live in a sibling of bin called
+ # gcj-bin. Check for gcj-bin first, and use bin otherwise.
+ GCJ_BIN_DIR=`if test -d ${gcj_prefix}/gcj-bin; then echo ${gcj_prefix}/gcj-bin; else echo ${gcj_prefix}/bin; fi`
+ AC_SUBST(GCJ_BIN_DIR)
+ AC_MSG_RESULT(GCJ tools directory: ${GCJ_BIN_DIR})
+
+ echo host is ${host}
+ if test "x${host_cpu}" = "x"
+ then
+ case ${host} in
+ *-mingw* | *-cygwin*)
+ host_cpu=x86;;
+ i486-* | i586-* | i686-*)
+ host_cpu=i386;;
+ *)
+ host_cpu=${host_cpu};;
+ esac
+ fi
+ AC_MSG_RESULT(arch directory: ${host_cpu})
+ CPU=${host_cpu}
+ AC_SUBST(CPU)
+
+ if test "x${host_os}" = "x"
+ then
+ case ${host} in
+ *-mingw* | *-cygwin*)
+ host_os=win32;;
+ *-linux*)
+ host_os=linux;;
+ *)
+ host_os=${host_os};;
+ esac
+ fi
+ echo os directory: ${host_os}
+ OS=${host_os}
+ AC_SUBST(OS)
+
+ # make an expanded $libdir, for substituting into
+ # scripts (and other non-Makefile things).
+ LIBDIR=$libdir
+ if test "x${exec_prefix}" = "xNONE"
+ then
+ lib_exec_prefix=$prefix
+ else
+ lib_exec_prefix=$exec_prefix
+ fi
+ LIBDIR=`echo $libdir | sed "s:\\\${exec_prefix}:$lib_exec_prefix:g"`
+ AC_SUBST(LIBDIR)
+fi
+
AC_CONFIG_FILES([
Makefile
libgcj.pc
@@ -1636,6 +1838,10 @@ libgcj-test.spec
gcj/Makefile
include/Makefile
testsuite/Makefile
+contrib/aotcompile.py
+contrib/aot-compile
+contrib/aot-compile-rpm
+contrib/rebuild-gcj-db
])
if test ${multilib} = yes; then
diff --git a/libjava/contrib/aot-compile-rpm.in b/libjava/contrib/aot-compile-rpm.in
new file mode 100644
index 0000000..c3bdb16
--- /dev/null
+++ b/libjava/contrib/aot-compile-rpm.in
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+
+## Copyright (C) 2005, 2006, 2007 Free Software Foundation
+## Written by Gary Benson <gbenson@redhat.com>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+import sys
+sys.path.append("@python_mod_dir_expanded@")
+import aotcompile
+import os
+
+def libdir():
+ cmd = "%s -p" % aotcompile.PATHS["dbtool"]
+ dir = os.path.abspath(os.popen(cmd, "r").readline().rstrip())
+ dir, base = os.path.split(dir)
+ if base != "classmap.db":
+ raise aotcompile.Error, "%s: unexpected output" % cmd
+ dir, base = os.path.split(dir)
+ if not base.startswith("gcj-"):
+ raise aotcompile.Error, "%s: unexpected output" % cmd
+ return dir
+
+def writeSourceList(srcdir, dstpath):
+ def visit(fp, dir, items):
+ for item in items:
+ path = os.path.join(dir, item)
+ if os.path.isfile(path):
+ print >>fp, path
+ dstdir = os.path.dirname(dstpath)
+ if not os.path.isdir(dstdir):
+ os.makedirs(dstdir)
+ os.path.walk(srcdir, visit, open(dstpath, "w"))
+
+def copy(srcdir, dstdir, suffix):
+ srcdir = os.path.join(srcdir, suffix.lstrip(os.sep))
+ dstdir = os.path.join(dstdir, suffix.lstrip(os.sep))
+ os.makedirs(os.path.dirname(dstdir))
+ aotcompile.system(("/bin/cp", "-a", srcdir, dstdir))
+
+try:
+ name = os.environ.get("RPM_PACKAGE_NAME")
+ if name is None:
+ raise aotcompile.Error, "not for use outside rpm specfiles"
+ arch = os.environ.get("RPM_ARCH")
+ if arch == "noarch":
+ raise aotcompile.Error, "cannot be used on noarch packages"
+ srcdir = os.environ.get("RPM_BUILD_ROOT")
+ if srcdir in (None, "/"):
+ raise aotcompile.Error, "bad $RPM_BUILD_ROOT"
+ tmpdir = os.path.join(os.getcwd(), "aot-compile-rpm")
+ if os.path.exists(tmpdir):
+ raise aotcompile.Error, "%s exists" % tmpdir
+ dstdir = os.path.join(libdir(), "gcj", name)
+
+ compiler = aotcompile.Compiler(srcdir, dstdir, tmpdir)
+ compiler.gcjflags[0:0] = os.environ.get("RPM_OPT_FLAGS", "").split()
+
+ # XXX: This script should not accept options, because having
+ # them it cannot be integrated into rpm. But, gcj cannot
+ # build each and every jarfile yet, so we must be able to
+ # exclude until it can.
+ # XXX --exclude is also used in the jonas rpm to stop
+ # everything being made a subset of the mammoth client
+ # jarfile. Should adjust the subset checker's bias to
+ # favour many small jarfiles over one big one.
+ try:
+ options, exclusions = sys.argv[1:], []
+ while options:
+ if options.pop(0) != "--exclude":
+ raise ValueError
+ compiler.exclusions.append(
+ os.path.join(srcdir, options.pop(0).lstrip(os.sep)))
+ except:
+ print >>sys.stderr, "usage: %s [--exclude PATH]..." % (
+ os.path.basename(sys.argv[0]))
+ sys.exit(1)
+
+ sourcelist = os.path.join(tmpdir, "sources.list")
+ writeSourceList(os.getcwd(), sourcelist)
+ compiler.gcjflags.append("-fsource-filename=" + sourcelist)
+
+ compiler.compile()
+ copy(tmpdir, srcdir, dstdir)
+
+except aotcompile.Error, e:
+ print >>sys.stderr, "%s: error: %s" % (
+ os.path.basename(sys.argv[0]), e)
+ sys.exit(1)
diff --git a/libjava/contrib/aot-compile.in b/libjava/contrib/aot-compile.in
new file mode 100644
index 0000000..b891f20
--- /dev/null
+++ b/libjava/contrib/aot-compile.in
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+
+## Copyright (C) 2006 Free Software Foundation
+## Written by Gary Benson <gbenson@redhat.com>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+import sys
+sys.path.append("@python_mod_dir_expanded@")
+import aotcompile
+import getopt
+import os
+
+usage = """\
+Usage: %s [OPTION...] SRCDIR DSTDIR
+AOT-compile all Java bytecode in SRCDIR into DSTDIR.
+
+Options:
+ -M, --make=PATH make executable to use (%s)
+ -C, --gcj=PATH gcj executable to use (%s)
+ -D, --dbtool=PATH gcj-dbtool executable to use (%s)
+ -m, --makeflags=FLAGS flags to pass to make during build
+ -c, --gcjflags=FLAGS flags to pass to gcj during compilation
+ in addition to %s
+ -l, --ldflags=FLAGS flags to pass to gcj during linking
+ in addition to %s
+ -e, --exclude=PATH do not compile PATH
+
+Extra flags may also be passed using the AOT_MAKEFLAGS, AOT_GCJFLAGS
+and AOT_LDFLAGS environment variables.""" % (
+ os.path.basename(sys.argv[0]),
+ aotcompile.PATHS["make"],
+ aotcompile.PATHS["gcj"],
+ aotcompile.PATHS["dbtool"],
+ repr(" ".join(aotcompile.GCJFLAGS)),
+ repr(" ".join(aotcompile.LDFLAGS)))
+
+try:
+ if os.environ.has_key("RPM_PACKAGE_NAME"):
+ raise aotcompile.Error, "not for use within rpm specfiles"
+
+ try:
+ opts, args = getopt.getopt(
+ sys.argv[1:],
+ "M:C:D:m:c:l:e:",
+ ["make=", "gcj=", "dbtool=",
+ "makeflags=" "gcjflags=", "ldflags=",
+ "exclude="])
+ srcdir, dstdir = args
+ except:
+ print >>sys.stderr, usage
+ sys.exit(1)
+
+ compiler = aotcompile.Compiler(srcdir, dstdir)
+ for o, a in opts:
+ if o in ("-M", "--make"):
+ aotcompile.PATHS["make"] = a
+ if o in ("-C", "--gcj"):
+ aotcompile.PATHS["gcj"] = a
+ if o in ("-D", "--dbtool"):
+ aotcompile.PATHS["dbtool"] = a
+ if o in ("-m", "--makeflags"):
+ compiler.makeflags[0:0] = a.split()
+ if o in ("-c", "--gcjflags"):
+ compiler.gcjflags[0:0] = a.split()
+ if o in ("-l", "--ldflags"):
+ compiler.ldflags[0:0] = a.split()
+ if o in ("-e", "--exclude"):
+ compiler.exclusions.append(a)
+
+ compiler.makeflags[0:0] = os.environ.get("AOT_MAKEFLAGS", "").split()
+ compiler.gcjflags[0:0] = os.environ.get("AOT_GCJFLAGS", "").split()
+ compiler.ldflags[0:0] = os.environ.get("AOT_LDFLAGS", "").split()
+
+ compiler.compile()
+
+except aotcompile.Error, e:
+ print >>sys.stderr, "%s: error: %s" % (
+ os.path.basename(sys.argv[0]), e)
+ sys.exit(1)
diff --git a/libjava/contrib/aotcompile.py.in b/libjava/contrib/aotcompile.py.in
new file mode 100644
index 0000000..9e25c90
--- /dev/null
+++ b/libjava/contrib/aotcompile.py.in
@@ -0,0 +1,412 @@
+# -*- python -*-
+
+## Copyright (C) 2005, 2006, 2008 Free Software Foundation
+## Written by Gary Benson <gbenson@redhat.com>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+import classfile
+import copy
+import md5
+import operator
+import os
+import sys
+import cStringIO as StringIO
+import zipfile
+
+PATHS = {"make": "@MAKE@",
+ "gcj": "@prefix@/bin/gcj@gcc_suffix@",
+ "dbtool": "@prefix@/bin/gcj-dbtool@gcc_suffix@"}
+
+MAKEFLAGS = []
+GCJFLAGS = ["-fPIC", "-findirect-dispatch", "-fjni"]
+LDFLAGS = ["-Wl,-Bsymbolic"]
+
+MAX_CLASSES_PER_JAR = 1024
+MAX_BYTES_PER_JAR = 1048576
+
+MAKEFILE = "Makefile"
+
+MAKEFILE_HEADER = '''\
+GCJ = %(gcj)s
+DBTOOL = %(dbtool)s
+GCJFLAGS = %(gcjflags)s
+LDFLAGS = %(ldflags)s
+
+%%.o: %%.jar
+ $(GCJ) -c $(GCJFLAGS) $< -o $@
+
+TARGETS = \\
+%(targets)s
+
+all: $(TARGETS)'''
+
+MAKEFILE_JOB = '''
+%(base)s_SOURCES = \\
+%(jars)s
+
+%(base)s_OBJECTS = \\
+$(%(base)s_SOURCES:.jar=.o)
+
+%(dso)s: $(%(base)s_OBJECTS)
+ $(GCJ) -shared $(GCJFLAGS) $(LDFLAGS) $^ -o $@
+
+%(db)s: $(%(base)s_SOURCES)
+ $(DBTOOL) -n $@ 64
+ for jar in $^; do \\
+ $(DBTOOL) -f $@ $$jar \\
+ %(libdir)s/%(dso)s; \\
+ done'''
+
+ZIPMAGIC, CLASSMAGIC = "PK\x03\x04", "\xca\xfe\xba\xbe"
+
+class Error(Exception):
+ pass
+
+class Compiler:
+ def __init__(self, srcdir, libdir, prefix = None):
+ self.srcdir = os.path.abspath(srcdir)
+ self.libdir = os.path.abspath(libdir)
+ if prefix is None:
+ self.dstdir = self.libdir
+ else:
+ self.dstdir = os.path.join(prefix, self.libdir.lstrip(os.sep))
+
+ # Calling code may modify these parameters
+ self.gcjflags = copy.copy(GCJFLAGS)
+ self.ldflags = copy.copy(LDFLAGS)
+ self.makeflags = copy.copy(MAKEFLAGS)
+ self.exclusions = []
+
+ def compile(self):
+ """Search srcdir for classes and jarfiles, then generate
+ solibs and mappings databases for them all in libdir."""
+ if not os.path.isdir(self.dstdir):
+ os.makedirs(self.dstdir)
+ oldcwd = os.getcwd()
+ os.chdir(self.dstdir)
+ try:
+ jobs = self.getJobList()
+ if not jobs:
+ raise Error, "nothing to do"
+ self.writeMakefile(MAKEFILE, jobs)
+ for job in jobs:
+ job.writeJars()
+ system([PATHS["make"]] + self.makeflags)
+ for job in jobs:
+ job.clean()
+ os.unlink(MAKEFILE)
+ finally:
+ os.chdir(oldcwd)
+
+ def getJobList(self):
+ """Return all jarfiles and class collections in srcdir."""
+ jobs = weed_jobs(find_jobs(self.srcdir, self.exclusions))
+ set_basenames(jobs)
+ return jobs
+
+ def writeMakefile(self, path, jobs):
+ """Generate a makefile to build the solibs and mappings
+ databases for the specified list of jobs."""
+ fp = open(path, "w")
+ print >>fp, MAKEFILE_HEADER % {
+ "gcj": PATHS["gcj"],
+ "dbtool": PATHS["dbtool"],
+ "gcjflags": " ".join(self.gcjflags),
+ "ldflags": " ".join(self.ldflags),
+ "targets": " \\\n".join(reduce(operator.add, [
+ (job.dsoName(), job.dbName()) for job in jobs]))}
+ for job in jobs:
+ values = job.ruleArguments()
+ values["libdir"] = self.libdir
+ print >>fp, MAKEFILE_JOB % values
+ fp.close()
+
+def find_jobs(dir, exclusions = ()):
+ """Scan a directory and find things to compile: jarfiles (zips,
+ wars, ears, rars, etc: we go by magic rather than file extension)
+ and directories of classes."""
+ def visit((classes, zips), dir, items):
+ for item in items:
+ path = os.path.join(dir, item)
+ if os.path.islink(path) or not os.path.isfile(path):
+ continue
+ magic = open(path, "r").read(4)
+ if magic == ZIPMAGIC:
+ zips.append(path)
+ elif magic == CLASSMAGIC:
+ classes.append(path)
+ classes, paths = [], []
+ os.path.walk(dir, visit, (classes, paths))
+ # Convert the list of classes into a list of directories
+ while classes:
+ # XXX this requires the class to be correctly located in its heirachy.
+ path = classes[0][:-len(os.sep + classname(classes[0]) + ".class")]
+ paths.append(path)
+ classes = [cls for cls in classes if not cls.startswith(path)]
+ # Handle exclusions. We're really strict about them because the
+ # option is temporary in aot-compile-rpm and dead options left in
+ # specfiles will hinder its removal.
+ for path in exclusions:
+ if path in paths:
+ paths.remove(path)
+ else:
+ raise Error, "%s: path does not exist or is not a job" % path
+ # Build the list of jobs
+ jobs = []
+ paths.sort()
+ for path in paths:
+ if os.path.isfile(path):
+ job = JarJob(path)
+ else:
+ job = DirJob(path)
+ if len(job.classes):
+ jobs.append(job)
+ return jobs
+
+class Job:
+ """A collection of classes that will be compiled as a unit."""
+
+ def __init__(self, path):
+ self.path, self.classes, self.blocks = path, {}, None
+
+ def addClass(self, bytes):
+ """Subclasses call this from their __init__ method for
+ every class they find."""
+ self.classes[md5.new(bytes).digest()] = bytes
+
+ def __makeBlocks(self):
+ """Split self.classes into chunks that can be compiled to
+ native code by gcj. In the majority of cases this is not
+ necessary -- the job will have come from a jarfile which will
+ be equivalent to the one we generate -- but this only happens
+ _if_ the job was a jarfile and _if_ the jarfile isn't too big
+ and _if_ the jarfile has the correct extension and _if_ all
+ classes are correctly named and _if_ the jarfile has no
+ embedded jarfiles. Fitting a special case around all these
+ conditions is tricky to say the least.
+
+ Note that this could be called at the end of each subclass's
+ __init__ method. The reason this is not done is because we
+ need to parse every class file. This is slow, and unnecessary
+ if the job is subsetted."""
+ names = {}
+ for hash, bytes in self.classes.items():
+ name = classname(bytes)
+ if not names.has_key(name):
+ names[name] = []
+ names[name].append(hash)
+ names = names.items()
+ # We have to sort somehow, or the jars we generate
+ # We sort by name in a simplistic attempt to keep related
+ # classes together so inter-class optimisation can happen.
+ names.sort()
+ self.blocks, bytes = [[]], 0
+ for name, hashes in names:
+ for hash in hashes:
+ if len(self.blocks[-1]) >= MAX_CLASSES_PER_JAR \
+ or bytes >= MAX_BYTES_PER_JAR:
+ self.blocks.append([])
+ bytes = 0
+ self.blocks[-1].append((name, hash))
+ bytes += len(self.classes[hash])
+
+ # From Archit Shah:
+ # The implementation and the documentation don't seem to match.
+ #
+ # [a, b].isSubsetOf([a]) => True
+ #
+ # Identical copies of all classes this collection do not exist
+ # in the other. I think the method should be named isSupersetOf
+ # and the documentation should swap uses of "this" and "other"
+ #
+ # XXX think about this when I've had more sleep...
+ def isSubsetOf(self, other):
+ """Returns True if identical copies of all classes in this
+ collection exist in the other."""
+ for item in other.classes.keys():
+ if not self.classes.has_key(item):
+ return False
+ return True
+
+ def __targetName(self, ext):
+ return self.basename + ext
+
+ def tempJarName(self, num):
+ return self.__targetName(".%d.jar" % (num + 1))
+
+ def tempObjName(self, num):
+ return self.__targetName(".%d.o" % (num + 1))
+
+ def dsoName(self):
+ """Return the filename of the shared library that will be
+ built from this job."""
+ return self.__targetName(".so")
+
+ def dbName(self):
+ """Return the filename of the mapping database that will be
+ built from this job."""
+ return self.__targetName(".db")
+
+ def ruleArguments(self):
+ """Return a dictionary of values that when substituted
+ into MAKEFILE_JOB will create the rules required to build
+ the shared library and mapping database for this job."""
+ if self.blocks is None:
+ self.__makeBlocks()
+ return {
+ "base": "".join(
+ [c.isalnum() and c or "_" for c in self.dsoName()]),
+ "jars": " \\\n".join(
+ [self.tempJarName(i) for i in xrange(len(self.blocks))]),
+ "dso": self.dsoName(),
+ "db": self.dbName()}
+
+ def writeJars(self):
+ """Generate jarfiles that can be native compiled by gcj."""
+ if self.blocks is None:
+ self.__makeBlocks()
+ for block, i in zip(self.blocks, xrange(len(self.blocks))):
+ jar = zipfile.ZipFile(self.tempJarName(i), "w", zipfile.ZIP_STORED)
+ for name, hash in block:
+ jar.writestr(
+ zipfile.ZipInfo("%s.class" % name), self.classes[hash])
+ jar.close()
+
+ def clean(self):
+ """Delete all temporary files created during this job's build."""
+ if self.blocks is None:
+ self.__makeBlocks()
+ for i in xrange(len(self.blocks)):
+ os.unlink(self.tempJarName(i))
+ os.unlink(self.tempObjName(i))
+
+class JarJob(Job):
+ """A Job whose origin was a jarfile."""
+
+ def __init__(self, path):
+ Job.__init__(self, path)
+ self._walk(zipfile.ZipFile(path, "r"))
+
+ def _walk(self, zf):
+ for name in zf.namelist():
+ bytes = zf.read(name)
+ if bytes.startswith(ZIPMAGIC):
+ self._walk(zipfile.ZipFile(StringIO.StringIO(bytes)))
+ elif bytes.startswith(CLASSMAGIC):
+ self.addClass(bytes)
+
+class DirJob(Job):
+ """A Job whose origin was a directory of classfiles."""
+
+ def __init__(self, path):
+ Job.__init__(self, path)
+ os.path.walk(path, DirJob._visit, self)
+
+ def _visit(self, dir, items):
+ for item in items:
+ path = os.path.join(dir, item)
+ if os.path.islink(path) or not os.path.isfile(path):
+ continue
+ fp = open(path, "r")
+ magic = fp.read(4)
+ if magic == CLASSMAGIC:
+ self.addClass(magic + fp.read())
+
+def weed_jobs(jobs):
+ """Remove any jarfiles that are completely contained within
+ another. This is more common than you'd think, and we only
+ need one nativified copy of each class after all."""
+ jobs = copy.copy(jobs)
+ while True:
+ for job1 in jobs:
+ for job2 in jobs:
+ if job1 is job2:
+ continue
+ if job1.isSubsetOf(job2):
+ msg = "subsetted %s" % job2.path
+ if job2.isSubsetOf(job1):
+ if (isinstance(job1, DirJob) and
+ isinstance(job2, JarJob)):
+ # In the braindead case where a package
+ # contains an expanded copy of a jarfile
+ # the jarfile takes precedence.
+ continue
+ msg += " (identical)"
+ warn(msg)
+ jobs.remove(job2)
+ break
+ else:
+ continue
+ break
+ else:
+ break
+ continue
+ return jobs
+
+def set_basenames(jobs):
+ """Ensure that each jarfile has a different basename."""
+ names = {}
+ for job in jobs:
+ name = os.path.basename(job.path)
+ if not names.has_key(name):
+ names[name] = []
+ names[name].append(job)
+ for name, set in names.items():
+ if len(set) == 1:
+ set[0].basename = name
+ continue
+ # prefix the jar filenames to make them unique
+ # XXX will not work in most cases -- needs generalising
+ set = [(job.path.split(os.sep), job) for job in set]
+ minlen = min([len(bits) for bits, job in set])
+ set = [(bits[-minlen:], job) for bits, job in set]
+ bits = apply(zip, [bits for bits, job in set])
+ while True:
+ row = bits[-2]
+ for bit in row[1:]:
+ if bit != row[0]:
+ break
+ else:
+ del bits[-2]
+ continue
+ break
+ set = zip(
+ ["_".join(name) for name in apply(zip, bits[-2:])],
+ [job for bits, job in set])
+ for name, job in set:
+ warn("building %s as %s" % (job.path, name))
+ job.basename = name
+ # XXX keep this check until we're properly general
+ names = {}
+ for job in jobs:
+ name = job.basename
+ if names.has_key(name):
+ raise Error, "%s: duplicate jobname" % name
+ names[name] = 1
+
+def system(command):
+ """Execute a command."""
+ status = os.spawnv(os.P_WAIT, command[0], command)
+ if status > 0:
+ raise Error, "%s exited with code %d" % (command[0], status)
+ elif status < 0:
+ raise Error, "%s killed by signal %d" % (command[0], -status)
+
+def warn(msg):
+ """Print a warning message."""
+ print >>sys.stderr, "%s: warning: %s" % (
+ os.path.basename(sys.argv[0]), msg)
+
+def classname(bytes):
+ """Extract the class name from the bytes of a class file."""
+ klass = classfile.Class(bytes)
+ return klass.constants[klass.constants[klass.name][1]][1]
diff --git a/libjava/contrib/classfile.py b/libjava/contrib/classfile.py
new file mode 100644
index 0000000..a8bb14c
--- /dev/null
+++ b/libjava/contrib/classfile.py
@@ -0,0 +1,221 @@
+## Copyright (C) 2004, 2005 Free Software Foundation
+## Written by Gary Benson <gbenson@redhat.com>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+"""Read Java(TM) class files."""
+
+import cStringIO as StringIO
+import struct
+
+class Class:
+ def __init__(self, arg):
+ if hasattr(arg, "read"):
+ self.fp = arg
+ elif type(arg) == type(""):
+ if arg.startswith("\xca\xfe\xba\xbe"):
+ self.fp = StringIO.StringIO(arg)
+ else:
+ self.fp = open(arg, "r")
+ else:
+ raise TypeError, type(arg)
+
+ magic = self._read_int()
+ assert magic == 0xcafebabeL
+ minor, major = self._read(">HH")
+ self.version = (major, minor)
+
+ self.pool_integrity_checks = None
+ try:
+ assert False
+ except AssertionError:
+ self.pool_integrity_checks = []
+
+ self._read_constants_pool()
+
+ self.access_flags = self._read_short()
+ self.name = self._read_reference_Class()
+ self.super = self._read_reference_Class()
+
+ self.interfaces = self._read_interfaces()
+ self.fields = self._read_fieldsormethods()
+ self.methods = self._read_fieldsormethods()
+ self.attributes = self._read_attributes()
+
+ if self.pool_integrity_checks is not None:
+ for index, tag in self.pool_integrity_checks:
+ assert self.constants[index][0] == tag
+
+ del self.fp, self.pool_integrity_checks
+
+ def __repr__(self):
+ result = []
+ attrs = [attr for attr in dir(self)
+ if not attr.startswith("_") and attr != "Member"]
+ attrs.sort()
+ for attr in attrs:
+ result.append("%-13s %s" % (
+ attr + ":", attr == "constants" and
+ "<ELIDED>" or repr(getattr(self, attr))))
+ return "\n".join(result)
+
+ def _read_constants_pool(self):
+ self.constants = {}
+ skip = False
+ for i in xrange(1, self._read_short()):
+ if skip:
+ skip = False
+ continue
+ tag = {
+ 1: "Utf8", 3: "Integer", 4: "Float", 5: "Long",
+ 6: "Double", 7: "Class", 8: "String", 9: "Fieldref",
+ 10: "Methodref", 11: "InterfaceMethodref",
+ 12: "NameAndType"}[self._read_byte()]
+ skip = tag in ("Long", "Double") # crack crack crack!
+ self.constants[i] = (tag, getattr(self, "_read_constant_" + tag)())
+
+ def _read_interfaces(self):
+ result = []
+ for i in xrange(self._read_short()):
+ result.append(self._read_reference_Class())
+ return result
+
+ def _read_fieldsormethods(self):
+ result = []
+ for i in xrange(self._read_short()):
+ result.append(self.Member(self))
+ return result
+
+ class Member:
+ def __init__(self, source):
+ self.access_flags = source._read_short()
+ self.name = source._read_reference_Utf8()
+ self.descriptor = source._read_reference_Utf8()
+ self.attributes = source._read_attributes()
+
+ def __repr__(self):
+ result = []
+ attrs = [attr for attr in dir(self) if not attr.startswith("_")]
+ attrs.sort()
+ for attr in attrs:
+ value = getattr(self, attr)
+ if attr == "attributes" and value.has_key("Code"):
+ value = value.copy()
+ value.update({"Code": "<ELIDED>"})
+ result.append("%-13s %s" % (
+ attr + ":", repr(value).replace(
+ "'Code': '<ELIDED>'", "'Code': <ELIDED>")))
+ return ("\n%s" % (15 * " ")).join(result)
+
+ def _read_attributes(self):
+ result = {}
+ for i in xrange(self._read_short()):
+ name = self._read_reference_Utf8()
+ data = self.fp.read(self._read_int())
+ assert not result.has_key(name)
+ result[name] = data
+ return result
+
+ # Constants pool reference reader convenience functions
+
+ def _read_reference_Utf8(self):
+ return self._read_references("Utf8")[0]
+
+ def _read_reference_Class(self):
+ return self._read_references("Class")[0]
+
+ def _read_reference_Class_NameAndType(self):
+ return self._read_references("Class", "NameAndType")
+
+ def _read_references(self, *args):
+ result = []
+ for arg in args:
+ index = self._read_short()
+ if self.pool_integrity_checks is not None:
+ self.pool_integrity_checks.append((index, arg))
+ result.append(index)
+ return result
+
+ # Constants pool constant reader functions
+
+ def _read_constant_Utf8(self):
+ constant = self.fp.read(self._read_short())
+ try:
+ constant = constant.decode("utf-8")
+ except UnicodeError:
+ constant = _bork_utf8_decode(constant)
+ try:
+ constant = constant.encode("us-ascii")
+ except UnicodeError:
+ pass
+ return constant
+
+ def _read_constant_Integer(self):
+ return self._read_int()
+
+ def _read_constant_Float(self):
+ return self._read(">f")[0]
+
+ def _read_constant_Long(self):
+ return self._read(">q")[0]
+
+ def _read_constant_Double(self):
+ return self._read(">d")[0]
+
+ _read_constant_Class = _read_reference_Utf8
+ _read_constant_String = _read_reference_Utf8
+ _read_constant_Fieldref = _read_reference_Class_NameAndType
+ _read_constant_Methodref = _read_reference_Class_NameAndType
+ _read_constant_InterfaceMethodref = _read_reference_Class_NameAndType
+
+ def _read_constant_NameAndType(self):
+ return self._read_reference_Utf8(), self._read_reference_Utf8()
+
+ # Generic reader functions
+
+ def _read_int(self):
+ # XXX how else to read 32 bits on a 64-bit box?
+ h, l = map(long, self._read(">HH"))
+ return (h << 16) + l
+
+ def _read_short(self):
+ return self._read(">H")[0]
+
+ def _read_byte(self):
+ return self._read("B")[0]
+
+ def _read(self, fmt):
+ return struct.unpack(fmt, self.fp.read(struct.calcsize(fmt)))
+
+def _bork_utf8_decode(data):
+ # more crack!
+ bytes, unicode = map(ord, data), ""
+ while bytes:
+ b1 = bytes.pop(0)
+ if b1 & 0x80:
+ assert b1 & 0x40
+ b2 = bytes.pop(0)
+ assert b2 & 0xC0 == 0x80
+ if b1 & 0x20:
+ assert not b1 & 0x10
+ b3 = bytes.pop(0)
+ assert b3 & 0xC0 == 0x80
+ unicode += unichr(
+ ((b1 & 0x0f) << 12) + ((b2 & 0x3f) << 6) + (b3 & 0x3f))
+ else:
+ unicode += unichr(((b1 & 0x1f) << 6) + (b2 & 0x3f))
+ else:
+ unicode += unichr(b1)
+ return unicode
+
+if __name__ == "__main__":
+ print Class("/usr/share/katana/build/ListDependentClasses.class")
+
diff --git a/libjava/contrib/rebuild-gcj-db.in b/libjava/contrib/rebuild-gcj-db.in
new file mode 100644
index 0000000..39861ff
--- /dev/null
+++ b/libjava/contrib/rebuild-gcj-db.in
@@ -0,0 +1,27 @@
+#!/bin/bash
+# rebuild-gcj-db
+
+## Copyright (C) 2000, 2002, 2003, 2008 Free Software Foundation
+##
+## This file is part of libgcj.
+##
+## This software is copyrighted work licensed under the terms of the
+## Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+## details.
+
+# Rebuild all the standard databases.
+for i in `@prefix@/bin/gcc --print-multi-lib 2>/dev/null`; do
+ multilib=`echo $i | sed -e 's/^.*;//' | sed -e 's/\@/ -/g'`
+ dirname=`@prefix@/bin/gcc -print-multi-os-directory $multilib 2>/dev/null`
+ base=@prefix@/lib/$dirname
+ dbLocation=`@prefix@/bin/gcj-dbtool -p $base`
+ libdir=$base/gcj
+ if ! test -d $libdir; then
+ # No shared libraries here.
+ continue
+ fi
+ dirname $dbLocation | xargs mkdir -p
+ @prefix@/bin/gcj-dbtool -n $dbLocation 64
+ find $libdir -follow -name '*.db' -print0 | \
+ @prefix@/bin/gcj-dbtool -0 -m $dbLocation $dbLocation
+done
diff --git a/libjava/gcj/Makefile.in b/libjava/gcj/Makefile.in
index b5b9836..3a1c18f 100644
--- a/libjava/gcj/Makefile.in
+++ b/libjava/gcj/Makefile.in
@@ -99,6 +99,7 @@ AWK = @AWK@
BACKTRACESPEC = @BACKTRACESPEC@
BUILD_ECJ1_FALSE = @BUILD_ECJ1_FALSE@
BUILD_ECJ1_TRUE = @BUILD_ECJ1_TRUE@
+BUILD_VERSION = @BUILD_VERSION@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -106,6 +107,9 @@ CHECKREFSPEC = @CHECKREFSPEC@
CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CPU = @CPU@
+CREATE_JAVA_HOME_FALSE = @CREATE_JAVA_HOME_FALSE@
+CREATE_JAVA_HOME_TRUE = @CREATE_JAVA_HOME_TRUE@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
@@ -135,6 +139,7 @@ GCJDEPMODE = @GCJDEPMODE@
GCJFLAGS = @GCJFLAGS@
GCJH = @GCJH@
GCJVERSION = @GCJVERSION@
+GCJ_BIN_DIR = @GCJ_BIN_DIR@
GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
GCLIBS = @GCLIBS@
GCSPEC = @GCSPEC@
@@ -147,6 +152,8 @@ GTK_LIBS = @GTK_LIBS@
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
IEEESPEC = @IEEESPEC@
INCLTDL = @INCLTDL@
+INSTALL_AOT_RPM_FALSE = @INSTALL_AOT_RPM_FALSE@
+INSTALL_AOT_RPM_TRUE = @INSTALL_AOT_RPM_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_ECJ_JAR_FALSE = @INSTALL_ECJ_JAR_FALSE@
INSTALL_ECJ_JAR_TRUE = @INSTALL_ECJ_JAR_TRUE@
@@ -162,13 +169,22 @@ JAVA_HOME_SET_FALSE = @JAVA_HOME_SET_FALSE@
JAVA_HOME_SET_TRUE = @JAVA_HOME_SET_TRUE@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
+JAVA_VERSION = @JAVA_VERSION@
JC1GCSPEC = @JC1GCSPEC@
+JRE_BIN_DIR = @JRE_BIN_DIR@
+JRE_DIR = @JRE_DIR@
+JRE_LIB_DIR = @JRE_LIB_DIR@
+JRE_LNK = @JRE_LNK@
+JVM_JAR_DIR = @JVM_JAR_DIR@
+JVM_JAR_ROOT_DIR = @JVM_JAR_ROOT_DIR@
+JVM_ROOT_DIR = @JVM_ROOT_DIR@
LD = @LD@
LDFLAGS = @LDFLAGS@
LD_FINISH_STATIC_SPEC = @LD_FINISH_STATIC_SPEC@
LD_START_STATIC_SPEC = @LD_START_STATIC_SPEC@
LIBART_CFLAGS = @LIBART_CFLAGS@
LIBART_LIBS = @LIBART_LIBS@
+LIBDIR = @LIBDIR@
LIBFFI = @LIBFFI@
LIBFFIINCS = @LIBFFIINCS@
LIBGCJDEBUG = @LIBGCJDEBUG@
@@ -191,6 +207,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKE = @MAKE@
MAKEINFO = @MAKEINFO@
NATIVE_FALSE = @NATIVE_FALSE@
NATIVE_TRUE = @NATIVE_TRUE@
@@ -198,6 +215,7 @@ NEEDS_DATA_START_FALSE = @NEEDS_DATA_START_FALSE@
NEEDS_DATA_START_TRUE = @NEEDS_DATA_START_TRUE@
NM = @NM@
OBJEXT = @OBJEXT@
+OS = @OS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -209,6 +227,11 @@ PERL = @PERL@
PKG_CONFIG = @PKG_CONFIG@
PLATFORM = @PLATFORM@
RANLIB = @RANLIB@
+SDK_BIN_DIR = @SDK_BIN_DIR@
+SDK_DIR = @SDK_DIR@
+SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@
+SDK_LIB_DIR = @SDK_LIB_DIR@
+SDK_LNK = @SDK_LNK@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -296,6 +319,8 @@ exec_prefix = @exec_prefix@
extra_gij_ldflags = @extra_gij_ldflags@
extra_ldflags = @extra_ldflags@
extra_ldflags_libjava = @extra_ldflags_libjava@
+gcc_suffix = @gcc_suffix@
+gcjsubdir = @gcjsubdir@
gxx_include_dir = @gxx_include_dir@
here = @here@
host = @host@
@@ -320,6 +345,8 @@ multi_basedir = @multi_basedir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+python_mod_dir = @python_mod_dir@
+python_mod_dir_expanded = @python_mod_dir_expanded@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in
index 5ab2321..765b9d8 100644
--- a/libjava/include/Makefile.in
+++ b/libjava/include/Makefile.in
@@ -98,6 +98,7 @@ AWK = @AWK@
BACKTRACESPEC = @BACKTRACESPEC@
BUILD_ECJ1_FALSE = @BUILD_ECJ1_FALSE@
BUILD_ECJ1_TRUE = @BUILD_ECJ1_TRUE@
+BUILD_VERSION = @BUILD_VERSION@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -105,6 +106,9 @@ CHECKREFSPEC = @CHECKREFSPEC@
CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CPU = @CPU@
+CREATE_JAVA_HOME_FALSE = @CREATE_JAVA_HOME_FALSE@
+CREATE_JAVA_HOME_TRUE = @CREATE_JAVA_HOME_TRUE@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
@@ -134,6 +138,7 @@ GCJDEPMODE = @GCJDEPMODE@
GCJFLAGS = @GCJFLAGS@
GCJH = @GCJH@
GCJVERSION = @GCJVERSION@
+GCJ_BIN_DIR = @GCJ_BIN_DIR@
GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
GCLIBS = @GCLIBS@
GCSPEC = @GCSPEC@
@@ -146,6 +151,8 @@ GTK_LIBS = @GTK_LIBS@
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
IEEESPEC = @IEEESPEC@
INCLTDL = @INCLTDL@
+INSTALL_AOT_RPM_FALSE = @INSTALL_AOT_RPM_FALSE@
+INSTALL_AOT_RPM_TRUE = @INSTALL_AOT_RPM_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_ECJ_JAR_FALSE = @INSTALL_ECJ_JAR_FALSE@
INSTALL_ECJ_JAR_TRUE = @INSTALL_ECJ_JAR_TRUE@
@@ -161,13 +168,22 @@ JAVA_HOME_SET_FALSE = @JAVA_HOME_SET_FALSE@
JAVA_HOME_SET_TRUE = @JAVA_HOME_SET_TRUE@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
+JAVA_VERSION = @JAVA_VERSION@
JC1GCSPEC = @JC1GCSPEC@
+JRE_BIN_DIR = @JRE_BIN_DIR@
+JRE_DIR = @JRE_DIR@
+JRE_LIB_DIR = @JRE_LIB_DIR@
+JRE_LNK = @JRE_LNK@
+JVM_JAR_DIR = @JVM_JAR_DIR@
+JVM_JAR_ROOT_DIR = @JVM_JAR_ROOT_DIR@
+JVM_ROOT_DIR = @JVM_ROOT_DIR@
LD = @LD@
LDFLAGS = @LDFLAGS@
LD_FINISH_STATIC_SPEC = @LD_FINISH_STATIC_SPEC@
LD_START_STATIC_SPEC = @LD_START_STATIC_SPEC@
LIBART_CFLAGS = @LIBART_CFLAGS@
LIBART_LIBS = @LIBART_LIBS@
+LIBDIR = @LIBDIR@
LIBFFI = @LIBFFI@
LIBFFIINCS = @LIBFFIINCS@
LIBGCJDEBUG = @LIBGCJDEBUG@
@@ -190,6 +206,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKE = @MAKE@
MAKEINFO = @MAKEINFO@
NATIVE_FALSE = @NATIVE_FALSE@
NATIVE_TRUE = @NATIVE_TRUE@
@@ -197,6 +214,7 @@ NEEDS_DATA_START_FALSE = @NEEDS_DATA_START_FALSE@
NEEDS_DATA_START_TRUE = @NEEDS_DATA_START_TRUE@
NM = @NM@
OBJEXT = @OBJEXT@
+OS = @OS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -208,6 +226,11 @@ PERL = @PERL@
PKG_CONFIG = @PKG_CONFIG@
PLATFORM = @PLATFORM@
RANLIB = @RANLIB@
+SDK_BIN_DIR = @SDK_BIN_DIR@
+SDK_DIR = @SDK_DIR@
+SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@
+SDK_LIB_DIR = @SDK_LIB_DIR@
+SDK_LNK = @SDK_LNK@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -295,6 +318,8 @@ exec_prefix = @exec_prefix@
extra_gij_ldflags = @extra_gij_ldflags@
extra_ldflags = @extra_ldflags@
extra_ldflags_libjava = @extra_ldflags_libjava@
+gcc_suffix = @gcc_suffix@
+gcjsubdir = @gcjsubdir@
gxx_include_dir = @gxx_include_dir@
here = @here@
host = @host@
@@ -319,6 +344,8 @@ multi_basedir = @multi_basedir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+python_mod_dir = @python_mod_dir@
+python_mod_dir_expanded = @python_mod_dir_expanded@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in
index 8d42a62..ba058d6 100644
--- a/libjava/testsuite/Makefile.in
+++ b/libjava/testsuite/Makefile.in
@@ -87,6 +87,7 @@ AWK = @AWK@
BACKTRACESPEC = @BACKTRACESPEC@
BUILD_ECJ1_FALSE = @BUILD_ECJ1_FALSE@
BUILD_ECJ1_TRUE = @BUILD_ECJ1_TRUE@
+BUILD_VERSION = @BUILD_VERSION@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -94,6 +95,9 @@ CHECKREFSPEC = @CHECKREFSPEC@
CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CPU = @CPU@
+CREATE_JAVA_HOME_FALSE = @CREATE_JAVA_HOME_FALSE@
+CREATE_JAVA_HOME_TRUE = @CREATE_JAVA_HOME_TRUE@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
@@ -123,6 +127,7 @@ GCJDEPMODE = @GCJDEPMODE@
GCJFLAGS = @GCJFLAGS@
GCJH = @GCJH@
GCJVERSION = @GCJVERSION@
+GCJ_BIN_DIR = @GCJ_BIN_DIR@
GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
GCLIBS = @GCLIBS@
GCSPEC = @GCSPEC@
@@ -135,6 +140,8 @@ GTK_LIBS = @GTK_LIBS@
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
IEEESPEC = @IEEESPEC@
INCLTDL = @INCLTDL@
+INSTALL_AOT_RPM_FALSE = @INSTALL_AOT_RPM_FALSE@
+INSTALL_AOT_RPM_TRUE = @INSTALL_AOT_RPM_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_ECJ_JAR_FALSE = @INSTALL_ECJ_JAR_FALSE@
INSTALL_ECJ_JAR_TRUE = @INSTALL_ECJ_JAR_TRUE@
@@ -150,13 +157,22 @@ JAVA_HOME_SET_FALSE = @JAVA_HOME_SET_FALSE@
JAVA_HOME_SET_TRUE = @JAVA_HOME_SET_TRUE@
JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@
JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@
+JAVA_VERSION = @JAVA_VERSION@
JC1GCSPEC = @JC1GCSPEC@
+JRE_BIN_DIR = @JRE_BIN_DIR@
+JRE_DIR = @JRE_DIR@
+JRE_LIB_DIR = @JRE_LIB_DIR@
+JRE_LNK = @JRE_LNK@
+JVM_JAR_DIR = @JVM_JAR_DIR@
+JVM_JAR_ROOT_DIR = @JVM_JAR_ROOT_DIR@
+JVM_ROOT_DIR = @JVM_ROOT_DIR@
LD = @LD@
LDFLAGS = @LDFLAGS@
LD_FINISH_STATIC_SPEC = @LD_FINISH_STATIC_SPEC@
LD_START_STATIC_SPEC = @LD_START_STATIC_SPEC@
LIBART_CFLAGS = @LIBART_CFLAGS@
LIBART_LIBS = @LIBART_LIBS@
+LIBDIR = @LIBDIR@
LIBFFI = @LIBFFI@
LIBFFIINCS = @LIBFFIINCS@
LIBGCJDEBUG = @LIBGCJDEBUG@
@@ -179,6 +195,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKE = @MAKE@
MAKEINFO = @MAKEINFO@
NATIVE_FALSE = @NATIVE_FALSE@
NATIVE_TRUE = @NATIVE_TRUE@
@@ -186,6 +203,7 @@ NEEDS_DATA_START_FALSE = @NEEDS_DATA_START_FALSE@
NEEDS_DATA_START_TRUE = @NEEDS_DATA_START_TRUE@
NM = @NM@
OBJEXT = @OBJEXT@
+OS = @OS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -197,6 +215,11 @@ PERL = @PERL@
PKG_CONFIG = @PKG_CONFIG@
PLATFORM = @PLATFORM@
RANLIB = @RANLIB@
+SDK_BIN_DIR = @SDK_BIN_DIR@
+SDK_DIR = @SDK_DIR@
+SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@
+SDK_LIB_DIR = @SDK_LIB_DIR@
+SDK_LNK = @SDK_LNK@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -284,6 +307,8 @@ exec_prefix = @exec_prefix@
extra_gij_ldflags = @extra_gij_ldflags@
extra_ldflags = @extra_ldflags@
extra_ldflags_libjava = @extra_ldflags_libjava@
+gcc_suffix = @gcc_suffix@
+gcjsubdir = @gcjsubdir@
gxx_include_dir = @gxx_include_dir@
here = @here@
host = @host@
@@ -308,6 +333,8 @@ multi_basedir = @multi_basedir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+python_mod_dir = @python_mod_dir@
+python_mod_dir_expanded = @python_mod_dir_expanded@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@