This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[ecj] Patch: FYI: new Configuration.java


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 \


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]