Build with C++17 on Debian Unstable.
authorCarl Hetherington <cth@carlh.net>
Fri, 14 Mar 2025 14:10:35 +0000 (15:10 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 16 Mar 2025 19:26:10 +0000 (20:26 +0100)
It now ships a libicu whose header needs C++17 (it uses an auto template
parameter).

cscript
wscript

diff --git a/cscript b/cscript
index 99e9da527e387f8b8957d9970e35afe8a9b90ad1..afffe48a3fc3b2e16973d735ff96aeda6f80c9e6 100644 (file)
--- a/cscript
+++ b/cscript
@@ -430,8 +430,13 @@ def make_spec(filename, version, target, options, requires=None):
     print('%posttrans', file=f)
     print('/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :', file=f)
 
+
+def build_with_cpp17(target):
+    return target.platform.startswith('osx') or (target.platform == 'linux' and target.distro == 'debian' and target.version == 'unstable')
+
+
 def dependencies(target, options):
-    deps = [('libdcp', 'v1.10.14', {'c++17': target.platform.startswith('osx')})]
+    deps = [('libdcp', 'v1.10.15', {'c++17': build_with_cpp17(target)})]
     deps.append(('libsub', 'v1.6.53'))
     deps.append(('leqm-nrt', '30dcaea1373ac62fba050e02ce5b0c1085797a23'))
     deps.append(('rtaudio', 'f619b76'))
@@ -494,14 +499,15 @@ def configure_options(target, options, for_package=False):
     if can_build_disk(target):
         opt += ' --enable-disk'
 
-    if target.platform == 'osx':
-        opt += ' --c++17'
-        if target.arch == 'arm64':
-            opt += ' --wx-config=%s/wx-config' % target.bin
+    if target.platform == 'osx' and target.arch == 'arm64':
+        opt += ' --wx-config=%s/wx-config' % target.bin
 
     if target.platform == 'linux' and target.distro == 'ubuntu' and target.version == '24.04':
         opt += ' --enable-grok'
 
+    if build_with_cpp17(target):
+        opt += ' --c++17'
+
     return opt
 
 def build(target, options, for_package):
diff --git a/wscript b/wscript
index 448f390fc9ab93c10fee98c3db499cf300dcd685..124bd30aca8ef389e5355497a5fd48bb401f4c4a 100644 (file)
--- a/wscript
+++ b/wscript
@@ -92,11 +92,13 @@ def configure(conf):
         conf.env.XMLPP_API = '4.0'
         conf.env.PANGOMM_API = '2.48'
         conf.env.CAIROMM_API = '1.16'
+        conf.env.GLIBMM_API = '2.68'
     else:
         cpp_std = '11'
         conf.env.XMLPP_API = '2.6'
         conf.env.PANGOMM_API = '1.4'
         conf.env.CAIROMM_API = '1.0'
+        conf.env.GLIBMM_API = '2.4'
 
     # Save conf.options that we need elsewhere in conf.env
     conf.env.DISABLE_GUI = conf.options.disable_gui
@@ -392,7 +394,7 @@ def configure(conf):
         check_via_pkg_config(conf, 'libdcp-1.0', 'DCP', mandatory=True, static=True, minimum_version=libdcp_version)
         conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
         conf.env.STLIB_DCP = ['dcp-1.0', 'asdcp-dcpomatic', 'kumu-dcpomatic', 'openjp2']
-        conf.env.LIB_DCP = ['glibmm-2.4', 'ssl', 'crypto', 'bz2', 'xslt', 'xerces-c', 'fmt']
+        conf.env.LIB_DCP = ['glibmm-' + conf.env.GLIBMM_API, 'ssl', 'crypto', 'bz2', 'xslt', 'xerces-c', 'fmt']
     else:
         check_via_pkg_config(conf, 'libdcp-1.0', 'DCP', mandatory=True, static=False, minimum_version=libdcp_version)
         conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]