public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Require an up-to-date GCJ, or GCJ.
Date: Thu, 06 Dec 2007 17:02:00 -0000	[thread overview]
Message-ID: <20071206170201.27164.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  a53d055d1c2501c03156b10e493a0f39126b7184 (commit)
      from  e84fae5b93e545c70551225ae9c14907f1433ad6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit a53d055d1c2501c03156b10e493a0f39126b7184
Author: Andrew Cagney <cagney@redhat.com>
Date:   Thu Dec 6 12:01:50 2007 -0500

    Require an up-to-date GCJ, or GCJ.
    
    frysk-common/ChangeLog
    2007-12-06  Andrew Cagney  <cagney@redhat.com>
    
    	* frysk-common.ac (JAVAC): Set to either GCJ or $ECJ_JAR.
    	(ECJ): Delete variable.
    	(--enable-jar-compile): Use "yes" and "no", not "true" and "false.
    	(JAVAC_IS): New variable; either gcj or ecj.
    	(HAVE_ECJ): Delete.
    	* Makefile.rules (checked-ecj-compile): Delete.
    	(.g.antlred): Use $(JAVAC) and $(JAVAC_IS)

-----------------------------------------------------------------------

Summary of changes:
 frysk-common/ChangeLog       |   10 ++++
 frysk-common/Makefile.rules  |   54 ++++---------------
 frysk-common/frysk-common.ac |  122 ++++++++++++++++++++++--------------------
 3 files changed, 84 insertions(+), 102 deletions(-)

First 500 lines of diff:
diff --git a/frysk-common/ChangeLog b/frysk-common/ChangeLog
index 3ee3af2..6fc3df6 100644
--- a/frysk-common/ChangeLog
+++ b/frysk-common/ChangeLog
@@ -1,3 +1,13 @@
+2007-12-06  Andrew Cagney  <cagney@redhat.com>
+
+	* frysk-common.ac (JAVAC): Set to either GCJ or $ECJ_JAR.
+	(ECJ): Delete variable.
+	(--enable-jar-compile): Use "yes" and "no", not "true" and "false.
+	(JAVAC_IS): New variable; either gcj or ecj.
+	(HAVE_ECJ): Delete.
+	* Makefile.rules (checked-ecj-compile): Delete.
+	(.g.antlred): Use $(JAVAC) and $(JAVAC_IS)
+
 2007-11-27  Andrew Cagney  <cagney@redhat.com>
 
 	* Makefile.rules (GEN_GCJ_SO_DIRS): Fix typo, match -L%.
