Merge master.
authorCarl Hetherington <cth@carlh.net>
Wed, 16 Jul 2014 10:14:54 +0000 (11:14 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 16 Jul 2014 10:14:54 +0000 (11:14 +0100)
1  2 
ChangeLog
cscript
platform/windows/wscript
src/lib/wscript
src/wx/about_dialog.cc
src/wx/kdm_dialog.cc
src/wx/wscript
wscript

diff --combined ChangeLog
index 1f84ff13a1364cdb3e379edde921d8166f9ed2c9,f96ba701ed400b91ee2f99cff48c5bddcd0ab518..68383d39dff7be7c3031e88633b3da2155a5b74e
+++ b/ChangeLog
@@@ -1,17 -1,21 +1,36 @@@
-       
 +2014-07-15  Carl Hetherington  <cth@carlh.net>
 +
 +      * A variety of changes were made on the 2.0 branch
 +      but not documented in the ChangeLog.  Most sigificantly:
++
 +      - DCP import
 +      - Creation of DCPs with proper XML subtitles
 +      - Import of .srt and .xml subtitles
 +      - Audio processing framework (with some basic processors).
 +
 +2014-03-07  Carl Hetherington  <cth@carlh.net>
 +
 +      * Add subtitle view.
 +
+ 2014-07-16  Carl Hetherington  <cth@carlh.net>
+       * Updates to de_DE from Carsten Kurz.
+       * Limit allowed KDM types based on Interop/SMPTE setting
+       of DCP (#385).
+       * Updates to fr_FR from GrĂ©goire Ausina.
+ 2014-07-14  Carl Hetherington  <cth@carlh.net>
+       * Bump libdcp to get a new version which writes
+       <Hash> values to CPLs.
+ 2014-07-10  Carl Hetherington  <cth@carlh.net>
+       * Version 1.72.2 released.
++>>>>>>> origin/master
  2014-07-10  Carl Hetherington  <cth@carlh.net>
  
        * Try to fix corruption of KDM email setting in
diff --combined cscript
index 0c27e59fedae3b70601061eca359d0f7d499acb0,5ea5a4cfd22e6cccccedb6ef923d7841d6754473..2ac5fea9128a267aa7b6c2d22bc8e58eaec1cf25
+++ b/cscript
@@@ -157,7 -157,7 +157,7 @@@ def make_control(debian_version, bits, 
  
  def dependencies(target):
      return (('ffmpeg-cdist', '67dc770'),
 -            ('libdcp', '009e07f'))
 +            ('libdcp', '1.0'))
  
  def build(target, options):
      cmd = './waf configure --prefix=%s' % target.work_dir_cscript()
              if target.version == 'unstable':
                  cmd += ' --debian-unstable'
          elif target.distro == 'centos':
-             cmd += ' --target-centos'
+             if target.version == '6.5':
+                 cmd += ' --target-centos-6 --disable-tests'
+             elif target.version == '7':
+                 cmd += ' --target-centos-7'
  
      target.command(cmd)
      target.command('./waf')
diff --combined platform/windows/wscript
index 65989300b5d22d3e07f11e7a4575a5e7746adaff,9ae88ba87a15bd65856e22fc8fd623dfc6b0cb1c..19c204f6264c6506095d62a18f93c0110f8e8276
@@@ -103,15 -103,15 +103,15 @@@ File "%static_deps%/bin/libcurl-4.dll
  File "%static_deps%/bin/ssleay32.dll"
  File "%static_deps%/bin/libzip-2.dll"
  
 -File "%cdist_deps%/bin/asdcp-libdcp.dll"
 -File "%cdist_deps%/bin/kumu-libdcp.dll"
 +File "%cdist_deps%/bin/asdcp-libdcp-1.0.dll"
 +File "%cdist_deps%/bin/kumu-libdcp-1.0.dll"
  File "%cdist_deps%/bin/avcodec-55.dll"
  File "%cdist_deps%/bin/avfilter-4.dll"
  File "%cdist_deps%/bin/avformat-55.dll"
  File "%cdist_deps%/bin/avutil-52.dll"
  File "%cdist_deps%/bin/avdevice-55.dll"
  File "%cdist_deps%/bin/postproc-52.dll"
 -File "%cdist_deps%/bin/dcp.dll"
 +File "%cdist_deps%/bin/dcp-1.0.dll"
  File "%cdist_deps%/bin/libopenjpeg-1.dll"
  File "%cdist_deps%/bin/swresample-0.dll"
  File "%cdist_deps%/bin/swscale-2.dll"
@@@ -132,26 -132,32 +132,32 @@@ SetOutPath "$INSTDIR\\locale\\fr\\LC_ME
  File "%binaries%/src/lib/mo/fr_FR/libdcpomatic.mo"
  File "%binaries%/src/wx/mo/fr_FR/libdcpomatic-wx.mo"
  File "%binaries%/src/tools/mo/fr_FR/dcpomatic.mo"
+ File "%static_deps%/share/locale/fr/LC_MESSAGES/wxstd.mo"
  SetOutPath "$INSTDIR\\locale\\it\\LC_MESSAGES"
  File "%binaries%/src/lib/mo/it_IT/libdcpomatic.mo"
  File "%binaries%/src/wx/mo/it_IT/libdcpomatic-wx.mo"
  File "%binaries%/src/tools/mo/it_IT/dcpomatic.mo"
+ File "%static_deps%/share/locale/it/LC_MESSAGES/wxstd.mo"
  SetOutPath "$INSTDIR\\locale\\es\\LC_MESSAGES"
  File "%binaries%/src/lib/mo/es_ES/libdcpomatic.mo"
  File "%binaries%/src/wx/mo/es_ES/libdcpomatic-wx.mo"
  File "%binaries%/src/tools/mo/es_ES/dcpomatic.mo"
+ File "%static_deps%/share/locale/es/LC_MESSAGES/wxstd.mo"
  SetOutPath "$INSTDIR\\locale\\sv\\LC_MESSAGES"
  File "%binaries%/src/lib/mo/sv_SE/libdcpomatic.mo"
  File "%binaries%/src/wx/mo/sv_SE/libdcpomatic-wx.mo"
  File "%binaries%/src/tools/mo/sv_SE/dcpomatic.mo"
+ File "%static_deps%/share/locale/sv/LC_MESSAGES/wxstd.mo"
  SetOutPath "$INSTDIR\\locale\\de\\LC_MESSAGES"
  File "%binaries%/src/lib/mo/de_DE/libdcpomatic.mo"
  File "%binaries%/src/wx/mo/de_DE/libdcpomatic-wx.mo"
  File "%binaries%/src/tools/mo/de_DE/dcpomatic.mo"
+ File "%static_deps%/share/locale/de/LC_MESSAGES/wxstd.mo"
  SetOutPath "$INSTDIR\\locale\\nl\\LC_MESSAGES"
  File "%binaries%/src/lib/mo/nl_NL/libdcpomatic.mo"
  File "%binaries%/src/wx/mo/nl_NL/libdcpomatic-wx.mo"
  File "%binaries%/src/tools/mo/nl_NL/dcpomatic.mo"
+ File "%static_deps%/share/locale/nl/LC_MESSAGES/wxstd.mo"
  
  WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic" "DisplayName" "DCP-o-matic (remove only)"
  WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic" "UninstallString" "$INSTDIR\\Uninstall.exe"
diff --combined src/lib/wscript
index 66a25be0af71bd187641087d9215205555b97e4b,6d563f255ccb5c100496ec15d7152d43d54e5a00..7d74d462ce90719b7c839525aeed9c19c1c88208
@@@ -7,39 -7,26 +7,39 @@@ sources = ""
            audio_buffers.cc
            audio_content.cc
            audio_decoder.cc
 +          audio_filter.cc
            audio_mapping.cc
 +          audio_processor.cc
            cinema.cc
 +          cinema_sound_processor.cc
            colour_conversion.cc
            config.cc
            content.cc
            content_factory.cc
 +          content_subtitle.cc
            cross.cc
 +          dcp_content.cc
            dcp_content_type.cc
 -          dcp_video_frame.cc
 -          decoder.cc
 +          dcp_decoder.cc
 +          dcp_examiner.cc
 +          dcp_subtitle_content.cc
 +          dcp_subtitle_decoder.cc
 +          dcp_video.cc
 +          dcpomatic_time.cc
            dolby_cp750.cc
            encoder.cc
 +          encoded_data.cc
            examine_content_job.cc
            exceptions.cc
            file_group.cc
            filter_graph.cc
            ffmpeg.cc
 +          ffmpeg_audio_stream.cc
            ffmpeg_content.cc
            ffmpeg_decoder.cc
            ffmpeg_examiner.cc
 +          ffmpeg_stream.cc
 +          ffmpeg_subtitle_stream.cc
            film.cc
            filter.cc
            frame_rate_change.cc
            image_examiner.cc
            image_proxy.cc
            isdcf_metadata.cc
 +          j2k_image_proxy.cc
            job.cc
            job_manager.cc
            kdm.cc
            json_server.cc
            log.cc
 +          magick_image_proxy.cc
            md5_digester.cc
 -          piece.cc
 +          mid_side_decoder.cc
            player.cc
 -          player_video_frame.cc
 +          player_video.cc
            playlist.cc
            ratio.cc
 +          raw_image_proxy.cc
 +          render_subtitles.cc
            resampler.cc
            scp_dcp_job.cc
            scaler.cc
            send_kdm_email_job.cc
            server.cc
            server_finder.cc
 +          single_stream_audio_content.cc
            sndfile_content.cc
            sndfile_decoder.cc
 -          sound_processor.cc
 -          subtitle.cc
 +          subrip.cc
 +          subrip_content.cc
 +          subrip_decoder.cc
            subtitle_content.cc
            subtitle_decoder.cc
            timer.cc
@@@ -85,7 -66,6 +85,7 @@@
            types.cc
            ui_signaller.cc
            update.cc
 +          upmixer_a.cc
            util.cc
            video_content.cc
            video_decoder.cc
@@@ -103,8 -83,8 +103,8 @@@ def build(bld)
      obj.uselib = """
                   AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE SWRESAMPLE 
                   BOOST_FILESYSTEM BOOST_THREAD BOOST_DATETIME BOOST_SIGNALS2
 -                 SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XMLPP
 -                 CURL ZIP QUICKMAIL XMLSEC
 +                 SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XML++
-                  CURL ZIP QUICKMAIL PANGOMM CAIROMM
++                 CURL ZIP QUICKMAIL PANGOMM CAIROMM XMLSEC
                   """
  
      if bld.env.TARGET_OSX:
          obj.uselib += ' WINSOCK2 BFD DBGHELP IBERTY SHLWAPI MSWSOCK BOOST_LOCALE'
          obj.source += ' stack.cpp'
      if bld.env.BUILD_STATIC:
-         obj.uselib += ' XML++'
+         obj.uselib += ' XMLPP'
  
      obj.target = 'dcpomatic'
  
diff --combined src/wx/about_dialog.cc
index b8eecc90a59d889d4e375c3d896a4f1537097b57,c5f2fa3098e48c539c4439a1991562d5c6b3da15..9c7857c1e72c1dc6fddb8d6465446b651bc625fd
@@@ -1,5 -1,5 +1,5 @@@
  /*
 -    Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
 +    Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
  
      This program is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published by
  
  */
  
 +/** @file  src/wx/about_dialog.cc
 + *  @brief The "about DCP-o-matic" dialogue box.
 + */
 +
  #include <wx/notebook.h>
  #include <wx/hyperlink.h>
  #include "lib/version.h"
@@@ -106,6 -102,7 +106,7 @@@ AboutDialog::AboutDialog (wxWindow* par
        translated_by.Add (wxT ("Theo Kooijmans"));
        translated_by.Add (wxT ("Max Aeschlimann"));
        translated_by.Add (wxT ("Carsten Kurz"));
+       translated_by.Add (wxT ("GrĂ©goire Ausina"));
        add_section (_("Translated by"), translated_by);
  
        wxArrayString artwork_by;
        SetSizerAndFit (overall_sizer);
  }
  
 +/** Add a section of credits.
 + *  @param name Name of section.
 + *  @param credits List of names.
 + */
  void
  AboutDialog::add_section (wxString name, wxArrayString credits)
  {
diff --combined src/wx/kdm_dialog.cc
index 0fdb1fe5051eda24adf941bde7eeafbc287ddddf,a7af7978ca48b65aba8629651917d9cfcbb51892..6ef630eff39f5a29cb39a88ed7cb8952e8698d26
@@@ -161,9 -161,11 +161,11 @@@ KDMDialog::KDMDialog (wxWindow* parent
  
        add_label_to_sizer (table, this, _("KDM type"), true);
        _type = new wxChoice (this, wxID_ANY);
-       _type->Append ("Modified Transitional 1");
-       _type->Append ("DCI Any");
-       _type->Append ("DCI Specific");
+       _type->Append ("Modified Transitional 1", ((void *) libdcp::KDM::MODIFIED_TRANSITIONAL_1));
+       if (!film->interop ()) {
+               _type->Append ("DCI Any", ((void *) libdcp::KDM::DCI_ANY));
+               _type->Append ("DCI Specific", ((void *) libdcp::KDM::DCI_SPECIFIC));
+       }
        table->Add (_type, 1, wxEXPAND);
        _type->SetSelection (0);
  
@@@ -488,19 -490,10 +490,10 @@@ KDMDialog::write_to () cons
        return _write_to->GetValue ();
  }
  
 -libdcp::KDM::Formulation
 +dcp::Formulation
  KDMDialog::formulation () const
  {
-       switch (_type->GetSelection()) {
-       case 0:
-               return dcp::MODIFIED_TRANSITIONAL_1;
-       case 1:
-               return dcp::DCI_ANY;
-       case 2:
-               return dcp::DCI_SPECIFIC;
-       default:
-               assert (false);
-       }
 -      return (libdcp::KDM::Formulation) reinterpret_cast<long int> (_type->GetClientData (_type->GetSelection()));
++      return (dcp::KDM::Formulation) reinterpret_cast<long int> (_type->GetClientData (_type->GetSelection()));
  }
  
  void
diff --combined src/wx/wscript
index 26c8b93041975f8487b7e8095d12023e36430f4e,8bf2451c22cba584271a648c7037a7d2b909a0ca..719496ae702a9d190aaea309a5d76e912ca8443a
@@@ -15,14 -15,13 +15,14 @@@ sources = ""
            config_dialog.cc
            content_colour_conversion_dialog.cc
            content_menu.cc
 +          content_panel.cc
 +          content_sub_panel.cc
            isdcf_metadata_dialog.cc
            dir_picker_ctrl.cc
            dolby_certificate_dialog.cc
            doremi_certificate_dialog.cc
            download_certificate_dialog.cc
            film_editor.cc
 -          film_editor_panel.cc
            film_viewer.cc
            filter_dialog.cc
            filter_editor.cc
@@@ -39,7 -38,6 +39,7 @@@
            server_dialog.cc
            servers_list_dialog.cc
            subtitle_panel.cc
 +          subtitle_view.cc
            table_dialog.cc
            timecode.cc
            timeline.cc
@@@ -69,6 -67,9 +69,9 @@@ def configure(conf)
              conf.env.LIB_WXWIDGETS.append('Xxf86vm')
              conf.env.LIB_WXWIDGETS.append('Xext')
              conf.env.LIB_WXWIDGETS.append('X11')
+         if conf.env.TARGET_CENTOS_7:
+             conf.env.LIB_WXWIDGETS.append('Xxf86vm')
   
      conf.in_msg = 1
      wx_version = conf.check_cfg(package='', path=conf.options.wx_config, args='--version').strip()
diff --combined wscript
index df839a96befcd1087d2ad00c445ac71fb077d9b4,ef72a61e5e2d2677b9596ddcde16c980b40ad722..681654bb8d0acd4fd571866bee3d02fcdedba0e8
+++ b/wscript
@@@ -3,7 -3,7 +3,7 @@@ import o
  import sys
  
  APPNAME = 'dcpomatic'
 -VERSION = '1.72.2devel'
 +VERSION = '2.0.0devel'
  
  def options(opt):
      opt.load('compiler_cxx')
  
      opt.add_option('--enable-debug',      action='store_true', default=False, help='build with debugging information and without optimisation')
      opt.add_option('--disable-gui',       action='store_true', default=False, help='disable building of GUI tools')
+     opt.add_option('--disable-tests',     action='store_true', default=False, help='disable building of tests')
      opt.add_option('--target-windows',    action='store_true', default=False, help='set up to do a cross-compile to make a Windows package')
      opt.add_option('--target-debian',     action='store_true', default=False, help='set up to compile for a Debian/Ubuntu package')
      opt.add_option('--debian-unstable',   action='store_true', default=False, help='add extra libraries to static-build correctly on Debian unstable')
-     opt.add_option('--target-centos',     action='store_true', default=False, help='set up to compile for a Centos package')
+     opt.add_option('--target-centos-6',   action='store_true', default=False, help='set up to compile for a Centos 6.5 package')
+     opt.add_option('--target-centos-7',   action='store_true', default=False, help='set up to compile for a Centos 7 package')
      opt.add_option('--magickpp-config',   action='store',      default='Magick++-config', help='path to Magick++-config')
      opt.add_option('--wx-config',         action='store',      default='wx-config', help='path to wx-config')
      opt.add_option('--address-sanitizer', action='store_true', default=False, help='build with address sanitizer')
@@@ -56,9 -58,9 +58,13 @@@ def dynamic_openjpeg(conf)
      conf.check_cfg(package='libopenjpeg', args='--cflags --libs', max_version='1.5.2', mandatory=True)
  
  def static_dcp(conf, static_boost, static_xmlpp, static_xmlsec, static_ssh):
++<<<<<<< HEAD
 +    conf.check_cfg(package='libdcp-1.0', atleast_version='0.95', args='--cflags', uselib_store='DCP', mandatory=True)
++=======
+     conf.check_cfg(package='libdcp', atleast_version='0.96', args='--cflags', uselib_store='DCP', mandatory=True)
++>>>>>>> origin/master
      conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
 -    conf.env.STLIB_DCP = ['dcp', 'asdcp-libdcp', 'kumu-libdcp']
 +    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']
  
      if static_boost:
@@@ -82,7 -84,7 +88,7 @@@
          conf.env.LIB_DCP.append('ssh')
  
  def dynamic_dcp(conf):
 -    conf.check_cfg(package='libdcp', atleast_version='0.95.0', args='--cflags --libs', uselib_store='DCP', mandatory=True)
 +    conf.check_cfg(package='libdcp-1.0', atleast_version='0.92', args='--cflags --libs', uselib_store='DCP', mandatory=True)
      conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
  
  def dynamic_ssh(conf):
@@@ -163,14 -165,16 +169,16 @@@ def configure(conf)
      # conf.options -> conf.env
      conf.env.TARGET_WINDOWS = conf.options.target_windows
      conf.env.DISABLE_GUI = conf.options.disable_gui
+     conf.env.DISABLE_TESTS = conf.options.disable_tests
      conf.env.TARGET_DEBIAN = conf.options.target_debian
      conf.env.DEBIAN_UNSTABLE = conf.options.debian_unstable
-     conf.env.TARGET_CENTOS = conf.options.target_centos
+     conf.env.TARGET_CENTOS_6 = conf.options.target_centos_6
+     conf.env.TARGET_CENTOS_7 = conf.options.target_centos_7
      conf.env.VERSION = VERSION
      conf.env.TARGET_OSX = sys.platform == 'darwin'
      conf.env.TARGET_LINUX = not conf.env.TARGET_WINDOWS and not conf.env.TARGET_OSX
      # true if we should build dcpomatic/libdcpomatic/libdcpomatic-wx statically
-     conf.env.BUILD_STATIC = conf.options.target_debian or conf.options.target_centos
+     conf.env.BUILD_STATIC = conf.options.target_debian or conf.options.target_centos_6 or conf.options.target_centos_7
      if conf.options.install_prefix is None:
          conf.env.INSTALL_PREFIX = conf.env.PREFIX
      else:
      # POSIX
      if conf.env.TARGET_LINUX or conf.env.TARGET_OSX:
          conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_POSIX')
-         conf.env.append_value('CXXFLAGS', '-DPOSIX_LOCALE_PREFIX="%s/share/locale"' % conf.env['PREFIX'])
-         conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dcpomatic"' % conf.env['PREFIX'])
+         conf.env.append_value('CXXFLAGS', '-DPOSIX_LOCALE_PREFIX="%s/share/locale"' % conf.env['INSTALL_PREFIX'])
+         conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dcpomatic"' % conf.env['INSTALL_PREFIX'])
          boost_lib_suffix = ''
          boost_thread = 'boost_thread'
          conf.env.append_value('LINKFLAGS', '-pthread')
      if conf.env.TARGET_DEBIAN:
          conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags', uselib_store='CXML', mandatory=True)
          conf.env.STLIB_CXML = ['cxml']
-         conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True)
+         conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True)
          conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
          conf.env.STLIB_QUICKMAIL = ['quickmail']
          static_ffmpeg(conf)
          static_dcp(conf, False, False, False, False)
          dynamic_boost(conf, boost_lib_suffix, boost_thread)
  
-     if conf.env.TARGET_CENTOS:
+     if conf.env.TARGET_CENTOS_6:
+         # Centos 6.5's boost is too old, so we build a new version statically in the chroot
          conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags --libs-only-L', uselib_store='CXML', mandatory=True)
          conf.env.STLIB_CXML = ['cxml', 'boost_filesystem']
          conf.check_cfg(package='libcurl', args='--cflags --libs-only-L', uselib_store='CURL', mandatory=True)
          static_dcp(conf, True, True, True, True)
          static_boost(conf, boost_lib_suffix)
  
+     if conf.env.TARGET_CENTOS_7:
+         # Centos 7's boost is ok so we link it dynamically
+         conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags', uselib_store='CXML', mandatory=True)
+         conf.env.STLIB_CXML = ['cxml']
+         conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
+         conf.env.STLIB_QUICKMAIL = ['quickmail']
+         conf.env.LIB_SSH = ['gssapi_krb5']
+         conf.env.LIB_XMLPP = ['xml2']
+         conf.env.LIB_XMLSEC = ['ltdl']
+         static_ffmpeg(conf)
+         static_openjpeg(conf)
+         static_dcp(conf, False, True, True, True)
+         dynamic_boost(conf, boost_lib_suffix, boost_thread)
      if conf.env.TARGET_WINDOWS:
-         conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True)
+         conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True)
          conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
          conf.check_cxx(fragment="""
                                #include <boost/locale.hpp>\n
          dynamic_ssh(conf)
  
      # Not packaging; just a straight build
-     if not conf.env.TARGET_WINDOWS and not conf.env.TARGET_DEBIAN and not conf.env.TARGET_CENTOS:
+     if not conf.env.TARGET_WINDOWS and not conf.env.TARGET_DEBIAN and not conf.env.TARGET_CENTOS_6 and not conf.env.TARGET_CENTOS_7:
          conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags --libs', uselib_store='CXML', mandatory=True)
-         conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True)
+         conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True)
          conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
          dynamic_quickmail(conf)
          dynamic_boost(conf, boost_lib_suffix, boost_thread)
      conf.check_cfg(package='glib-2.0', args='--cflags --libs', uselib_store='GLIB', mandatory=True)
      conf.check_cfg(package= '', path=conf.options.magickpp_config, args='--cppflags --cxxflags --libs', uselib_store='MAGICK', mandatory=True)
      conf.check_cfg(package='libzip', args='--cflags --libs', uselib_store='ZIP', mandatory=True)
 +    conf.check_cfg(package='pangomm-1.4', args='--cflags --libs', uselib_store='PANGOMM', mandatory=True)
 +    conf.check_cfg(package='cairomm-1.0', args='--cflags --libs', uselib_store='CAIROMM', mandatory=True)
  
      conf.check_cc(fragment="""
                             #include <glib.h>
      conf.define('DATADIR', datadir)
  
      conf.recurse('src')
-     conf.recurse('test')
+     if not conf.env.DISABLE_TESTS:
+         conf.recurse('test')
  
  def build(bld):
      create_version_cc(VERSION, bld.env.CXXFLAGS)
  
      bld.recurse('src')
-     bld.recurse('test')
+     if not bld.env.DISABLE_TESTS:
+         bld.recurse('test')
      if bld.env.TARGET_WINDOWS:
          bld.recurse('platform/windows')
      if bld.env.TARGET_LINUX:
@@@ -409,4 -428,4 +434,4 @@@ def pot_merge(bld)
      bld.recurse('src')
  
  def tags(bld):
 -    os.system('etags src/lib/*.cc src/lib/*.h src/wx/*.cc src/wx/*.h src/tools/*.cc src/tools/*.h')
 +    os.system('etags src/lib/*.cc src/lib/*.h src/wx/*.cc src/wx/*.h src/tools/*.cc src/tools/*.h test/*.cc')