Shell of KDM GUI tool.
[dcpomatic.git] / wscript
diff --git a/wscript b/wscript
index 3bba4e74f62339b155bf05f21eef8afd12c15dfe..7c1aae73b6d829c7e29172d4b9825cce94a8e66c 100644 (file)
--- a/wscript
+++ b/wscript
@@ -26,7 +26,7 @@ import distutils.spawn
 from waflib import Logs
 
 APPNAME = 'dcpomatic'
-VERSION = '2.1.12devel'
+VERSION = '2.4.5devel'
 
 def options(opt):
     opt.load('compiler_cxx')
@@ -75,7 +75,6 @@ def configure(conf):
                                        '-D__STDC_LIMIT_MACROS',
                                        '-D__STDC_FORMAT_MACROS',
                                        '-msse',
-                                       '-ffast-math',
                                        '-fno-strict-aliasing',
                                        '-Wall',
                                        '-Wno-attributes',
@@ -160,10 +159,29 @@ def configure(conf):
     else:
         conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
 
+    # libicu
+    if conf.check_cfg(package='icu-i18n', args='--cflags --libs', uselib_store='ICU', mandatory=False) is None:
+        if conf.check_cfg(package='icu', args='--cflags --libs', uselib_store='ICU', mandatory=False) is None:
+            conf.check_cxx(fragment="""
+                            #include <unicode/ucsdet.h>
+                            int main(void) {
+                                UErrorCode status = U_ZERO_ERROR;
+                                UCharsetDetector* detector = ucsdet_open (&status);
+                                return 0; }\n
+                            """,
+                       mandatory=True,
+                       msg='Checking for libicu',
+                       okmsg='yes',
+                       libpath=['/usr/local/lib', '/usr/lib', '/usr/lib/x86_64-linux-gnu'],
+                       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)
+
     # glib
     conf.check_cfg(package='glib-2.0', args='--cflags --libs', uselib_store='GLIB', mandatory=True)
 
@@ -184,6 +202,9 @@ def configure(conf):
     # libzip
     conf.check_cfg(package='libzip', args='--cflags --libs', uselib_store='ZIP', mandatory=True)
 
+    # fontconfig
+    conf.check_cfg(package='fontconfig', args='--cflags --libs', uselib_store='FONTCONFIG', mandatory=True)
+
     # pangomm
     conf.check_cfg(package='pangomm-1.4', args='--cflags --libs', uselib_store='PANGOMM', mandatory=True)
 
@@ -192,10 +213,10 @@ def configure(conf):
 
     # libcxml
     if conf.options.static_cxml:
-        conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags', uselib_store='CXML', mandatory=True)
+        conf.check_cfg(package='libcxml', atleast_version='0.12.0', args='--cflags', uselib_store='CXML', mandatory=True)
         conf.env.STLIB_CXML = ['cxml']
     else:
-        conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags --libs', uselib_store='CXML', mandatory=True)
+        conf.check_cfg(package='libcxml', atleast_version='0.12.0', args='--cflags --libs', uselib_store='CXML', mandatory=True)
 
     # libssh
     if conf.options.static_ssh:
@@ -217,26 +238,27 @@ def configure(conf):
 
     # libdcp
     if conf.options.static_dcp:
