summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew John Hughes <gnu_andrew@member.fsf.org>2014-10-13 23:38:37 +0100
committerAndrew John Hughes <gnu_andrew@member.fsf.org>2014-10-13 23:38:37 +0100
commit8a6813555274093cb8746639af1613f428e691fc (patch)
tree464a2e8c6aa019e742ff5b04467009cec81aed92
parenta24befdd79d09c14595e550ec638851c3c117b93 (diff)
downloadclasspath-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--ChangeLog15
-rw-r--r--configure.ac30
-rw-r--r--examples/Makefile.am12
-rw-r--r--lib/Makefile.am13
-rw-r--r--m4/acinclude.m420
-rwxr-xr-xtools/Makefile.am13
6 files changed, 97 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 25f5b34c2..32fff27f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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