Various moderately unpleasant hacks for Centos 5 build.
authorCarl Hetherington <cth@carlh.net>
Mon, 23 May 2016 21:35:12 +0000 (22:35 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 23 May 2016 21:35:12 +0000 (22:35 +0100)
src/lib/render_subtitles.cc
wscript

index ed7d131fd7455352d6a49aa695629eb2a9667814..16c6a3c4eee13552ecdd1f9b8581854b9b5ee1e6 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2016 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
@@ -23,6 +23,7 @@
 #include "cross.h"
 #include "font.h"
 #include "dcpomatic_assert.h"
+#include <fontconfig/fontconfig.h>
 #include <cairomm/cairomm.h>
 #include <pangomm.h>
 #include <boost/foreach.hpp>
@@ -81,6 +82,7 @@ render_line (list<dcp::SubtitleString> subtitles, list<shared_ptr<Font> > fonts,
        shared_ptr<Image> image (new Image (AV_PIX_FMT_RGBA, dcp::Size (target.width, height), false));
        image->make_black ();
 
+#ifdef DCPOMATIC_HAVE_FORMAT_STRIDE_FOR_WIDTH
        Cairo::RefPtr<Cairo::ImageSurface> surface = Cairo::ImageSurface::create (
                image->data()[0],
                Cairo::FORMAT_ARGB32,
@@ -88,6 +90,18 @@ render_line (list<dcp::SubtitleString> subtitles, list<shared_ptr<Font> > fonts,
                image->size().height,
                Cairo::ImageSurface::format_stride_for_width (Cairo::FORMAT_ARGB32, image->size().width)
                );
+#else
+       /* Centos 5 does not have Cairo::ImageSurface::format_stride_for_width, so just use width * 4
+          which I hope is safe (if slow)
+       */
+       Cairo::RefPtr<Cairo::ImageSurface> surface = Cairo::ImageSurface::create (
+               image->data()[0],
+               Cairo::FORMAT_ARGB32,
+               image->size().width,
+               image->size().height,
+               image->size().width * 4
+               );
+#endif
 
        Cairo::RefPtr<Cairo::Context> context = Cairo::Context::create (surface);
 
diff --git a/wscript b/wscript
index 59c85e8f7d58c11cc6b9be1d5f62336b3326087b..df7fc3cd73f8bfb5a217562b00023b9ded6952f6 100644 (file)
--- a/wscript
+++ b/wscript
@@ -201,8 +201,9 @@ def configure(conf):
 
     # See if we are using the MagickCore or MagickLib namespaces
     conf.check_cxx(fragment="""
-                            #include <Magick++/Include.h>
-                            using namespace MagickCore;
+                            #include <Magick++/Include.h>\n
+                            using namespace MagickCore;\n
+                            int main () { return 0; }\n
                             """,
                    mandatory=False,
                    msg='Checking for MagickCore namespace',
@@ -210,8 +211,9 @@ def configure(conf):
                    define_name='DCPOMATIC_HAVE_MAGICKCORE_NAMESPACE')
 
     conf.check_cxx(fragment="""
-                            #include <Magick++/Include.h>
-                            using namespace MagickLib
+                            #include <Magick++/Include.h>\n
+                            using namespace MagickLib;\n
+                            int main () { return 0; }\n
                             """,
                    mandatory=False,
                    msg='Checking for MagickLib namespace',
@@ -230,6 +232,18 @@ def configure(conf):
     # cairomm
     conf.check_cfg(package='cairomm-1.0', args='--cflags --libs', uselib_store='CAIROMM', mandatory=True)
 
+    # See if we have Cairo::ImageSurface::format_stride_for_width
+    conf.check_cxx(fragment="""
+                            #include <cairomm/cairomm.h>
+                            int main(void) {
+                                Cairo::ImageSurface::format_stride_for_width (Cairo::FORMAT_ARGB, 1024);\n
+                                return 0; }\n
+                            """,
+                       mandatory=False,
+                       msg='Checking for format_stride_for_width',
+                       okmsg='yes',
+                       define_name='DCPOMATIC_HAVE_FORMAT_STRIDE_FOR_WIDTH')
+
     # libcxml
     if conf.options.static_cxml:
         conf.check_cfg(package='libcxml', atleast_version='0.15.1', args='--cflags', uselib_store='CXML', mandatory=True)
@@ -283,7 +297,9 @@ def configure(conf):
 
     # libxmlsec
     if conf.options.static_xmlsec:
-        conf.env.STLIB_XMLSEC = ['xmlsec1-openssl', 'xmlsec1']
+        conf.env.STLIB_XMLSEC = ['xmlsec1']
+        if conf.check_cxx(lib='xmlsec1-openssl', mandatory=False):
+            conf.env.STLIB_XMLSEC.append('xmlsec1-openssl')
     else:
         conf.env.LIB_XMLSEC = ['xmlsec1-openssl', 'xmlsec1']