PATCH/RFC: --enable-java-awt=gtk (was: Building the GTK peers...)

Laurent Bardet l.bardet@magic.fr
Wed Jul 31 15:25:00 GMT 2002


Hi,

This is a patch to allow the recognition of --enable-java-awt=gtk
configure option, and the build of gcj GTK-based AWT peers.
It follows the same scheme as gcj Xlib-base AWT peers, i.e. it builds
libgcjgtk.* libraries (was libgcjx.* for xlib).


Configuring libjava:
--------------------
This patch, applied to head, works for my i586-pc-linux-gnu platform:
../../configure 
        --host=i586-pc-linux-gnu
        --enable-threads=posix
        --prefix=/home/devlp/gcc_awt_gtk
        --enable-shared=yes
        --enable-languages=c,c++,java
        --enable-java-awt=gtk

IMO it needs more work to be integrated smoothly in configure/build
machinery:
- check for GTK availability at configure time: I don't know how to
  perform this. Bryce pointed towards AM_PATH_GTK macro, but I don't
  know how to set it up. See line "# FIXME: no test for gtk yet..." in
  libjava/configure.in.
- determination of required library for gtk :
  See line "## FIXME: determine which LIB and options are required
  with GTK" in libjava/Makefile.am. When I build an AWT application,
  I append -lgcjgtk -lgtk -lgdk -lglib -lgthread to LDFLAGS. One way
  would be to determine which library is necessary and resolve the
  external gtk symbol at libjava build time.
- cross/native configuration: I want to enable this option for cross
  compilation (i.e. with gtk win32, I should be able to run AWT-based
  application build for mingw).


Building libjava:
-----------------

When applying this patch, compilation of gtk-peers fails on three
classes (some AWT files have been merged from classpath, and peers
need cleanup too). See ChangeLog.


Building application:
---------------------
On link command I link against -lgcjgtk -lgtk -lgdk -lglib -lgthread,
and I set awt.toolkit property to the correct peer implementation:
-Dawt.toolkit=gnu.awt.gtk.GtkToolkit, to override the Toolkit
default which comes from classpath.


Can you consider this solution and give some feedback ? Do you need
separate patches for configure and build phases ?

Laurent Bardet

P.S. should I forward also to java@gcc.gnu.org and classpath@gnu.org ?
-------------- next part --------------
Index: ChangeLog
from  Laurent Bardet  <l.bardet@magic.fr>

        * configure: Rebuilt.
        * configure.in: --enable-java-awt=gtk configure option.
        * Makefile.am: Add libgcjgtk.la,
          gtk_java_source_files and gtk_nat_source_files.
        * Makefile.in: Regenerate.
        * GtkComponentPeer.java: Add empty getColorModel() implementation.
        * GtkContainerPeer.java: Add deprecated insets() method. Rename
           attribute to prevent name collision.
        * GtkToolkit.java: Uncomment empty getPrintJob() implementation.

Index: configure
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/configure,v
retrieving revision 1.153
diff -u -r1.153 configure
--- configure	30 Jul 2002 12:35:59 -0000	1.153
+++ configure	31 Jul 2002 20:18:32 -0000
@@ -7377,6 +7377,7 @@
 
 fi
 
+AM_PATH_GTK
 
 # Check whether --enable-java-awt or --disable-java-awt was given.
 if test "${enable_java_awt+set}" = set; then
@@ -7400,7 +7401,13 @@
       fi
       ;;
     gtk)
-      # Nothing, yet...
+      # FIXME: no test for gtk yet...
+      #if test "$no_gtk" = yes; then
+      #  echo "*** gtk peers requested but no gtk library available" 1>&2
+      #  exit 1
+      #else
+        use_gtk_awt="yes"
+      #fi
       ;;
     no)
       use_xlib_awt=
Index: configure.in
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/configure.in,v
retrieving revision 1.138
diff -u -r1.138 configure.in
--- configure.in	30 Jul 2002 12:36:00 -0000	1.138
+++ configure.in	31 Jul 2002 20:18:41 -0000
@@ -944,6 +944,7 @@
 fi
 
 AC_PATH_XTRA
