From: Carl Hetherington Date: Sun, 26 Jul 2020 00:29:24 +0000 (+0200) Subject: Rationalise compiler warning setup. X-Git-Tag: v2.15.91~8^2~13 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=7399b5483c5b69559bbfcee27bfd415a967add85 Rationalise compiler warning setup. --- diff --git a/cscript b/cscript index 052aa6c7c..7f262bf81 100644 --- a/cscript +++ b/cscript @@ -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 + + 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 . + +*/ + +#define DCPOMATIC_DISABLE_WARNINGS \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") + +#define DCPOMATIC_ENABLE_WARNINGS \ + _Pragma("GCC diagnostic pop") diff --git a/wscript b/wscript index 72db83e2c..4fba8fb57 100644 --- a/wscript +++ b/wscript @@ -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 \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 \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,