-        conf.check_cfg(package='libdcp-1.0', atleast_version='1.1.0', args='--cflags', uselib_store='DCP', mandatory=True)
+        conf.check_cfg(package='libdcp-1.0', atleast_version='1.2.4', 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-libdcp-1.0', 'kumu-libdcp-1.0']
         conf.env.LIB_DCP = ['glibmm-2.4', 'ssl', 'crypto', 'bz2', 'xslt']
     else:
-        conf.check_cfg(package='libdcp-1.0', atleast_version='1.1.0', args='--cflags --libs', uselib_store='DCP', mandatory=True)
+        conf.check_cfg(package='libdcp-1.0', atleast_version='1.2.4', 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.0', args='--cflags', uselib_store='DCP', mandatory=True)
+        conf.check_cfg(package='libsub-1.0', atleast_version='1.1.5', 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.0', args='--cflags --libs', uselib_store='DCP', mandatory=True)
+        conf.check_cfg(package='libsub-1.0', atleast_version='1.1.5', args='--cflags --libs', uselib_store='SUB', mandatory=True)
         conf.env.DEFINES_SUB = [f.replace('\\', '') for f in conf.env.DEFINES_SUB]
 
     # libxml++
     if conf.options.static_xmlpp:
         conf.env.STLIB_XMLPP = ['xml++-2.6']
+        conf.env.LIB_XMLPP = ['xml2']
     else:
         conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True)
 
@@ -257,7 +279,7 @@ def configure(conf):
 
     # FFmpeg
     if conf.options.static_ffmpeg:
-        names = ['avformat', 'avfilter', 'avcodec', 'avutil', 'swscale', 'swresample', 'postproc']
+        names = ['avformat', 'avfilter', 'avcodec', 'avutil', 'swscale', 'postproc']
         for name in names:
             static = subprocess.Popen(shlex.split('pkg-config --static --libs lib%s' % name), stdout=subprocess.PIPE).communicate()[0]
             libs = []
@@ -277,7 +299,7 @@ def configure(conf):
 
             conf.env['LIB_%s' % name.upper()] = libs
             conf.env['STLIB_%s' % name.upper()] = stlibs
-            conf.env['INCLUDE_%s' % name.upper()] = include
+            conf.env['INCLUDES_%s' % name.upper()] = include
             conf.env['LIBPATH_%s' % name.upper()] = libpath
     else:
         conf.check_cfg(package='libavformat', args='--cflags --libs', uselib_store='AVFORMAT', mandatory=True)
@@ -285,7 +307,6 @@ def configure(conf):
         conf.check_cfg(package='libavcodec', args='--cflags --libs', uselib_store='AVCODEC', mandatory=True)
         conf.check_cfg(package='libavutil', args='--cflags --libs', uselib_store='AVUTIL', mandatory=True)
         conf.check_cfg(package='libswscale', args='--cflags --libs', uselib_store='SWSCALE', mandatory=True)
-        conf.check_cfg(package='libswresample', args='--cflags --libs', uselib_store='SWRESAMPLE', mandatory=True)
         conf.check_cfg(package='libpostproc', args='--cflags --libs', uselib_store='POSTPROC', mandatory=True)
 
     # Boost
@@ -295,6 +316,7 @@ def configure(conf):
         conf.env.STLIB_BOOST_DATETIME = ['boost_date_time%s' % boost_lib_suffix, 'boost_system%s' % boost_lib_suffix]
         conf.env.STLIB_BOOST_SIGNALS2 = ['boost_signals2']
         conf.env.STLIB_BOOST_SYSTEM = ['boost_system']
+        conf.env.STLIB_BOOST_REGEX = ['boost_regex']
     else:
         conf.check_cxx(fragment="""
                             #include <boost/version.hpp>\n
@@ -342,6 +364,14 @@ def configure(conf):
                        msg='Checking for boost signals2 library',
                        uselib_store='BOOST_SIGNALS2')
 
+        conf.check_cxx(fragment="""
+                           #include <boost/regex.hpp>\n
+                           int main() { boost::regex re ("foo"); }\n
+                           """,
+                       msg='Checking for boost regex library',
+                       lib=['boost_regex%s' % boost_lib_suffix],
+                       uselib_store='BOOST_REGEX')
+
     # Other stuff
 
     conf.find_program('msgfmt', var='MSGFMT')
@@ -401,10 +431,11 @@ def build(bld):
         bld.recurse('platform/osx')
 
     for r in ['22x22', '32x32', '48x48', '64x64', '128x128']:
-        bld.install_files('${PREFIX}/share/icons/hicolor/%s/apps' % r, 'icons/%s/dcpomatic2.png' % r)
+        bld.install_files('${PREFIX}/share/icons/hicolor/%s/apps' % r, 'graphics/%s/dcpomatic2.png' % r)
 
     if not bld.env.TARGET_WINDOWS:
-        bld.install_files('${PREFIX}/share/dcpomatic2', 'icons/taskbar_icon.png')
+        bld.install_files('${PREFIX}/share/dcpomatic2', 'graphics/taskbar_icon.png')
+        bld.install_files('${PREFIX}/share/dcpomatic2', 'graphics/splash.png')
         bld.install_files('${PREFIX}/share/dcpomatic2', 'LiberationSans-Regular.ttf')
 
     bld.add_post_fun(post)