aboutsummaryrefslogtreecommitdiff
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