This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[ecj] Patch: FYI: new Configuration.java
- From: Tom Tromey <tromey at redhat dot com>
- To: Java Patch List <java-patches at gcc dot gnu dot org>
- Date: 11 Oct 2006 17:55:01 -0600
- Subject: [ecj] Patch: FYI: new Configuration.java
- Reply-to: tromey at redhat dot com
I'm checking this in on the gcj-eclipse branch.
I forgot that Configuration.java, and thus Configuration.class, is
also build-specific. So, Configuration.class could not be checked in
as is.
This patch fixes this problem by adding a new Configuration.java class
and deferring the build-dependent code to C++.
We should probably replace this class, or at least parts of it, with a
VM class upstream.
Tom
Index: ChangeLog
from Tom Tromey <tromey@redhat.com>
* sources.am, Makefile.in, include/config.h.in, configure:
Rebuilt.
* Makefile.am (nat_source_files): Added natConfiguration.cc.
* gnu/classpath/natConfiguration.cc: New file.
* configure.ac (AWT_TOOLKIT): New define.
(LIBGCJ_PREFIX): Likewise.
* gnu/classpath/Configuration.java: New file.
* sources.am: Rebuilt.
* scripts/makemake.tcl: Don't special case Configuration.java.
Index: scripts/makemake.tcl
===================================================================
--- scripts/makemake.tcl (revision 117625)
+++ scripts/makemake.tcl (working copy)
@@ -398,7 +398,6 @@
scan_packages .
# Files created by the build.
classify_source_file classpath gnu/java/locale/LocaleData.java
-classify_source_file classpath gnu/classpath/Configuration.java
puts "## This file was automatically generated by scripts/makemake.tcl"
puts "## Do not edit!"
Index: gnu/classpath/Configuration.java
===================================================================
--- gnu/classpath/Configuration.java (revision 0)
+++ gnu/classpath/Configuration.java (revision 0)
@@ -0,0 +1,105 @@
+/* Configuration.java --
+ Copyright (C) 1998, 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.classpath;
+
+/**
+ * This file defines compile-time constants that can be accessed by
+ * java code. It is pre-processed by configure.
+ */
+public final class Configuration
+{
+ private Configuration()
+ {
+ }
+
+ private static native String classpath_home();
+ private static native boolean debug();
+ private static native String toolkit();
+
+ /**
+ * The value of CLASSPATH_HOME is the location that the classpath
+ * libraries and support files where installed in. It is set according to
+ * the argument for --prefix given to configure and used to set the
+ * System property gnu.classpath.home.
+ */
+ public static final String CLASSPATH_HOME = classpath_home();
+
+ /**
+ * The release version number of GNU Classpath.
+ * It is set according to the value of 'version' in the configure[.in] file
+ * and used to set the System property gnu.classpath.version.
+ */
+ public static final String CLASSPATH_VERSION = "0.92";
+
+ /**
+ * The value of DEBUG is substituted according to whether the
+ * "--enable-debug" argument was passed to configure. Code
+ * which is made conditional based on the value of this flag - typically
+ * code that generates debugging output - will be removed by the optimizer
+ * in a non-debug build.
+ */
+ public static final boolean DEBUG = debug();
+
+ /**
+ * The value of LOAD_LIBRARY is substituted according to whether the
+ * "--enable-load-library" or "--disable-load-library" argument was passed
+ * to configure. By default, configure should define this is as true.
+ * If set to false, loadLibrary() calls to load native function
+ * implementations, typically found in static initializers of classes
+ * which contain native functions, will be omitted. This is useful for
+ * runtimes which pre-link their native function implementations and do
+ * not require additional shared libraries to be loaded.
+ */
+ public static final boolean INIT_LOAD_LIBRARY = false;
+
+ /**
+ * Name of default AWT peer library.
+ */
+ public static final String default_awt_peer_toolkit = toolkit();
+
+ /**
+ * Whether to automatically run the init* methods in java.lang.System
+ * (the default) at class initialization time or whether to have the VM
+ * explicitly invoke them.
+ *
+ * The default is false, meaning the VM does not explicitly run the
+ * initializers.
+ *
+ */
+ public static final boolean JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = false;
+}
Index: gnu/classpath/natConfiguration.cc
===================================================================
--- gnu/classpath/natConfiguration.cc (revision 0)
+++ gnu/classpath/natConfiguration.cc (revision 0)
@@ -0,0 +1,39 @@
+// natConfiguration.cc - native code for configuration.
+
+/* Copyright (C) 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#include <config.h>
+#include <platform.h>
+
+#include <gcj/cni.h>
+#include <jvm.h>
+
+#include <gnu/classpath/Configuration.h>
+
+jstring
+gnu::classpath::Configuration::classpath_home()
+{
+ return JvNewStringLatin1(LIBGCJ_PREFIX);
+}
+
+jboolean
+gnu::classpath::Configuration::debug()
+{
+#ifdef DEBUG
+ return true;
+#else
+ return false;
+#endif
+}
+
+jstring
+gnu::classpath::Configuration::toolkit()
+{
+ return JvNewStringLatin1(AWT_TOOLKIT);
+}
Index: configure.ac
===================================================================
--- configure.ac (revision 117625)
+++ configure.ac (working copy)
@@ -265,6 +265,10 @@
AM_CONDITIONAL(QT_AWT, test "$use_qt_awt" = yes)
AM_CONDITIONAL(X_AWT, test "$use_x_awt" = yes)
+AC_DEFINE_UNQUOTED(AWT_TOOLKIT, "$TOOLKIT", [Name of default AWT toolkit])
+
+AC_DEFINE_UNQUOTED(LIBGCJ_PREFIX, "$prefix", [Installation prefix])
+
# Create standard.omit based on decisions we just made.
cp $srcdir/standard.omit.in standard.omit
if test "$use_xlib_awt" != yes; then
Index: Makefile.am
===================================================================
--- Makefile.am (revision 117625)
+++ Makefile.am (working copy)
@@ -660,6 +660,7 @@
## This lists all the C++ source files in subdirectories.
nat_source_files = \
gnu/classpath/natSystemProperties.cc \
+gnu/classpath/natConfiguration.cc \
gnu/gcj/natCore.cc \
gnu/gcj/convert/JIS0208_to_Unicode.cc \
gnu/gcj/convert/JIS0212_to_Unicode.cc \