This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Patch: FYI: unbreak gtk peers
- From: Tom Tromey <tromey at redhat dot com>
- To: Java Patch List <java-patches at gcc dot gnu dot org>
- Date: 05 Apr 2005 15:09:25 -0600
- Subject: Patch: FYI: unbreak gtk peers
- Reply-to: tromey at redhat dot com
I'm checking this in on the trunk.
Tom Fitzsimmons found an apparent runtime linking bug which was caused
by a C++-ABI-compiled class having a superclass which is BC-compiled.
I'm fixing it by compiling another package with the BC ABI.
Tom
Index: ChangeLog
from Tom Tromey <tromey@redhat.com>
* Makefile.in: Rebuilt.
* Makefile.am (lib_gnu_java_awt_peer_gtk_la_SOURCES): Removed
gtk_awt_peer_sources.
(lib_gnu_java_awt_peer_gtk_la_LIBADD): Added gtk-awt-peer.lo.
(lib_gnu_java_awt_peer_gtk_la_DEPENDENCIES): Likewise.
($(gtk_awt_peer_sources:.java=.lo)): Removed.
(gtk-awt-peer.lo): New target.
Index: Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libjava/Makefile.am,v
retrieving revision 1.471
diff -u -r1.471 Makefile.am
--- Makefile.am 1 Apr 2005 19:19:04 -0000 1.471
+++ Makefile.am 5 Apr 2005 21:09:34 -0000
@@ -474,7 +474,6 @@
$(lib_gnu_java_awt_peer_gtk_la_OBJECTS): $(lib_gnu_java_awt_peer_gtk_la_DEPENDENCIES)
lib_gnu_java_awt_peer_gtk_la_SOURCES = \
-$(gtk_awt_peer_sources) \
$(gtk_c_source_files) \
jni/gtk-peer/gthread-jni.h \
jni/gtk-peer/gtkpeer.h \
@@ -485,8 +484,8 @@
-I$(srcdir)/jni/gtk-peer $(PEDANTIC_CFLAGS) $(GTK_CFLAGS) $(LIBART_CFLAGS) \
$(X_CFLAGS) $(CAIRO_CFLAGS) $(PANGOFT2_CFLAGS)
lib_gnu_java_awt_peer_gtk_la_GCJFLAGS = $(AM_GCJFLAGS) -fjni
-lib_gnu_java_awt_peer_gtk_la_LIBADD = $(GTK_LIBS) $(GLIB_LIBS) $(LIBART_LIBS) $(CAIRO_LIBS) $(PANGOFT2_LIBS)
-lib_gnu_java_awt_peer_gtk_la_DEPENDENCIES = $(gtk_jni_headers) libgcj-$(gcc_version).jar libgcj.la libgcj.spec
+lib_gnu_java_awt_peer_gtk_la_LIBADD = gtk-awt-peer.lo $(GTK_LIBS) $(GLIB_LIBS) $(LIBART_LIBS) $(CAIRO_LIBS) $(PANGOFT2_LIBS)
+lib_gnu_java_awt_peer_gtk_la_DEPENDENCIES = gtk-awt-peer.lo $(gtk_jni_headers) libgcj-$(gcc_version).jar libgcj.la libgcj.spec
## The mysterious backslash in the grep pattern is consumed by make.
lib_gnu_java_awt_peer_gtk_la_LDFLAGS = \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC) $(X_LIBS) -lXtst
@@ -622,9 +621,6 @@
$(javao_files) $(xlib_javao_files): %.lo: %.java
$(LTGCJCOMPILE) -o $@ -c $<
-$(gtk_awt_peer_sources:.java=.lo): %.lo: %.java
- $(LTGCJCOMPILE) -fjni -o $@ -c $<
-
## Pass the list of object files to libtool in a temporary file to
## avoid tripping platform command line length limits.
libgcj.la: $(libgcj_la_OBJECTS) $(libgcj_la_DEPENDENCIES)
@@ -692,6 +688,17 @@
$(LTGCJCOMPILE) -findirect-dispatch -c -o gnu-java-beans.lo \
`find gnu/java/beans -name '*.class' -print`
+## Depend on the sources, even though we are going to compile the
+## classes.
+gtk-awt-peer.lo: $(gtk_awt_peer_sources)
+## FIXME: this is ugly. We want to make sure the .class files have
+## been built, but we don't want a real dependency on them as this
+## would cause our target to be rebuilt whenever any .java file is
+## touched.
+ $(MAKE) classes.stamp
+ $(LTGCJCOMPILE) -findirect-dispatch -fjni -c -o gtk-awt-peer.lo \
+ `find gnu/java/awt/peer/gtk -name '*.class' -print`
+
## ################################################################
##