+AM_PATH_GTK
 
 dnl Determine which AWT peer libraries to build
 AC_ARG_ENABLE(java-awt,
@@ -964,7 +965,13 @@
       fi
       ;;
     gtk)
-      # Nothing, yet...
+      # FIXME: no test for gtk yet...
+      #if test "$no_gtk" = yes; then
+      #  echo "*** gtk peers requested but no gtk library available" 1>&2
+      #  exit 1
+      #else
+        use_gtk_awt="yes"
+      #fi
       ;;
     no)
       use_xlib_awt=
Index: Makefile.am
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/Makefile.am,v
retrieving revision 1.232
diff -u -r1.232 Makefile.am
--- Makefile.am	15 Jul 2002 16:05:13 -0000	1.232
+++ Makefile.am	31 Jul 2002 20:18:53 -0000
@@ -29,7 +29,13 @@
 cond_x_ltlibrary =
 endif
 
-toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary)
+if GTK_AWT
+cond_gtk_ltlibrary = libgcjgtk.la
+else
+cond_gtk_ltlibrary =
+endif
+
+toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary) $(cond_gtk_ltlibrary)
 toolexeclib_DATA = libgcj.spec
 
 jardir = $(datadir)/java
@@ -120,12 +126,14 @@
 ## Objects from C++ sources in subdirs.
 nat_files = $(nat_source_files:.cc=.lo)
 x_nat_files = $(x_nat_source_files:.cc=.lo)
+gtk_nat_files = $(gtk_nat_source_files:.cc=.lo)
 ## Objects from C sources in subdirs.
 c_files = $(c_source_files:.c=.lo)
 ## Objects from Java sources in subdirs.
 javao_files = $(java_source_files:.java=.lo) \
 	$(built_java_source_files:.java=.lo)
 x_javao_files = $(x_java_source_files:.java=.lo)
+gtk_javao_files = $(gtk_java_source_files:.java=.lo)
 
 libgcj_la_SOURCES = prims.cc jni.cc exception.cc \
 	resolve.cc defineclass.cc interpret.cc name-finder.cc verify.cc \
@@ -157,18 +165,36 @@
         -version-info `grep -v '^\#' $(srcdir)/libtool-version`
 libgcjx_la_LINK = $(LIBLINK)
 
+libgcjgtk_la_SOURCES = $(gtk_nat_source_files)
+EXTRA_libgcjgtk_la_SOURCES = $(gtk_java_source_files)
+libgcjgtk_la_DEPENDENCIES = libgcj-@gcc_version@.jar $(gtk_javao_files)
+libgcjgtk_la_LIBADD = $(gtk_javao_files)
+## FIXME: determine which LIB and options are required with GTK:
+## FIXME: at least -lgtk -lgdk -lglib ?
+libgcjgtk_la_LDFLAGS = @X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@ \
+        -rpath $(toolexeclibdir) \
+## The mysterious backslash is consumed by make.
+        -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libgcjgtk_la_LINK = $(LIBLINK)
+
 ## Make a symlink for each `libgcjx' file that was installed.
+## Make a symlink for each `libgcjgtk' file that was installed.
 install-exec-hook:
 	cd $(DESTDIR)$(libdir) && \
 	if test -f libgcjx.la; then \
 	  rm -f gnu-awt-xlib.la; \
 	  $(LN_S) libgcjx.la gnu-awt-xlib.la; \
 	fi
+	if test -f libgcjgtk.la; then \
+	  rm -f gnu-awt-gtk.la; \
+	  $(LN_S) libgcjgtk.la gnu-awt-gtk.la; \
+	fi
 
 all_java_source_files = \
     $(java_source_files) \
     $(built_java_source_files) \
-    $(x_java_source_files)
+    $(x_java_source_files) \
+    $(gtk_java_source_files)
 
 all_java_class_files = $(all_java_source_files:.java=.class)
 
@@ -183,7 +209,7 @@
 	  sed -e '/\/\./d' -e '/\/xlib/d' | \
 	  $(ZIP) cfM0E@ $@
 