diff --git a/frysk-common/Makefile.rules b/frysk-common/Makefile.rules
index 84ae020..d696ac2 100644
--- a/frysk-common/Makefile.rules
+++ b/frysk-common/Makefile.rules
@@ -524,23 +524,20 @@ SUFFIXES += .antlred .g
 		echo "Parsing compiler warnings from $$b..." ; \
 		rm -f $$t/*.antlr-fixes ; \
 	        rm -rf $$t/classes ; mkdir -p $$t/classes ; \
-		if test "x@HAVE_ECJ_TRUE@" = x ; then \
-		    $(GIJ) 2>&1 \
-			--classpath $(ECJ_JAR):$(CLASSPATH) \
-			org.eclipse.jdt.internal.compiler.batch.Main \
-			\
+		case "$(JAVAC_IS)" in \
+		    gcj) $(JAVAC) $(JAVACFLAGS) \
 			-d $$t/classes \
+			-I $$t \
+			$$t/$$d/$$b.java \
+			2>&1 || true ;; \
+		    ecj) $(JAVAC) \
+                        -d $$t/classes \
 			-warn:+semicolon \
 			-sourcepath  $$t:$(SOURCEPATH) \
 			-classpath $(CLASSPATH) \
-			$$t/$$d/$$b.java || true ; \
-		else \
-		    $(GCJCOMPILE) 2>&1 \
-			-C \
-			-I $$t \
-			-d $$t/classes \
-			$$t/$$d/$$b.java || true ; \
-		fi | ( \
+			$$t/$$d/$$b.java \
+			2>&1 || true ;; \
+		esac | ( \
 		    cd $$t ; \
 		    $(AWK) -f @abs_srcdir@/common/antlr-warnings.awk \
 		) ; \
@@ -668,37 +665,6 @@ ${GEN_DIRNAME}.jar: files-java.list
 		| $(JAR) -@ -cf $@
 	mv $(JAVAROOT)/$@ $@
 \f
-# When ECJ is available, use it as an extra lint pass.  GCJ has the
-# habit of silently compiling invalid Java code (garbage in, garbage
-# out), fortunately ECJ rejects it.
-
-# This is part of all-local, since, if this fails the build won't fly.
-
-all-local: checked-ecj-compile
-CLEANFILES += checked-ecj-compile files-java-gen.list
-CLEANDIRS += ecj
-checked-ecj-compile: files-java.list $(if $(GEN_DIRS),$(GEN_DIRNAME).jar)
-	rm -rf ecj
-	mkdir -p ecj
-if HAVE_ECJ
-	echo Compiling all the generated files.
-	( test -s files-java.list && $(GIJ) \
-		--classpath $(ECJ_JAR):$(CLASSPATH) \
-		org.eclipse.jdt.internal.compiler.batch.Main \
-		\
-		-d ecj \
-		-warn:+semicolon \
-		-sourcepath $(SOURCEPATH) \
-		-classpath $(CLASSPATH) \
-		@files-java.list \
-		2>&1 ) | tee $@.log
-	if test -s $@.log ; \
-	then rm $@.log ; false ; \
-	fi
-	rm -f $@.log $(top_builddir)/files-{java,genjava}.list.ecj
-endif
-	touch $@
-\f
 # Check that everything, well except for a few exceptions, is using
 # frysk.junit and not the junit stuff directly.  Depend on the
 # directories .jar file as that is updated when ever any java files
diff --git a/frysk-common/frysk-common.ac b/frysk-common/frysk-common.ac
index 3897b0b..f72c24a 100644
--- a/frysk-common/frysk-common.ac
+++ b/frysk-common/frysk-common.ac
@@ -99,56 +99,78 @@ AC_CHECK_PROGS([JV_SCAN], [jv-scan4 jv-scan], [no])
 AM_CONDITIONAL([HAVE_JV_SCAN], test x"${JV_SCAN}" != xno)
 
 
-# Always use GCJ as the Java compiler.  While other, possibly better,
-# alternatives might be available, using those alternatives can (and
-# did) lead to problems such as: developers missing problems in the
-# base-line build compiler; and developers testing code different to
-# what will be shipped.  Having said that, do allow people to override
-# this.
-
-JAVAC="${JAVAC:-$GCJ -C}"
-AC_SUBST([JAVAC])
+# autoconf doesn't yet know about GCJ, so define it ourselves.
 
-# autoconf doesn't yet know about JAVA, so define it ourselves.
-m4_define([AC_LANG(JAVA)],
+m4_define([AC_LANG(GCJ)],
 [ac_ext=java
 ac_objext=class
-ac_compile='$JAVAC $JAVACFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
+ac_compile='$GCJ $GCJFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
 ac_java_werror_flag=no
 ])
-m4_defun([AC_LANG_COMPILER(JAVA)], [])
-m4_define([_AC_LANG_ABBREV(JAVA)], [java])
-
-AC_LANG(JAVA)
+m4_defun([AC_LANG_COMPILER(GCJ)], [])
+m4_define([_AC_LANG_ABBREV(GCJ)], [java])
+AC_LANG(GCJ)
 
-# Only add -warn flags when the compiler is known to be ECJ.
-AC_MSG_CHECKING([java flags])
-case "${JAVAC}" in
-gcj* | */gcj* ) JAVACFLAGS='-g -classpath $(SOURCEPATH):$(CLASSPATH)' ;;
-ecj | */ecj ) JAVACFLAGS='-warn:+semicolon -sourcepath $(SOURCEPATH) -classpath $(CLASSPATH)' ;;
-* ) JAVACFLAGS='-g -sourcepath $(SOURCEPATH) -classpath $(CLASSPATH)' ;;
-esac
-AC_SUBST([JAVACFLAGS])
-AC_MSG_RESULT(${JAVACFLAGS})
 
