Commit c9db365d by Joshua Sumali Committed by Andrew Haley

configure.ac (java-home): new AC_ARG_ENABLE.

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-30  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-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.


Co-Authored-By: Andrew Haley <aph@redhat.com>

From-SVN: r137353
parent 9e11641d
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
......
......@@ -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,
......
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.
......
......@@ -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 ; \
......
......@@ -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
......
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).
......
......@@ -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
## ################################################################
......
......@@ -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
......
#!/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)
#!/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)
## 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")
#!/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
......@@ -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@
......
......@@ -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@
......
......@@ -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@
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment