Fixes for the bad distros. 1.0-cpp11
authorCarl Hetherington <cth@carlh.net>
Sat, 9 Dec 2017 22:29:38 +0000 (22:29 +0000)
committerCarl Hetherington <cth@carlh.net>
Sat, 9 Dec 2017 22:29:38 +0000 (22:29 +0000)
cscript
wscript

diff --git a/cscript b/cscript
index 973bc06a484b6ebf61f631c16b2e270552f3ab19..01e1ef16a7a7b26993050fd249fa604780eeac31 100644 (file)
--- a/cscript
+++ b/cscript
@@ -47,6 +47,15 @@ def build(target, options):
         cmd += ' --static'
         if target.distro == 'centos':
             cmd += ' --disable-tests'
+            if target.version == '7':
+                # Centos 7 ships with glibmm 2.50.0 which requires C++11
+                # but its compiler (gcc 4.8.5) defaults to C++97.  Go figure.
+                # I worry that this will cause ABI problems but I don't have
+                # a better solution.
+                cmd += ' --force-cpp11'
+        if target.distro == 'mageia' and target.version == '6':
+            # Mageia 6 pulls the same stunt except it's libxml++ that requires C++11
+            cmd += ' --force-cpp11'
     elif target.platform == 'windows':
         cmd += ' --target-windows --disable-gcov --disable-tests'
         if target.version == 'xp':
diff --git a/wscript b/wscript
index 3e041517d674e87a7dca88eefe22d62f654ad71a..47085046b2b3ac8b8012aa1897ede5445d27d362 100644 (file)
--- a/wscript
+++ b/wscript
@@ -51,10 +51,13 @@ def options(opt):
     opt.add_option('--disable-examples', action='store_true', default=False, help='disable building of examples')
     opt.add_option('--enable-openmp', action='store_true', default=False, help='enable use of OpenMP')
     opt.add_option('--jpeg', default='oj2', help='specify JPEG library to build with: oj1 or oj2 for OpenJPEG 1.5.x or OpenJPEG 2.1.x respectively')
+    opt.add_option('--force-cpp11', action='store_true', default=False, help='force use of C++11')
 
 def configure(conf):
     conf.load('compiler_cxx')
     conf.env.append_value('CXXFLAGS', ['-Wall', '-Wextra', '-D_FILE_OFFSET_BITS=64', '-D__STDC_FORMAT_MACROS'])
+    if conf.options.force_cpp11:
+        conf.env.append_value('CXXFLAGS', ['-std=c++11', '-DBOOST_NO_CXX11_SCOPED_ENUMS'])
     gcc = conf.env['CC_VERSION']
     if int(gcc[0]) >= 4 and int(gcc[1]) > 1:
         conf.env.append_value('CXXFLAGS', ['-Wno-maybe-uninitialized'])