changeset 2235:552e98f1c215

Only patch the OpenGL headers when javah exhibits Classpath bug #40188. 2010-08-13 Andrew John Hughes <ahughes@redhat.com> * patches/ecj/javah.patch: Moved to... * Makefile.am: Apply patch to OpenGL headers only if javah exhibits Classpath bug 40188. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40188 * patches/ecj/cp40188-opengl.patch: here.
author Andrew John Hughes <ahughes@redhat.com>
date Fri, 13 Aug 2010 23:28:38 +0100
parents 00d9b2c78bc4
children fe7d70ac2b1a
files ChangeLog Makefile.am acinclude.m4 configure.ac patches/ecj/cp40188-opengl.patch patches/ecj/javah.patch
diffstat 6 files changed, 187 insertions(+), 95 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Aug 13 20:00:48 2010 +0100
+++ b/ChangeLog	Fri Aug 13 23:28:38 2010 +0100
@@ -1,3 +1,34 @@
+2010-08-13  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/ecj/javah.patch: Moved to...
+	* Makefile.am: Apply patch to OpenGL headers
+	only if javah exhibits Classpath bug 40188.
+	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40188
+	* patches/ecj/cp40188-opengl.patch: here.
+
+2009-05-19  Andrew John Hughes  <ahughes@redhat.com>
+
+	* acinclude.m4:
+	(IT_JAVAH): Renamed from IT_CP39408_JAVAH.
+	Add test for PR40188.
+	* configure.ac:
+	Make full bootstrap the default again.  Rename
+	IT_CP39408_JAVAH to IT_JAVAH.
+
+2009-03-18  Andrew John Hughes  <ahughes@redhat.com>
+
+	* acinclude.m4:
+	(IT_CP39408_JAVAH): Add classpath specification
+	to JAVAC invocation to handle buggy ecjs.
+
+2009-03-17  Andrew John Hughes  <ahughes@redhat.com>
+
+	* acinclude.m4:
+	(IT_CP39408_JAVAH): New test for Classpath
+	bug 39408.
+	* configure.ac: Enable new test.  Result
+	as yet unused.
+
 2010-08-13  Andrew John Hughes  <ahughes@redhat.com>
 
 	* Makefile.am:
--- a/Makefile.am	Fri Aug 13 20:00:48 2010 +0100
+++ b/Makefile.am	Fri Aug 13 23:28:38 2010 +0100
@@ -365,9 +365,10 @@
 endif
 
 if ENABLE_XRENDER
-ICEDTEA_ECJ_PATCHES += \
-	patches/ecj/needs-6.patch \
-	patches/ecj/javah.patch
+ICEDTEA_ECJ_PATCHES += patches/ecj/needs-6.patch
+if CP40188_JAVAH
+ICEDTEA_ECJ_PATCHES += patches/ecj/cp40188-opengl.patch
+endif
 endif
 
 if !HAS_PAX
--- a/acinclude.m4	Fri Aug 13 20:00:48 2010 +0100
+++ b/acinclude.m4	Fri Aug 13 23:28:38 2010 +0100
@@ -1515,3 +1515,62 @@
 AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes")
 AC_PROVIDE([$0])dnl
 ])
+
+AC_DEFUN([IT_JAVAH],[
+AC_CACHE_CHECK([if $JAVAH exhibits Classpath bug 39408], it_cv_cp39408_javah, [
+SUPERCLASS=Test.java
+SUBCLASS=TestImpl.java
+SUB=$(echo $SUBCLASS|sed 's#\.java##')
+SUBHEADER=$(echo $SUBCLASS|sed 's#\.java#.h#')
+mkdir tmp.$$
+cd tmp.$$
+cat << \EOF > $SUPERCLASS
+/* [#]line __oline__ "configure" */
+public class Test 
+{
+  public static final int POTATO = 0;
+  public static final int CABBAGE = 1;
+}
+EOF
+cat << \EOF > $SUBCLASS
+/* [#]line __oline__ "configure" */
+public class TestImpl
+  extends Test
+{
+  public native void doStuff();
+}
+EOF
+if $JAVAC -cp . $JAVACFLAGS $SUBCLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVAH -classpath . $SUB >&AS_MESSAGE_LOG_FD 2>&1; then
+    if cat $SUBHEADER | grep POTATO >&AS_MESSAGE_LOG_FD 2>&1; then
+      it_cv_cp39408_javah=no;
+    else
+      it_cv_cp39408_javah=yes;
+    fi
+  else
+    AC_MSG_ERROR([The Java header generator $JAVAH failed])
+    echo "configure: failed program was:" >&AC_FD_CC
+    cat $SUBCLASS >&AC_FD_CC
+  fi
+else
+  AC_MSG_ERROR([The Java compiler $JAVAC failed])
+  echo "configure: failed program was:" >&AC_FD_CC
+  cat $SUBCLASS >&AC_FD_CC
+fi
+])
+AC_CACHE_CHECK([if $JAVAH exhibits Classpath bug 40188], it_cv_cp40188_javah, [
+  if test -e $SUBHEADER ; then
+    if cat $SUBHEADER | grep TestImpl_POTATO >&AS_MESSAGE_LOG_FD 2>&1; then
+      it_cv_cp40188_javah=no;
+    else
+      it_cv_cp40188_javah=yes;
+    fi
+  fi
+])
+rm -f $SUBCLASS $SUPERCLASS $SUBHEADER *.class
+cd ..
+rmdir tmp.$$
+AM_CONDITIONAL([CP39408_JAVAH], test x"${it_cv_cp39408_javah}" = "xyes")
+AM_CONDITIONAL([CP40188_JAVAH], test x"${it_cv_cp40188_javah}" = "xyes")
+AC_PROVIDE([$0])dnl
+])
--- a/configure.ac	Fri Aug 13 20:00:48 2010 +0100
+++ b/configure.ac	Fri Aug 13 23:28:38 2010 +0100
@@ -180,6 +180,7 @@
 AC_CHECK_WITH_TZDATA_DIR
 IT_GETDTDTYPE_CHECK
 IT_CHECK_XULRUNNER_VERSION
