Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
[dcpomatic.git] / wscript
diff --git a/wscript b/wscript
index 4920c667d233cbe9c3b9d25bfc975420c37af82f..dd2e18e0eb8ddc243791a73dc85689e422d1fc87 100644 (file)
--- a/wscript
+++ b/wscript
@@ -26,7 +26,7 @@ import distutils.spawn
 from waflib import Logs, Context
 
 APPNAME = 'dcpomatic'
-VERSION = '2.7.9'
+VERSION = '2.8.4devel'
 
 def options(opt):
     opt.load('compiler_cxx')
@@ -78,9 +78,14 @@ def configure(conf):
                                        '-Wall',
                                        '-Wno-attributes',
                                        '-Wextra',
-                                       '-Wno-unused-result',
+                                       # Remove auto_ptr warnings from libxml++-2.6
+                                       '-Wno-deprecated-declarations',
                                        '-D_FILE_OFFSET_BITS=64'])
 
+    gcc = conf.env['CC_VERSION']
+    if int(gcc[0]) >= 4 and int(gcc[1]) > 1:
+        conf.env.append_value('CXXFLAGS', ['-Wno-unused-result'])
+
     if conf.options.enable_debug:
         conf.env.append_value('CXXFLAGS', ['-g', '-DDCPOMATIC_DEBUG', '-fno-omit-frame-pointer'])
     else:
@@ -98,7 +103,6 @@ def configure(conf):
         conf.env.append_value('CXXFLAGS', '-DUNICODE')
         conf.env.append_value('CXXFLAGS', '-DBOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN')
         conf.env.append_value('CXXFLAGS', '-mfpmath=sse')
-        conf.env.append_value('CXXFLAGS', '-Wno-deprecated-declarations')
         wxrc = os.popen('wx-config --rescomp').read().split()[1:]
         conf.env.append_value('WINRCFLAGS', wxrc)
         if conf.options.enable_debug:
@@ -156,7 +160,7 @@ def configure(conf):
         conf.env.STLIB_CURL = ['curl']
         conf.env.LIB_CURL = ['ssh2', 'idn']
     else:
-        conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
+        conf.check_cfg(package='libcurl', args='--cflags --libs', atleast_version='7.19.1', uselib_store='CURL', mandatory=True)
 
     # libicu
     if conf.check_cfg(package='icu-i18n', args='--cflags --libs', uselib_store='ICU', mandatory=False) is None:
@@ -175,9 +179,6 @@ def configure(conf):
                        lib=['icuio', 'icui18n', 'icudata', 'icuuc'],
                        uselib_store='ICU')
 
-    # libsndfile
-    conf.check_cfg(package='sndfile', args='--cflags --libs', uselib_store='SNDFILE', mandatory=True)
-
     # libsamplerate
     conf.check_cfg(package='samplerate', args='--cflags --libs', uselib_store='SAMPLERATE', mandatory=True)
 
@@ -198,6 +199,25 @@ def configure(conf):
         if graphics is not None:
             conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_GRAPHICS_MAGICK')
 
+    # See if we are using the MagickCore or MagickLib namespaces
+    conf.check_cxx(fragment="""
+                            #include <Magick++.h>
+                            using namespace MagickCore;
+                            """,
+                   mandatory=False,
+                   msg='Checking for MagickCore namespace',
+                   okmsg='yes',
+                   define_name='DCPOMATIC_HAVE_MAGICKCORE_NAMESPACE')
+
+    conf.check_cxx(fragment="""
+                            #include <Magick++.h>
+                            using namespace MagickLib
+                            """,
+                   mandatory=False,
+                   msg='Checking for MagickLib namespace',
+                   okmsg='yes',
+                   define_name='DCPOMATIC_HAVE_MAGICKLIB_NAMESPACE')
+
     # libzip
     conf.check_cfg(package='libzip', args='--cflags --libs', uselib_store='ZIP', mandatory=True)
 
@@ -237,21 +257,21 @@ def configure(conf):
 
     # libdcp
     if conf.options.static_dcp:
-        conf.check_cfg(package='libdcp-1.0', atleast_version='1.3.1', args='--cflags', uselib_store='DCP', mandatory=True)
+        conf.check_cfg(package='libdcp-1.0', atleast_version='1.3.3', args='--cflags', uselib_store='DCP', mandatory=True)
         conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
         conf.env.STLIB_DCP = ['dcp-1.0', 'asdcp-cth', 'kumu-cth', 'openjp2']
         conf.env.LIB_DCP = ['glibmm-2.4', 'ssl', 'crypto', 'bz2', 'xslt']
     else:
