From fa280a58741fcaca48ce7ee0329228b0c7f77986 Mon Sep 17 00:00:00 2001 From: davek Date: Tue, 22 Sep 2009 18:58:13 +0000 Subject: [PATCH] gcc/ChangeLog * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable. * config/i386/cygwin.h (LIBGCJ_SONAME): Define. * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise. libjava/ChangeLog * configure.host (enable_libgcj_sublibs_default): New variable, set for Cygwin and MinGW. * configure.ac (--enable-libgcj-sublibs): New command-line switch. (BUILD_SUBLIBS): New AM_CONDITIONAL relating to it. (libgcj_spec_lgcj_override): New variable, define if building sublibs. (libgcj_spec_lgcj_bc_override): Likewise for when USE_LIBGCJ_BC. (LIBGCJ_SPEC_LGCJ): New variable to abstract "-lgcj" from specs. (LIBGCJ_SPEC_LGCJ_BC): Likewise for when USE_LIBGCJ_BC. (LIBGCJ_SPEC): Use them. * configure: Regenerate. * Makefile.am (LOWER_PACKAGE_FILES_LO): New variable. (ALL_PACKAGE_SOURCE_FILES_LO): Likewise. (NONCORE_PACKAGE_SOURCE_FILES_LO): Likewise. (CORE_PACKAGE_SOURCE_FILES_LO): Likewise. (toolexeclib_LTLIBRARIES): Add libgcj-noncore.la if building sublibs. (libgcj_noncore_la_LIBADD_SUBOBJECTS): New variable. (libgcj_la_LIBADD_SUBOBJECTS): Likewise. (libgcj_la_LDFLAGS_NOUNDEF): Likewise. (libgij_la_LDFLAGS): Add DLL-related options. (libgcj_la_LDFLAGS): Use libgcj_la_LDFLAGS_NOUNDEF and libgcj_la_LIBADD_SUBOBJECTS. (libgcj_la_DEPENDENCIES): Adjust to match. (libgcj_noncore_la_SOURCES, libgcj_noncore_la_LDFLAGS, libgcj_noncore_la_LIBADD, libgcj_noncore_la_DEPENDENCIES, libgcj_noncore_la_LINK): New automake variables for sublibrary. (libgcj_tools_la_LDFLAGS): Add DLL-related flags. (libgcj_tools_la_LIBADD): New variable. (libjvm_la_LDFLAGS): Add DLL-related flags. (lib_gnu_awt_xlib_la_LDFLAGS): Likewise. (libgcj_bc_la_LDFLAGS): Likewise. (libgij_la_DEPENDENCIES): Add dependency on libgcj-noncore.la when building sublibs. (libgcj_tools_la_DEPENDENCIES, libjvm_la_DEPENDENCIES, lib_gnu_awt_xlib_la_DEPENDENCIES, jv_convert_DEPENDENCIES, gcj_dbtool_DEPENDENCIES, gc_analyze_DEPENDENCIES, ecjx_DEPENDENCIES): Likewise. * Makefile.in: Regenerate. * sysdep/i386/backtrace.h (MAIN_FUNC): New #define for main function, set appropriately for Cygwin on that platform or to "main" elsewhere. (fallback_backtrace): Use it to limit stack unwind. libjava/libltdl/ChangeLog: * ltdl.h (LT_SCOPE): Change conditional to avoid breaking auto-export during libgcj DLL linking. * Makefile.am (libltdl_la_LDFLAGS): Remove -bindir switch. * Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152041 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 + gcc/config/i386/cygming.h | 2 +- gcc/config/i386/cygwin.h | 4 + gcc/config/i386/mingw32.h | 4 + libjava/ChangeLog | 43 ++++++ libjava/Makefile.am | 221 +++++++++++++++++++++++++-- libjava/Makefile.in | 322 +++++++++++++++++++++++++++++++--------- libjava/configure | 111 ++++++++++---- libjava/configure.ac | 36 ++++- libjava/configure.host | 6 + libjava/libltdl/ChangeLog | 7 + libjava/libltdl/Makefile.am | 2 +- libjava/libltdl/Makefile.in | 2 +- libjava/libltdl/ltdl.h | 2 +- libjava/sysdep/i386/backtrace.h | 11 +- 15 files changed, 657 insertions(+), 122 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2565cb9a7b3..2da2d4441f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-09-22 Dave Korn + + * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable. + * config/i386/cygwin.h (LIBGCJ_SONAME): Define. + * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise. + 2009-09-22 Alexandre Oliva PR debug/41295 diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index 5fc0c1d41c5..43003cc5cad 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -383,7 +383,7 @@ do { \ /* FIXME: SUPPORTS_WEAK && TARGET_HAVE_NAMED_SECTIONS is true, but for .jcr section to work we also need crtbegin and crtend objects. */ -#define TARGET_USE_JCR_SECTION 0 +#define TARGET_USE_JCR_SECTION 1 /* Decide whether it is safe to use a local alias for a virtual function when constructing thunks. */ diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h index d1d00f7a79b..933263769f9 100644 --- a/gcc/config/i386/cygwin.h +++ b/gcc/config/i386/cygwin.h @@ -267,3 +267,7 @@ while (0) #define LIBGCC_EH_EXTN "-sjlj" #endif #define LIBGCC_SONAME "cyggcc_s" LIBGCC_EH_EXTN "-1.dll" + +/* We should find a way to not have to update this manually. */ +#define LIBGCJ_SONAME "cyggcj" /*LIBGCC_EH_EXTN*/ "-11.dll" + diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index e856ecdbc97..9dcc5ba1f67 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -221,3 +221,7 @@ __enable_execute_stack (void *addr) \ #define LIBGCC_EH_EXTN "_sjlj" #endif #define LIBGCC_SONAME "libgcc_s" LIBGCC_EH_EXTN "-1.dll" + +/* We should find a way to not have to update this manually. */ +#define LIBGCJ_SONAME "cyggcj" /*LIBGCC_EH_EXTN*/ "-11.dll" + diff --git a/libjava/ChangeLog b/libjava/ChangeLog index b58bc9966bb..e8ad3b347ce 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,46 @@ +2009-09-22 Dave Korn + + * configure.host (enable_libgcj_sublibs_default): New variable, + set for Cygwin and MinGW. + * configure.ac (--enable-libgcj-sublibs): New command-line switch. + (BUILD_SUBLIBS): New AM_CONDITIONAL relating to it. + (libgcj_spec_lgcj_override): New variable, define if building sublibs. + (libgcj_spec_lgcj_bc_override): Likewise for when USE_LIBGCJ_BC. + (LIBGCJ_SPEC_LGCJ): New variable to abstract "-lgcj" from specs. + (LIBGCJ_SPEC_LGCJ_BC): Likewise for when USE_LIBGCJ_BC. + (LIBGCJ_SPEC): Use them. + * configure: Regenerate. + * Makefile.am (LOWER_PACKAGE_FILES_LO): New variable. + (ALL_PACKAGE_SOURCE_FILES_LO): Likewise. + (NONCORE_PACKAGE_SOURCE_FILES_LO): Likewise. + (CORE_PACKAGE_SOURCE_FILES_LO): Likewise. + (toolexeclib_LTLIBRARIES): Add libgcj-noncore.la if building sublibs. + (libgcj_noncore_la_LIBADD_SUBOBJECTS): New variable. + (libgcj_la_LIBADD_SUBOBJECTS): Likewise. + (libgcj_la_LDFLAGS_NOUNDEF): Likewise. + (libgij_la_LDFLAGS): Add DLL-related options. + (libgcj_la_LDFLAGS): Use libgcj_la_LDFLAGS_NOUNDEF and + libgcj_la_LIBADD_SUBOBJECTS. + (libgcj_la_DEPENDENCIES): Adjust to match. + (libgcj_noncore_la_SOURCES, libgcj_noncore_la_LDFLAGS, + libgcj_noncore_la_LIBADD, libgcj_noncore_la_DEPENDENCIES, + libgcj_noncore_la_LINK): New automake variables for sublibrary. + (libgcj_tools_la_LDFLAGS): Add DLL-related flags. + (libgcj_tools_la_LIBADD): New variable. + (libjvm_la_LDFLAGS): Add DLL-related flags. + (lib_gnu_awt_xlib_la_LDFLAGS): Likewise. + (libgcj_bc_la_LDFLAGS): Likewise. + (libgij_la_DEPENDENCIES): Add dependency on libgcj-noncore.la when + building sublibs. + (libgcj_tools_la_DEPENDENCIES, libjvm_la_DEPENDENCIES, + lib_gnu_awt_xlib_la_DEPENDENCIES, jv_convert_DEPENDENCIES, + gcj_dbtool_DEPENDENCIES, gc_analyze_DEPENDENCIES, ecjx_DEPENDENCIES): + Likewise. + * Makefile.in: Regenerate. + * sysdep/i386/backtrace.h (MAIN_FUNC): New #define for main function, + set appropriately for Cygwin on that platform or to "main" elsewhere. + (fallback_backtrace): Use it to limit stack unwind. + 2009-09-16 Jonathan Yong * gnu/java/security/jce/prng/natVMSecureRandomWin32.cc: Correct diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 7b6750c493c..e923fa30c5e 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -45,6 +45,170 @@ libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la toolexecmainlib_DATA = libgcj.spec +## +## These files form a closed dependency group at the lower +## edge of libjava's dependency graph, so can be separated out. +## For details of how the list was generated, see the GCC wiki: +## +## http://gcc.gnu.org/wiki/Internal_dependencies_of_libgcj +## +LOWER_PACKAGE_FILES_LO = \ + $(propertyo_files) \ + gnu-CORBA.lo \ + gnu-java-awt-dnd-peer-gtk.lo \ + gnu-java-awt-peer-gtk.lo \ + gnu-java-awt-peer-swing.lo \ + gnu-java-lang-management.lo \ + gnu-javax-management.lo \ + gnu-javax-rmi.lo \ + gnu-javax-sound-midi.lo \ + gnu-xml-aelfred2.lo \ + gnu-xml-dom.lo \ + gnu-xml-libxmlj.lo \ + gnu-xml-pipeline.lo \ + gnu-xml-stream.lo \ + gnu-xml-transform.lo \ + gnu-xml-util.lo \ + gnu-xml-validation.lo \ + gnu-xml-xpath.lo \ + java-lang-management.lo \ + javax-imageio.lo \ + javax-rmi.lo \ + jni-libjvm.lo \ + org-omg-CORBA.lo \ + org-omg-CORBA_2_3.lo \ + org-omg-CosNaming.lo \ + org-omg-Dynamic.lo \ + org-omg-DynamicAny.lo \ + org-omg-IOP.lo \ + org-omg-Messaging.lo \ + org-omg-PortableInterceptor.lo \ + org-omg-PortableServer.lo \ + org-omg-SendingContext.lo \ + org-omg-stub.lo \ + org-relaxng.lo \ + org-xml.lo \ + META-INF/services/java.util.prefs.PreferencesFactory.in.lo \ + META-INF/services/java.util.prefs.PreferencesFactory.lo \ + META-INF/services/javax.sound.midi.spi.MidiDeviceProvider.lo \ + META-INF/services/javax.sound.midi.spi.MidiFileReader.lo \ + META-INF/services/javax.sound.midi.spi.MidiFileWriter.lo \ + META-INF/services/javax.sound.sampled.spi.AudioFileReader.lo \ + classpath/native/jni/classpath/jcl.lo \ + classpath/native/jni/classpath/jnilink.lo \ + classpath/native/jni/java-math/gnu_java_math_GMP.lo \ + classpath/tools/libgcj_tools_la-tools.lo \ + gnu/awt.lo \ + gnu/awt/j2d.lo \ + gnu/gcj/io.lo \ + gnu/gcj/io/natSimpleSHSStream.lo \ + gnu/gcj/io/shs.lo \ + gnu/gcj/tools/gcj_dbtool.lo \ + gnu/gcj/util/natDebug.lo \ + gnu/gcj/util/natGCInfo.lo \ + gnu/java/awt/dnd.lo \ + gnu/java/awt/font.lo \ + gnu/java/awt/image.lo \ + gnu/java/awt/print.lo \ + gnu/java/awt/font/autofit.lo \ + gnu/java/awt/font/opentype.lo \ + gnu/java/awt/font/opentype/truetype.lo \ + gnu/java/lang/management/natVMClassLoadingMXBeanImpl.lo \ + gnu/java/lang/management/natVMCompilationMXBeanImpl.lo \ + gnu/java/lang/management/natVMGarbageCollectorMXBeanImpl.lo \ + gnu/java/lang/management/natVMMemoryMXBeanImpl.lo \ + gnu/java/lang/management/natVMMemoryManagerMXBeanImpl.lo \ + gnu/java/lang/management/natVMMemoryPoolMXBeanImpl.lo \ + gnu/java/lang/management/natVMOperatingSystemMXBeanImpl.lo \ + gnu/java/lang/management/natVMRuntimeMXBeanImpl.lo \ + gnu/java/lang/management/natVMThreadMXBeanImpl.lo \ + gnu/java/net/local.lo \ + gnu/java/net/protocol/ftp.lo \ + gnu/java/net/protocol/gcjlib.lo \ + gnu/java/net/protocol/https.lo \ + gnu/javax/imageio.lo \ + gnu/javax/print.lo \ + gnu/javax/sound.lo \ + gnu/javax/activation/viewers.lo \ + gnu/javax/imageio/bmp.lo \ + gnu/javax/imageio/gif.lo \ + gnu/javax/imageio/jpeg.lo \ + gnu/javax/imageio/png.lo \ + gnu/javax/naming/giop.lo \ + gnu/javax/naming/ictxImpl/trans.lo \ + gnu/javax/naming/jndi/url/corbaname.lo \ + gnu/javax/naming/jndi/url/rmi.lo \ + gnu/javax/print/ipp.lo \ + gnu/javax/print/ipp/attribute.lo \ + gnu/javax/print/ipp/attribute/defaults.lo \ + gnu/javax/print/ipp/attribute/job.lo \ + gnu/javax/print/ipp/attribute/printer.lo \ + gnu/javax/print/ipp/attribute/supported.lo \ + gnu/javax/security/auth/login.lo \ + gnu/javax/sound/sampled/AU.lo \ + gnu/javax/sound/sampled/WAV.lo \ + gnu/javax/swing/plaf/gnu.lo \ + gnu/javax/swing/plaf/metal.lo \ + java/sql.lo \ + java/awt/im.lo \ + java/awt/print.lo \ + java/awt/im/spi.lo \ + java/security/acl.lo \ + javax/activation.lo \ + javax/activity.lo \ + javax/management.lo \ + javax/naming.lo \ + javax/print.lo \ + javax/sql.lo \ + javax/tools.lo \ + javax/transaction.lo \ + javax/management/loading.lo \ + javax/management/openmbean.lo \ + javax/management/remote.lo \ + javax/management/remote/rmi.lo \ + javax/naming/directory.lo \ + javax/naming/event.lo \ + javax/naming/ldap.lo \ + javax/naming/spi.lo \ + javax/print/attribute.lo \ + javax/print/event.lo \ + javax/print/attribute/standard.lo \ + javax/security/cert.lo \ + javax/security/auth/kerberos.lo \ + javax/security/auth/login.lo \ + javax/security/auth/spi.lo \ + javax/sound/midi.lo \ + javax/sound/midi/spi.lo \ + javax/swing/plaf/multi.lo \ + javax/swing/plaf/synth.lo \ + javax/swing/text/rtf.lo \ + javax/swing/text/html/default.css.lo \ + javax/transaction/xa.lo \ + org/ietf/jgss.lo \ + sun/awt.lo + +## +## Lists of all .lo files, and filtered core and non-core lists. +## +ALL_PACKAGE_SOURCE_FILES_LO = $(all_packages_source_files:.list=.lo) $(propertyo_files) $(bc_objects) +NONCORE_PACKAGE_SOURCE_FILES_LO = $(filter $(LOWER_PACKAGE_FILES_LO),$(ALL_PACKAGE_SOURCE_FILES_LO)) +CORE_PACKAGE_SOURCE_FILES_LO = $(filter-out $(LOWER_PACKAGE_FILES_LO),$(ALL_PACKAGE_SOURCE_FILES_LO)) + +## +## Assign objects to output libraries. +## +if BUILD_SUBLIBS +toolexeclib_LTLIBRARIES += libgcj-noncore.la +libgcj_noncore_la_LIBADD_SUBOBJECTS = $(NONCORE_PACKAGE_SOURCE_FILES_LO) +libgcj_la_LIBADD_SUBOBJECTS = $(CORE_PACKAGE_SOURCE_FILES_LO) +libgcj_la_LDFLAGS_NOUNDEF = -no-undefined -bindir $(bindir) +else +# If not building sublibraries, everything goes in libgcj, +# and it cannot be usefully built shared on PE platforms. +libgcj_la_LIBADD_SUBOBJECTS = $(ALL_PACKAGE_SOURCE_FILES_LO) +libgcj_la_LDFLAGS_NOUNDEF = +endif + if USE_LIBGCJ_BC toolexeclib_LTLIBRARIES += libgcj_bc.la endif @@ -218,10 +382,13 @@ BOOTCLASSPATH = $(srcdir)/classpath/lib libgij_la_SOURCES = gij.cc libgij_la_DEPENDENCIES = libgcj.la libgcj.spec +if BUILD_SUBLIBS +libgij_la_DEPENDENCIES += libgcj-noncore.la +endif ## See jv_convert_LDADD. libgij_la_LIBADD = -L$(here)/.libs libgcj.la ## The mysterious backslash in the grep pattern is consumed by make. -libgij_la_LDFLAGS = -rpath $(toolexeclibdir) \ +libgij_la_LDFLAGS = -rpath $(toolexeclibdir) -no-undefined -bindir $(bindir) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC) libgij_la_LINK = $(CXXLINK) $(libgij_la_LDFLAGS) @@ -278,7 +445,7 @@ xlib_nat_files = $(xlib_nat_source_files:.cc=.lo) # certain linuxthread functions get linked: ## The mysterious backslash in the grep pattern is consumed by make. libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \ - $(LIBLTDL) $(SYS_ZLIBS) \ + $(LIBLTDL) $(SYS_ZLIBS) $(libgcj_la_LDFLAGS_NOUNDEF) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) libgcj_la_LIBADD = \ @@ -286,15 +453,13 @@ libgcj_la_LIBADD = \ java/lang/Object.lo \ java/lang/Class.lo \ java/process-$(PLATFORM).lo \ - $(all_packages_source_files:.list=.lo) \ - $(bc_objects) \ - $(propertyo_files) \ + $(libgcj_la_LIBADD_SUBOBJECTS) \ $(LIBFFI) $(ZLIBS) $(GCLIBS) 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) \ + $(ALL_PACKAGE_SOURCE_FILES_LO) \ $(LIBLTDL) $(libgcj_la_LIBADD) if ANONVERSCRIPT libgcj_la_DEPENDENCIES += $(srcdir)/libgcj.ver @@ -306,6 +471,19 @@ libgcj_la_LINK = $(LIBLINK) $(libgcj_la_LDFLAGS) ## compiled. EXTRA_libgcj_la_SOURCES = java/lang/Object.java +if BUILD_SUBLIBS +libgcj_noncore_la_SOURCES = +libgcj_noncore_la_LDFLAGS = $(libgcj_la_LDFLAGS) +libgcj_noncore_la_LIBADD = $(libgcj_noncore_la_LIBADD_SUBOBJECTS) \ + $(LIBFFI) $(ZLIBS) $(GCLIBS) libgcj.la +libgcj_noncore_la_DEPENDENCIES = libgcj-$(gcc_version).jar $(LIBLTDL) \ + $(libgcj_noncore_la_LIBADD) libgcj.la +if ANONVERSCRIPT +libgcj_noncore_la_DEPENDENCIES += $(srcdir)/libgcj.ver +endif +libgcj_noncore_la_LINK = $(libgcj_la_LINK) +endif + # We compile libgcj_tools with -findirect-dispatch so that they can # depend on external classes: in particular, gjdoc uses antlr. In # addition, -fno-bootstrap-classes ensures that the tools are loaded @@ -317,16 +495,24 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \ -fsource-filename=$(here)/classpath/tools/all-classes.lst libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \ - $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) + $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) -no-undefined -bindir $(bindir) +libgcj_tools_la_LIBADD = libgcj.la libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec +if BUILD_SUBLIBS +libgcj_tools_la_DEPENDENCIES += libgcj-noncore.la +endif libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS) ## libjvm.so libjvm_la_SOURCES = jni-libjvm.cc libjvm_la_DEPENDENCIES = libgcj.la libgcj.spec +if BUILD_SUBLIBS +libjvm_la_DEPENDENCIES += libgcj-noncore.la +endif ## See jv_convert_LDADD. libjvm_la_LIBADD = -L$(here)/.libs libgcj.la -libjvm_la_LDFLAGS = -avoid-version $(LIBGCJ_LD_SYMBOLIC) +libjvm_la_LDFLAGS = -avoid-version $(LIBGCJ_LD_SYMBOLIC) \ + -no-undefined -bindir $(bindir) libjvm_la_LINK = $(CXXLINK) $(libjvm_la_LDFLAGS) ## The .db file. This rule is only used for native builds, so it is @@ -344,6 +530,9 @@ lib_gnu_awt_xlib_la_LIBADD = gnu/awt/xlib.lo gnu/gcj/xlib.lo lib_gnu_awt_xlib_la_DEPENDENCIES = libgcj-$(gcc_version).jar \ libgcj.la libgcj.spec \ $(lib_gnu_awt_xlib_la_LIBADD) +if BUILD_SUBLIBS +lib_gnu_awt_xlib_la_DEPENDENCIES += libgcj-noncore.la +endif ## We require libstdc++-v3 to be in the same build tree. lib_gnu_awt_xlib_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ @@ -353,7 +542,7 @@ lib_gnu_awt_xlib_la_CPPFLAGS = \ ## The mysterious backslash in the grep pattern is consumed by make. lib_gnu_awt_xlib_la_LDFLAGS = ../libstdc++-v3/src/libstdc++.la \ @X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@ \ - -rpath $(toolexeclibdir) \ + -rpath $(toolexeclibdir) -no-undefined -bindir $(bindir) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC) lib_gnu_awt_xlib_la_LINK = $(LIBLINK) $(lib_gnu_awt_xlib_la_LDFLAGS) @@ -363,7 +552,7 @@ lib_gnu_awt_xlib_la_LINK = $(LIBLINK) $(lib_gnu_awt_xlib_la_LDFLAGS) ## This library is not linked against libgcj. libgcj_bc_la_SOURCES = libgcj_bc.c libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0 \ - $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) + $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) -no-undefined -bindir $(bindir) libgcj_bc_la_DEPENDENCIES = libgcj.la libgcj_bc_la_LINK = $(LIBLINK) $(libgcj_bc_la_LDFLAGS) ## This is specific to Linux/{Free,Net,Open}BSD/Hurd and perhaps few others. @@ -826,6 +1015,9 @@ jv_convert_LDADD = -L$(here)/.libs libgcj.la ## Depend on the spec file to make sure it is up to date before ## linking this program. jv_convert_DEPENDENCIES = libgcj.la libgcj.spec +if BUILD_SUBLIBS +jv_convert_DEPENDENCIES += libgcj-noncore.la +endif gcj_dbtool_SOURCES = \ gnu/gcj/tools/gcj_dbtool/natMain.cc @@ -847,6 +1039,9 @@ gcj_dbtool_LDADD = gnu/gcj/tools/gcj_dbtool.lo -L$(here)/.libs libgcj.la ## Depend on the spec file to make sure it is up to date before ## linking this program. gcj_dbtool_DEPENDENCIES = gnu/gcj/tools/gcj_dbtool.lo libgcj.la libgcj.spec +if BUILD_SUBLIBS +gcj_dbtool_DEPENDENCIES += libgcj-noncore.la +endif gc_analyze_SOURCES = @@ -861,6 +1056,9 @@ gc_analyze_LDADD = -L$(here)/.libs libgcj-tools.la libgcj.la ## Depend on the spec file to make sure it is up to date before ## linking this program. gc_analyze_DEPENDENCIES = libgcj-tools.la libgcj.la libgcj.spec +if BUILD_SUBLIBS +gc_analyze_DEPENDENCIES += libgcj-noncore.la +endif gij_SOURCES = ## We need -nodefaultlibs because we want to avoid gcj's `-lgcj'. We @@ -899,6 +1097,9 @@ endif !ENABLE_SHARED ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) ecjx_DEPENDENCIES = libgcj.la libgcj.spec +if BUILD_SUBLIBS +ecjx_DEPENDENCIES += libgcj-noncore.la +endif if USE_LIBGCJ_BC ecjx_DEPENDENCIES += libgcj_bc.la else diff --git a/libjava/Makefile.in b/libjava/Makefile.in index 349b9074d34..83c4c606975 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -39,26 +39,32 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @TESTSUBDIR_TRUE@am__append_1 = testsuite -@USE_LIBGCJ_BC_TRUE@am__append_2 = libgcj_bc.la -@XLIB_AWT_TRUE@am__append_3 = lib-gnu-awt-xlib.la -@INSTALL_ECJ_JAR_TRUE@am__append_4 = $(ECJ_BUILD_JAR) -@CREATE_GJDOC_TRUE@@NATIVE_TRUE@am__append_5 = gjdoc +@BUILD_SUBLIBS_TRUE@am__append_2 = libgcj-noncore.la +@USE_LIBGCJ_BC_TRUE@am__append_3 = libgcj_bc.la +@XLIB_AWT_TRUE@am__append_4 = lib-gnu-awt-xlib.la +@INSTALL_ECJ_JAR_TRUE@am__append_5 = $(ECJ_BUILD_JAR) +@CREATE_GJDOC_TRUE@@NATIVE_TRUE@am__append_6 = gjdoc @NATIVE_TRUE@noinst_PROGRAMS = $(am__EXEEXT_3) $(am__EXEEXT_4) @INSTALL_BINARIES_TRUE@@NATIVE_TRUE@bin_PROGRAMS = $(am__EXEEXT_2) -@INSTALL_BINARIES_FALSE@@NATIVE_TRUE@am__append_6 = $(bin_programs) -@INSTALL_AOT_RPM_TRUE@am__append_7 = contrib/aot-compile-rpm +@INSTALL_BINARIES_FALSE@@NATIVE_TRUE@am__append_7 = $(bin_programs) +@INSTALL_AOT_RPM_TRUE@am__append_8 = contrib/aot-compile-rpm @BUILD_ECJ1_TRUE@libexecsub_PROGRAMS = ecjx$(EXEEXT) -@ANONVERSCRIPT_TRUE@am__append_8 = -Wl,--version-script=$(srcdir)/libgcj.ver -@USING_GCC_TRUE@am__append_9 = $(WARNINGS) -@USING_BOEHMGC_TRUE@am__append_10 = boehm.cc -@USING_NOGC_TRUE@am__append_11 = nogc.cc -@USING_POSIX_PLATFORM_TRUE@am__append_12 = posix.cc -@USING_WIN32_PLATFORM_TRUE@am__append_13 = win32.cc -@USING_DARWIN_CRT_TRUE@am__append_14 = darwin.cc -@USING_POSIX_THREADS_TRUE@am__append_15 = posix-threads.cc -@USING_WIN32_THREADS_TRUE@am__append_16 = win32-threads.cc -@USING_NO_THREADS_TRUE@am__append_17 = no-threads.cc -@ANONVERSCRIPT_TRUE@am__append_18 = $(srcdir)/libgcj.ver +@ANONVERSCRIPT_TRUE@am__append_9 = -Wl,--version-script=$(srcdir)/libgcj.ver +@USING_GCC_TRUE@am__append_10 = $(WARNINGS) +@BUILD_SUBLIBS_TRUE@am__append_11 = libgcj-noncore.la +@USING_BOEHMGC_TRUE@am__append_12 = boehm.cc +@USING_NOGC_TRUE@am__append_13 = nogc.cc +@USING_POSIX_PLATFORM_TRUE@am__append_14 = posix.cc +@USING_WIN32_PLATFORM_TRUE@am__append_15 = win32.cc +@USING_DARWIN_CRT_TRUE@am__append_16 = darwin.cc +@USING_POSIX_THREADS_TRUE@am__append_17 = posix-threads.cc +@USING_WIN32_THREADS_TRUE@am__append_18 = win32-threads.cc +@USING_NO_THREADS_TRUE@am__append_19 = no-threads.cc +@ANONVERSCRIPT_TRUE@am__append_20 = $(srcdir)/libgcj.ver +@ANONVERSCRIPT_TRUE@@BUILD_SUBLIBS_TRUE@am__append_21 = $(srcdir)/libgcj.ver +@BUILD_SUBLIBS_TRUE@am__append_22 = libgcj-noncore.la +@BUILD_SUBLIBS_TRUE@am__append_23 = libgcj-noncore.la +@BUILD_SUBLIBS_TRUE@am__append_24 = libgcj-noncore.la DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \ $(srcdir)/../config.guess $(srcdir)/../config.sub \ $(srcdir)/../depcomp $(srcdir)/../install-sh \ @@ -76,10 +82,14 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \ $(top_srcdir)/gnu/java/nio/natVMSelector${PLATFORM}.cc \ $(top_srcdir)/java/lang/nat${PLATFORM}Process.cc \ $(top_srcdir)/scripts/jar.in COPYING ChangeLog NEWS THANKS -@MAINTAINER_MODE_TRUE@@NATIVE_TRUE@am__append_19 = gen-from-JIS -@NATIVE_TRUE@@USE_LIBGCJ_BC_TRUE@am__append_20 = libgcj_bc.la -@NATIVE_TRUE@@USE_LIBGCJ_BC_FALSE@am__append_21 = libgcj.la -@XLIB_AWT_TRUE@am__append_22 = $(xlib_nat_headers) +@MAINTAINER_MODE_TRUE@@NATIVE_TRUE@am__append_25 = gen-from-JIS +@BUILD_SUBLIBS_TRUE@am__append_26 = libgcj-noncore.la +@BUILD_SUBLIBS_TRUE@am__append_27 = libgcj-noncore.la +@BUILD_SUBLIBS_TRUE@am__append_28 = libgcj-noncore.la +@BUILD_SUBLIBS_TRUE@@NATIVE_TRUE@am__append_29 = libgcj-noncore.la +@NATIVE_TRUE@@USE_LIBGCJ_BC_TRUE@am__append_30 = libgcj_bc.la +@NATIVE_TRUE@@USE_LIBGCJ_BC_FALSE@am__append_31 = libgcj.la +@XLIB_AWT_TRUE@am__append_32 = $(xlib_nat_headers) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/libltdl/acinclude.m4 \ @@ -174,10 +184,14 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt_xlib_la-natClip.lo \ am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1) lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS) @XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir) -libgcj_tools_la_LIBADD = +am__DEPENDENCIES_1 = +am_libgcj_noncore_la_OBJECTS = +libgcj_noncore_la_OBJECTS = $(am_libgcj_noncore_la_OBJECTS) +@BUILD_SUBLIBS_TRUE@am_libgcj_noncore_la_rpath = -rpath \ +@BUILD_SUBLIBS_TRUE@ $(toolexeclibdir) am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS) -@INTERPRETER_TRUE@am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \ +@INTERPRETER_TRUE@am__DEPENDENCIES_2 = gnu/classpath/jdwp.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/event.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/event/filters.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/exception.lo \ @@ -186,7 +200,7 @@ libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS) @INTERPRETER_TRUE@ gnu/classpath/jdwp/transport.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/util.lo \ @INTERPRETER_TRUE@ gnu/classpath/jdwp/value.lo gnu/gcj/jvmti.lo -am__DEPENDENCIES_2 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \ +am__DEPENDENCIES_3 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \ gnu/classpath/debug.lo gnu/classpath/toolkit.lo gnu/gcj.lo \ gnu/gcj/convert.lo gnu/gcj/io.lo gnu/gcj/runtime.lo \ gnu/gcj/util.lo gnu/java/awt.lo gnu/java/awt/color.lo \ @@ -303,8 +317,12 @@ am__DEPENDENCIES_2 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \ javax/swing/undo.lo javax/tools.lo javax/transaction.lo \ javax/transaction/xa.lo org/ietf/jgss.lo sun/awt.lo \ sun/misc.lo sun/reflect.lo sun/reflect/annotation.lo \ - sun/reflect/misc.lo $(am__DEPENDENCIES_1) -am__DEPENDENCIES_3 = + sun/reflect/misc.lo $(am__DEPENDENCIES_2) +am__DEPENDENCIES_4 = $(am__DEPENDENCIES_3) $(propertyo_files) \ + $(bc_objects) +@BUILD_SUBLIBS_FALSE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_4) +@BUILD_SUBLIBS_TRUE@am__DEPENDENCIES_5 = \ +@BUILD_SUBLIBS_TRUE@ $(CORE_PACKAGE_SOURCE_FILES_LO) am__libgcj_la_SOURCES_DIST = prims.cc jni.cc exception.cc \ stacktrace.cc link.cc defineclass.cc verify.cc jvmti.cc \ interpret.cc gnu/classpath/jdwp/natVMFrame.cc \ @@ -538,23 +556,23 @@ GCJCOMPILE = $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) LTGCJCOMPILE = $(LIBTOOL) --tag=GCJ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(GCJ) $(AM_GCJFLAGS) $(GCJFLAGS) GCJLD = $(GCJ) -SOURCES = $(lib_gnu_awt_xlib_la_SOURCES) $(libgcj_tools_la_SOURCES) \ - $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) \ - $(libgcj_bc_la_SOURCES) $(libgij_la_SOURCES) \ - $(libjvm_la_SOURCES) $(ecjx_SOURCES) $(gappletviewer_SOURCES) \ - $(gc_analyze_SOURCES) $(gcj_dbtool_SOURCES) $(gcjh_SOURCES) \ - $(gen_from_JIS_SOURCES) $(gij_SOURCES) $(gjar_SOURCES) \ - $(gjarsigner_SOURCES) $(gjavah_SOURCES) $(gjdoc_SOURCES) \ - $(gkeytool_SOURCES) $(gnative2ascii_SOURCES) $(gorbd_SOURCES) \ - $(grmic_SOURCES) $(grmid_SOURCES) $(grmiregistry_SOURCES) \ - $(gserialver_SOURCES) $(gtnameserv_SOURCES) \ - $(jv_convert_SOURCES) -DIST_SOURCES = $(lib_gnu_awt_xlib_la_SOURCES) \ - $(libgcj_tools_la_SOURCES) $(am__libgcj_la_SOURCES_DIST) \ +SOURCES = $(lib_gnu_awt_xlib_la_SOURCES) $(libgcj_noncore_la_SOURCES) \ + $(libgcj_tools_la_SOURCES) $(libgcj_la_SOURCES) \ $(EXTRA_libgcj_la_SOURCES) $(libgcj_bc_la_SOURCES) \ $(libgij_la_SOURCES) $(libjvm_la_SOURCES) $(ecjx_SOURCES) \ $(gappletviewer_SOURCES) $(gc_analyze_SOURCES) \ - $(gcj_dbtool_SOURCES) $(gcjh_SOURCES) \ + $(gcj_dbtool_SOURCES) $(gcjh_SOURCES) $(gen_from_JIS_SOURCES) \ + $(gij_SOURCES) $(gjar_SOURCES) $(gjarsigner_SOURCES) \ + $(gjavah_SOURCES) $(gjdoc_SOURCES) $(gkeytool_SOURCES) \ + $(gnative2ascii_SOURCES) $(gorbd_SOURCES) $(grmic_SOURCES) \ + $(grmid_SOURCES) $(grmiregistry_SOURCES) $(gserialver_SOURCES) \ + $(gtnameserv_SOURCES) $(jv_convert_SOURCES) +DIST_SOURCES = $(lib_gnu_awt_xlib_la_SOURCES) \ + $(libgcj_noncore_la_SOURCES) $(libgcj_tools_la_SOURCES) \ + $(am__libgcj_la_SOURCES_DIST) $(EXTRA_libgcj_la_SOURCES) \ + $(libgcj_bc_la_SOURCES) $(libgij_la_SOURCES) \ + $(libjvm_la_SOURCES) $(ecjx_SOURCES) $(gappletviewer_SOURCES) \ + $(gc_analyze_SOURCES) $(gcj_dbtool_SOURCES) $(gcjh_SOURCES) \ $(am__gen_from_JIS_SOURCES_DIST) $(gij_SOURCES) \ $(gjar_SOURCES) $(gjarsigner_SOURCES) $(gjavah_SOURCES) \ $(gjdoc_SOURCES) $(gkeytool_SOURCES) $(gnative2ascii_SOURCES) \ @@ -802,7 +820,7 @@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ extra_gij_ldflags = @extra_gij_ldflags@ extra_ldflags = @extra_ldflags@ -extra_ldflags_libjava = @extra_ldflags_libjava@ $(am__append_8) +extra_ldflags_libjava = @extra_ldflags_libjava@ $(am__append_9) gcc_suffix = @gcc_suffix@ gcjsubdir = @gcjsubdir@ gxx_include_dir = @gxx_include_dir@ @@ -883,13 +901,158 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) \ libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la \ - $(am__append_2) $(am__append_3) + $(am__append_2) $(am__append_3) $(am__append_4) toolexecmainlib_DATA = libgcj.spec +LOWER_PACKAGE_FILES_LO = \ + $(propertyo_files) \ + gnu-CORBA.lo \ + gnu-java-awt-dnd-peer-gtk.lo \ + gnu-java-awt-peer-gtk.lo \ + gnu-java-awt-peer-swing.lo \ + gnu-java-lang-management.lo \ + gnu-javax-management.lo \ + gnu-javax-rmi.lo \ + gnu-javax-sound-midi.lo \ + gnu-xml-aelfred2.lo \ + gnu-xml-dom.lo \ + gnu-xml-libxmlj.lo \ + gnu-xml-pipeline.lo \ + gnu-xml-stream.lo \ + gnu-xml-transform.lo \ + gnu-xml-util.lo \ + gnu-xml-validation.lo \ + gnu-xml-xpath.lo \ + java-lang-management.lo \ + javax-imageio.lo \ + javax-rmi.lo \ + jni-libjvm.lo \ + org-omg-CORBA.lo \ + org-omg-CORBA_2_3.lo \ + org-omg-CosNaming.lo \ + org-omg-Dynamic.lo \ + org-omg-DynamicAny.lo \ + org-omg-IOP.lo \ + org-omg-Messaging.lo \ + org-omg-PortableInterceptor.lo \ + org-omg-PortableServer.lo \ + org-omg-SendingContext.lo \ + org-omg-stub.lo \ + org-relaxng.lo \ + org-xml.lo \ + META-INF/services/java.util.prefs.PreferencesFactory.in.lo \ + META-INF/services/java.util.prefs.PreferencesFactory.lo \ + META-INF/services/javax.sound.midi.spi.MidiDeviceProvider.lo \ + META-INF/services/javax.sound.midi.spi.MidiFileReader.lo \ + META-INF/services/javax.sound.midi.spi.MidiFileWriter.lo \ + META-INF/services/javax.sound.sampled.spi.AudioFileReader.lo \ + classpath/native/jni/classpath/jcl.lo \ + classpath/native/jni/classpath/jnilink.lo \ + classpath/native/jni/java-math/gnu_java_math_GMP.lo \ + classpath/tools/libgcj_tools_la-tools.lo \ + gnu/awt.lo \ + gnu/awt/j2d.lo \ + gnu/gcj/io.lo \ + gnu/gcj/io/natSimpleSHSStream.lo \ + gnu/gcj/io/shs.lo \ + gnu/gcj/tools/gcj_dbtool.lo \ + gnu/gcj/util/natDebug.lo \ + gnu/gcj/util/natGCInfo.lo \ + gnu/java/awt/dnd.lo \ + gnu/java/awt/font.lo \ + gnu/java/awt/image.lo \ + gnu/java/awt/print.lo \ + gnu/java/awt/font/autofit.lo \ + gnu/java/awt/font/opentype.lo \ + gnu/java/awt/font/opentype/truetype.lo \ + gnu/java/lang/management/natVMClassLoadingMXBeanImpl.lo \ + gnu/java/lang/management/natVMCompilationMXBeanImpl.lo \ + gnu/java/lang/management/natVMGarbageCollectorMXBeanImpl.lo \ + gnu/java/lang/management/natVMMemoryMXBeanImpl.lo \ + gnu/java/lang/management/natVMMemoryManagerMXBeanImpl.lo \ + gnu/java/lang/management/natVMMemoryPoolMXBeanImpl.lo \ + gnu/java/lang/management/natVMOperatingSystemMXBeanImpl.lo \ + gnu/java/lang/management/natVMRuntimeMXBeanImpl.lo \ + gnu/java/lang/management/natVMThreadMXBeanImpl.lo \ + gnu/java/net/local.lo \ + gnu/java/net/protocol/ftp.lo \ + gnu/java/net/protocol/gcjlib.lo \ + gnu/java/net/protocol/https.lo \ + gnu/javax/imageio.lo \ + gnu/javax/print.lo \ + gnu/javax/sound.lo \ + gnu/javax/activation/viewers.lo \ + gnu/javax/imageio/bmp.lo \ + gnu/javax/imageio/gif.lo \ + gnu/javax/imageio/jpeg.lo \ + gnu/javax/imageio/png.lo \ + gnu/javax/naming/giop.lo \ + gnu/javax/naming/ictxImpl/trans.lo \ + gnu/javax/naming/jndi/url/corbaname.lo \ + gnu/javax/naming/jndi/url/rmi.lo \ + gnu/javax/print/ipp.lo \ + gnu/javax/print/ipp/attribute.lo \ + gnu/javax/print/ipp/attribute/defaults.lo \ + gnu/javax/print/ipp/attribute/job.lo \ + gnu/javax/print/ipp/attribute/printer.lo \ + gnu/javax/print/ipp/attribute/supported.lo \ + gnu/javax/security/auth/login.lo \ + gnu/javax/sound/sampled/AU.lo \ + gnu/javax/sound/sampled/WAV.lo \ + gnu/javax/swing/plaf/gnu.lo \ + gnu/javax/swing/plaf/metal.lo \ + java/sql.lo \ + java/awt/im.lo \ + java/awt/print.lo \ + java/awt/im/spi.lo \ + java/security/acl.lo \ + javax/activation.lo \ + javax/activity.lo \ + javax/management.lo \ + javax/naming.lo \ + javax/print.lo \ + javax/sql.lo \ + javax/tools.lo \ + javax/transaction.lo \ + javax/management/loading.lo \ + javax/management/openmbean.lo \ + javax/management/remote.lo \ + javax/management/remote/rmi.lo \ + javax/naming/directory.lo \ + javax/naming/event.lo \ + javax/naming/ldap.lo \ + javax/naming/spi.lo \ + javax/print/attribute.lo \ + javax/print/event.lo \ + javax/print/attribute/standard.lo \ + javax/security/cert.lo \ + javax/security/auth/kerberos.lo \ + javax/security/auth/login.lo \ + javax/security/auth/spi.lo \ + javax/sound/midi.lo \ + javax/sound/midi/spi.lo \ + javax/swing/plaf/multi.lo \ + javax/swing/plaf/synth.lo \ + javax/swing/text/rtf.lo \ + javax/swing/text/html/default.css.lo \ + javax/transaction/xa.lo \ + org/ietf/jgss.lo \ + sun/awt.lo + +ALL_PACKAGE_SOURCE_FILES_LO = $(all_packages_source_files:.list=.lo) $(propertyo_files) $(bc_objects) +NONCORE_PACKAGE_SOURCE_FILES_LO = $(filter $(LOWER_PACKAGE_FILES_LO),$(ALL_PACKAGE_SOURCE_FILES_LO)) +CORE_PACKAGE_SOURCE_FILES_LO = $(filter-out $(LOWER_PACKAGE_FILES_LO),$(ALL_PACKAGE_SOURCE_FILES_LO)) +@BUILD_SUBLIBS_TRUE@libgcj_noncore_la_LIBADD_SUBOBJECTS = $(NONCORE_PACKAGE_SOURCE_FILES_LO) +# If not building sublibraries, everything goes in libgcj, +# and it cannot be usefully built shared on PE platforms. +@BUILD_SUBLIBS_FALSE@libgcj_la_LIBADD_SUBOBJECTS = $(ALL_PACKAGE_SOURCE_FILES_LO) +@BUILD_SUBLIBS_TRUE@libgcj_la_LIBADD_SUBOBJECTS = $(CORE_PACKAGE_SOURCE_FILES_LO) +@BUILD_SUBLIBS_FALSE@libgcj_la_LDFLAGS_NOUNDEF = +@BUILD_SUBLIBS_TRUE@libgcj_la_LDFLAGS_NOUNDEF = -no-undefined -bindir $(bindir) dbexec_LTLIBRARIES = libjvm.la pkgconfigdir = $(libdir)/pkgconfig jardir = $(datadir)/java jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar \ - $(am__append_4) + $(am__append_5) @JAVA_HOME_SET_FALSE@JAVA_HOME_DIR = $(prefix) @JAVA_HOME_SET_TRUE@JAVA_HOME_DIR = $(JAVA_HOME) @JAVA_HOME_SET_FALSE@BOOT_CLASS_PATH_DIR = $(jardir)/libgcj-$(gcc_version).jar @@ -899,10 +1062,10 @@ db_pathtail = $(gcjsubdir)/$(db_name) @NATIVE_TRUE@bin_programs = jv-convert gij grmic grmiregistry \ @NATIVE_TRUE@ gcj-dbtool gappletviewer gjarsigner gkeytool gjar \ @NATIVE_TRUE@ gcjh gjavah gnative2ascii gorbd grmid gserialver \ -@NATIVE_TRUE@ gtnameserv gc-analyze $(am__append_5) +@NATIVE_TRUE@ gtnameserv gc-analyze $(am__append_6) @NATIVE_TRUE@dbexec_DATA = $(db_name) bin_SCRIPTS = contrib/rebuild-gcj-db contrib/aot-compile \ - $(am__append_7) + $(am__append_8) GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated LTLDFLAGS = $(shell $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) GCJLINK = $(LIBTOOL) --tag=GCJ $(LIBTOOLFLAGS) --mode=link $(GCJ) -L$(here) \ @@ -944,7 +1107,7 @@ AM_GCJFLAGS = \ --encoding=UTF-8 \ -Wno-deprecated -fbootstrap-classes -AM_CFLAGS = @LIBGCJ_CFLAGS@ $(am__append_9) +AM_CFLAGS = @LIBGCJ_CFLAGS@ $(am__append_10) @SUPPRESS_LIBGCJ_BC_FALSE@LIBGCJ_BC_FLAGS = -findirect-dispatch -fno-indirect-classes @SUPPRESS_LIBGCJ_BC_TRUE@LIBGCJ_BC_FLAGS = @BUILD_LIBGCJ_REDUCED_REFLECTION_FALSE@LIBGCJ_REDUCED_REFLECTION_FLAGS = @@ -962,9 +1125,9 @@ AM_CPPFLAGS = -I$(top_srcdir) \ BOOTCLASSPATH = $(srcdir)/classpath/lib libgij_la_SOURCES = gij.cc -libgij_la_DEPENDENCIES = libgcj.la libgcj.spec +libgij_la_DEPENDENCIES = libgcj.la libgcj.spec $(am__append_11) libgij_la_LIBADD = -L$(here)/.libs libgcj.la -libgij_la_LDFLAGS = -rpath $(toolexeclibdir) \ +libgij_la_LDFLAGS = -rpath $(toolexeclibdir) -no-undefined -bindir $(bindir) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC) libgij_la_LINK = $(CXXLINK) $(libgij_la_LDFLAGS) @@ -972,16 +1135,16 @@ libgij_la_LINK = $(CXXLINK) $(libgij_la_LDFLAGS) @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_10) $(am__append_11) \ - $(am__append_12) $(am__append_13) $(am__append_14) \ - $(am__append_15) $(am__append_16) $(am__append_17) + $(nat_source_files) $(am__append_12) $(am__append_13) \ + $(am__append_14) $(am__append_15) $(am__append_16) \ + $(am__append_17) $(am__append_18) $(am__append_19) nat_files = $(nat_source_files:.cc=.lo) xlib_nat_files = $(xlib_nat_source_files:.cc=.lo) # Include THREADLIBS here to ensure that the correct version of # certain linuxthread functions get linked: libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \ - $(LIBLTDL) $(SYS_ZLIBS) \ + $(LIBLTDL) $(SYS_ZLIBS) $(libgcj_la_LDFLAGS_NOUNDEF) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) @@ -990,17 +1153,25 @@ libgcj_la_LIBADD = \ java/lang/Object.lo \ java/lang/Class.lo \ java/process-$(PLATFORM).lo \ - $(all_packages_source_files:.list=.lo) \ - $(bc_objects) \ - $(propertyo_files) \ + $(libgcj_la_LIBADD_SUBOBJECTS) \ $(LIBFFI) $(ZLIBS) $(GCLIBS) 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_18) + $(ALL_PACKAGE_SOURCE_FILES_LO) $(LIBLTDL) $(libgcj_la_LIBADD) \ + $(am__append_20) libgcj_la_LINK = $(LIBLINK) $(libgcj_la_LDFLAGS) EXTRA_libgcj_la_SOURCES = java/lang/Object.java +@BUILD_SUBLIBS_TRUE@libgcj_noncore_la_SOURCES = +@BUILD_SUBLIBS_TRUE@libgcj_noncore_la_LDFLAGS = $(libgcj_la_LDFLAGS) +@BUILD_SUBLIBS_TRUE@libgcj_noncore_la_LIBADD = $(libgcj_noncore_la_LIBADD_SUBOBJECTS) \ +@BUILD_SUBLIBS_TRUE@ $(LIBFFI) $(ZLIBS) $(GCLIBS) libgcj.la + +@BUILD_SUBLIBS_TRUE@libgcj_noncore_la_DEPENDENCIES = \ +@BUILD_SUBLIBS_TRUE@ libgcj-$(gcc_version).jar $(LIBLTDL) \ +@BUILD_SUBLIBS_TRUE@ $(libgcj_noncore_la_LIBADD) libgcj.la \ +@BUILD_SUBLIBS_TRUE@ $(am__append_21) +@BUILD_SUBLIBS_TRUE@libgcj_noncore_la_LINK = $(libgcj_la_LINK) # We compile libgcj_tools with -findirect-dispatch so that they can # depend on external classes: in particular, gjdoc uses antlr. In @@ -1014,21 +1185,22 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \ libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \ - $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) + $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) -no-undefined -bindir $(bindir) -libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec +libgcj_tools_la_LIBADD = libgcj.la +libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec $(am__append_22) libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS) libjvm_la_SOURCES = jni-libjvm.cc -libjvm_la_DEPENDENCIES = libgcj.la libgcj.spec +libjvm_la_DEPENDENCIES = libgcj.la libgcj.spec $(am__append_23) libjvm_la_LIBADD = -L$(here)/.libs libgcj.la -libjvm_la_LDFLAGS = -avoid-version $(LIBGCJ_LD_SYMBOLIC) +libjvm_la_LDFLAGS = -avoid-version $(LIBGCJ_LD_SYMBOLIC) \ + -no-undefined -bindir $(bindir) + libjvm_la_LINK = $(CXXLINK) $(libjvm_la_LDFLAGS) lib_gnu_awt_xlib_la_SOURCES = $(xlib_nat_source_files) lib_gnu_awt_xlib_la_LIBADD = gnu/awt/xlib.lo gnu/gcj/xlib.lo -lib_gnu_awt_xlib_la_DEPENDENCIES = libgcj-$(gcc_version).jar \ - libgcj.la libgcj.spec \ - $(lib_gnu_awt_xlib_la_LIBADD) - +lib_gnu_awt_xlib_la_DEPENDENCIES = libgcj-$(gcc_version).jar libgcj.la \ + libgcj.spec $(lib_gnu_awt_xlib_la_LIBADD) $(am__append_24) lib_gnu_awt_xlib_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ -I../libstdc++-v3/include \ @@ -1037,13 +1209,13 @@ lib_gnu_awt_xlib_la_CPPFLAGS = \ lib_gnu_awt_xlib_la_LDFLAGS = ../libstdc++-v3/src/libstdc++.la \ @X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@ \ - -rpath $(toolexeclibdir) \ + -rpath $(toolexeclibdir) -no-undefined -bindir $(bindir) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC) lib_gnu_awt_xlib_la_LINK = $(LIBLINK) $(lib_gnu_awt_xlib_la_LDFLAGS) libgcj_bc_la_SOURCES = libgcj_bc.c libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0 \ - $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) + $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) -no-undefined -bindir $(bindir) libgcj_bc_la_DEPENDENCIES = libgcj.la libgcj_bc_la_LINK = $(LIBLINK) $(libgcj_bc_la_LDFLAGS) @@ -8306,7 +8478,7 @@ jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ jv_convert_LINK = $(GCJLINK) $(jv_convert_LDFLAGS) jv_convert_LDADD = -L$(here)/.libs libgcj.la -jv_convert_DEPENDENCIES = libgcj.la libgcj.spec +jv_convert_DEPENDENCIES = libgcj.la libgcj.spec $(am__append_26) gcj_dbtool_SOURCES = \ gnu/gcj/tools/gcj_dbtool/natMain.cc @@ -8315,14 +8487,16 @@ gcj_dbtool_LDFLAGS = --main=gnu.gcj.tools.gcj_dbtool.Main \ gcj_dbtool_LINK = $(GCJLINK) $(gcj_dbtool_LDFLAGS) gcj_dbtool_LDADD = gnu/gcj/tools/gcj_dbtool.lo -L$(here)/.libs libgcj.la -gcj_dbtool_DEPENDENCIES = gnu/gcj/tools/gcj_dbtool.lo libgcj.la libgcj.spec +gcj_dbtool_DEPENDENCIES = gnu/gcj/tools/gcj_dbtool.lo libgcj.la \ + libgcj.spec $(am__append_27) gc_analyze_SOURCES = gc_analyze_LDFLAGS = --main=gnu.gcj.tools.gc_analyze.MemoryAnalyze \ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) gc_analyze_LINK = $(GCJLINK) $(gc_analyze_LDFLAGS) gc_analyze_LDADD = -L$(here)/.libs libgcj-tools.la libgcj.la -gc_analyze_DEPENDENCIES = libgcj-tools.la libgcj.la libgcj.spec +gc_analyze_DEPENDENCIES = libgcj-tools.la libgcj.la libgcj.spec \ + $(am__append_28) gij_SOURCES = gij_LDFLAGS = -rpath $(dbexecdir) -rpath $(toolexeclibdir) \ -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) \ @@ -8342,10 +8516,10 @@ ECJX_BASE_FLAGS = -findirect-dispatch \ @NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) @NATIVE_FALSE@ecjx_LDADD = @NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) \ -@NATIVE_TRUE@ $(am__append_21) +@NATIVE_TRUE@ $(am__append_31) @NATIVE_FALSE@ecjx_DEPENDENCIES = @NATIVE_TRUE@ecjx_DEPENDENCIES = libgcj.la libgcj.spec \ -@NATIVE_TRUE@ $(am__append_20) +@NATIVE_TRUE@ $(am__append_29) $(am__append_30) gappletviewer_SOURCES = gappletviewer_LDFLAGS = --main=gnu.classpath.tools.appletviewer.Main \ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) @@ -8562,7 +8736,7 @@ gnu/gcj/xlib/natXImage.cc \ gnu/gcj/xlib/natXUnmapEvent.cc sourcesdir = $(jardir) -headers_to_make = $(nat_headers) $(am__append_22) +headers_to_make = $(nat_headers) $(am__append_32) # 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 @@ -8803,6 +8977,8 @@ gnu/gcj/xlib/lib_gnu_awt_xlib_la-natXImage.lo: \ gnu/gcj/xlib/lib_gnu_awt_xlib_la-natXUnmapEvent.lo: \ gnu/gcj/xlib/$(am__dirstamp) \ gnu/gcj/xlib/$(DEPDIR)/$(am__dirstamp) +libgcj-noncore.la: $(libgcj_noncore_la_OBJECTS) $(libgcj_noncore_la_DEPENDENCIES) + $(libgcj_noncore_la_LINK) $(am_libgcj_noncore_la_rpath) $(libgcj_noncore_la_OBJECTS) $(libgcj_noncore_la_LIBADD) $(LIBS) classpath/tools/$(am__dirstamp): @$(MKDIR_P) classpath/tools @: > classpath/tools/$(am__dirstamp) diff --git a/libjava/configure b/libjava/configure index a7c464a0bdb..5e92946deb9 100755 --- a/libjava/configure +++ b/libjava/configure @@ -915,6 +915,8 @@ XLIB_AWT_FALSE XLIB_AWT_TRUE TOOLKIT LIBGCJDEBUG +BUILD_SUBLIBS_FALSE +BUILD_SUBLIBS_TRUE LIBGCJ_LD_SYMBOLIC_FUNCTIONS LIBGCJ_LD_SYMBOLIC LIBGCJ_JAVAFLAGS @@ -1054,6 +1056,7 @@ enable_gjdoc enable_java_maintainer_mode enable_dependency_tracking enable_maintainer_mode +enable_libgcj_sublibs enable_libgcj_debug with_escher enable_java_awt @@ -1745,6 +1748,7 @@ Optional Features: --enable-dependency-tracking do not reject slow dependency extractors --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer + --enable-libgcj-sublibs build libgcj as many sub-libraries --enable-libgcj-debug enable runtime debugging code --enable-java-awt list of AWT peer implementations to be built --enable-shared[=PKGS] build shared libraries [default=yes] @@ -5935,6 +5939,7 @@ fi # libgcj_cflags - host specific C compiler flags # libgcj_cxxflags - host specific C++ compiler flags # libgcj_javaflags - host specific Java compiler flags +# and a number of others; see the list at the start of the file. libgcj_cflags= libgcj_cxxflags= @@ -6536,6 +6541,35 @@ fi ac_config_headers="$ac_config_headers include/config.h gcj/libgcj-config.h" +# Possibly build libgcj as many sub-libraries. +# Check whether --enable-libgcj-sublibs was given. +if test "${enable_libgcj_sublibs+set}" = set; then : + enableval=$enable_libgcj_sublibs; +fi + + +if test -z "$enable_libgcj_sublibs"; then + enable_libgcj_sublibs=$enable_libgcj_sublibs_default +fi + if test "$enable_libgcj_sublibs" = yes; then + BUILD_SUBLIBS_TRUE= + BUILD_SUBLIBS_FALSE='#' +else + BUILD_SUBLIBS_TRUE='#' + BUILD_SUBLIBS_FALSE= +fi + +if test "$enable_libgcj_sublibs" = yes ; then + # In theory we could make do with only one override and simply + # tag "_bc" onto the end of it when we use it to generate the + # spec, but that's an ugly thing to do when there are multiple + # words in the string and you're relying on the ordering to + # append the correct one. + libgcj_spec_lgcj_override="-lgcj-noncore -lgcj" + libgcj_spec_lgcj_bc_override="-lgcj-noncore -lgcj_bc" +fi + + # See if the user has requested runtime debugging. LIBGCJDEBUG="disable" @@ -7464,13 +7498,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:7467: $ac_compile\"" >&5) + (eval echo "\"\$as_me:7501: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:7470: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:7504: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:7473: output\"" >&5) + (eval echo "\"\$as_me:7507: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -8665,7 +8699,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 8668 "configure"' > conftest.$ac_ext + echo '#line 8702 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -10599,11 +10633,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:10602: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10636: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10606: \$? = $ac_status" >&5 + echo "$as_me:10640: \$? = $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. @@ -10938,11 +10972,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:10941: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10975: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10945: \$? = $ac_status" >&5 + echo "$as_me:10979: \$? = $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. @@ -11043,11 +11077,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:11046: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11080: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:11050: \$? = $ac_status" >&5 + echo "$as_me:11084: \$? = $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 @@ -11098,11 +11132,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:11101: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11135: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:11105: \$? = $ac_status" >&5 + echo "$as_me:11139: \$? = $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 @@ -13507,7 +13541,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 13510 "configure" +#line 13544 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13603,7 +13637,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 13606 "configure" +#line 13640 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15565,11 +15599,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:15568: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15602: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15572: \$? = $ac_status" >&5 + echo "$as_me:15606: \$? = $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. @@ -15664,11 +15698,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:15667: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15701: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15671: \$? = $ac_status" >&5 + echo "$as_me:15705: \$? = $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 @@ -15716,11 +15750,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:15719: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15753: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15723: \$? = $ac_status" >&5 + echo "$as_me:15757: \$? = $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 @@ -17132,11 +17166,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:17135: $lt_compile\"" >&5) + (eval echo "\"\$as_me:17169: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:17139: \$? = $ac_status" >&5 + echo "$as_me:17173: \$? = $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. @@ -17465,11 +17499,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:17468: $lt_compile\"" >&5) + (eval echo "\"\$as_me:17502: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:17472: \$? = $ac_status" >&5 + echo "$as_me:17506: \$? = $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. @@ -17564,11 +17598,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:17567: $lt_compile\"" >&5) + (eval echo "\"\$as_me:17601: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:17571: \$? = $ac_status" >&5 + echo "$as_me:17605: \$? = $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 @@ -17616,11 +17650,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:17619: $lt_compile\"" >&5) + (eval echo "\"\$as_me:17653: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:17623: \$? = $ac_status" >&5 + echo "$as_me:17657: \$? = $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 @@ -19218,7 +19252,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then : enableval=$enable_sjlj_exceptions; : else cat > conftest.$ac_ext << EOF -#line 19221 "configure" +#line 19255 "configure" struct S { ~S(); }; void bar(); void foo() @@ -20310,6 +20344,9 @@ arm*linux*eabi) LIBSTDCXXSPEC=-lstdc++ LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++" ;; +*-*-cygwin) + extra_ldflags_libjava=-liconv + ;; esac @@ -20552,9 +20589,17 @@ ac_config_links="$ac_config_links sysdep/backtrace.h:$fallback_backtrace_h" ac_config_links="$ac_config_links sysdep/descriptor.h:$descriptor_h" -LIBGCJ_SPEC="%{s-bc-abi:} -lgcj" +LIBGCJ_SPEC_LGCJ=-lgcj +LIBGCJ_SPEC_LGCJ_BC=-lgcj_bc +if test x"$libgcj_spec_lgcj_override" != x ; then + LIBGCJ_SPEC_LGCJ=$libgcj_spec_lgcj_override +fi +if test x"$libgcj_spec_lgcj_bc_override" != x ; then + LIBGCJ_SPEC_LGCJ_BC=$libgcj_spec_lgcj_bc_override +fi +LIBGCJ_SPEC="%{s-bc-abi:} $LIBGCJ_SPEC_LGCJ" if test "$use_libgcj_bc" = yes; then - LIBGCJ_SPEC="%{static|static-libgcj|!s-bc-abi:-lgcj;:-lgcj_bc}" + LIBGCJ_SPEC="%{static|static-libgcj|!s-bc-abi:$LIBGCJ_SPEC_LGCJ;:$LIBGCJ_SPEC_LGCJ_BC}" LIBGCJ_BC_SPEC="%{findirect-dispatch:-fPIC}" fi @@ -24607,6 +24652,10 @@ if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${BUILD_SUBLIBS_TRUE}" && test -z "${BUILD_SUBLIBS_FALSE}"; then + as_fn_error "conditional \"BUILD_SUBLIBS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${XLIB_AWT_TRUE}" && test -z "${XLIB_AWT_FALSE}"; then as_fn_error "conditional \"XLIB_AWT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/libjava/configure.ac b/libjava/configure.ac index c6bcbf4d7e6..c2418dc2bba 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -206,6 +206,7 @@ AC_EXEEXT # libgcj_cflags - host specific C compiler flags # libgcj_cxxflags - host specific C++ compiler flags # libgcj_javaflags - host specific Java compiler flags +# and a number of others; see the list at the start of the file. libgcj_cflags= libgcj_cxxflags= @@ -237,6 +238,26 @@ fi AC_CONFIG_HEADERS([include/config.h gcj/libgcj-config.h]) +# Possibly build libgcj as many sub-libraries. +AC_ARG_ENABLE(libgcj-sublibs, + AS_HELP_STRING([--enable-libgcj-sublibs], + [build libgcj as many sub-libraries])) + +if test -z "$enable_libgcj_sublibs"; then + enable_libgcj_sublibs=$enable_libgcj_sublibs_default +fi +AM_CONDITIONAL(BUILD_SUBLIBS, test "$enable_libgcj_sublibs" = yes) +if test "$enable_libgcj_sublibs" = yes ; then + # In theory we could make do with only one override and simply + # tag "_bc" onto the end of it when we use it to generate the + # spec, but that's an ugly thing to do when there are multiple + # words in the string and you're relying on the ordering to + # append the correct one. + libgcj_spec_lgcj_override="-lgcj-noncore -lgcj" + libgcj_spec_lgcj_bc_override="-lgcj-noncore -lgcj_bc" +fi + + # See if the user has requested runtime debugging. LIBGCJDEBUG="disable" AC_SUBST(LIBGCJDEBUG) @@ -897,6 +918,9 @@ arm*linux*eabi) LIBSTDCXXSPEC=-lstdc++ LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++" ;; +*-*-cygwin) + extra_ldflags_libjava=-liconv + ;; esac AC_SUBST(extra_ldflags_libjava) AC_SUBST(extra_gij_ldflags) @@ -1075,9 +1099,17 @@ AC_CONFIG_LINKS(sysdep/locks.h:sysdep/$sysdeps_dir/locks.h) AC_CONFIG_LINKS(sysdep/backtrace.h:$fallback_backtrace_h) AC_CONFIG_LINKS(sysdep/descriptor.h:$descriptor_h) -LIBGCJ_SPEC="%{s-bc-abi:} -lgcj" +LIBGCJ_SPEC_LGCJ=-lgcj +LIBGCJ_SPEC_LGCJ_BC=-lgcj_bc +if test x"$libgcj_spec_lgcj_override" != x ; then + LIBGCJ_SPEC_LGCJ=$libgcj_spec_lgcj_override +fi +if test x"$libgcj_spec_lgcj_bc_override" != x ; then + LIBGCJ_SPEC_LGCJ_BC=$libgcj_spec_lgcj_bc_override +fi +LIBGCJ_SPEC="%{s-bc-abi:} $LIBGCJ_SPEC_LGCJ" if test "$use_libgcj_bc" = yes; then - LIBGCJ_SPEC="%{static|static-libgcj|!s-bc-abi:-lgcj;:-lgcj_bc}" + LIBGCJ_SPEC="%{static|static-libgcj|!s-bc-abi:$LIBGCJ_SPEC_LGCJ;:$LIBGCJ_SPEC_LGCJ_BC}" LIBGCJ_BC_SPEC="%{findirect-dispatch:-fPIC}" fi AC_SUBST(LIBGCJ_SPEC) diff --git a/libjava/configure.host b/libjava/configure.host index 1d1b7085e11..2955571b276 100644 --- a/libjava/configure.host +++ b/libjava/configure.host @@ -23,6 +23,9 @@ # default. # enable_hash_synchronization_default If hash synchronization should be # enabled by default. +# enable_libgcj_sublibs_default Whether to build libgcj as a bunch of +# separate shared libraries or in one +# monolithic one. # sysdeps_dir Directory containing system-dependent headers # slow_pthread_self The synchronization code should try to avoid # pthread_self calls by caching thread IDs in a hashtable @@ -41,6 +44,7 @@ libgcj_javaflags= libgcj_interpreter= enable_java_net_default=yes enable_hash_synchronization_default=no +enable_libgcj_sublibs_default=no sysdeps_dir=generic slow_pthread_self= can_unwind_signal=no @@ -341,6 +345,8 @@ case "${host}" in fallback_backtrace_h=sysdep/i386/backtrace.h # We need a frame pointer on Windows, so override BACKTRACESPEC BACKTRACESPEC= + # Win32 DLLs are limited to 64k exported symbols each. + enable_libgcj_sublibs_default=yes ;; esac diff --git a/libjava/libltdl/ChangeLog b/libjava/libltdl/ChangeLog index d52d7327bd8..a2b5499d37d 100644 --- a/libjava/libltdl/ChangeLog +++ b/libjava/libltdl/ChangeLog @@ -1,3 +1,10 @@ +2009-09-22 Dave Korn + + * ltdl.h (LT_SCOPE): Change conditional to avoid breaking + auto-export during libgcj DLL linking. + * Makefile.am (libltdl_la_LDFLAGS): Remove -bindir switch. + * Makefile.in: Regenerate. + 2009-08-24 Ralf Wildenhues * configure.ac (AC_PREREQ): Bump to 2.64. Remove FIXME. diff --git a/libjava/libltdl/Makefile.am b/libjava/libltdl/Makefile.am index 8a2af102e4b..737290e6c7c 100644 --- a/libjava/libltdl/Makefile.am +++ b/libjava/libltdl/Makefile.am @@ -22,7 +22,7 @@ endif CLEANFILES = libltdl.la libltdlc.la libltdl_la_SOURCES = ltdl.c -libltdl_la_LDFLAGS = -no-undefined -bindir "$(bindir)" -version-info 4:1:1 +libltdl_la_LDFLAGS = -no-undefined -version-info 4:1:1 libltdl_la_LIBADD = $(LIBADD_DL) libltdlc_la_SOURCES = ltdl.c diff --git a/libjava/libltdl/Makefile.in b/libjava/libltdl/Makefile.in index e3212433a37..46e139ef7f1 100644 --- a/libjava/libltdl/Makefile.in +++ b/libjava/libltdl/Makefile.in @@ -249,7 +249,7 @@ INCLUDES = $(GCINCS) @CONVENIENCE_LTDL_TRUE@noinst_LTLIBRARIES = libltdlc.la CLEANFILES = libltdl.la libltdlc.la libltdl_la_SOURCES = ltdl.c -libltdl_la_LDFLAGS = -no-undefined -bindir "$(bindir)" -version-info 4:1:1 +libltdl_la_LDFLAGS = -no-undefined -version-info 4:1:1 libltdl_la_LIBADD = $(LIBADD_DL) libltdlc_la_SOURCES = ltdl.c libltdlc_la_LIBADD = $(LIBADD_DL) diff --git a/libjava/libltdl/ltdl.h b/libjava/libltdl/ltdl.h index 8aaf3429ad4..c31c579d49d 100644 --- a/libjava/libltdl/ltdl.h +++ b/libjava/libltdl/ltdl.h @@ -128,7 +128,7 @@ LT_BEGIN_C_DECLS ridiculous implementation of data symbol exporting. */ #ifndef LT_SCOPE # ifdef __WINDOWS__ -# ifdef DLL_EXPORT /* defined by libtool (if required) */ +# ifdef LIBLTDL_DLL_EXPORT /* don't define or ld disables auto-export. */ # define LT_SCOPE __declspec(dllexport) # endif # ifdef LIBLTDL_DLL_IMPORT /* define if linking with this dll */ diff --git a/libjava/sysdep/i386/backtrace.h b/libjava/sysdep/i386/backtrace.h index 63b32746137..ee793b22a0f 100644 --- a/libjava/sysdep/i386/backtrace.h +++ b/libjava/sysdep/i386/backtrace.h @@ -13,7 +13,14 @@ details. */ #include -extern int main (int, char **); +#ifdef __CYGWIN__ +/* To allow this to link as a DLL. */ +#define MAIN_FUNC dll_crt0__FP11per_process +extern "C" int MAIN_FUNC () __declspec(dllimport); +#else /* !__CYGWIN__ */ +#define MAIN_FUNC main +extern int MAIN_FUNC (int, char **); +#endif /* ?__CYGWIN__ */ /* The context used to keep track of our position while unwinding through the call stack. */ @@ -104,7 +111,7 @@ fallback_backtrace (_Unwind_Trace_Fn trace_fn, _Jv_UnwindState *state) const char **, bool))_Jv_RunMain; if (ctx.meth_addr == (_Jv_uintptr_t)jv_runmain || ctx.meth_addr == (_Jv_uintptr_t)_Jv_ThreadStart - || (ctx.meth_addr - (_Jv_uintptr_t)main) < 16) + || (ctx.meth_addr - (_Jv_uintptr_t)MAIN_FUNC) < 16) break; } -- 2.11.4.GIT