+IT_JAVAH
 
 dnl pkgconfig cannot be used to find these headers and libraries.
 AC_CHECK_HEADERS([cups/cups.h cups/ppd.h],[]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/ecj/cp40188-opengl.patch	Fri Aug 13 23:28:38 2010 +0100
@@ -0,0 +1,92 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/Rules.gmk openjdk-boot/jdk/make/common/Rules.gmk
+--- openjdk-ecj.orig/jdk/make/common/Rules.gmk	2009-12-13 20:37:41.000000000 +0000
++++ openjdk-ecj/jdk/make/common/Rules.gmk	2009-12-13 21:11:04.000000000 +0000
+@@ -303,7 +303,11 @@
+ 	$(prep-target)
+ 	@$(ECHO) "# Running javah:"
+ 	$(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
+-		$(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
++		$(CLASSES.export) 
++	$(foreach innerclass,$(subst $$,\$$,$(EXPORTED_inner)), \
++	  $(JAVAH_CMD) \
++	    -o $(CLASSHDRDIR)/$(subst .,_,$(subst \$$,_,$(innerclass))).h \
++	    $(innerclass))
+ 	@$(java-vm-cleanup)
+ 	@$(TOUCH) $@
+ 
+diff -Nru openjdk-boot.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk-boot/jdk/make/sun/awt/FILES_export_unix.gmk
+--- openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-04 23:26:35.000000000 +0000
++++ openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-13 21:11:04.000000000 +0000
+@@ -189,3 +189,5 @@
+ 	java/awt/dnd/DnDConstants.java \
+ 	sun/awt/CausedFocusEvent.java
+ 
++EXPORTED_inner = \
++    sun.java2d.opengl.OGLContext$$OGLContextCaps
+diff -Nru openjdk-boot.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk-boot/jdk/src/share/native/sun/java2d/opengl/OGLContext.h
+--- openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-04 23:33:16.000000000 +0000
++++ openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-13 21:11:04.000000000 +0000
+@@ -27,6 +27,7 @@
+ #define OGLContext_h_Included
+ 
+ #include "sun_java2d_pipe_BufferedContext.h"
++#include "sun_java2d_pipe_hw_ContextCapabilities.h"
+ #include "sun_java2d_opengl_OGLContext.h"
+ #include "sun_java2d_opengl_OGLContext_OGLContextCaps.h"
+ 
+@@ -100,39 +101,39 @@
+  * See OGLContext.java for more on these flags.
+  */
+ #define CAPS_EMPTY           \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EMPTY
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_EMPTY
+ #define CAPS_RT_PLAIN_ALPHA  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_PLAIN_ALPHA
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_PLAIN_ALPHA
+ #define CAPS_RT_TEXTURE_ALPHA       \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_ALPHA
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_ALPHA
+ #define CAPS_RT_TEXTURE_OPAQUE      \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_OPAQUE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_OPAQUE
+ #define CAPS_MULTITEXTURE    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_MULTITEXTURE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_MULTITEXTURE
+ #define CAPS_TEXNONPOW2      \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONPOW2
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONPOW2
+ #define CAPS_TEXNONSQUARE    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONSQUARE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONSQUARE
+ #define CAPS_PS20            \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS20
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS20
+ #define CAPS_PS30            \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS30
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS30
+ #define LAST_SHARED_CAP      \
+     sun_java2d_opengl_OGLContext_OGLContextCaps_LAST_SHARED_CAP
+ #define CAPS_EXT_FBOBJECT    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_FBOBJECT
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_FBOBJECT
+ #define CAPS_STORED_ALPHA    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_STORED_ALPHA
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_STORED_ALPHA
+ #define CAPS_DOUBLEBUFFERED  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_DOUBLEBUFFERED
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_DOUBLEBUFFERED
+ #define CAPS_EXT_LCD_SHADER  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_LCD_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_LCD_SHADER
+ #define CAPS_EXT_BIOP_SHADER \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_BIOP_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_BIOP_SHADER
+ #define CAPS_EXT_GRAD_SHADER \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_GRAD_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_GRAD_SHADER
+ #define CAPS_EXT_TEXRECT     \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_TEXRECT
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_TEXRECT
+ 
+ /**
+  * Evaluates to true if the given capability bitmask is present for the
--- a/patches/ecj/javah.patch	Fri Aug 13 20:00:48 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-diff -Nru openjdk-boot.orig/jdk/make/common/Rules.gmk openjdk-boot/jdk/make/common/Rules.gmk
---- openjdk-ecj.orig/jdk/make/common/Rules.gmk	2009-12-13 20:37:41.000000000 +0000
-+++ openjdk-ecj/jdk/make/common/Rules.gmk	2009-12-13 21:11:04.000000000 +0000
-@@ -303,7 +303,11 @@
- 	$(prep-target)
- 	@$(ECHO) "# Running javah:"
- 	$(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
--		$(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
-+		$(CLASSES.export) 
-+	$(foreach innerclass,$(subst $$,\$$,$(EXPORTED_inner)), \
-+	  $(JAVAH_CMD) \
-+	    -o $(CLASSHDRDIR)/$(subst .,_,$(subst \$$,_,$(innerclass))).h \
-+	    $(innerclass))
- 	@$(java-vm-cleanup)
- 	@$(TOUCH) $@
- 
-diff -Nru openjdk-boot.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk-boot/jdk/make/sun/awt/FILES_export_unix.gmk
---- openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-04 23:26:35.000000000 +0000
-+++ openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-13 21:11:04.000000000 +0000
-@@ -189,3 +189,5 @@
- 	java/awt/dnd/DnDConstants.java \
- 	sun/awt/CausedFocusEvent.java
- 
-+EXPORTED_inner = \
-+    sun.java2d.opengl.OGLContext$$OGLContextCaps
-diff -Nru openjdk-boot.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk-boot/jdk/src/share/native/sun/java2d/opengl/OGLContext.h
---- openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-04 23:33:16.000000000 +0000
-+++ openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-13 21:11:04.000000000 +0000
-@@ -27,6 +27,7 @@
- #define OGLContext_h_Included
- 
- #include "sun_java2d_pipe_BufferedContext.h"
-+#include "sun_java2d_pipe_hw_ContextCapabilities.h"
- #include "sun_java2d_opengl_OGLContext.h"
- #include "sun_java2d_opengl_OGLContext_OGLContextCaps.h"
- 
-@@ -100,39 +101,39 @@
-  * See OGLContext.java for more on these flags.
-  */
- #define CAPS_EMPTY           \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EMPTY
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_EMPTY
- #define CAPS_RT_PLAIN_ALPHA  \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_PLAIN_ALPHA
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_PLAIN_ALPHA
- #define CAPS_RT_TEXTURE_ALPHA       \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_ALPHA
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_ALPHA
- #define CAPS_RT_TEXTURE_OPAQUE      \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_OPAQUE
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_OPAQUE
- #define CAPS_MULTITEXTURE    \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_MULTITEXTURE
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_MULTITEXTURE
- #define CAPS_TEXNONPOW2      \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONPOW2
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONPOW2
- #define CAPS_TEXNONSQUARE    \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONSQUARE
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONSQUARE
- #define CAPS_PS20            \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS20
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS20
- #define CAPS_PS30            \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS30
-+    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS30
- #define LAST_SHARED_CAP      \
-     sun_java2d_opengl_OGLContext_OGLContextCaps_LAST_SHARED_CAP
- #define CAPS_EXT_FBOBJECT    \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_FBOBJECT
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_FBOBJECT
- #define CAPS_STORED_ALPHA    \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_STORED_ALPHA
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_STORED_ALPHA
- #define CAPS_DOUBLEBUFFERED  \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_DOUBLEBUFFERED
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_DOUBLEBUFFERED
- #define CAPS_EXT_LCD_SHADER  \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_LCD_SHADER
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_LCD_SHADER
- #define CAPS_EXT_BIOP_SHADER \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_BIOP_SHADER
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_BIOP_SHADER
- #define CAPS_EXT_GRAD_SHADER \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_GRAD_SHADER
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_GRAD_SHADER
- #define CAPS_EXT_TEXRECT     \
--    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_TEXRECT
-+    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_TEXRECT
- 
- /**
-  * Evaluates to true if the given capability bitmask is present for the