changeset 2578:ba9886ae5d7f

Explicitly check for Matcher.quoteReplacement rather than assuming it doesn't exist if sun.awt.Toolkit doesn't. Specify source and target Java versions explicitly. 2012-08-13 Andrew John Hughes <gnu_andrew@member.fsf.org> * Makefile.am: (ICEDTEA_BOOTSTRAP_CLASSES): Only add Matcher if the quoteReplacement method is absent. Fix use of = instead of += with ModelMBeanInfo. * acinclude.m4: (IT_JAVAH): Explicitly set source & target. (IT_LIBRARY_CHECK): Likewise. (IT_PR40630_CHECK): Likewise. (IT_CHECK_JAVA_AND_JAVAC_WORK): Likewise. (IT_CHECK_FOR_CLASS): Likewise. (IT_DIAMOND_CHECK): Specify target as 7 as well. (IT_CHECK_FOR_METHOD): New macro to check for the existence of a Java method both at build and runtime. * configure.ac: Check for java.util.regex.Matcher.quoteReplacement.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Tue, 14 Aug 2012 09:49:22 +0100
parents 5954829aa7ed
children cc751b4320d0
files ChangeLog Makefile.am acinclude.m4 configure.ac
diffstat 4 files changed, 90 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Aug 03 01:54:31 2012 +0100
+++ b/ChangeLog	Tue Aug 14 09:49:22 2012 +0100
@@ -1,3 +1,21 @@
+2012-08-13  Andrew John Hughes  <gnu_andrew@member.fsf.org>
+
+	* Makefile.am:
+	(ICEDTEA_BOOTSTRAP_CLASSES): Only add Matcher if
+	the quoteReplacement method is absent.  Fix use of
+	= instead of += with ModelMBeanInfo.
+	* acinclude.m4:
+	(IT_JAVAH): Explicitly set source & target.
+	(IT_LIBRARY_CHECK): Likewise.
+	(IT_PR40630_CHECK): Likewise.
+	(IT_CHECK_JAVA_AND_JAVAC_WORK): Likewise.
+	(IT_CHECK_FOR_CLASS): Likewise.
+	(IT_DIAMOND_CHECK): Specify target as 7 as well.
+	(IT_CHECK_FOR_METHOD): New macro to check for the
+	existence of a Java method both at build and runtime.
+	* configure.ac:
+	Check for java.util.regex.Matcher.quoteReplacement.
+
 2012-08-02  Andrew John Hughes  <gnu_andrew@member.fsf.org>
 
 	* Makefile.am:
--- a/Makefile.am	Fri Aug 03 01:54:31 2012 +0100
+++ b/Makefile.am	Tue Aug 14 09:49:22 2012 +0100
@@ -102,13 +102,17 @@
 ICEDTEA_BOOTSTRAP_CLASSES =
 
 if LACKS_SUN_AWT_TOOLKIT
-#PR43148 - javac fails due to missing java.util.regex.Matcher.quoteReplacement
 #PR42003 - Missing javax.swing.plaf.basic.BasicDirectoryModel methods cause OpenJDK build failure 
 ICEDTEA_BOOTSTRAP_CLASSES += \
-	$(SHARE)/java/util/regex/Matcher.java \
 	$(SHARE)/javax/swing/plaf/basic/BasicDirectoryModel.java
 endif
 
+#PR43148 - javac fails due to missing java.util.regex.Matcher.quoteReplacement
+if LACKS_JAVA_UTIL_REGEX_MATCHER_QUOTEREPLACEMENT
+ICEDTEA_BOOTSTRAP_CLASSES += \
+	$(SHARE)/java/util/regex/Matcher.java
+endif
+
 #PR48033 - Missing javax.management.remote.JMXServiceURL
 if LACKS_JAVAX_MANAGEMENT_REMOTE_JMXSERVICEURL
 ICEDTEA_BOOTSTRAP_CLASSES += \
@@ -117,7 +121,7 @@
 
 #PR48034 - javax.management.modelmbean.ModelMBeanInfo
 if LACKS_JAVAX_MANAGEMENT_MODELMBEAN_MODELMBEANINFO
-ICEDTEA_BOOTSTRAP_CLASSES = \
+ICEDTEA_BOOTSTRAP_CLASSES += \
 	$(SHARE)/javax/management/modelmbean/ModelMBeanInfo.java
 endif
 
--- a/acinclude.m4	Fri Aug 03 01:54:31 2012 +0100
+++ b/acinclude.m4	Tue Aug 14 09:49:22 2012 +0100
@@ -1180,7 +1180,7 @@
   public native void doStuff();
 }
 EOF
-if $JAVAC -cp . $JAVACFLAGS $SUBCLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $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;
@@ -1231,7 +1231,7 @@
     }
 }
 EOF
