diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2014-10-13 23:38:37 +0100 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2014-10-13 23:38:37 +0100 |
commit | 8a6813555274093cb8746639af1613f428e691fc (patch) | |
tree | 464a2e8c6aa019e742ff5b04467009cec81aed92 | |
parent | a24befdd79d09c14595e550ec638851c3c117b93 (diff) | |
download | classpath-8a6813555274093cb8746639af1613f428e691fc.tar.gz |
Allow warnings from the Java compiler to be turned on and off.
2014-10-13 Andrew John Hughes <gnu_andrew@member.fsf.org>
* configure.ac:
Add --enable-warnings so warnings can be turned
on and off. Invoke IT_USING_ECJ during compiler
checks.
* examples/Makefile.am:
Split options for GCJ, javac and ecj.
* lib/Makefile.am: Likewise.
* m4/acinclude.m4:
(IT_USING_ECJ): New macro taken from IcedTea to
detect the use of ecj.
* tools/Makefile.am:
Split options for GCJ, javac and ecj.
Signed-off-by: Andrew John Hughes <gnu_andrew@member.fsf.org>
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | configure.ac | 30 | ||||
-rw-r--r-- | examples/Makefile.am | 12 | ||||
-rw-r--r-- | lib/Makefile.am | 13 | ||||
-rw-r--r-- | m4/acinclude.m4 | 20 | ||||
-rwxr-xr-x | tools/Makefile.am | 13 |
6 files changed, 97 insertions, 6 deletions
@@ -1,3 +1,18 @@ +2014-10-13 Andrew John Hughes <gnu_andrew@member.fsf.org> + + * configure.ac: + Add --enable-warnings so warnings can be turned + on and off. Invoke IT_USING_ECJ during compiler + checks. + * examples/Makefile.am: + Split options for GCJ, javac and ecj. + * lib/Makefile.am: Likewise. + * m4/acinclude.m4: + (IT_USING_ECJ): New macro taken from IcedTea to + detect the use of ecj. + * tools/Makefile.am: + Split options for GCJ, javac and ecj. + 2014-05-04 Andrew John Hughes <gnu_andrew@member.fsf.org> * javax/lang/model/util/AbstractAnnotationValueVisitor6.java: diff --git a/configure.ac b/configure.ac index 5f2538d5c..2a4177893 100644 --- a/configure.ac +++ b/configure.ac @@ -853,6 +853,35 @@ AC_ARG_ENABLE([debug], AC_SUBST(LIBDEBUG) dnl ----------------------------------------------------------- +dnl Enable warnings at compile time. +dnl ----------------------------------------------------------- +AC_MSG_CHECKING([whether to enable warnings]) +AC_ARG_ENABLE([warnings], + [AS_HELP_STRING(--enable-warnings,enable warnings during compiling)], + [case "${enableval}" in + yes) + WARNINGS="true" + ;; + no) + WARNINGS="false" + ;; + *) + AC_MSG_ERROR(bad value ${enableval} for --enable-warnings) ;; + esac], + [WARNINGS="false"]) +AC_MSG_RESULT(${WARNINGS}) +if test "x$WARNINGS" = "xtrue"; then + JAVAC_WARNINGS="-Xlint:unchecked,cast,divzero,empty,finally,overrides" + ECJ_WARNINGS="-warn:+all -warn:-deprecation,emptyBlock,nls,resource,serial,unavoidableGenericProblems,unqualifiedField,unusedPrivate" + AC_SUBST(JAVAC_WARNINGS) + AC_SUBST(ECJ_WARNINGS) +else + JAVAC_WARNINGS="-nowarn" + ECJ_WARNINGS="-nowarn" +fi +AC_SUBST(WARNINGS) + +dnl ----------------------------------------------------------- dnl Enable execution of all static initializer loadLibrary() dnl calls at compile time. By default most people will not dnl want to disable this, but some VMs (gcj) don't need or want @@ -997,6 +1026,7 @@ if test "x${use_glibj_zip}" = xfalse || \ test "x${build_class_files}" != xno; then AC_PROG_JAVAC_WORKS CLASSPATH_JAVAC_MEM_CHECK + IT_USING_ECJ fi dnl ----------------------------------------------------------- diff --git a/examples/Makefile.am b/examples/Makefile.am index ff4780124..ad2158323 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -1,10 +1,18 @@ ## Input file for automake to generate the Makefile.in used by configure GLIBJ_CLASSPATH='$(top_builddir)/lib/glibj.zip:$(top_builddir)/lib' +# source, target and classpath options +GCJ_OPTS = -fsource=1.5 -ftarget=1.5 --encoding=UTF-8 --bootclasspath=$(GLIBJ_CLASSPATH) --classpath='$(top_builddir)/tools/tools.zip' +ECJ_OPTS = -source 1.5 -target 1.5 -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath '$(top_builddir)/tools/tools.zip' + if GCJ_JAVAC -JCOMPILER = $(JAVAC) $(JAVACFLAGS) -fsource=1.5 -ftarget=1.5 --encoding=UTF-8 --bootclasspath=$(GLIBJ_CLASSPATH) --classpath='$(top_builddir)/tools/tools.zip' +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(GCJ_OPTS) +else +if ECJ_JAVAC +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(ECJ_WARNINGS) $(ECJ_OPTS) else -JCOMPILER = $(JAVAC) $(JAVACFLAGS) -source 1.5 -target 1.5 -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath '$(top_builddir)/tools/tools.zip' +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(JAVAC_WARNINGS) $(ECJ_OPTS) +endif endif # All our example java source files diff --git a/lib/Makefile.am b/lib/Makefile.am index df02fad25..68fed7564 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -7,11 +7,20 @@ sinclude $(JAVA_DEPEND) compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/relaxngDatatype:$(top_srcdir)/external/jsr166:.:$(PATH_TO_GLIBJ_ZIP):$(PATH_TO_ESCHER) +# source,target and classpath options +GCJ_OPTS=-fsource=1.6 -ftarget=1.6 --bootclasspath='' --classpath=$(compile_classpath) +ECJ_OPTS=-source 1.6 -target 1.6 -bootclasspath '' -classpath $(compile_classpath) +JAVAC_OPTS=$(ECJ_OPTS) + # handling source to bytecode compiler programs like gcj, jikes and kjc if GCJ_JAVAC -JCOMPILER = $(JAVAC) $(JAVACFLAGS) -fsource=1.6 -ftarget=1.6 --bootclasspath='' --classpath=$(compile_classpath) -d . @classes +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(GCJ_OPTS) -d . @classes +else +if ECJ_JAVAC +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(ECJ_WARNINGS) $(ECJ_OPTS) $(JAVAC_MEM_OPT) -d . @classes else -JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(JAVAC_MEM_OPT) -source 1.6 -target 1.6 -bootclasspath '' -classpath $(compile_classpath) -d . @classes +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(JAVAC_WARNINGS) $(JAVAC_OPTS) $(JAVAC_MEM_OPT) -d . @classes +endif endif if CREATE_COLLECTIONS diff --git a/m4/acinclude.m4 b/m4/acinclude.m4 index e0d46ccff..aeea0e2fb 100644 --- a/m4/acinclude.m4 +++ b/m4/acinclude.m4 @@ -289,3 +289,23 @@ AC_DEFUN([CLASSPATH_COND_IF], m4_default([$4], [:]) fi ])]) + +dnl --------------------------------------------------------------- +dnl IT_USING_ECJ +dnl --------------------------------------------------------------- +dnl Taken from IcedTea 2.x. Determines if javac is ecj or not +dnl --------------------------------------------------------------- +AC_DEFUN_ONCE([IT_USING_ECJ],[ +AC_REQUIRE([AC_PROG_JAVAC]) +AC_CACHE_CHECK([if we are using ecj as javac], it_cv_ecj, [ +if $JAVAC -version 2>&1| grep '^Eclipse' >&AS_MESSAGE_LOG_FD ; then + it_cv_ecj=yes; +else + it_cv_ecj=no; +fi +]) +USING_ECJ=$it_cv_ecj +AC_SUBST(USING_ECJ) +AM_CONDITIONAL(ECJ_JAVAC, test x"${USING_ECJ}" = xyes) +AC_PROVIDE([$0])dnl +]) diff --git a/tools/Makefile.am b/tools/Makefile.am index c5db7cd0a..7633f869c 100755 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -13,10 +13,19 @@ GLIBJ_BOOTCLASSPATH='$(top_builddir)/lib/glibj.zip:$(top_builddir)/lib' GLIBJ_CLASSPATH=asm:$(ANTLR_CLASSPATH) # Setup the compiler to use the GNU Classpath library we just built. + +# source, target and classpath options +GCJ_OPTS = -fsource=1.5 -ftarget=1.5 --encoding=UTF-8 --bootclasspath=$(GLIBJ_BOOTCLASSPATH) --classpath=$(GLIBJ_CLASSPATH) +ECJ_OPTS = -source 1.5 -target 1.5 -encoding UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath $(GLIBJ_CLASSPATH) + if GCJ_JAVAC -JCOMPILER = $(JAVAC) $(JAVACFLAGS) -fsource=1.5 -ftarget=1.5 --encoding=UTF-8 --bootclasspath=$(GLIBJ_BOOTCLASSPATH) --classpath=$(GLIBJ_CLASSPATH) +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(GCJ_OPTS) else -JCOMPILER = $(JAVAC) $(JAVACFLAGS) -source 1.5 -target 1.5 -encoding UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath $(GLIBJ_CLASSPATH) +if ECJ_JAVAC +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(ECJ_WARNINGS) $(ECJ_OPTS) +else +JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(JAVAC_WARNINGS) $(ECJ_OPTS) +endif endif if CREATE_WRAPPERS |