-MOSTLYCLEANFILES = $(javao_files) $(nat_files) $(nat_headers) $(c_files) $(x_javao_files) $(x_nat_files) $(x_nat_headers)
+MOSTLYCLEANFILES = $(javao_files) $(nat_files) $(nat_headers) $(c_files) $(x_javao_files) $(x_nat_files) $(x_nat_headers) $(gtk_javao_files) $(gtk_nat_files) $(gtk_nat_headers)
 CLEANFILES = libgcj-@gcc_version@.jar
 
 clean-local:
@@ -192,7 +218,7 @@
 
 # Just remove the objects from C++ sources, for testing the C++ compiler.
 clean-nat:
-	rm -f $(nat_files) $(x_nat_files)
+	rm -f $(nat_files) $(x_nat_files) $(gtk_nat_files)
 
 SUFFIXES = .class .java .h
 
@@ -206,7 +232,7 @@
 ## special rule.  The standard automake rule can't be overridden (this
 ## is a bug in automake), and it also won't put the .o files into
 ## subdirs.  FIXME.
-$(nat_files) $(x_nat_files): %.lo: %.cc
+$(nat_files) $(x_nat_files) $(gtk_nat_files): %.lo: %.cc
 	@echo '$(LTCXXCOMPILE) -MD -MT $@ -MF $(@:.lo=.pp) -c -o $@ $<'; \
 	$(LTCXXCOMPILE) -MD -MT $@ -MF $(@:.lo=.pp) -c -o $@ $<
 	@-mv $(@:.lo=.pp) $(@:.lo=.d)
@@ -218,7 +244,7 @@
 $(c_files): java/lang/fdlibm.h java/lang/ieeefp.h java/lang/mprec.h
 
 ## FIXME: GNU make.
-$(javao_files) $(x_javao_files): %.lo: %.java
+$(javao_files) $(x_javao_files) $(gtk_javao_files): %.lo: %.java
 	$(GCJCOMPILE) -o $@ $<
 
 ## Pass the list of object files to libtool in a temporary file to 
@@ -234,6 +260,11 @@
 	$(libgcjx_la_LINK) -objectlist libgcjx.objectlist \
 	-rpath $(toolexeclibdir) $(libgcjx_la_LDFLAGS) $(LIBS)
 
+libgcjgtk.la: $(libgcjgtk_la_OBJECTS) $(libgcjgtk_la_DEPENDENCIES)
+	@: $(shell echo Creating list of files to link...) $(shell rm -f libgcjgtk.objectlist || :) $(shell touch libgcjgtk.objectlist) $(foreach object,$(libgcjgtk_la_OBJECTS) $(libgcjgtk_la_LIBADD),$(shell echo $(object) >> libgcjgtk.objectlist))
+	$(libgcjgtk_la_LINK) -objectlist libgcjgtk.objectlist \
+	-rpath $(toolexeclibdir) $(libgcjgtk_la_LDFLAGS) $(LIBS)
+
 ## ################################################################
 
 ##
@@ -254,8 +285,9 @@
 nat_headers = $(ordinary_nat_headers) $(inner_nat_headers)
 
 x_nat_headers = $(x_java_source_files:.java=.h)
+gtk_nat_headers = $(gtk_java_source_files:.java=.h)
 
-$(ordinary_nat_headers) $(x_nat_headers): %.h: %.class
+$(ordinary_nat_headers) $(x_nat_headers) $(gtk_nat_headers): %.h: %.class
 
 java/lang/ClassLoader.h: java/lang/ClassLoader.class
 	$(GCJH) -classpath '' -bootclasspath $(top_builddir) \
@@ -1882,6 +1914,28 @@
 gnu/gcj/xlib/natXImage.cc \
 gnu/gcj/xlib/natXUnmapEvent.cc
 