-# See if -fsource=1.4 can be added, if not only use the warning flags.
-# If it is available also use it for the GCJFLAGS.
+# See gcj accepts -fsource=1.4, if not only use the warning flags.  If
+# it is available also use it for the GCJFLAGS.
 
-AC_MSG_CHECKING([whether ${JAVAC} accepts -fsource=1.4])
+AC_MSG_CHECKING([whether ${GCJ} accepts -fsource=1.4])
 if test "x$ac_env_GCJFLAGS_set" == xset ; then
 	GCJ_FSOURCE="no"
 	AC_MSG_RESULT([not needed])
 else
-	JAVACFLAGS_WARN=$JAVACFLAGS
-	JAVACFLAGS="$JAVACFLAGS -fsource=1.4"
+	GCJFLAGS_WARN=$GCJFLAGS
+	GCJFLAGS="$GCJFLAGS -fsource=1.4"
 	AC_COMPILE_IFELSE([public class conftest{}],
 		[GCJ_FSOURCE="yes"
 		 GCJFLAGS="$GCJFLAGS -fsource=1.4"],
 		[GCJ_FSOURCE="no"
-		JAVACFLAGS=$JAVACFLAGS_WARN])
+		GCJFLAGS=$GCJFLAGS_WARN])
 	AC_MSG_RESULT([${GCJ_FSOURCE}])
 fi
 
+
+# Check for the ECJ compiler.
+
+AC_MSG_CHECKING([ecj.jar])
+ECJ_JAR=${ECJ_JAR:-/usr/share/java/eclipse-ecj.jar}
+AC_SUBST([ECJ_JAR])
+AC_MSG_RESULT(${ECJ_JAR})
+
+
+# Two possible compilers: either GCJ (wrapper round ECJ); or ECJ.  In
+# the latter case, need to explicitly run compiler from within the GIJ
+# runtime so that ECJ sees the classpath environment, in particular
+# things like gnu.gcj.RawDataManaged.
+
+AC_MSG_CHECKING([JAVAC])
+if test x"${JAVAC}" = x ; then
+   if test "x${GCJ_FSOURCE}" = xyes ; then
+      JAVAC_IS=gcj
+      JAVAC="\$(GCJ) -C"
+   elif test "x${ECJ_JAR}" != xno ; then
+      JAVAC_IS=ecj
+      JAVAC="\$(GIJ) --classpath \$(ECJ_JAR):\$(CLASSPATH) org.eclipse.jdt.internal.compiler.batch.Main"
+   else
+      AC_MSG_ERROR([no java compiler])
+   fi
+fi
+AC_SUBST([JAVAC])
+AC_SUBST([JAVAC_IS])
+AC_MSG_RESULT(${JAVAC})
+
+
+# Only add -warn flags when the compiler is known to be ECJ.
+AC_MSG_CHECKING([java flags])
+case "${JAVAC_IS}" in
+     gcj) JAVACFLAGS='-g -classpath $(SOURCEPATH):$(CLASSPATH)' ;;
+     ecj) JAVACFLAGS='-warn:+semicolon -sourcepath $(SOURCEPATH) -classpath $(CLASSPATH)' ;;
+esac
+AC_SUBST([JAVACFLAGS])
+AC_MSG_RESULT(${JAVACFLAGS})
+
+
 # Some versions of gcj don't support -Wall.  Some versions generate
 # good warnings without it.  So explictily test for it.
 