-        conf.check_cfg(package='libdcp-1.0', atleast_version='1.3.1', args='--cflags --libs', uselib_store='DCP', mandatory=True)
+        conf.check_cfg(package='libdcp-1.0', atleast_version='1.3.3', args='--cflags --libs', uselib_store='DCP', mandatory=True)
         conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
 
     # libsub
     if conf.options.static_sub:
-        conf.check_cfg(package='libsub-1.0', atleast_version='1.1.11', args='--cflags', uselib_store='SUB', mandatory=True)
+        conf.check_cfg(package='libsub-1.0', atleast_version='1.1.12', args='--cflags', uselib_store='SUB', mandatory=True)
         conf.env.DEFINES_SUB = [f.replace('\\', '') for f in conf.env.DEFINES_SUB]
         conf.env.STLIB_SUB = ['sub-1.0']
     else:
-        conf.check_cfg(package='libsub-1.0', atleast_version='1.1.11', args='--cflags --libs', uselib_store='SUB', mandatory=True)
+        conf.check_cfg(package='libsub-1.0', atleast_version='1.1.12', args='--cflags --libs', uselib_store='SUB', mandatory=True)
         conf.env.DEFINES_SUB = [f.replace('\\', '') for f in conf.env.DEFINES_SUB]
 
     # libxml++
@@ -306,14 +326,50 @@ def configure(conf):
                             }\n
                             int main () { av_ebur128_get_true_peaks (0); }\n
                             """,
-                   msg='Checking for patched FFmpeg',
+                   msg='Checking for EBUR128-patched FFmpeg',
                    libpath=conf.env['LIBPATH_AVFORMAT'],
-                   lib=['avfilter', 'avutil', 'swresample'],
+                   lib='avfilter avutil swresample',
                    includes=conf.env['INCLUDES_AVFORMAT'],
-                   uselib_store='PATCHED_FFMPEG',
-                   define_name='DCPOMATIC_HAVE_PATCHED_FFMPEG',
+                   define_name='DCPOMATIC_HAVE_EBUR128_PATCHED_FFMPEG',
                    mandatory=False)
 
+    # Check to see if we have our AVSubtitleRect has a pict member
+    # Older versions (e.g. that shipped with Ubuntu 16.04) do
+    conf.check_cxx(fragment="""
+                            extern "C" {\n
+                            #include <libavcodec/avcodec.h>\n
+                            }\n
+                            int main () { AVSubtitleRect r; r.pict; }\n
+                            """,
+                   msg='Checking for AVSubtitleRect::pict',
+                   cxxflags='-Wno-unused-result -Wno-unused-value -Wdeprecated-declarations -Werror',
+                   libpath=conf.env['LIBPATH_AVCODEC'],
+                   lib='avcodec',
+                   includes=conf.env['INCLUDES_AVCODEC'],
+                   define_name='DCPOMATIC_HAVE_AVSUBTITLERECT_PICT',
+                   mandatory=False)
+
+    # Check to see if we have our AVComponentDescriptor has a depth_minus1 member
+    # Older versions (e.g. that shipped with Ubuntu 16.04) do
+    conf.check_cxx(fragment="""
+                            extern "C" {\n
+                            #include <libavutil/pixdesc.h>\n
+                            }\n
+                            int main () { AVComponentDescriptor d; d.depth_minus1; }\n
+                            """,
+                   msg='Checking for AVComponentDescriptor::depth_minus1',
+                   cxxflags='-Wno-unused-result -Wno-unused-value -Wdeprecated-declarations -Werror',
+                   libpath=conf.env['LIBPATH_AVUTIL'],
+                   lib='avutil',
+                   includes=conf.env['INCLUDES_AVUTIL'],
+                   define_name='DCPOMATIC_HAVE_AVCOMPONENTDESCRIPTOR_DEPTH_MINUS1',
+                   mandatory=False)
+
+    # Hack: the previous two check_cxx calls end up copying their (necessary) cxxflags
+    # to these variables.  We don't want to use these for the actual build, so clearn them out.
+    conf.env['CXXFLAGS_AVCODEC'] = []
+    conf.env['CXXFLAGS_AVUTIL'] = []
+
     # Boost
     if conf.options.static_boost:
         conf.env.STLIB_BOOST_THREAD = ['boost_thread']