-if $JAVAC -cp . $JAVACFLAGS $SRC >&AS_MESSAGE_LOG_FD 2>&1; then
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $SRC >&AS_MESSAGE_LOG_FD 2>&1; then
   if $JAVAH -classpath . $CLASSFILE >&AS_MESSAGE_LOG_FD 2>&1; then
     if test -e Test_Inner.h ; then
       it_cv_cp45526_javah=no;
@@ -1332,7 +1332,7 @@
   }
 }]
 EOF
-if $JAVAC -cp . $JAVACFLAGS $CLASS >&AS_MESSAGE_LOG_FD 2>&1 ; then
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $CLASS >&AS_MESSAGE_LOG_FD 2>&1 ; then
   if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1 ; then
     it_cv_cp40616=no;
   else
@@ -1372,7 +1372,7 @@
   }
 }]
 EOF
-  if $JAVAC -cp . $JAVACFLAGS $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
     if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
       it_cv_cp40630=no;
     else
@@ -1513,7 +1513,7 @@
 }
 ]
 EOF
-if $JAVAC -cp . $JAVACFLAGS -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
   if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
       it_cv_$1=no;
   else
@@ -1766,7 +1766,7 @@
     }
 }]
 EOF
-  if $JAVAC -cp . $JAVACFLAGS -source 7 $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVAC -cp . $JAVACFLAGS -source 7 -target 7 $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
     it_cv_diamond=no;
   else
     it_cv_diamond=yes;
@@ -2298,3 +2298,61 @@
   AM_CONDITIONAL(USING_CACAO, test "x${USING_CACAO}" = "xyes")
   AC_PROVIDE([$0])dnl
 ])
+
+dnl Generic macro to check for a Java method
+dnl Takes four arguments: the name of the macro,
+dnl the name of the class, the method signature
+dnl and an example call to the method.  The macro name
+dnl is usually the name of the class with '.'
+dnl replaced by '_' and all letters capitalised.
+dnl e.g. IT_CHECK_FOR_METHOD([JAVA_UTIL_REGEX_MATCHER_QUOTEREPLACEMENT],[java.util.regex.Matcher.quoteReplacement],[java.util.regex.Matcher],["quoteReplacement",String.class],java.util.regex.Matcher.quoteReplacement("Blah"))
+AC_DEFUN([IT_CHECK_FOR_METHOD],[
+AC_REQUIRE([IT_CHECK_JAVA_AND_JAVAC_WORK])
+AC_CACHE_CHECK([if $2 is missing], it_cv_$1, [
+CLASS=Test.java
+BYTECODE=$(echo $CLASS|sed 's#\.java##')
+mkdir tmp.$$
+cd tmp.$$
+cat << \EOF > $CLASS
+[/* [#]line __oline__ "configure" */
+import java.lang.reflect.Method;
+
+public class Test
+{
+  public static void main(String[] args)
+  {
+    Class<?> cl = $3.class;
+    try
+      {
+        Method m = cl.getDeclaredMethod($4);
+      }
+    catch (NoSuchMethodException e)
+      {
+        System.exit(-1);
+      }
+  }
+
+  public void dontRun()
+  {
+    $5;
+  }
+
+}
+]
+EOF
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
+      it_cv_$1=no;
+  else
+      it_cv_$1=yes;
+  fi
+else
+  it_cv_$1=yes;
+fi
+])
+rm -f $CLASS *.class
+cd ..
+rmdir tmp.$$
+AM_CONDITIONAL([LACKS_$1], test x"${it_cv_$1}" = "xyes")
+AC_PROVIDE([$0])dnl
+])
--- a/configure.ac	Fri Aug 03 01:54:31 2012 +0100
+++ b/configure.ac	Tue Aug 14 09:49:22 2012 +0100
@@ -120,6 +120,7 @@
 IT_CHECK_FOR_CLASS([SUN_AWT_TOOLKIT], [sun.awt.SunToolkit])
 IT_CHECK_FOR_CLASS([JAVAX_MANAGEMENT_REMOTE_JMXSERVICEURL], [javax.management.remote.JMXServiceURL])
 IT_CHECK_FOR_CLASS([JAVAX_MANAGEMENT_MODELMBEAN_MODELMBEANINFO], [javax.management.modelmbean.ModelMBeanInfo])
+IT_CHECK_FOR_METHOD([JAVA_UTIL_REGEX_MATCHER_QUOTEREPLACEMENT],[java.util.regex.Matcher.quoteReplacement],[java.util.regex.Matcher],["quoteReplacement",String.class],java.util.regex.Matcher.quoteReplacement("Blah"))
 IT_CHECK_ENABLE_WARNINGS
 IT_DIAMOND_CHECK
 IT_BYTECODE7_CHECK