+
+gtk_java_source_files = \
+gnu/awt/gtk/GtkButtonPeer.java \
+gnu/awt/gtk/GtkComponentPeer.java \
+gnu/awt/gtk/GtkContainerPeer.java \
+gnu/awt/gtk/GtkFramePeer.java \
+gnu/awt/gtk/GtkLabelPeer.java \
+gnu/awt/gtk/GtkMainThread.java \
+gnu/awt/gtk/GtkToolkit.java \
+gnu/awt/gtk/GtkWindowPeer.java
+
+gtk_nat_source_files = \
+gnu/awt/gtk/gtkcommon.cc \
+gnu/awt/gtk/natGtkButtonPeer.cc \
+gnu/awt/gtk/natGtkComponentPeer.cc \
+gnu/awt/gtk/natGtkContainerPeer.cc \
+gnu/awt/gtk/natGtkFramePeer.cc \
+gnu/awt/gtk/natGtkLabelPeer.cc \
+gnu/awt/gtk/natGtkMainThread.cc \
+gnu/awt/gtk/natGtkToolkit.cc \
+gnu/awt/gtk/natGtkWindowPeer.cc
+
 ## ################################################################
 
 ##
@@ -1936,7 +1990,7 @@
 ## the C++ code whenever any .java file is touched.
 ## Also force all the class files to build first. This makes them build in
 ## the right order to improve performance.
-all-recursive: $(all_java_class_files) $(nat_headers) $(x_nat_headers)
+all-recursive: $(all_java_class_files) $(nat_headers) $(x_nat_headers) $(gtk_nat_headers)
 
 ## ################################################################
Index: Makefile.in
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/Makefile.in,v
retrieving revision 1.252
diff -u -r1.252 Makefile.in
--- Makefile.in	15 Jul 2002 16:05:13 -0000	1.252
+++ Makefile.in	31 Jul 2002 20:19:13 -0000
@@ -136,8 +136,10 @@
 @USE_LIBDIR_FALSE@toolexecdir = @USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias)
 @XLIB_AWT_TRUE@cond_x_ltlibrary = @XLIB_AWT_TRUE@libgcjx.la
 @XLIB_AWT_FALSE@cond_x_ltlibrary = 
+@GTK_AWT_TRUE@cond_gtk_ltlibrary = @GTK_AWT_TRUE@libgcjgtk.la
+@GTK_AWT_FALSE@cond_gtk_ltlibrary = 
 
-toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary)
+toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary) $(cond_gtk_ltlibrary)
 toolexeclib_DATA = libgcj.spec
 
 jardir = $(datadir)/java
@@ -188,11 +190,13 @@
 
 nat_files = $(nat_source_files:.cc=.lo)
 x_nat_files = $(x_nat_source_files:.cc=.lo)
+gtk_nat_files = $(gtk_nat_source_files:.cc=.lo)
 c_files = $(c_source_files:.c=.lo)
 javao_files = $(java_source_files:.java=.lo) \
 	$(built_java_source_files:.java=.lo)
 
 x_javao_files = $(x_java_source_files:.java=.lo)
+gtk_javao_files = $(gtk_java_source_files:.java=.lo)
 
 libgcj_la_SOURCES = prims.cc jni.cc exception.cc \
 	resolve.cc defineclass.cc interpret.cc name-finder.cc verify.cc \
@@ -228,15 +232,28 @@
 
 libgcjx_la_LINK = $(LIBLINK)
 
+libgcjgtk_la_SOURCES = $(gtk_nat_source_files)
+EXTRA_libgcjgtk_la_SOURCES = $(gtk_java_source_files)
+libgcjgtk_la_DEPENDENCIES = libgcj-@gcc_version@.jar $(gtk_javao_files)
+libgcjgtk_la_LIBADD = $(gtk_javao_files)
+## FIXME: determine which LIB and options are required with GTK:
+## FIXME: at least -lgtk -lgdk -lglib ?
+libgcjgtk_la_LDFLAGS = @X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@ \
+        -rpath $(toolexeclibdir) \
+        -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+
+libgcjgtk_la_LINK = $(LIBLINK)
+
 all_java_source_files = \
     $(java_source_files) \
     $(built_java_source_files) \
-    $(x_java_source_files)
+    $(x_java_source_files) \
+    $(gtk_java_source_files)
 
 
 all_java_class_files = $(all_java_source_files:.java=.class)
 
