From aad760e7d667b782cf2eb10c6179aa03a385d90e Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Tue, 28 Feb 2012 05:17:12 -0500 Subject: [PATCH] Make warning CXXFLAGS configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This turns off -Werror by default except in the Debian package. -Werror is inherently unportable and breaks things on OS X. While it can cause problems in Debian too, this is at least a little better. It also turns off -pedantic in src/protobufs, because apparently protoc output doesn’t compile with -pedantic on all platforms. Signed-off-by: Anders Kaseorg --- configure.ac | 27 +++++++++++++++++++++++++++ debian/control | 2 +- debian/rules | 4 ++++ src/crypto/Makefile.am | 2 +- src/examples/Makefile.am | 2 +- src/frontend/Makefile.am | 2 +- src/network/Makefile.am | 2 +- src/protobufs/Makefile.am | 2 +- src/statesync/Makefile.am | 2 +- src/terminal/Makefile.am | 2 +- src/util/Makefile.am | 2 +- 11 files changed, 40 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac index 12ad8f7..77c9f0c 100644 --- a/configure.ac +++ b/configure.ac @@ -12,6 +12,33 @@ AC_CONFIG_HEADERS([config.h]) AC_PROG_CXX AC_PROG_RANLIB +WARNING_CXXFLAGS="" +PICKY_CXXFLAGS="" +AC_ARG_ENABLE([compile-warnings], + [AS_HELP_STRING([--enable-compile-warnings@<:@=no/yes/maximum/error], + [Turn on compiler warnings])], + [case "$enableval" in + no) + ;; + '' | yes) + WARNING_CXXFLAGS="-Wall" + ;; + maximum) + WARNING_CXXFLAGS="-Wall" + PICKY_CXXFLAGS="-Wextra -pedantic -Wno-long-long -Weffc++" + ;; + error) + WARNING_CXXFLAGS="-Wall -Werror" + PICKY_CXXFLAGS="-Wextra -pedantic -Wno-long-long -Weffc++" + ;; + *) + AC_MSG_ERROR([Unknown argument '$enableval' to --enable-compile-warnings]) + ;; + esac], + [WARNING_CXXFLAGS="-Wall"]) +AC_SUBST([WARNING_CXXFLAGS]) +AC_SUBST([PICKY_CXXFLAGS]) + # Checks for libraries. AC_SEARCH_LIBS([utempter_remove_added_record], [utempter], , [AC_MSG_ERROR([Unable to find libutempter.])]) AC_SEARCH_LIBS([compress], [z], , [AC_MSG_ERROR([Unable to find zlib.])]) diff --git a/debian/control b/debian/control index 9daf967..fbd7ccc 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: mosh Section: net Priority: optional Maintainer: Keith Winstein -Build-Depends: debhelper (>= 7.0.0), autotools-dev, protobuf-compiler, libprotobuf-dev, dh-autoreconf, pkg-config, libutempter-dev, libboost-dev, zlib1g-dev +Build-Depends: debhelper (>= 7.0.50), autotools-dev, protobuf-compiler, libprotobuf-dev, dh-autoreconf, pkg-config, libutempter-dev, libboost-dev, zlib1g-dev Standards-Version: 3.9.3 Homepage: http://mosh.mit.edu Vcs-Git: git://github.com/keithw/mosh.git diff --git a/debian/rules b/debian/rules index 85ce4e2..ec1b928 100755 --- a/debian/rules +++ b/debian/rules @@ -11,3 +11,7 @@ %: dh $@ --with autoreconf + +override_dh_auto_configure: + dh_auto_configure -- \ + --enable-compile-warnings=error diff --git a/src/crypto/Makefile.am b/src/crypto/Makefile.am index 53c99a5..e55a647 100644 --- a/src/crypto/Makefile.am +++ b/src/crypto/Makefile.am @@ -1,4 +1,4 @@ -AM_CXXFLAGS = -pedantic -Wno-long-long -Werror -Wall -Wextra -Weffc++ -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) -fno-default-inline -pipe noinst_LIBRARIES = libmoshcrypto.a diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am index a0a2e1b..95c4833 100644 --- a/src/examples/Makefile.am +++ b/src/examples/Makefile.am @@ -1,4 +1,4 @@ -AM_CXXFLAGS = -pedantic -Wno-long-long -Werror -Wall -Wextra -Weffc++ -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) -fno-default-inline -pipe noinst_PROGRAMS = encrypt decrypt ntester parse termemu diff --git a/src/frontend/Makefile.am b/src/frontend/Makefile.am index 30653d7..a3a46f3 100644 --- a/src/frontend/Makefile.am +++ b/src/frontend/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I$(srcdir)/../statesync -I$(srcdir)/../terminal -I$(srcdir)/../network -I$(srcdir)/../crypto -I$(builddir)/../protobufs -I$(srcdir)/../util -AM_CXXFLAGS = -pedantic -Wno-long-long -Werror -Wall -Wextra -Weffc++ -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) -fno-default-inline -pipe LIBS = $(protobuf_LIBS) LDADD = ../crypto/libmoshcrypto.a ../network/libmoshnetwork.a ../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a ../util/libmoshutil.a ../protobufs/libmoshprotos.a -lutil -lrt -lm -lutempter diff --git a/src/network/Makefile.am b/src/network/Makefile.am index 94b29bc..0395bf1 100644 --- a/src/network/Makefile.am +++ b/src/network/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I$(srcdir)/../util -I$(srcdir)/../crypto -I$(builddir)/../protobufs -AM_CXXFLAGS = -pedantic -Wno-long-long -Werror -Wall -Wextra -Weffc++ -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) -fno-default-inline -pipe noinst_LIBRARIES = libmoshnetwork.a diff --git a/src/protobufs/Makefile.am b/src/protobufs/Makefile.am index e65813c..ba67a92 100644 --- a/src/protobufs/Makefile.am +++ b/src/protobufs/Makefile.am @@ -2,7 +2,7 @@ source = userinput.proto hostinput.proto transportinstruction.proto PROTOC = protoc AM_CPPFLAGS = $(protobuf_CFLAGS) -AM_CXXFLAGS = -pedantic -Wno-long-long -Werror -Wall -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) -fno-default-inline -pipe SUFFIXES = .proto .pb.cc diff --git a/src/statesync/Makefile.am b/src/statesync/Makefile.am index e87ead8..eda87e4 100644 --- a/src/statesync/Makefile.am +++ b/src/statesync/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I$(srcdir)/../terminal -I$(builddir)/../protobufs -AM_CXXFLAGS = -pedantic -Wno-long-long -Werror -Wall -Wextra -Weffc++ -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) -fno-default-inline -pipe noinst_LIBRARIES = libmoshstatesync.a diff --git a/src/terminal/Makefile.am b/src/terminal/Makefile.am index 92a00e7..69ea682 100644 --- a/src/terminal/Makefile.am +++ b/src/terminal/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I$(srcdir)/../util -AM_CXXFLAGS = -pedantic -Wno-long-long -Werror -Wall -Wextra -Weffc++ -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) -fno-default-inline -pipe noinst_LIBRARIES = libmoshterminal.a diff --git a/src/util/Makefile.am b/src/util/Makefile.am index de63bca..815f87d 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am @@ -1,4 +1,4 @@ -AM_CXXFLAGS = -pedantic -Wno-long-long -Werror -Wall -Wextra -Weffc++ -fno-default-inline -pipe +AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) -fno-default-inline -pipe noinst_LIBRARIES = libmoshutil.a