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
--- /dev/null
+/*
+ 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")
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')
'-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:
conf.check_cc(fragment="""
#include <libssh/libssh.h>\n
int main () {\n
- ssh_session s = ssh_new ();\n
+ ssh_new ();\n
return 0;\n
}
""",
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,