-MOSTLYCLEANFILES = $(javao_files) $(nat_files) $(nat_headers) $(c_files) $(x_javao_files) $(x_nat_files) $(x_nat_headers)
+MOSTLYCLEANFILES = $(javao_files) $(nat_files) $(nat_headers) $(c_files) $(x_javao_files) $(x_nat_files) $(x_nat_headers) $(gtk_javao_files) $(gtk_nat_files) $(gtk_nat_headers)
 CLEANFILES = libgcj-@gcc_version@.jar
 
 SUFFIXES = .class .java .h
@@ -252,6 +269,7 @@
 nat_headers = $(ordinary_nat_headers) $(inner_nat_headers)
 
 x_nat_headers = $(x_java_source_files:.java=.h)
+gtk_nat_headers = $(gtk_java_source_files:.java=.h)
 
 extra_headers = java/lang/Object.h java/lang/Class.h
 
@@ -1646,6 +1664,29 @@
 gnu/gcj/xlib/natXUnmapEvent.cc
 
 
+gtk_java_source_files = \
+gnu/awt/gtk/GtkButtonPeer.java \
+gnu/awt/gtk/GtkComponentPeer.java \
+gnu/awt/gtk/GtkContainerPeer.java \
+gnu/awt/gtk/GtkFramePeer.java \
+gnu/awt/gtk/GtkLabelPeer.java \
+gnu/awt/gtk/GtkMainThread.java \
+gnu/awt/gtk/GtkToolkit.java \
+gnu/awt/gtk/GtkWindowPeer.java
+
+
+gtk_nat_source_files = \
+gnu/awt/gtk/gtkcommon.cc \
+gnu/awt/gtk/natGtkButtonPeer.cc \
+gnu/awt/gtk/natGtkComponentPeer.cc \
+gnu/awt/gtk/natGtkContainerPeer.cc \
+gnu/awt/gtk/natGtkFramePeer.cc \
+gnu/awt/gtk/natGtkLabelPeer.cc \
+gnu/awt/gtk/natGtkMainThread.cc \
+gnu/awt/gtk/natGtkToolkit.cc \
+gnu/awt/gtk/natGtkWindowPeer.cc
+
+
 # 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
 # friends when we are called from the top level Makefile.
@@ -1747,6 +1788,11 @@
 gnu/gcj/xlib/natXConfigureEvent.lo gnu/gcj/xlib/natXException.lo \
 gnu/gcj/xlib/natXExposeEvent.lo gnu/gcj/xlib/natXImage.lo \
 gnu/gcj/xlib/natXUnmapEvent.lo
+libgcjgtk_la_OBJECTS =  gnu/awt/gtk/gtkcommon.lo \
+gnu/awt/gtk/natGtkButtonPeer.lo gnu/awt/gtk/natGtkComponentPeer.lo \
+gnu/awt/gtk/natGtkContainerPeer.lo gnu/awt/gtk/natGtkFramePeer.lo \
+gnu/awt/gtk/natGtkLabelPeer.lo gnu/awt/gtk/natGtkMainThread.lo \
+gnu/awt/gtk/natGtkToolkit.lo gnu/awt/gtk/natGtkWindowPeer.lo
 @NATIVE_TRUE@bin_PROGRAMS =  jv-convert$(EXEEXT) gij$(EXEEXT) \
 @NATIVE_TRUE@rmic$(EXEEXT) rmiregistry$(EXEEXT)
 @NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS =  \
@@ -1785,7 +1831,17 @@
 DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/$(srcdir)/$(CONVERT_DIR)/make-trie.P .deps/boehm.P \
 .deps/defineclass.P .deps/exception.P .deps/gij.P \
