From: Jan Palus Date: Wed, 21 Nov 2018 22:31:37 +0000 (+0100) Subject: adjusted upstream patch to fix build with poppler 0.69.0 X-Git-Tag: auto/th/gdal-2.2.4-9 X-Git-Url: http://git.pld-linux.org/?p=packages%2Fgdal.git;a=commitdiff_plain;h=32c35647ebfc12c85ba5be4d19e2bf7f2a1565b4 adjusted upstream patch to fix build with poppler 0.69.0 --- diff --git a/gdal-poppler.patch b/gdal-poppler.patch index c4d34d5..fd912a6 100644 --- a/gdal-poppler.patch +++ b/gdal-poppler.patch @@ -24,3 +24,207 @@ index ae734a74e4c..5eab5dd1546 100644 return (osStr = GDALPDFGetUTF8StringFromBytes(reinterpret_cast(gooString->getCString()), static_cast(gooString->getLength()))); } +From 69e07012533b8393edd8b9ec4da6d239d204858a Mon Sep 17 00:00:00 2001 +From: Even Rouault +Date: Fri, 12 Oct 2018 19:02:40 +0200 +Subject: [PATCH] Add support for Poppler 0.69 (fixes #1004) + +--- + gdal/GDALmake.opt.in | 1 + + gdal/configure | 61 ++++++++++++++++++++++++++--------- + gdal/configure.ac | 56 +++++++++++++++++++++++--------- + gdal/frmts/pdf/GNUmakefile | 4 +++ + gdal/frmts/pdf/makefile.vc | 6 +++- + gdal/frmts/pdf/pdfdataset.cpp | 12 +++++++ + gdal/nmake.opt | 2 ++ + 7 files changed, 111 insertions(+), 31 deletions(-) + +diff --git a/gdal/GDALmake.opt.in b/gdal/GDALmake.opt.in +index c3b5b34f92b..eaf005e5a14 100644 +--- a/gdal/GDALmake.opt.in ++++ b/gdal/GDALmake.opt.in +@@ -473,6 +473,7 @@ POPPLER_BASE_STREAM_HAS_TWO_ARGS = @POPPLER_BASE_STREAM_HAS_TWO_ARGS@ + POPPLER_0_20_OR_LATER = @POPPLER_0_20_OR_LATER@ + POPPLER_0_23_OR_LATER = @POPPLER_0_23_OR_LATER@ + POPPLER_0_58_OR_LATER = @POPPLER_0_58_OR_LATER@ ++POPPLER_0_69_OR_LATER = @POPPLER_0_69_OR_LATER@ + POPPLER_INC = @POPPLER_INC@ + POPPLER_PLUGIN_LIB = @POPPLER_PLUGIN_LIB@ + +index 857f7fdb445..b6e59020c5b 100644 +--- a/gdal/configure.ac ++++ b/gdal/configure.ac +@@ -4446,6 +4446,7 @@ POPPLER_BASE_STREAM_HAS_TWO_ARGS=no + POPPLER_0_20_OR_LATER=no + POPPLER_0_23_OR_LATER=no + POPPLER_0_58_OR_LATER=no ++POPPLER_0_69_OR_LATER=no + + AC_MSG_CHECKING([for poppler]) + +@@ -4486,21 +4487,45 @@ if test "$with_poppler" != "no" -a "$with_poppler" != ""; then + + CHECK_OTHER_POPPLER_VERSION=yes + +- # And now we check if we have Poppler >= 0.58.0 +- AC_MSG_CHECKING([if Object does have new API (>= 0.58.0)]) +- rm -f testpoppler.* +- echo '#include ' > testpoppler.cpp +- echo 'int main(int argc, char** argv) { Object o(objNull); return 0; }' >> testpoppler.cpp +- if test -z "`${CXX} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then +- POPPLER_0_58_OR_LATER=yes +- POPPLER_0_23_OR_LATER=yes +- POPPLER_0_20_OR_LATER=yes +- POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes +- POPPLER_HAS_OPTCONTENT=yes +- CHECK_OTHER_POPPLER_VERSION=no +- AC_MSG_RESULT([yes]) +- else +- AC_MSG_RESULT([no]) ++ if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then ++ AC_MSG_CHECKING([if OptionalContent has API >= 0.69.0]) ++ rm -f testpoppler.* ++ echo '#include ' > testpoppler.cpp ++ echo 'int main(int argc, char** argv) {' >> testpoppler.cpp ++ echo 'OCGs ocg(nullptr, nullptr);' >> testpoppler.cpp ++ echo 'ocg.getOCGs().size();' >> testpoppler.cpp ++ echo 'return 0; }' >> testpoppler.cpp ++ if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then ++ POPPLER_0_69_OR_LATER=yes ++ POPPLER_0_58_OR_LATER=yes ++ POPPLER_0_23_OR_LATER=yes ++ POPPLER_0_20_OR_LATER=yes ++ POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes ++ POPPLER_HAS_OPTCONTENT=yes ++ CHECK_OTHER_POPPLER_VERSION=no ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ fi ++ fi ++ ++ if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then ++ # And now we check if we have Poppler >= 0.58.0 ++ AC_MSG_CHECKING([if Object does have new API (>= 0.58.0)]) ++ rm -f testpoppler.* ++ echo '#include ' > testpoppler.cpp ++ echo 'int main(int argc, char** argv) { Object o(objNull); return 0; }' >> testpoppler.cpp ++ if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then ++ POPPLER_0_58_OR_LATER=yes ++ POPPLER_0_23_OR_LATER=yes ++ POPPLER_0_20_OR_LATER=yes ++ POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes ++ POPPLER_HAS_OPTCONTENT=yes ++ CHECK_OTHER_POPPLER_VERSION=no ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ fi + fi + + if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then +@@ -4585,6 +4610,7 @@ AC_SUBST(POPPLER_BASE_STREAM_HAS_TWO_ARGS, $POPPLER_BASE_STREAM_HAS_TWO_ARGS) + AC_SUBST(POPPLER_0_20_OR_LATER, $POPPLER_0_20_OR_LATER) + AC_SUBST(POPPLER_0_23_OR_LATER, $POPPLER_0_23_OR_LATER) + AC_SUBST(POPPLER_0_58_OR_LATER, $POPPLER_0_58_OR_LATER) ++AC_SUBST(POPPLER_0_69_OR_LATER, $POPPLER_0_69_OR_LATER) + AC_SUBST(POPPLER_INC, $POPPLER_INC) + AC_SUBST(POPPLER_PLUGIN_LIB, $POPPLER_PLUGIN_LIB) + +diff --git a/gdal/frmts/pdf/GNUmakefile b/gdal/frmts/pdf/GNUmakefile +index 2014070eac7..618072f05d3 100644 +--- a/gdal/frmts/pdf/GNUmakefile ++++ b/gdal/frmts/pdf/GNUmakefile +@@ -35,6 +35,10 @@ ifeq ($(POPPLER_0_58_OR_LATER),yes) + CPPFLAGS += -DPOPPLER_0_58_OR_LATER + endif + ++ifeq ($(POPPLER_0_69_OR_LATER),yes) ++CPPFLAGS += -DPOPPLER_0_69_OR_LATER ++endif ++ + ifeq ($(HAVE_PODOFO),yes) + CPPFLAGS += -DHAVE_PODOFO + endif +diff --git a/gdal/frmts/pdf/makefile.vc b/gdal/frmts/pdf/makefile.vc +index b4fa14d0a18..ad76d3de70c 100644 +--- a/gdal/frmts/pdf/makefile.vc ++++ b/gdal/frmts/pdf/makefile.vc +@@ -14,7 +14,7 @@ OBJ = $(OBJ) ..\..\ogr\ogrsf_frmts\mem\ogrmemdatasource.obj ..\..\ogr\ogrsf_frmt + EXTRAFLAGS = -I..\vrt -I..\mem -I..\..\ogr\ogrsf_frmts\mem $(POPPLER_EXTRAFLAGS) $(PODOFO_EXTRAFLAGS) $(PDFIUM_EXTRAFLAGS) + + !IFDEF POPPLER_ENABLED +-POPPLER_EXTRAFLAGS = $(POPPLER_CFLAGS) $(POPPLER_HAS_OPTCONTENT_FLAGS) $(POPPLER_BASE_STREAM_HAS_TWO_ARGS_FLAGS) $(POPPLER_0_20_OR_LATER_FLAGS) $(POPPLER_0_23_OR_LATER_FLAGS) $(POPPLER_0_58_OR_LATER_FLAGS) -DHAVE_POPPLER ++POPPLER_EXTRAFLAGS = $(POPPLER_CFLAGS) $(POPPLER_HAS_OPTCONTENT_FLAGS) $(POPPLER_BASE_STREAM_HAS_TWO_ARGS_FLAGS) $(POPPLER_0_20_OR_LATER_FLAGS) $(POPPLER_0_23_OR_LATER_FLAGS) $(POPPLER_0_58_OR_LATER_FLAGS) $(POPPLER_0_69_OR_LATER_FLAGS) -DHAVE_POPPLER + + !IFDEF POPPLER_HAS_OPTCONTENT + POPPLER_HAS_OPTCONTENT_FLAGS = -DPOPPLER_HAS_OPTCONTENT +@@ -36,6 +36,10 @@ POPPLER_0_23_OR_LATER_FLAGS = -DPOPPLER_0_23_OR_LATER + POPPLER_0_58_OR_LATER_FLAGS = -DPOPPLER_0_58_OR_LATER + !ENDIF + ++!IFDEF POPPLER_0_69_OR_LATER ++POPPLER_0_69_OR_LATER_FLAGS = -DPOPPLER_0_69_OR_LATER ++!ENDIF ++ + !ENDIF + + !IFDEF PODOFO_ENABLED +diff --git a/gdal/frmts/pdf/pdfdataset.cpp b/gdal/frmts/pdf/pdfdataset.cpp +index ee89fd07564..1a56f57ee06 100644 +--- a/gdal/frmts/pdf/pdfdataset.cpp ++++ b/gdal/frmts/pdf/pdfdataset.cpp +@@ -3440,10 +3440,16 @@ void PDFDataset::FindLayersPoppler() + } + else + { ++#ifdef POPPLER_0_69_OR_LATER ++ for( const auto& refOCGPair: optContentConfig->getOCGs() ) ++ { ++ auto ocg = refOCGPair.second.get(); ++#else + GooList* ocgList = optContentConfig->getOCGs(); + for(int i=0;igetLength();i++) + { + OptionalContentGroup* ocg = (OptionalContentGroup*) ocgList->get(i); ++#endif + if( ocg != NULL && ocg->getName() != NULL ) + { + const char* pszLayerName = (const char*)ocg->getName()->getCString(); +@@ -3472,10 +3478,16 @@ void PDFDataset::TurnLayersOnOffPoppler() + { + int i; + int bAll = EQUAL(pszLayers, "ALL"); ++#ifdef POPPLER_0_69_OR_LATER ++ for( const auto& refOCGPair: optContentConfig->getOCGs() ) ++ { ++ auto ocg = refOCGPair.second.get(); ++#else + GooList* ocgList = optContentConfig->getOCGs(); + for(i=0;igetLength();i++) + { + OptionalContentGroup* ocg = (OptionalContentGroup*) ocgList->get(i); ++#endif + ocg->setState( (bAll) ? OptionalContentGroup::On : OptionalContentGroup::Off ); + } + +diff --git a/gdal/nmake.opt b/gdal/nmake.opt +index a3b88583425..c9ca28d3cd9 100644 +--- a/gdal/nmake.opt ++++ b/gdal/nmake.opt +@@ -632,6 +632,7 @@ OCI_INCLUDE = -I$(ORACLE_HOME)\oci\include + # Uncomment POPPLER_0_20_OR_LATER = YES for Poppler >= 0.20.0 + # Uncomment POPPLER_0_23_OR_LATER = YES for Poppler >= 0.23.0 + # Uncomment POPPLER_0_58_OR_LATER = YES for Poppler >= 0.58.0 ++# Uncomment POPPLER_0_69_OR_LATER = YES for Poppler >= 0.69.0 + #POPPLER_ENABLED = YES + #POPPLER_CFLAGS = -Ie:/kde/include -Ie:/kde/include/poppler + #POPPLER_HAS_OPTCONTENT = YES +@@ -639,6 +640,7 @@ OCI_INCLUDE = -I$(ORACLE_HOME)\oci\include + #POPPLER_0_20_OR_LATER = YES + #POPPLER_0_23_OR_LATER = YES + #POPPLER_0_58_OR_LATER = YES ++#POPPLER_0_69_OR_LATER = YES + #POPPLER_LIBS = e:/kde/lib/poppler.lib e:/kde/lib/freetype.lib e:/kde/lib/liblcms-1.lib advapi32.lib gdi32.lib + + # Uncomment for PDF support