@@ -156,7 +178,7 @@ AC_MSG_CHECKING([whether ${JAVAC} accepts -Wall])
 if test "x$ac_env_GCJFLAGS_set" == xset ; then
 	GCJ_WALL=no
 	AC_MSG_RESULT([not needed])
-elif test "x${GCJ_FSOURCE}" == xyes ; then
+elif test x"${JAVAC_IS}" = xgcj ; then
 	# Newer compilers have a good default set of warnings so do
 	# not need -Wall.  However, older GCJs barf on stray
 	# semicolons so always check for them to help with
@@ -164,36 +186,20 @@ elif test "x${GCJ_FSOURCE}" == xyes ; then
 	GCJ_WALL=-Wextraneous-semicolon
 	JAVACFLAGS="$JAVACFLAGS ${GCJ_WALL}"
 	GCJFLAGS="$GCJFLAGS ${GCJ_WALL}"
-	AC_MSG_RESULT([${GCJ_WALL}])
-else
-	JAVACFLAGS_WARN=$JAVACFLAGS
-	JAVACFLAGS="$JAVACFLAGS -Wall"
-	AC_COMPILE_IFELSE([public class conftest{}],
-		[GCJ_WALL=yes
-		 GCJFLAGS="$GCJFLAGS -Wall"],
-		[GCJ_WALL=no
-		 JAVACFLAGS=$JAVACFLAGS_WARN])
-	AC_MSG_RESULT([${GCJ_WALL}])
+else	
+	GCJ_WALL=no
 fi
+AC_MSG_RESULT([${GCJ_WALL}])
+
 
 # Always use GIJ as the byte code interpreter.  java programs, run
 # during the build, need to see the GNU Java environment.  That
-# environment classes such as gnu.gcj.RawData which can be found using
-# reflection.
+# environment contains classes such as gnu.gcj.RawData which can be
+# found using reflection.
 
 JAVA="${JAVA:-$GIJ}"
 AC_SUBST([JAVA])
 
-# Check for the ECJ compiler.  If available, enable rules that push
-# all the java code through that compiler.  Doing this adds an
-# additional (but optional) code check -- ECJ tends to find more
-# errors than GCJ. Ignore when gcj support -fsource since then it
-# already uses a source -> byte code compiler that is sane.
-
-ECJ_JAR=${ECJ_JAR:-/usr/share/java/eclipse-ecj.jar}
-AC_SUBST([ECJ_JAR])
-AC_CHECK_PROGS([ECJ], [ecj], [no])
-AM_CONDITIONAL(HAVE_ECJ, test x"${ECJ}" != xno -a x"${GCJ_FSOURCE}" != xyes)
 
 # Check for the availablity of fig2dev
 
@@ -270,8 +276,8 @@ AC_ARG_WITH(libopcodes,
 AC_ARG_ENABLE([jar-compile],
 	[  --enable-jar-compile	Enable compilation of jars],
 	[case "${enableval}" in
-	      yes) jar_compile=true ;;
-	      no) jar_compile=false;;
+	      yes) jar_compile=yes ;;
+	      no) jar_compile=no;;
 	      *) AC_MSG_ERROR([bad value ${enableval} for --enable-jar-compile]) ;;
-	esac],[jar_compile=false])
-AM_CONDITIONAL([JAR_COMPILE], [test x$jar_compile = xtrue])
+	esac],[jar_compile=no])
+AM_CONDITIONAL([JAR_COMPILE], [test x$jar_compile = xyes])


hooks/post-receive
--
frysk system monitor/debugger


                 reply	other threads:[~2007-12-06 17:02 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071206170201.27164.qmail@sourceware.org \
    --to=cagney@sourceware.org \
    --cc=frysk-cvs@sourceware.org \
    --cc=frysk@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).