diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-07-26 02:29:24 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-07-26 21:30:59 +0200 |
| commit | 7399b5483c5b69559bbfcee27bfd415a967add85 (patch) | |
| tree | 763386d64a8575cc2a879d4651d45decddecf42a | |
| parent | 89504842f5aff01ac8a8e46ec48eea0a14235739 (diff) | |
Rationalise compiler warning setup.
| -rw-r--r-- | cscript | 2 | ||||
| -rw-r--r-- | src/lib/warnings.h | 26 | ||||
| -rw-r--r-- | wscript | 14 |
3 files changed, 35 insertions, 7 deletions
@@ -392,7 +392,7 @@ def dependencies(target, options): option_defaults = { "gui": True, "variant": None } def configure_options(target, options): - opt = '' + opt = ' --warnings-are-errors' if not (target.platform == 'linux' and target.distro == 'ubuntu' and target.version == '18.04'): # Currently we only build tests on Ubuntu 18.04 diff --git a/src/lib/warnings.h b/src/lib/warnings.h new file mode 100644 index 000000000..e225c0339 --- /dev/null +++ b/src/lib/warnings.h @@ -0,0 +1,26 @@ +/* + Copyright (C) 2020 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#define DCPOMATIC_DISABLE_WARNINGS \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") + +#define DCPOMATIC_ENABLE_WARNINGS \ + _Pragma("GCC diagnostic pop") @@ -75,6 +75,7 @@ def options(opt): opt.add_option('--variant', help='build variant (swaroop-studio, swaroop-theater)', choices=['swaroop-studio', 'swaroop-theater']) opt.add_option('--use-lld', action='store_true', default=False, help='use lld linker') opt.add_option('--enable-disk', action='store_true', default=False, help='build dcpomatic2_disk tool; requires Boost process, lwext4 and nanomsg libraries') + opt.add_option('--warnings-are-errors', action='store_true', default=False, help='build with -Werror') def configure(conf): conf.load('compiler_cxx') @@ -106,16 +107,17 @@ def configure(conf): '-Wall', '-Wextra', '-Wwrite-strings', - '-Wsign-conversion', - # Remove auto_ptr warnings from libxml++-2.6 - '-Wno-deprecated-declarations', + # I tried and failed to ignore these with _Pragma + '-Wno-cast-function-type', '-Wno-ignored-qualifiers', - '-Wno-parentheses', '-D_FILE_OFFSET_BITS=64']) if conf.options.force_cpp11: conf.env.append_value('CXXFLAGS', ['-std=c++11', '-DBOOST_NO_CXX11_SCOPED_ENUMS']) + if conf.options.warnings_are_errors: + conf.env.append_value('CXXFLAGS', '-Werror') + if conf.env['CXX_NAME'] == 'gcc': gcc = conf.env['CC_VERSION'] if int(gcc[0]) >= 4 and int(gcc[1]) > 1: @@ -325,7 +327,7 @@ def configure(conf): conf.check_cc(fragment=""" #include <libssh/libssh.h>\n int main () {\n - ssh_session s = ssh_new ();\n + ssh_new ();\n return 0;\n } """, @@ -550,7 +552,7 @@ def configure(conf): deps.append('boost_filesystem%s' % boost_lib_suffix) conf.check_cxx(fragment=""" #include <boost/process.hpp>\n - int main() { boost::process::child* c = new boost::process::child("foo"); }\n + int main() { new boost::process::child("foo"); }\n """, msg='Checking for boost process library', lib=deps, |
