--- old/common/autoconf/flags.m4 2015-05-08 09:39:52.805360558 +0200 +++ new/common/autoconf/flags.m4 2015-05-08 09:39:52.697360557 +0200 @@ -231,7 +231,6 @@ AC_SUBST(C_FLAG_REORDER) AC_SUBST(CXX_FLAG_REORDER) - AC_SUBST(SHARED_LIBRARY_FLAGS) AC_SUBST(SET_EXECUTABLE_ORIGIN) AC_SUBST(SET_SHARED_LIBRARY_ORIGIN) AC_SUBST(SET_SHARED_LIBRARY_NAME) @@ -900,6 +899,24 @@ [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false]) AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG) + AC_ARG_ENABLE([warnings-as-errors], [AS_HELP_STRING([--disable-warnings-as-errors], + [do not consider native warnings to be an error @<:@enabled@:>@])]) + + AC_MSG_CHECKING([if native warnings are errors]) + if test "x$enable_warnings_as_errors" = "xyes"; then + AC_MSG_RESULT([yes (explicitely set)]) + WARNINGS_AS_ERRORS=true + elif test "x$enable_warnings_as_errors" = "xno"; then + AC_MSG_RESULT([no]) + WARNINGS_AS_ERRORS=false + elif test "x$enable_warnings_as_errors" = "x"; then + AC_MSG_RESULT([yes (default)]) + WARNINGS_AS_ERRORS=true + else + AC_MSG_ERROR([--enable-warnings-as-errors accepts no argument]) + fi + AC_SUBST(WARNINGS_AS_ERRORS) + case "${TOOLCHAIN_TYPE}" in microsoft) DISABLE_WARNING_PREFIX="-wd" --- old/common/autoconf/spec.gmk.in 2015-05-08 09:39:53.241360565 +0200 +++ new/common/autoconf/spec.gmk.in 2015-05-08 09:39:53.129360564 +0200 @@ -321,6 +321,9 @@ DISABLE_WARNING_PREFIX := @DISABLE_WARNING_PREFIX@ CFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@ +# A global flag (true or false) determining if native warnings are considered errors. +WARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@ + CFLAGS_CCACHE:=@CFLAGS_CCACHE@ # Tools that potentially need to be cross compilation aware. @@ -394,9 +397,6 @@ LIPO:=@LIPO@ -# Command to create a shared library -SHARED_LIBRARY_FLAGS:=@SHARED_LIBRARY_FLAGS@ - # Options to linker to specify a mapfile. # (Note absence of := assignment, because we do not want to evaluate the macro body here) SET_SHARED_LIBRARY_MAPFILE=@SET_SHARED_LIBRARY_MAPFILE@ --- old/make/Init.gmk 2015-05-08 09:39:53.673360572 +0200 +++ new/make/Init.gmk 2015-05-08 09:39:53.565360571 +0200 @@ -267,7 +267,9 @@ ( cd $(TOPDIR) && \ $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) $(OUTPUT_SYNC_FLAG) \ -j $(JOBS) -f make/Main.gmk $(USER_MAKE_VARS) \ - $(PARALLEL_TARGETS) ) + $(PARALLEL_TARGETS) || \ + ( exitcode=$$? && $(BUILD_LOG_WRAPPER) $(PRINTF) "\nERROR: Build failed for $(TARGET_DESCRIPTION) (exit code $$exitcode) \n" && \ + $(PRINTF) "Hint: If caused by a warning, try configure --disable-warnings-as-errors \n\n" && exit $$exitcode ) ) $(call CleanupSmartJavac) $(call StopGlobalTimer) $(call ReportBuildTimes) --- old/make/common/NativeCompilation.gmk 2015-05-08 09:39:54.105360579 +0200 +++ new/make/common/NativeCompilation.gmk 2015-05-08 09:39:53.989360577 +0200 @@ -487,6 +487,21 @@ $1_EXTRA_CXXFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), $$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE))) endif + # Check if warnings should be considered errors. + # Pick first binary and toolchain specific, then binary specific, then general setting. + ifeq ($$($1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE)),) + ifeq ($$($1_WARNINGS_AS_ERRORS),) + $1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE) := $$(WARNINGS_AS_ERRORS) + else + $1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE) := $$($1_WARNINGS_AS_ERRORS) + endif + endif + + ifeq ($$($1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE)), true) + $1_EXTRA_CFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS) + $1_EXTRA_CXXFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS) + endif + ifeq (NONE, $$($1_OPTIMIZATION)) $1_EXTRA_CFLAGS += $(C_O_FLAG_NONE) $1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_NONE) --- old/jdk/make/CompileDemos.gmk 2015-05-08 09:39:54.821360590 +0200 +++ new/jdk/make/CompileDemos.gmk 2015-05-08 09:39:54.569360586 +0200 @@ -396,7 +396,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBPOLLER, \ SRC := $(DEMO_SOLARIS_SRC)/jni/Poller, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB) $(SHARED_LIBRARY_FLAGS) \ + CFLAGS := $(CFLAGS_JDKLIB) \ -I$(SUPPORT_OUTPUTDIR)/demo/classes/jni/Poller, \ LDFLAGS := $(LDFLAGS_JDKLIB), \ LDFLAGS_SUFFIX_solaris := -lc, \ --- old/jdk/make/launcher/Launcher-jdk.accessibility.gmk 2015-05-08 09:39:55.701360604 +0200 +++ new/jdk/make/launcher/Launcher-jdk.accessibility.gmk 2015-05-08 09:39:55.453360601 +0200 @@ -39,7 +39,7 @@ CFLAGS := $(filter-out -Zc:wchar_t-, $(CFLAGS_JDKEXE)) -Zc:wchar_t \ -analyze- -Od -Gd -D_WINDOWS \ -D_UNICODE -DUNICODE -RTC1 -EHsc, \ - DISABLED_WARNINGS_microsoft := 4267, \ + DISABLED_WARNINGS_microsoft := 4267 4996, \ LDFLAGS := $(LDFLAGS_JDKEXE) \ Advapi32.lib Version.lib User32.lib, \ OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/jdk.accessibility/jabswitch, \ --- old/jdk/make/launcher/Launcher-jdk.pack200.gmk 2015-05-08 09:39:56.441360616 +0200 +++ new/jdk/make/launcher/Launcher-jdk.pack200.gmk 2015-05-08 09:39:56.193360612 +0200 @@ -84,6 +84,7 @@ CFLAGS_linux := -fPIC, \ CFLAGS_solaris := -KPIC, \ CFLAGS_macosx := -fPIC, \ + DISABLED_WARNINGS_gcc := unused-result, \ MAPFILE := $(UNPACK_MAPFILE),\ LDFLAGS := $(UNPACKEXE_ZIPOBJS) \ $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \ --- old/jdk/make/lib/Awt2dLibraries.gmk 2015-05-08 09:39:57.185360628 +0200 +++ new/jdk/make/lib/Awt2dLibraries.gmk 2015-05-08 09:39:56.933360624 +0200 @@ -246,9 +246,10 @@ CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \ DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \ format-nonliteral parentheses, \ - DISABLED_WARNINGS_clang := logical-op-parentheses, \ + DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer, \ DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \ - DISABLED_WARNINGS_microsoft := 4297 4244 4267, \ + DISABLED_WARNINGS_microsoft := 4297 4244 4267 4996, \ + WARNINGS_AS_ERRORS_gcc := false, \ ASFLAGS := $(LIBAWT_ASFLAGS), \ MAPFILE := $(LIBAWT_MAPFILE), \ LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \ @@ -357,6 +358,7 @@ format-security int-to-pointer-cast parentheses, \ DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \ E_ASSIGNMENT_TYPE_MISMATCH E_NON_CONST_INIT, \ + WARNINGS_AS_ERRORS_gcc := false, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(X_LIBS) $(LIBAWT_XAWT_LDFLAGS) \ @@ -408,11 +410,11 @@ INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \ OPTIMIZATION := HIGHEST, \ CFLAGS := $(filter-out -xc99=%none, $(CFLAGS_JDKLIB)) \ - $(SHARED_LIBRARY_FLAGS) $(LIBLCMS_CPPFLAGS) \ + $(LIBLCMS_CPPFLAGS) \ $(LCMS_CFLAGS), \ CFLAGS_solaris := -xc99=no_lib, \ CFLAGS_windows := -DCMS_IS_WINDOWS_, \ - DISABLED_WARNINGS_gcc := format-nonliteral, \ + DISABLED_WARNINGS_gcc := format-nonliteral type-limits, \ DISABLED_WARNINGS_clang := tautological-compare, \ DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/liblcms/mapfile-vers, \ @@ -647,10 +649,13 @@ OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \ CFLAGS_windows = -DCC_NOEX, \ DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast reorder \ - delete-non-virtual-dtor, \ - DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types, \ + delete-non-virtual-dtor type-limits, \ + DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \ + tautological-constant-out-of-range-compare int-to-pointer-cast, \ DISABLED_WARNINGS_solstudio := truncwarn, \ - DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090, \ + DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996, \ + WARNINGS_AS_ERRORS_gcc := false, \ + WARNINGS_AS_ERRORS_solstudio := false, \ MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \ LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ @@ -882,7 +887,7 @@ $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS), \ DISABLED_WARNINGS_gcc := type-limits unused-result maybe-uninitialized, \ DISABLED_WARNINGS_clang := incompatible-pointer-types, \ - DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST, \ + DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE, \ DISABLED_WARNINGS_microsoft := 4244 4267, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ @@ -956,6 +961,7 @@ DISABLED_WARNINGS_clang := incomplete-implementation \ deprecated-declarations objc-method-access bitwise-op-parentheses \ incompatible-pointer-types parentheses-equality extra-tokens, \ + WARNINGS_AS_ERRORS_clang := false, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN) \ -L$(INSTALL_LIBRARIES_HERE), \ --- old/jdk/make/lib/CoreLibraries.gmk 2015-05-08 09:39:58.081360642 +0200 +++ new/jdk/make/lib/CoreLibraries.gmk 2015-05-08 09:39:57.825360638 +0200 @@ -149,7 +149,8 @@ DISABLED_WARNINGS_gcc := type-limits format-nonliteral, \ DISABLED_WARNINGS_clang := int-conversion, \ DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \ - DISABLED_WARNINGS_microsoft := 4022 4267, \ + DISABLED_WARNINGS_microsoft := 4022 4267 4996, \ + WARNINGS_AS_ERRORS_solstudio := false, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ --- old/jdk/make/lib/Lib-jdk.crypto.ucrypto.gmk 2015-05-08 09:39:58.957360656 +0200 +++ new/jdk/make/lib/Lib-jdk.crypto.ucrypto.gmk 2015-05-08 09:39:58.705360652 +0200 @@ -38,6 +38,7 @@ OPTIMIZATION := LOW, \ CFLAGS := $(CFLAGS_JDKLIB) \ $(addprefix -I, $(LIBJ2UCRYPTO_SRC)), \ + DISABLED_WARNINGS_solstudio := E_MACRO_REDEFINED, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2ucrypto/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB), \ LDFLAGS_SUFFIX := $(LIBDL), \ --- old/jdk/make/lib/NetworkingLibraries.gmk 2015-05-08 09:39:59.829360670 +0200 +++ new/jdk/make/lib/NetworkingLibraries.gmk 2015-05-08 09:39:59.577360666 +0200 @@ -34,7 +34,7 @@ $(LIBJAVA_HEADER_FLAGS) $(addprefix -I, $(LIBNET_SRC_DIRS)), \ DISABLED_WARNINGS_gcc := format-nonliteral, \ DISABLED_WARNINGS_clang := parentheses-equality constant-logical-operand, \ - DISABLED_WARNINGS_microsoft := 4244 4047 4133, \ + DISABLED_WARNINGS_microsoft := 4244 4047 4133 4996, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnet/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ --- old/jdk/make/lib/NioLibraries.gmk 2015-05-08 09:40:00.717360684 +0200 +++ new/jdk/make/lib/NioLibraries.gmk 2015-05-08 09:40:00.469360680 +0200 @@ -70,7 +70,7 @@ $(BUILD_LIBNIO_CFLAGS), \ DISABLED_WARNINGS_gcc := type-limits, \ DISABLED_WARNINGS_clang := tautological-compare, \ - DISABLED_WARNINGS_microsoft := 4244, \ + DISABLED_WARNINGS_microsoft := 4244 4996, \ MAPFILE := $(BUILD_LIBNIO_MAPFILE), \ LDFLAGS := $(LDFLAGS_JDKLIB) $(BUILD_LIBNIO_LDFLAGS) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ --- old/jdk/make/lib/SoundLibraries.gmk 2015-05-08 09:40:01.593360698 +0200 +++ new/jdk/make/lib/SoundLibraries.gmk 2015-05-08 09:40:01.341360694 +0200 @@ -129,6 +129,7 @@ CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBJSOUND_CFLAGS), \ DISABLED_WARNINGS_clang := implicit-function-declaration \ deprecated-writable-strings, \ + WARNINGS_AS_ERRORS_clang := false, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsound/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \