about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog23
-rw-r--r--INSTALL7
-rw-r--r--Makeconfig5
-rw-r--r--NEWS3
-rw-r--r--config.make.in1
-rwxr-xr-xconfigure12
-rw-r--r--configure.ac7
-rw-r--r--debug/Makefile28
-rw-r--r--manual/install.texi7
9 files changed, 79 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 1014ba3dff..f8652231de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,28 @@
 2014-12-10  Joseph Myers  <joseph@codesourcery.com>
 
+	* configure.ac (--disable-werror): New configure option.
+	(enable_werror): New AC_SUBST.
+	* configure: Regenerated.
+	* config.make.in (enable-werror): New variable.
+	* Makeconfig [$(enable-werror) = yes] (+gccwarn): Add -Werror
+	-Wno-error=undef.
+	(+gccwarn-c): Do not use -Werror=implicit-function-declaration.
+	* manual/install.texi (Configuring and compiling): Document
+	--disable-werror.
+	* INSTALL: Regenerated.
+	* debug/Makefile (CFLAGS-tst-chk1.c): Add -Wno-error.
+	(CFLAGS-tst-chk2.c): Likewise.
+	(CFLAGS-tst-chk3.c): Likewise.
+	(CFLAGS-tst-chk4.cc): Likewise.
+	(CFLAGS-tst-chk5.cc): Likewise.
+	(CFLAGS-tst-chk6.cc): Likewise.
+	(CFLAGS-tst-lfschk1.c): Likewise.
+	(CFLAGS-tst-lfschk2.c): Likewise.
+	(CFLAGS-tst-lfschk3.c): Likewise.
+	(CFLAGS-tst-lfschk4.cc): Likewise.
+	(CFLAGS-tst-lfschk5.cc): Likewise.
+	(CFLAGS-tst-lfschk6.cc): Likewise.
+
 	* stdio-common/tst-printfsz.c: Include <libc-internal.h>.
 	(main): Disable -Wdeprecated-declarations around calls to
 	register_printf_function.
diff --git a/INSTALL b/INSTALL
index dac6178bac..dd5c34aadb 100644
--- a/INSTALL
+++ b/INSTALL
@@ -143,6 +143,13 @@ will be used, and CFLAGS sets optimization options for the compiler.
      additional security risks to the system and you should enable it
      only if you understand and accept those risks.
 
+`--disable-werror'
+     By default, the GNU C Library is built with `-Werror'.  If you wish
+     to build without this option (for example, if building with a newer
+     version of GCC than this version of the GNU C Library was tested
+     with, so new warnings cause the build with `-Werror' to fail), you
+     can configure with `--disable-werror'.
+
 `--build=BUILD-SYSTEM'
 `--host=HOST-SYSTEM'
      These options are for cross-compiling.  If you specify both
diff --git a/Makeconfig b/Makeconfig
index bbf546072c..15553681a0 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -717,7 +717,10 @@ else
 +gccwarn := -Wall -Wwrite-strings -Winline
 endif
 +gccwarn += -Wundef
-+gccwarn-c = -Wstrict-prototypes -Werror=implicit-function-declaration
+ifeq ($(enable-werror),yes)
++gccwarn += -Werror -Wno-error=undef
+endif
++gccwarn-c = -Wstrict-prototypes
 
 # We do not depend on the address of constants in different files to be
 # actually different, so allow the compiler to merge them all.
diff --git a/NEWS b/NEWS
index 1b08d40a68..2cc4a611dc 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,9 @@ Version 2.21
   C Library is GCC 4.6.  Older GCC versions, and non-GNU compilers, can
   still be used to compile programs using the GNU C Library.
 
+* The GNU C Library is now built with -Werror by default.  This can be
+  disabled by configuring with --disable-werror.
+
 * New locales: tu_IN, bh_IN, raj_IN, ce_RU.
 
 * The obsolete sigvec function has been removed.  This was the original
diff --git a/config.make.in b/config.make.in
index 4a781fdc4a..ad4dd30607 100644
--- a/config.make.in
+++ b/config.make.in
@@ -45,6 +45,7 @@ sysheaders = @sysheaders@
 sysincludes = @SYSINCLUDES@
 c++-sysincludes = @CXX_SYSINCLUDES@
 all-warnings = @all_warnings@
+enable-werror = @enable_werror@
 
 have-z-combreloc = @libc_cv_z_combreloc@
 have-z-execstack = @libc_cv_z_execstack@
diff --git a/configure b/configure
index 0cb54ec363..b1fda3867a 100755
--- a/configure
+++ b/configure
@@ -668,6 +668,7 @@ build_pt_chown
 build_nscd
 link_obsolete_rpc
 libc_cv_nss_crypt
+enable_werror
 all_warnings
 force_install
 bindnow
@@ -767,6 +768,7 @@ enable_force_install
 enable_maintainer_mode
 enable_kernel
 enable_all_warnings
+enable_werror
 enable_multi_arch
 enable_nss_crypt
 enable_obsolete_rpc
@@ -1428,6 +1430,7 @@ Optional Features:
   --enable-kernel=VERSION compile for compatibility with kernel not older than
                           VERSION
   --enable-all-warnings   enable all useful warnings gcc can issue
+  --disable-werror        do not build with -Werror
   --enable-multi-arch     enable single DSO with optimizations for multiple
                           architectures
   --enable-nss-crypt      enable libcrypt to use nss
@@ -3565,6 +3568,15 @@ fi
 
 
 
+# Check whether --enable-werror was given.
+if test "${enable_werror+set}" = set; then :
+  enableval=$enable_werror; enable_werror=$enableval
+else
+  enable_werror=yes
+fi
+
+
+
 # Check whether --enable-multi-arch was given.
 if test "${enable_multi_arch+set}" = set; then :
   enableval=$enable_multi_arch; multi_arch=$enableval
diff --git a/configure.ac b/configure.ac
index b2c4b1fab8..784e360382 100644
--- a/configure.ac
+++ b/configure.ac
@@ -253,6 +253,13 @@ AC_ARG_ENABLE([all-warnings],
 	      [])
 AC_SUBST(all_warnings)
 
+AC_ARG_ENABLE([werror],
+	      AC_HELP_STRING([--disable-werror],
+			     [do not build with -Werror]),
+	      [enable_werror=$enableval],
+	      [enable_werror=yes])
+AC_SUBST(enable_werror)
+
 AC_ARG_ENABLE([multi-arch],
 	      AC_HELP_STRING([--enable-multi-arch],
 			     [enable single DSO with optimizations for multiple architectures]),
diff --git a/debug/Makefile b/debug/Makefile
index 3ddcd1e1c3..96c21d5d40 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -96,19 +96,21 @@ CFLAGS-tst-longjmp_chk3.c = -fexceptions -fasynchronous-unwind-tables
 CPPFLAGS-tst-longjmp_chk3.c = -D_FORTIFY_SOURCE=1
 
 # We know these tests have problems with format strings, this is what
-# we are testing.  Disable that warning.
-CFLAGS-tst-chk1.c = -Wno-format
-CFLAGS-tst-chk2.c = -Wno-format
-CFLAGS-tst-chk3.c = -Wno-format
-CFLAGS-tst-chk4.cc = -Wno-format
-CFLAGS-tst-chk5.cc = -Wno-format
-CFLAGS-tst-chk6.cc = -Wno-format
-CFLAGS-tst-lfschk1.c = -Wno-format
-CFLAGS-tst-lfschk2.c = -Wno-format
-CFLAGS-tst-lfschk3.c = -Wno-format
-CFLAGS-tst-lfschk4.cc = -Wno-format
-CFLAGS-tst-lfschk5.cc = -Wno-format
-CFLAGS-tst-lfschk6.cc = -Wno-format
+# we are testing.  Disable that warning.  They also generate warnings
+# from warning attributes, which cannot be disabled via pragmas, so
+# require -Wno-error to be used.
+CFLAGS-tst-chk1.c = -Wno-format -Wno-error
+CFLAGS-tst-chk2.c = -Wno-format -Wno-error
+CFLAGS-tst-chk3.c = -Wno-format -Wno-error
+CFLAGS-tst-chk4.cc = -Wno-format -Wno-error
+CFLAGS-tst-chk5.cc = -Wno-format -Wno-error
+CFLAGS-tst-chk6.cc = -Wno-format -Wno-error
+CFLAGS-tst-lfschk1.c = -Wno-format -Wno-error
+CFLAGS-tst-lfschk2.c = -Wno-format -Wno-error
+CFLAGS-tst-lfschk3.c = -Wno-format -Wno-error
+CFLAGS-tst-lfschk4.cc = -Wno-format -Wno-error
+CFLAGS-tst-lfschk5.cc = -Wno-format -Wno-error
+CFLAGS-tst-lfschk6.cc = -Wno-format -Wno-error
 LDLIBS-tst-chk4 = -lstdc++
 LDLIBS-tst-chk5 = -lstdc++
 LDLIBS-tst-chk6 = -lstdc++
diff --git a/manual/install.texi b/manual/install.texi
index 1eafb6ec32..35467b1b16 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -174,6 +174,13 @@ setuid and owned by @code{root}.  The use of @file{pt_chown} introduces
 additional security risks to the system and you should enable it only if
 you understand and accept those risks.
 
+@item --disable-werror
+By default, @theglibc{} is built with @option{-Werror}.  If you wish
+to build without this option (for example, if building with a newer
+version of GCC than this version of @theglibc{} was tested with, so
+new warnings cause the build with @option{-Werror} to fail), you can
+configure with @option{--disable-werror}.
+
 @item --build=@var{build-system}
 @itemx --host=@var{host-system}
 These options are for cross-compiling.  If you specify both options and