From 4835e35b1d483922ff6c80e6ed3a4d7055233e1b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 23 May 2016 22:35:12 +0100 Subject: [PATCH] Various moderately unpleasant hacks for Centos 5 build. --- src/lib/render_subtitles.cc | 16 +++++++++++++++- wscript | 26 +++++++++++++++++++++----- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/lib/render_subtitles.cc b/src/lib/render_subtitles.cc index ed7d131fd..16c6a3c4e 100644 --- a/src/lib/render_subtitles.cc +++ b/src/lib/render_subtitles.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2015 Carl Hetherington + Copyright (C) 2014-2016 Carl Hetherington 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 #include #include #include @@ -81,6 +82,7 @@ render_line (list subtitles, list > fonts, shared_ptr 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 surface = Cairo::ImageSurface::create ( image->data()[0], Cairo::FORMAT_ARGB32, @@ -88,6 +90,18 @@ render_line (list subtitles, list > 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 surface = Cairo::ImageSurface::create ( + image->data()[0], + Cairo::FORMAT_ARGB32, + image->size().width, + image->size().height, + image->size().width * 4 + ); +#endif Cairo::RefPtr context = Cairo::Context::create (surface); diff --git a/wscript b/wscript index 59c85e8f7..df7fc3cd7 100644 --- 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 - using namespace MagickCore; + #include \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 - using namespace MagickLib + #include \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 + 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'] -- 2.30.2