-.deps/gnu/awt/LightweightRedirector.P \
+.deps/gnu/awt/LightweightRedirector.P .deps/gnu/awt/gtk/GtkButtonPeer.P \
+.deps/gnu/awt/gtk/GtkComponentPeer.P \
+.deps/gnu/awt/gtk/GtkContainerPeer.P .deps/gnu/awt/gtk/GtkFramePeer.P \
+.deps/gnu/awt/gtk/GtkLabelPeer.P .deps/gnu/awt/gtk/GtkMainThread.P \
+.deps/gnu/awt/gtk/GtkToolkit.P .deps/gnu/awt/gtk/GtkWindowPeer.P \
+.deps/gnu/awt/gtk/gtkcommon.P .deps/gnu/awt/gtk/natGtkButtonPeer.P \
+.deps/gnu/awt/gtk/natGtkComponentPeer.P \
+.deps/gnu/awt/gtk/natGtkContainerPeer.P \
+.deps/gnu/awt/gtk/natGtkFramePeer.P .deps/gnu/awt/gtk/natGtkLabelPeer.P \
+.deps/gnu/awt/gtk/natGtkMainThread.P .deps/gnu/awt/gtk/natGtkToolkit.P \
+.deps/gnu/awt/gtk/natGtkWindowPeer.P \
 .deps/gnu/awt/j2d/AbstractGraphicsState.P \
 .deps/gnu/awt/j2d/DirectRasterGraphics.P \
 .deps/gnu/awt/j2d/Graphics2DImpl.P \
@@ -2770,8 +2826,8 @@
 .deps/org/xml/sax/helpers/XMLReaderFactory.P .deps/posix-threads.P \
 .deps/posix.P .deps/prims.P .deps/resolve.P .deps/verify.P \
 .deps/win32-threads.P .deps/win32.P
-SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(libgcjx_la_SOURCES) $(EXTRA_libgcjx_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(rmic_SOURCES) $(EXTRA_rmic_SOURCES) $(rmiregistry_SOURCES) $(EXTRA_rmiregistry_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
-OBJECTS = $(libgcj_la_OBJECTS) $(libgcjx_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(rmic_OBJECTS) $(rmiregistry_OBJECTS) $(gen_from_JIS_OBJECTS)
+SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(libgcjx_la_SOURCES) $(EXTRA_libgcjx_la_SOURCES) $(libgcjgtk_la_SOURCES) $(EXTRA_libgcjgtk_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(rmic_SOURCES) $(EXTRA_rmic_SOURCES) $(rmiregistry_SOURCES) $(EXTRA_rmiregistry_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
+OBJECTS = $(libgcj_la_OBJECTS) $(libgcjx_la_OBJECTS) $(libgcjgtk_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(rmic_OBJECTS) $(rmiregistry_OBJECTS) $(gen_from_JIS_OBJECTS)
 
 all: all-redirect
 .SUFFIXES:
@@ -3292,6 +3348,10 @@
 	  rm -f gnu-awt-xlib.la; \
 	  $(LN_S) libgcjx.la gnu-awt-xlib.la; \
 	fi
+	if test -f libgcjgtk.la; then \
+	  rm -f gnu-awt-gtk.la; \
+	  $(LN_S) libgcjgtk.la gnu-awt-gtk.la; \
+	fi
 
 .java.class:
 	$(JAVAC) $(JCFLAGS) -classpath '' -bootclasspath $(here):$(srcdir) \
@@ -3308,7 +3368,7 @@
 
 # Just remove the objects from C++ sources, for testing the C++ compiler.
 clean-nat:
-	rm -f $(nat_files) $(x_nat_files)
+	rm -f $(nat_files) $(x_nat_files) $(gtk_nat_files)
 
 .class.lo:
 	$(GCJCOMPILE) -o $@ $<
@@ -3316,7 +3376,7 @@
 .java.lo:
 	$(GCJCOMPILE) -o $@ $<
 
-$(nat_files) $(x_nat_files): %.lo: %.cc
+$(nat_files) $(x_nat_files) $(gtk_nat_files): %.lo: %.cc
 	@echo '$(LTCXXCOMPILE) -MD -MT $@ -MF $(@:.lo=.pp) -c -o $@ $<'; \
 	$(LTCXXCOMPILE) -MD -MT $@ -MF $(@:.lo=.pp) -c -o $@ $<
 	@-mv $(@:.lo=.pp) $(@:.lo=.d)
@@ -3326,7 +3386,7 @@
 
 $(c_files): java/lang/fdlibm.h java/lang/ieeefp.h java/lang/mprec.h
 
-$(javao_files) $(x_javao_files): %.lo: %.java
+$(javao_files) $(x_javao_files) $(gtk_javao_files): %.lo: %.java
 	$(GCJCOMPILE) -o $@ $<
 
 libgcj.la: $(libgcj_la_OBJECTS) $(libgcj_la_DEPENDENCIES)
@@ -3340,10 +3400,15 @@
 	$(libgcjx_la_LINK) -objectlist libgcjx.objectlist \
 	-rpath $(toolexeclibdir) $(libgcjx_la_LDFLAGS) $(LIBS)
 
+libgcjgtk.la: $(libgcjgtk_la_OBJECTS) $(libgcjgtk_la_DEPENDENCIES)
+	@: $(shell echo Creating list of files to link...) $(shell rm -f libgcjgtk.objectlist || :) $(shell touch libgcjgtk.objectlist) $(foreach object,$(libgcjgtk_la_OBJECTS) $(libgcjgtk_la_LIBADD),$(shell echo $(object) >> libgcjgtk.objectlist))
+	$(libgcjgtk_la_LINK) -objectlist libgcjgtk.objectlist \
+	-rpath $(toolexeclibdir) $(libgcjgtk_la_LDFLAGS) $(LIBS)
+
 .class.h:
 	$(GCJH) -classpath '' -bootclasspath $(top_builddir) $(basename $<)
 
-$(ordinary_nat_headers) $(x_nat_headers): %.h: %.class
+$(ordinary_nat_headers) $(x_nat_headers) $(gtk_nat_headers): %.h: %.class
 
 java/lang/ClassLoader.h: java/lang/ClassLoader.class
 	$(GCJH) -classpath '' -bootclasspath $(top_builddir) \
@@ -3535,7 +3600,7 @@
 
 -include deps.mk
 
-all-recursive: $(all_java_class_files) $(nat_headers) $(x_nat_headers)
+all-recursive: $(all_java_class_files) $(nat_headers) $(x_nat_headers) $(gtk_nat_headers)
 
 # Multilib support.
 .PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \

Index: GtkComponentPeer.java
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/gnu/awt/gtk/GtkComponentPeer.java,v
retrieving revision 1.1
diff -u -r1.1 GtkComponentPeer.java
--- GtkComponentPeer.java	2 Oct 2000 05:14:25 -0000	1.1
+++ GtkComponentPeer.java	31 Jul 2002 20:25:38 -0000
@@ -77,6 +77,13 @@
     setEnabled (true);
   }
 
+  // FIXME: empty stub to get GtkComponentPeer implement whole
+  //  ComponentPeer interface.
+  public ColorModel getColorModel()
+  {
+    return null;
+  }
+
   /** 
    * Get the graphics configuration of the component. The color model
    * of the component can be derived from the configuration.

Index: GtkContainerPeer.java
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/gnu/awt/gtk/GtkContainerPeer.java,v
retrieving revision 1.1
diff -u -r1.1 GtkContainerPeer.java
--- GtkContainerPeer.java	2 Oct 2000 05:14:25 -0000	1.1
+++ GtkContainerPeer.java	31 Jul 2002 20:25:41 -0000
@@ -28,17 +28,23 @@
   implements ContainerPeer
 {
   // FIXME?
-  static Insets insets = new Insets(0,0,0,0);
+  static Insets _internal_insets = new Insets(0,0,0,0);
 
   protected GtkContainerPeer (Container awtContainer)
   {
     super (awtContainer);
   }
 
+  // FIXME: empty stub?
+  public Insets insets()
+  {
+    return _internal_insets;
+  }
+  
   public Insets getInsets()
   {
     // FIXME?
-    return insets;
+    return _internal_insets;
   }
   
   public void beginValidate()

Index: GtkToolkit.java
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/gnu/awt/gtk/GtkToolkit.java,v
retrieving revision 1.1
diff -u -r1.1 GtkToolkit.java
--- GtkToolkit.java	2 Oct 2000 05:14:25 -0000	1.1
+++ GtkToolkit.java	31 Jul 2002 20:25:45 -0000
@@ -120,11 +120,14 @@
     return null;
   }
 
+  // FIXME: empty stub to make GtkToolkit implement whole Toolkit interface
   /*
+  */
   public PrintJob getPrintJob (Frame frame, String jobtitle, Properties props) 
   {
     return null;
   }
+  /*
   */
   native public int getScreenResolution();




More information about the Java-patches mailing list