This patch makes generating the GJDoc parser with antlr
optional in the same way as regenerating the headers (i.e.
regeneration is turned on automatically, if they are not
found during the configure run).

ChangeLog:

2008-10-02  Andrew John Hughes  <[EMAIL PROTECTED]>

        * configure.ac:
        Add regen-gjdoc-parser option,
        and separate antlr tests.
        * m4/ac_prog_antlr.m4:
        Turn single test into AC_LIB_ANTLR
        and AC_PROG_ANTLR.
        * m4/ac_prog_java.m4:
        Quote tests.
        * tools/Makefile.am:
        Support CREATE_GJDOC_PARSER option.
 
-- 
Andrew :)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8
Index: configure.ac
===================================================================
RCS file: /sources/classpath/classpath/configure.ac,v
retrieving revision 1.240
diff -u -u -r1.240 configure.ac
--- configure.ac        30 Sep 2008 00:53:23 -0000      1.240
+++ configure.ac        5 Oct 2008 20:45:51 -0000
@@ -312,8 +312,9 @@
             ])
 
 dnl -----------------------------------------------------------
-dnl Regenerate headers at build time (disabled by default)
+dnl Regenerate headers at build time (enabled if not found)
 dnl -----------------------------------------------------------
+AC_MSG_CHECKING([whether to regenerate the headers])
 AC_ARG_ENABLE([regen-headers],
               [AS_HELP_STRING(--enable-regen-headers,automatically regenerate 
JNI headers [default=yes if headers don't exist])],
               [case "${enableval}" in
@@ -321,13 +322,33 @@
                 no) REGENERATE_JNI_HEADERS=no ;;
                 *) REGENERATE_JNI_HEADERS=yes ;;
               esac],
-              [if test -e include/java_lang_VMSystem.h; then
+              [if test -e ${srcdir}/include/java_lang_VMSystem.h; then
                        REGENERATE_JNI_HEADERS=no ;
                   else
                        REGENERATE_JNI_HEADERS=yes ;
               fi])
+AC_MSG_RESULT(${REGENERATE_JNI_HEADERS})
 AM_CONDITIONAL(CREATE_JNI_HEADERS, test "x${REGENERATE_JNI_HEADERS}" = xyes)
 
+dnl ------------------------------------------------------------------------
+dnl Regenerate GJDoc parser at build time (enabled if not found)
+dnl ------------------------------------------------------------------------
+AC_MSG_CHECKING([whether to regenerate the GJDoc parser])
+AC_ARG_ENABLE([regen-gjdoc-parser],
+              [AS_HELP_STRING(--enable-regen-gjdoc-parser,automatically 
regenerate the GJDoc parser [default=yes if generated source doesn't exist])],
+              [case "${enableval}" in
+                yes) REGENERATE_GJDOC_PARSER=yes ;;
+                no) REGENERATE_GJDOC_PARSER=no ;;
+                *) REGENERATE_GJDOC_PARSER=yes ;;
+              esac],
+              [if test -e 
${srcdir}/tools/generated/gnu/classpath/tools/gjdoc/expr/JavaLexer.java; then
+                       REGENERATE_GJDOC_PARSER=no ;
+                  else
+                       REGENERATE_GJDOC_PARSER=yes ;
+              fi])
+AC_MSG_RESULT(${REGENERATE_GJDOC_PARSER})
+AM_CONDITIONAL(CREATE_GJDOC_PARSER, test "x${REGENERATE_GJDOC_PARSER}" = xyes)
+
 dnl -----------------------------------------------------------
 dnl Enable tool wrapper binaries (disabled by default)
 dnl -----------------------------------------------------------
@@ -943,7 +964,10 @@
   fi
   if test "x${COMPILE_GJDOC}" = xyes; then
     AC_PROG_JAVA
-    AC_PROG_ANTLR(2,7,1)
+    AC_LIB_ANTLR
+    if test "x${REGENERATE_GJDOC_PARSER}" = xyes; then
+       AC_PROG_ANTLR(2,7,1)
+    fi
   fi
 fi
 
Index: m4/ac_prog_antlr.m4
===================================================================
RCS file: /sources/classpath/classpath/m4/ac_prog_antlr.m4,v
retrieving revision 1.3
diff -u -u -r1.3 ac_prog_antlr.m4
--- m4/ac_prog_antlr.m4 30 Sep 2008 01:10:19 -0000      1.3
+++ m4/ac_prog_antlr.m4 5 Oct 2008 20:45:59 -0000
@@ -1,39 +1,24 @@
 
-AC_DEFUN([AC_PROG_ANTLR],[
+AC_DEFUN([AC_LIB_ANTLR],[
+  AC_MSG_CHECKING([for the ANTLR parser generator JAR file])
   if test -z "$ANTLR_JAR"; then
-     AC_REQUIRE([AC_PROG_JAVA])dnl
-     AC_MSG_CHECKING([for antlr $1.$2.$3 or better])
-     for antlr_lib_home in `ls -d /usr/local/share/antlr* 2> /dev/null` 
/usr/share/antlr/lib /usr/share/java /usr/lib; do
-           antlr_version_str=`$JAVA -classpath "$antlr_lib_home/antlr.jar" 
antlr.Tool 2>&1 | head -n 1 | sed '/.*Version */!d; s///;q'`
-           if test "$antlr_version_str"; then
-                 
antlr_version_regex='s/\([[[:digit:]]]\+\)\.\([[[:digit:]]]\+\)\.\([[[:digit:]]]\+\).*$/'
-                 antlr_version_major=`echo $antlr_version_str | sed 
"$antlr_version_regex\\1/"`
-                 antlr_version_minor=`echo $antlr_version_str | sed 
"$antlr_version_regex\\2/"`
-                 antlr_version_micro=`echo $antlr_version_str | sed 
"$antlr_version_regex\\3/"`
-                 (test $antlr_version_major -gt $1 ||
-                         (test $antlr_version_major -eq $1 && \
-                          test $antlr_version_minor -gt $2) || \
-                         (test $antlr_version_major -eq $1 && \
-                          test $antlr_version_minor -eq $2 && \
-                          test $antlr_version_micro -ge $3)) && \
-
-                 (test -z $ANTLR_JAR || \
-                   (test $antlr_version_major -gt $antlr_use_major ||
-                         (test $antlr_version_major -eq $antlr_use_major && \
-                          test $antlr_version_minor -gt $antlr_use_minor) || \
-                         (test $antlr_version_major -eq $antlr_use_major && \
-                          test $antlr_version_minor -eq $antlr_use_minor && \
-                          test $antlr_version_micro -ge $antlr_use_micro))) && 
\
-                         ANTLR_JAR=$antlr_lib_home/antlr.jar && \
-                         antlr_use_major=$antlr_version_major && \
-                         antlr_use_minor=$antlr_version_minor && \
-                         antlr_use_micro=$antlr_version_micro
-           fi
+    for antlr_lib_home in `ls -d /usr/local/share/antlr* 2> /dev/null` \
+       /usr/share/antlr/lib /usr/share/java /usr/lib;
+       do
+           if test -f "$antlr_lib_home/antlr.jar"; then
+             ANTLR_JAR="$antlr_lib_home/antlr.jar"
+             break
+           fi
      done
-  else
-     test -f $ANTLR_JAR || AC_MSG_ERROR([specified ANTLR jar file $ANTLR_JAR 
not found.]) \
-        && AC_MSG_NOTICE([using ANTLR parser generator in $ANTLR_JAR])
   fi
+  test -f $ANTLR_JAR || AC_MSG_ERROR([specified ANTLR jar file $ANTLR_JAR not 
found.]) \
+        && AC_MSG_RESULT([$ANTLR_JAR])
+  AC_SUBST(ANTLR_JAR)
+  AC_PROVIDE([$0])dnl
+])
+
+AC_DEFUN([AC_PROG_ANTLR],[
+  AC_REQUIRE([AC_PROG_JAVA])dnl
   AC_CHECK_TOOLS([ANTLR], [runantlr antlr])
   if test "x$ANTLR" = x; then
       if test -z "$JAVA"; then
@@ -42,10 +27,27 @@
         ANTLR="$JAVA -classpath $ANTLR_JAR antlr.Tool"
       fi
   fi
-  test -z "$ANTLR_JAR" && \
-        AC_MSG_ERROR(no suitable antlr.jar found for version $1.$2.$3)
-  AC_MSG_RESULT($antlr_use_major.$antlr_use_minor.$antlr_use_micro)
   AC_SUBST(ANTLR)
-  AC_SUBST(ANTLR_JAR)
-  AC_PROVIDE([$0])dnl
+  AC_MSG_CHECKING([for antlr $1.$2.$3 or better])
+  antlr_version_str=`$ANTLR 2>&1 | head -n 1 | sed '/.*Version */!d; s///;q'`
+  if test "$antlr_version_str"; then
+    
antlr_version_regex='s/\([[[:digit:]]]\+\)\.\([[[:digit:]]]\+\)\.\([[[:digit:]]]\+\).*$/'
+    antlr_version_major=`echo $antlr_version_str | sed 
"$antlr_version_regex\\1/"`
+    antlr_version_minor=`echo $antlr_version_str | sed 
"$antlr_version_regex\\2/"`
+    antlr_version_micro=`echo $antlr_version_str | sed 
"$antlr_version_regex\\3/"`
+    (test $antlr_version_major -gt $1 ||
+    (test $antlr_version_major -eq $1 && \
+     test $antlr_version_minor -gt $2) || \
+    (test $antlr_version_major -eq $1 && \
+     test $antlr_version_minor -eq $2 && \
+     test $antlr_version_micro -ge $3)) && \
+    (test -z $ANTLR_JAR || \
+     (test $antlr_version_major -gt $antlr_use_major ||
+      (test $antlr_version_major -eq $antlr_use_major && \
+       test $antlr_version_minor -gt $antlr_use_minor) || \
+      (test $antlr_version_major -eq $antlr_use_major && \
+       test $antlr_version_minor -eq $antlr_use_minor && \
+       test $antlr_version_micro -ge $antlr_use_micro)))
+    fi
+  AC_MSG_RESULT($antlr_use_major.$antlr_use_minor.$antlr_use_micro)
 ])
Index: m4/ac_prog_java.m4
===================================================================
RCS file: /sources/classpath/classpath/m4/ac_prog_java.m4,v
retrieving revision 1.2
diff -u -u -r1.2 ac_prog_java.m4
--- m4/ac_prog_java.m4  21 Jun 2008 19:51:19 -0000      1.2
+++ m4/ac_prog_java.m4  5 Oct 2008 20:45:59 -0000
@@ -6,12 +6,12 @@
 dnl
 AC_DEFUN([AC_PROG_JAVA],[
 AC_REQUIRE([AC_EXEEXT])dnl
-if test x$JAVAPREFIX = x; then
-        test x$JAVA = x && AC_CHECK_PROGS(JAVA, cacao$EXEEXT jamvm$EXEEXT 
kaffe$EXEEXT gij$EXEEXT java$EXEEXT)
+if test "x$JAVAPREFIX" = x; then
+        test "x$JAVA" = x && AC_CHECK_PROGS(JAVA, cacao$EXEEXT jamvm$EXEEXT 
kaffe$EXEEXT gij$EXEEXT java$EXEEXT)
 else
-        test x$JAVA = x && AC_CHECK_PROGS(JAVA, cacao$EXEEXT jamvm$EXEEXT 
kaffe$EXEEXT gij$EXEEXT java$EXEEXT, $JAVAPREFIX)
+        test "x$JAVA" = x && AC_CHECK_PROGS(JAVA, cacao$EXEEXT jamvm$EXEEXT 
kaffe$EXEEXT gij$EXEEXT java$EXEEXT, $JAVAPREFIX)
 fi
-test x$JAVA = x && AC_MSG_ERROR([no acceptable Java virtual machine found in 
\$PATH])
+test "x$JAVA" = x && AC_MSG_ERROR([no acceptable Java virtual machine found in 
\$PATH])
 AC_PROG_JAVA_WORKS
 AC_PROVIDE([$0])dnl
 ])
Index: tools/Makefile.am
===================================================================
RCS file: /sources/classpath/classpath/tools/Makefile.am,v
retrieving revision 1.57
diff -u -u -r1.57 Makefile.am
--- tools/Makefile.am   15 Sep 2008 00:32:59 -0000      1.57
+++ tools/Makefile.am   5 Oct 2008 20:46:01 -0000
@@ -1,7 +1,12 @@
 ## Input file for automake to generate the Makefile.in used by configure
 
 if CREATE_GJDOC
-ANTLR_CLASSPATH = $(ANTLR_JAR):generated
+if CREATE_GJDOC_PARSER
+gjdoc_gendir = ${top_builddir}/tools/generated
+else
+gjdoc_gendir = ${top_srcdir}/tools/generated
+endif
+ANTLR_CLASSPATH = $(ANTLR_JAR):$(gjdoc_gendir)
 endif
 
 GLIBJ_BOOTCLASSPATH='$(top_builddir)/lib/glibj.zip:$(top_builddir)/lib'
@@ -306,9 +311,9 @@
 # immediately.  And copy the template files we use to the classes dir
 # so they get also included.
 $(TOOLS_ZIP): $(ALL_TOOLS_FILES)
-       @rm -rf classes asm generated
+       @rm -rf classes asm
        @mkdir_p@ classes asm 
-if CREATE_GJDOC
+if CREATE_GJDOC_PARSER
 ## Generate antlr sources.
        @mkdir_p@ generated/gnu/classpath/tools/gjdoc/expr
        $(ANTLR) -o generated/gnu/classpath/tools/gjdoc/expr \
@@ -368,7 +373,10 @@
 
 # Zip file be gone! (and make sure the classes are gone too)
 clean-local:
-       rm -rf $(TOOLS_ZIP) classes classes.lst asm asm.lst all-classes.lst 
generated
+       rm -rf $(TOOLS_ZIP) classes classes.lst asm asm.lst all-classes.lst
+if CREATE_GJDOC_PARSER
+       rm -rf $(gjdoc_gendir)
+endif
 
 # FIXME: remove this when GNU Classpath includes a bootstrap VM.
 installcheck-binSCRIPTS:

Reply via email to