From 67e5355a8b0d51111934e0a0c30870b053c8e0d3 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Wed, 20 Jun 2018 16:10:44 +0200 Subject: poppler: upgrade to release 0.66.0 Unfortunately the autotools build system was removed in 0.60.0, and the CMake one is a bit overeager in linking against system libraries that happen to be installed on the build machine, and we currently don't require CMake anyway, so avoid the problems by using a gbuild makefile and a patch to add the generated header files. Remove all current patches: poppler-notests.patch.1: obsolete (autotools build system) poppler-mac-fake.patch.1: presumed obsolete ubsan.patch.0: presumably fixed differently upstream in https://cgit.freedesktop.org/poppler/poppler/commit/?id=f43cb73939f85952d83afc87a6dc638dc1ae311b poppler-libjpeg.patch.1: obsolete (autotools build system; there appears to be no way to do this with CMake?) 0001-Fix-building-with-old-clang.patch.1: merged upstream Change-Id: I271c87ab3ec25cc9d1e8fafb04dae7c004acc350 Reviewed-on: https://gerrit.libreoffice.org/56166 Tested-by: Jenkins Reviewed-by: Michael Stahl --- .../0001-Fix-building-with-old-clang.patch.1 | 25 -- external/poppler/ExternalProject_poppler.mk | 51 --- external/poppler/Module_poppler.mk | 2 +- external/poppler/StaticLibrary_poppler.mk | 128 ++++++ external/poppler/UnpackedTarball_poppler.mk | 6 +- external/poppler/poppler-config.patch.1 | 484 +++++++++++++++++++++ external/poppler/poppler-libjpeg.patch.1 | 23 - external/poppler/poppler-mac-fake.patch.1 | 13 - external/poppler/poppler-notests.patch.1 | 11 - external/poppler/ubsan.patch.0 | 230 ---------- 10 files changed, 614 insertions(+), 359 deletions(-) delete mode 100644 external/poppler/0001-Fix-building-with-old-clang.patch.1 delete mode 100644 external/poppler/ExternalProject_poppler.mk create mode 100644 external/poppler/StaticLibrary_poppler.mk create mode 100644 external/poppler/poppler-config.patch.1 delete mode 100644 external/poppler/poppler-libjpeg.patch.1 delete mode 100644 external/poppler/poppler-mac-fake.patch.1 delete mode 100644 external/poppler/poppler-notests.patch.1 delete mode 100644 external/poppler/ubsan.patch.0 (limited to 'external/poppler') diff --git a/external/poppler/0001-Fix-building-with-old-clang.patch.1 b/external/poppler/0001-Fix-building-with-old-clang.patch.1 deleted file mode 100644 index dcddd11d2967..000000000000 --- a/external/poppler/0001-Fix-building-with-old-clang.patch.1 +++ /dev/null @@ -1,25 +0,0 @@ -From dd80c182cbcb188af0dd590f222ba9bbb31e3fb7 Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid -Date: Mon, 4 Sep 2017 19:36:06 +0200 -Subject: [PATCH] Fix building with old clang - ---- - poppler/StructElement.cc | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/poppler/StructElement.cc b/poppler/StructElement.cc -index 0fbd336a..451213f8 100644 ---- a/poppler/StructElement.cc -+++ b/poppler/StructElement.cc -@@ -248,6 +248,8 @@ struct AttributeMapEntry { - }; - - struct AttributeDefaults { -+ AttributeDefaults() {}; // needed to support old clang -+ - Object Inline = Object(objName, "Inline"); - Object LrTb = Object(objName, "LrTb"); - Object Normal = Object(objName, "Normal"); --- -2.13.5 - diff --git a/external/poppler/ExternalProject_poppler.mk b/external/poppler/ExternalProject_poppler.mk deleted file mode 100644 index 61df84311fae..000000000000 --- a/external/poppler/ExternalProject_poppler.mk +++ /dev/null @@ -1,51 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -$(eval $(call gb_ExternalProject_ExternalProject,poppler)) - -$(eval $(call gb_ExternalProject_use_autoconf,poppler,build)) - -$(eval $(call gb_ExternalProject_use_externals,poppler,\ - libjpeg \ -)) - -$(eval $(call gb_ExternalProject_register_targets,poppler,\ - build \ -)) - -$(call gb_ExternalProject_get_state_target,poppler,build) : - $(call gb_ExternalProject_run,build,\ - $(if $(filter TRUE,$(DISABLE_DYNLOADING)),CFLAGS="$(CFLAGS) $(gb_VISIBILITY_FLAGS) $(if $(ENABLE_OPTIMIZED),$(gb_COMPILEROPTFLAGS),$(gb_COMPILERNOOPTFLAGS))" CXXFLAGS="$(CXXFLAGS) $(gb_VISIBILITY_FLAGS) $(gb_VISIBILITY_FLAGS_CXX) $(if $(ENABLE_OPTIMIZED),$(gb_COMPILEROPTFLAGS),$(gb_COMPILERNOOPTFLAGS))") \ - MAKE=$(MAKE) PKG_CONFIG="" ./configure \ - --with-pic \ - --enable-static \ - --disable-shared \ - --enable-xpdf-headers \ - --disable-poppler-cpp \ - --enable-libopenjpeg=none \ - --disable-libtiff \ - --enable-libjpeg \ - --disable-libpng \ - --disable-zlib \ - --disable-libcurl \ - --disable-splash-output \ - --disable-cairo-output \ - --disable-poppler-glib \ - --disable-poppler-qt4 \ - --disable-poppler-qt5 \ - --disable-gtk-test \ - --disable-utils \ - --disable-cms \ - $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \ - $(if $(filter WNT MACOSX,$(OS)),--with-font-configuration=win32,--with-font-configuration=fontconfig) \ - $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ - && $(MAKE) \ - ) - -# vim: set noet sw=4 ts=4: diff --git a/external/poppler/Module_poppler.mk b/external/poppler/Module_poppler.mk index 9e9f540531c2..ebae6e7aaddd 100644 --- a/external/poppler/Module_poppler.mk +++ b/external/poppler/Module_poppler.mk @@ -10,7 +10,7 @@ $(eval $(call gb_Module_Module,poppler)) $(eval $(call gb_Module_add_targets,poppler,\ - ExternalProject_poppler \ + StaticLibrary_poppler \ UnpackedTarball_poppler \ )) diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk new file mode 100644 index 000000000000..84873d9c7c2a --- /dev/null +++ b/external/poppler/StaticLibrary_poppler.mk @@ -0,0 +1,128 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_StaticLibrary_StaticLibrary,poppler)) + +$(eval $(call gb_StaticLibrary_use_unpacked,poppler,poppler)) + +$(eval $(call gb_StaticLibrary_use_external,poppler,libjpeg)) + +$(eval $(call gb_StaticLibrary_set_warnings_not_errors,poppler)) + +$(eval $(call gb_StaticLibrary_set_include,poppler,\ + -I$(WORKDIR)/UnpackedTarball/poppler \ + -I$(WORKDIR)/UnpackedTarball/poppler/fofi \ + -I$(WORKDIR)/UnpackedTarball/poppler/goo \ + -I$(WORKDIR)/UnpackedTarball/poppler/poppler \ + $$(INCLUDE) \ +)) + +ifeq ($(OS),WNT) +$(eval $(call gb_StaticLibrary_add_defs,poppler,\ + -DWIN32_LEAN_AND_MEAN \ + -D_CRT_SECURE_NO_WARNINGS \ +)) +$(eval $(call gb_StaticLibrary_add_cxxflags,poppler,\ + /Zc:wchar_t- \ +)) +endif + +$(eval $(call gb_StaticLibrary_set_generated_cxx_suffix,poppler,cc)) + +$(eval $(call gb_StaticLibrary_add_generated_exception_objects,poppler,\ + UnpackedTarball/poppler/goo/gfile \ + UnpackedTarball/poppler/goo/gmempp \ + UnpackedTarball/poppler/goo/GooList \ + UnpackedTarball/poppler/goo/GooTimer \ + UnpackedTarball/poppler/goo/GooString \ + UnpackedTarball/poppler/goo/gmem \ + UnpackedTarball/poppler/goo/FixedPoint \ + UnpackedTarball/poppler/goo/NetPBMWriter \ + UnpackedTarball/poppler/goo/PNGWriter \ + UnpackedTarball/poppler/goo/TiffWriter \ + UnpackedTarball/poppler/goo/JpegWriter \ + UnpackedTarball/poppler/goo/ImgWriter \ + UnpackedTarball/poppler/goo/gstrtod \ + UnpackedTarball/poppler/goo/grandom \ + UnpackedTarball/poppler/goo/glibc \ + UnpackedTarball/poppler/goo/glibc_strtok_r \ + UnpackedTarball/poppler/fofi/FoFiBase \ + UnpackedTarball/poppler/fofi/FoFiEncodings \ + UnpackedTarball/poppler/fofi/FoFiTrueType \ + UnpackedTarball/poppler/fofi/FoFiType1 \ + UnpackedTarball/poppler/fofi/FoFiType1C \ + UnpackedTarball/poppler/fofi/FoFiIdentifier \ + UnpackedTarball/poppler/poppler/Annot \ + UnpackedTarball/poppler/poppler/Array \ + UnpackedTarball/poppler/poppler/BuiltinFont \ + UnpackedTarball/poppler/poppler/BuiltinFontTables \ + UnpackedTarball/poppler/poppler/CachedFile \ + UnpackedTarball/poppler/poppler/Catalog \ + UnpackedTarball/poppler/poppler/CharCodeToUnicode \ + UnpackedTarball/poppler/poppler/CMap \ + UnpackedTarball/poppler/poppler/DateInfo \ + UnpackedTarball/poppler/poppler/Decrypt \ + UnpackedTarball/poppler/poppler/Dict \ + UnpackedTarball/poppler/poppler/Error \ + UnpackedTarball/poppler/poppler/FileSpec \ + UnpackedTarball/poppler/poppler/FontEncodingTables \ + UnpackedTarball/poppler/poppler/Form \ + UnpackedTarball/poppler/poppler/FontInfo \ + UnpackedTarball/poppler/poppler/Function \ + UnpackedTarball/poppler/poppler/Gfx \ + UnpackedTarball/poppler/poppler/GfxFont \ + UnpackedTarball/poppler/poppler/GfxState \ + UnpackedTarball/poppler/poppler/GlobalParams \ + UnpackedTarball/poppler/poppler/Hints \ + UnpackedTarball/poppler/poppler/JArithmeticDecoder \ + UnpackedTarball/poppler/poppler/JBIG2Stream \ + UnpackedTarball/poppler/poppler/Lexer \ + UnpackedTarball/poppler/poppler/Link \ + UnpackedTarball/poppler/poppler/Linearization \ + UnpackedTarball/poppler/poppler/LocalPDFDocBuilder \ + UnpackedTarball/poppler/poppler/MarkedContentOutputDev \ + UnpackedTarball/poppler/poppler/NameToCharCode \ + UnpackedTarball/poppler/poppler/Object \ + UnpackedTarball/poppler/poppler/OptionalContent \ + UnpackedTarball/poppler/poppler/Outline \ + UnpackedTarball/poppler/poppler/OutputDev \ + UnpackedTarball/poppler/poppler/Page \ + UnpackedTarball/poppler/poppler/PageTransition \ + UnpackedTarball/poppler/poppler/Parser \ + UnpackedTarball/poppler/poppler/PDFDoc \ + UnpackedTarball/poppler/poppler/PDFDocEncoding \ + UnpackedTarball/poppler/poppler/PDFDocFactory \ + UnpackedTarball/poppler/poppler/PopplerCache \ + UnpackedTarball/poppler/poppler/ProfileData \ + UnpackedTarball/poppler/poppler/PreScanOutputDev \ + UnpackedTarball/poppler/poppler/PSTokenizer \ + UnpackedTarball/poppler/poppler/SignatureInfo \ + UnpackedTarball/poppler/poppler/Stream \ + UnpackedTarball/poppler/poppler/StructTreeRoot \ + UnpackedTarball/poppler/poppler/StructElement \ + UnpackedTarball/poppler/poppler/UnicodeMap \ + UnpackedTarball/poppler/poppler/UnicodeMapFuncs \ + UnpackedTarball/poppler/poppler/UnicodeTypeTable \ + UnpackedTarball/poppler/poppler/UTF \ + UnpackedTarball/poppler/poppler/XRef \ + UnpackedTarball/poppler/poppler/PSOutputDev \ + UnpackedTarball/poppler/poppler/TextOutputDev \ + UnpackedTarball/poppler/poppler/PageLabelInfo \ + UnpackedTarball/poppler/poppler/SecurityHandler \ + UnpackedTarball/poppler/poppler/StdinCachedFile \ + UnpackedTarball/poppler/poppler/StdinPDFDocBuilder \ + UnpackedTarball/poppler/poppler/Sound \ + UnpackedTarball/poppler/poppler/ViewerPreferences \ + UnpackedTarball/poppler/poppler/XpdfPluginAPI \ + UnpackedTarball/poppler/poppler/Movie \ + UnpackedTarball/poppler/poppler/Rendition \ + UnpackedTarball/poppler/poppler/DCTStream \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index fc62974521fa..68fd06d9403b 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -12,11 +12,7 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,poppler)) $(eval $(call gb_UnpackedTarball_set_tarball,poppler,$(POPPLER_TARBALL),,poppler)) $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ - external/poppler/poppler-notests.patch.1 \ - external/poppler/poppler-mac-fake.patch.1 \ - external/poppler/ubsan.patch.0 \ - external/poppler/poppler-libjpeg.patch.1 \ - external/poppler/0001-Fix-building-with-old-clang.patch.1 \ + external/poppler/poppler-config.patch.1 \ )) # vim: set noet sw=4 ts=4: diff --git a/external/poppler/poppler-config.patch.1 b/external/poppler/poppler-config.patch.1 new file mode 100644 index 000000000000..5328e680e2f2 --- /dev/null +++ b/external/poppler/poppler-config.patch.1 @@ -0,0 +1,484 @@ +*three* poppler config headers + +mkdir build && cd build && cmake .. -DENABLE_DCTDECODER=libjpeg -DHAVE_CAIRO=off -DENABLE_LIBOPENJPEG=none -DENABLE_CMS=none -DENABLE_LIBCURL=off -DENABLE_ZLIB=off -DENABLE_ZLIB_UNCOMPRESS=off -DENABLE_NSS3=off -DENABLE_LIBPNG=off -DENABLE_LIBTIFF=off -DENABLE_SPLASH=off -DENABLE_UTILS=off -DENABLE_CPP=off -DENABLE_GLIB=off -DENABLE_GOBJECT_INTROSPECTION=off -DENABLE_GTK_DOC=off -DENABLE_QT5=off + +manually disabled these because cmake failed to do it: +HAVE_CAIRO +ENABLE_NSS3 +ENABLE_LIBPNG (twice!) +ENABLE_LIBTIFF (twice!) +ENABLE_LIBCURL + +diff --git a/config.h b/config.h +new file mode 100644 +index 0fbd336a..451213f8 100644 +--- /dev/null ++++ b/config.h +@@ -0,0 +1,248 @@ ++/* config.h. Generated from config.h.cmake by cmake. */ ++ ++/* Build against libcurl. */ ++/* #undef ENABLE_LIBCURL */ ++ ++/* Use libjpeg instead of builtin jpeg decoder. */ ++#define ENABLE_LIBJPEG 1 ++ ++/* Use libopenjpeg instead of builtin jpeg2000 decoder. */ ++/* #undef ENABLE_LIBOPENJPEG */ ++ ++/* Build against libtiff. */ ++/* #define ENABLE_LIBTIFF 1 */ ++ ++/* Build against libpng. */ ++/* #define ENABLE_LIBPNG 1 */ ++ ++/* Do not hardcode the library location */ ++/* #undef ENABLE_RELOCATABLE */ ++ ++/* Build against zlib. */ ++/* #undef ENABLE_ZLIB */ ++ ++/* Use zlib instead of builtin zlib decoder to uncompress flate streams. */ ++/* #undef ENABLE_ZLIB_UNCOMPRESS */ ++ ++/* Build against libnss3 for digital signature validation */ ++/* #define ENABLE_NSS3 1 */ ++ ++/* Use cairo for rendering. */ ++/* #define HAVE_CAIRO 1 */ ++ ++/* Do we have any DCT decoder?. */ ++#define HAVE_DCT_DECODER 1 ++ ++/* Do we have any JPX decoder?. */ ++/* #undef HAVE_JPX_DECODER */ ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++#define HAVE_DIRENT_H 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the header file. */ ++#define HAVE_DLFCN_H 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_FCNTL_H 1 ++ ++/* Define to 1 if you have the `fseek64' function. */ ++/* #undef HAVE_FSEEK64 */ ++ ++#if !defined(_WIN32) ++/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ ++#define HAVE_FSEEKO 1 ++#endif ++ ++/* Define to 1 if you have the `ftell64' function. */ ++/* #undef HAVE_FTELL64 */ ++ ++#if !defined(__APPLE__) && !defined(_WIN32) ++/* Define to 1 if you have the `pread64' function. */ ++#define HAVE_PREAD64 1 ++#endif ++ ++#if !defined(__APPLE__) && !defined(_WIN32) ++/* Define to 1 if you have the `lseek64' function. */ ++#define HAVE_LSEEK64 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Defines if gettimeofday is available on your system */ ++#define HAVE_GETTIMEOFDAY 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Defines if gmtime_r is available on your system */ ++#define HAVE_GMTIME_R 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Defines if timegm is available on your system */ ++#define HAVE_TIMEGM 1 ++#endif ++ ++/* Define if you have the iconv() function and it works. */ ++/* #undef HAVE_ICONV */ ++ ++/* Define to 1 if you have the `z' library (-lz). */ ++/* #undef HAVE_LIBZ */ ++ ++#if !defined(_WIN32) ++/* Defines if localtime_r is available on your system */ ++#define HAVE_LOCALTIME_R 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the `mkstemp' function. */ ++#define HAVE_MKSTEMP 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the `rand_r' function. */ ++#define HAVE_RAND_R 1 ++#endif ++ ++#if defined(_WIN32) ++/* Define to 1 if you have the `strcpy_s' function. */ ++#define HAVE_STRCPY_S 1 ++#endif ++ ++#if defined(_WIN32) ++/* Define to 1 if you have the `strcat_s' function. */ ++#define HAVE_STRCAT_S 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Defines if strtok_r is available on your system */ ++#define HAVE_STRTOK_R 1 ++#endif ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. */ ++/* #undef HAVE_NDIR_H */ ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the `popen' function. */ ++#define HAVE_POPEN 1 ++#endif ++ ++/* Use splash for rendering. */ ++/* #undef HAVE_SPLASH */ ++ ++#if !defined(__APPLE__) && !defined(_WIN32) ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++#define HAVE_SYS_DIR_H 1 ++#endif ++ ++#if !defined(__APPLE__) && !defined(_WIN32) ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_MMAN_H 1 ++#endif ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++/* #undef HAVE_SYS_NDIR_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_STAT_H 1 ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the header file. */ ++#define HAVE_UNISTD_H 1 ++#endif ++ ++/* Define to 1 if you have a big endian machine */ ++/* #undef WORDS_BIGENDIAN */ ++ ++/* Define as const if the declaration of iconv() needs const. */ ++#define ICONV_CONST ++ ++/* Enable multithreading support. */ ++#define MULTITHREADED 1 ++ ++/* Generate OPI comments in PS output. */ ++#define OPI_SUPPORT 1 ++ ++/* Name of package */ ++#define PACKAGE "poppler" ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=poppler" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "poppler" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "poppler 0.66.0" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME "poppler" ++ ++/* Define to the home page for this package. */ ++#define PACKAGE_URL "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "0.66.0" ++ ++/* Poppler data dir */ ++#define POPPLER_DATADIR "/usr/local/share/poppler" ++ ++/* Support for curl based doc builder is compiled in. */ ++/* #undef POPPLER_HAS_CURL_SUPPORT */ ++ ++/* Include support for CMYK rasterization */ ++/* #undef SPLASH_CMYK */ ++ ++/* Enable word list support. */ ++#define TEXTOUT_WORD_LIST 1 ++ ++/* Defines if use cms */ ++/* #undef USE_CMS */ ++ ++/* Use fixed point arithmetic in the Splash backend */ ++/* #undef USE_FIXEDPOINT */ ++ ++/* Use single precision arithmetic in the Splash backend */ ++/* #undef USE_FLOAT */ ++ ++/* Version number of package */ ++#define VERSION "0.66.0" ++ ++#if defined(__APPLE__) ++#elif defined (_WIN32) ++/* Use win32 font configuration backend */ ++#define WITH_FONTCONFIGURATION_WIN32 1 ++#else ++/* Use fontconfig font configuration backend */ ++#define WITH_FONTCONFIGURATION_FONTCONFIG 1 ++#endif ++ ++/* OpenJPEG with the OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG flag */ ++/* #undef WITH_OPENJPEG_IGNORE_PCLR_CMAP_CDEF_FLAG */ ++ ++/* MS defined snprintf as deprecated but then added it in Visual Studio 2015. */ ++#if defined(_MSC_VER) && _MSC_VER < 1900 ++#define snprintf _snprintf ++#endif ++ ++//------------------------------------------------------------------------ ++// popen ++//------------------------------------------------------------------------ ++#if defined(_MSC_VER) || defined(__BORLANDC__) ++#define popen _popen ++#define pclose _pclose ++#endif ++ ++/* Number of bits in a file offset, on hosts where this is settable. */ ++/* #undef _FILE_OFFSET_BITS */ ++ ++/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ ++/* TODO This is wrong, port if needed #undef _LARGEFILE_SOURCE */ ++ ++/* Define for large files, on AIX-style hosts. */ ++/* TODO This is wrong, port if needed #undef _LARGE_FILES */ +diff --git a/poppler/poppler-config.h b/poppler/poppler-config.h +new file mode 100644 +index 0fbd336a..451213f8 100644 +--- /dev/null ++++ b/poppler/poppler-config.h +@@ -0,0 +1,168 @@ ++//================================================= -*- mode: c++ -*- ==== ++// ++// poppler-config.h ++// ++// Copyright 1996-2011 Glyph & Cog, LLC ++// ++//======================================================================== ++ ++//======================================================================== ++// ++// Modified under the Poppler project - http://poppler.freedesktop.org ++// ++// All changes made under the Poppler project to this file are licensed ++// under GPL version 2 or later ++// ++// Copyright (C) 2014 Bogdan Cristea ++// Copyright (C) 2014 Hib Eris ++// Copyright (C) 2016 Tor Lillqvist ++// Copyright (C) 2017 Adrian Johnson ++// ++// To see a description of the changes please see the Changelog file that ++// came with your tarball or type make ChangeLog if you are building from git ++// ++//======================================================================== ++ ++#ifndef POPPLER_CONFIG_H ++#define POPPLER_CONFIG_H ++ ++// We duplicate some of the config.h #define's here since they are ++// used in some of the header files we install. The #ifndef/#endif ++// around #undef look odd, but it's to silence warnings about ++// redefining those symbols. ++ ++/* Defines the poppler version. */ ++#ifndef POPPLER_VERSION ++#define POPPLER_VERSION "0.66.0" ++#endif ++ ++/* Enable multithreading support. */ ++#ifndef MULTITHREADED ++#define MULTITHREADED 1 ++#endif ++ ++/* Use fixedpoint. */ ++#ifndef USE_FIXEDPOINT ++/* #undef USE_FIXEDPOINT */ ++#endif ++ ++/* Use single precision arithmetic in the Splash backend */ ++#ifndef USE_FLOAT ++/* #undef USE_FLOAT */ ++#endif ++ ++/* Include support for OPI comments. */ ++#ifndef OPI_SUPPORT ++#define OPI_SUPPORT 1 ++#endif ++ ++/* Enable word list support. */ ++#ifndef TEXTOUT_WORD_LIST ++#define TEXTOUT_WORD_LIST 1 ++#endif ++ ++/* Support for curl is compiled in. */ ++#ifndef POPPLER_HAS_CURL_SUPPORT ++/* #undef POPPLER_HAS_CURL_SUPPORT */ ++#endif ++ ++/* Use libjpeg instead of builtin jpeg decoder. */ ++#ifndef ENABLE_LIBJPEG ++#define ENABLE_LIBJPEG 1 ++#endif ++ ++/* Build against libtiff. */ ++#ifndef ENABLE_LIBTIFF ++/* #define ENABLE_LIBTIFF 1 */ ++#endif ++ ++/* Build against libpng. */ ++#ifndef ENABLE_LIBPNG ++/* #define ENABLE_LIBPNG 1 */ ++#endif ++ ++/* Use zlib instead of builtin zlib decoder. */ ++#ifndef ENABLE_ZLIB ++/* #undef ENABLE_ZLIB */ ++#endif ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++#ifndef HAVE_DIRENT_H ++#if !defined(_WIN32) ++#define HAVE_DIRENT_H 1 ++#endif ++#endif ++ ++/* Defines if gettimeofday is available on your system */ ++#ifndef HAVE_GETTIMEOFDAY ++#if !defined(_WIN32) ++#define HAVE_GETTIMEOFDAY 1 ++#endif ++#endif ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. */ ++#ifndef HAVE_NDIR_H ++/* #undef HAVE_NDIR_H */ ++#endif ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++#ifndef HAVE_SYS_DIR_H ++#if !defined(__APPLE__) && !defined(_WIN32) ++#define HAVE_SYS_DIR_H 1 ++#endif ++#endif ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++#ifndef HAVE_SYS_NDIR_H ++/* #undef HAVE_SYS_NDIR_H */ ++#endif ++ ++/* Defines if use cms */ ++#ifndef USE_CMS ++/* #undef USE_CMS */ ++#endif ++ ++// Also, there are preprocessor symbols in the header files ++// that are used but never defined when building poppler using configure ++// or cmake: DISABLE_OUTLINE, DEBUG_MEM, ++// ENABLE_PLUGINS, DEBUG_FORMS ++ ++//------------------------------------------------------------------------ ++// version ++//------------------------------------------------------------------------ ++ ++// copyright notice ++#define popplerCopyright "Copyright 2005-2018 The Poppler Developers - http://poppler.freedesktop.org" ++#define xpdfCopyright "Copyright 1996-2011 Glyph & Cog, LLC" ++ ++//------------------------------------------------------------------------ ++// Win32 stuff ++//------------------------------------------------------------------------ ++ ++#if defined(_WIN32) && !defined(_MSC_VER) ++#include ++#else ++#define CDECL ++#endif ++ ++//------------------------------------------------------------------------ ++// Compiler ++//------------------------------------------------------------------------ ++ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) ++#include // __MINGW_PRINTF_FORMAT is defined in the mingw stdio.h ++#ifdef __MINGW_PRINTF_FORMAT ++#define GCC_PRINTF_FORMAT(fmt_index, va_index) \ ++ __attribute__((__format__(__MINGW_PRINTF_FORMAT, fmt_index, va_index))) ++#else ++#define GCC_PRINTF_FORMAT(fmt_index, va_index) \ ++ __attribute__((__format__(__printf__, fmt_index, va_index))) ++#endif ++#else ++#define GCC_PRINTF_FORMAT(fmt_index, va_index) ++#endif ++ ++#endif /* POPPLER_CONFIG_H */ +diff --git a/cpp/poppler-version.h b/cpp/poppler-version.h +new file mode 100644 +index 0fbd336a..451213f8 100644 +--- /dev/null ++++ b/cpp/poppler-version.h +@@ -0,0 +1,39 @@ ++/* ++ * Copyright (C) 2009, Pino Toscano ++ * ++ * 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 ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. ++ */ ++ ++#ifndef POPPLER_VERSION_H ++#define POPPLER_VERSION_H ++ ++#include "poppler-global.h" ++ ++#define POPPLER_VERSION "0.66.0" ++#define POPPLER_VERSION_MAJOR 0 ++#define POPPLER_VERSION_MINOR 66 ++#define POPPLER_VERSION_MICRO 0 ++ ++namespace poppler ++{ ++ ++POPPLER_CPP_EXPORT std::string version_string(); ++POPPLER_CPP_EXPORT unsigned int version_major(); ++POPPLER_CPP_EXPORT unsigned int version_minor(); ++POPPLER_CPP_EXPORT unsigned int version_micro(); ++ ++} ++ ++#endif diff --git a/external/poppler/poppler-libjpeg.patch.1 b/external/poppler/poppler-libjpeg.patch.1 deleted file mode 100644 index c8d54beb75ae..000000000000 --- a/external/poppler/poppler-libjpeg.patch.1 +++ /dev/null @@ -1,23 +0,0 @@ -do not override user supplied LIBJPEG_LIBS so we can use the one in WORKDIR - ---- poppler/configure.orig 2016-11-02 13:58:32.530617038 +0100 -+++ poppler/configure 2016-11-02 13:58:06.233617689 +0100 -@@ -21377,8 +21377,9 @@ - ac_save_USER_INCLUDES="$USER_INCLUDES" - ac_save_USER_LDFLAGS="$USER_LDFLAGS" - USER_INCLUDES="$USER_INCLUDES $LIBJPEG_CFLAGS" -- USER_LDFLAGS="$USER_LDFLAGS $LIBJPEG_CFLAGS" -+ USER_LDFLAGS="$USER_LDFLAGS $LIBJPEG_LIBS" - -+if test -z "$LIBJPEG_LIBS"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libjpeg6b" >&5 - $as_echo_n "checking for libjpeg6b... " >&6; } -@@ -21489,6 +21490,7 @@ - - - fi -+fi - - - ac_save_CPPFLAGS="$CPPFLAGS" diff --git a/external/poppler/poppler-mac-fake.patch.1 b/external/poppler/poppler-mac-fake.patch.1 deleted file mode 100644 index d0b1936658ca..000000000000 --- a/external/poppler/poppler-mac-fake.patch.1 +++ /dev/null @@ -1,13 +0,0 @@ -diff -ur poppler.org/poppler/GlobalParams.cc poppler/poppler/GlobalParams.cc ---- poppler.org/poppler/GlobalParams.cc 2013-07-09 06:24:38.000000000 -0500 -+++ poppler/poppler/GlobalParams.cc 2013-07-09 06:25:18.000000000 -0500 -@@ -1327,7 +1327,7 @@ - return path; - } - --#elif WITH_FONTCONFIGURATION_WIN32 -+#elif WITH_FONTCONFIGURATION_WIN32 && defined(_WIN32) - #include "GlobalParamsWin.cc" - - GooString *GlobalParams::findBase14FontFile(GooString *base14Name, GfxFont *font) { - diff --git a/external/poppler/poppler-notests.patch.1 b/external/poppler/poppler-notests.patch.1 deleted file mode 100644 index ffac17312959..000000000000 --- a/external/poppler/poppler-notests.patch.1 +++ /dev/null @@ -1,11 +0,0 @@ ---- a/Makefile.in -+++ b/Makefile.in -@@ -483,7 +483,7 @@ - @BUILD_POPPLER_QT4_TRUE@qt4_pc_file = poppler-qt4.pc - @BUILD_POPPLER_CPP_TRUE@cpp_subdir = cpp - @BUILD_POPPLER_CPP_TRUE@cpp_pc_file = poppler-cpp.pc --SUBDIRS = goo fofi $(splash_subdir) poppler utils $(glib_subdir) test $(qt4_subdir) $(qt5_subdir) $(cpp_subdir) -+SUBDIRS = goo fofi $(splash_subdir) poppler utils $(glib_subdir) $(qt4_subdir) $(qt5_subdir) $(cpp_subdir) - - # Add CMake buildsystem files here so they get added on make dist - EXTRA_DIST = README-XPDF poppler.pc.in poppler-uninstalled.pc.in \ diff --git a/external/poppler/ubsan.patch.0 b/external/poppler/ubsan.patch.0 deleted file mode 100644 index f6e4667dc133..000000000000 --- a/external/poppler/ubsan.patch.0 +++ /dev/null @@ -1,230 +0,0 @@ ---- poppler/Form.cc -+++ poppler/Form.cc -@@ -463,12 +463,11 @@ - // FormField - //======================================================================== - --FormField::FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parentA, std::set *usedParents, FormFieldType ty) -+FormField::FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parentA, FormFieldType ty) - { - doc = docA; - xref = doc->getXRef(); - obj = aobj->copy(); -- Dict* dict = obj.getDict(); - ref.num = ref.gen = 0; - type = ty; - parent = parentA; -@@ -483,7 +482,11 @@ - hasQuadding = gFalse; - - ref = aref; -+} - -+void FormField::init(std::set *usedParents) -+{ -+ Dict* dict = obj.getDict(); - //childs - Object obj1 = dict->lookup("Kids"); - if (obj1.isArray()) { -@@ -803,9 +806,15 @@ - //------------------------------------------------------------------------ - // FormFieldButton - //------------------------------------------------------------------------ --FormFieldButton::FormFieldButton(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set *usedParents) -- : FormField(docA, aobj, ref, parent, usedParents, formButton) -+FormFieldButton::FormFieldButton(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) -+ : FormField(docA, aobj, ref, parent, formButton) - { -+} -+ -+void FormFieldButton::init(std::set *usedParents) -+{ -+ FormField::init(usedParents); -+ - Dict* dict = obj.getDict(); - active_child = -1; - noAllOff = false; -@@ -983,9 +992,15 @@ - //------------------------------------------------------------------------ - // FormFieldText - //------------------------------------------------------------------------ --FormFieldText::FormFieldText(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set *usedParents) -- : FormField(docA, aobj, ref, parent, usedParents, formText) -+FormFieldText::FormFieldText(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) -+ : FormField(docA, aobj, ref, parent, formText) - { -+} -+ -+void FormFieldText::init(std::set *usedParents) -+{ -+ FormField::init(usedParents); -+ - Dict* dict = obj.getDict(); - Object obj1; - content = NULL; -@@ -1076,9 +1091,15 @@ - //------------------------------------------------------------------------ - // FormFieldChoice - //------------------------------------------------------------------------ --FormFieldChoice::FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set *usedParents) -- : FormField(docA, aobj, ref, parent, usedParents, formChoice) -+FormFieldChoice::FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) -+ : FormField(docA, aobj, ref, parent, formChoice) - { -+} -+ -+void FormFieldChoice::init(std::set *usedParents) -+{ -+ FormField::init(usedParents); -+ - numChoices = 0; - choices = NULL; - editedChoice = NULL; -@@ -1379,11 +1400,17 @@ - //------------------------------------------------------------------------ - // FormFieldSignature - //------------------------------------------------------------------------ --FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set *usedParents) -- : FormField(docA, dict, ref, parent, usedParents, formSignature), -+FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent) -+ : FormField(docA, dict, ref, parent, formSignature), - signature_type(adbe_pkcs7_detached), - signature(nullptr), signature_info(nullptr) - { -+} -+ -+void FormFieldSignature::init(std::set *usedParents) -+{ -+ FormField::init(usedParents); -+ - signature = NULL; - - signature_info = new SignatureInfo(); -@@ -1691,15 +1718,15 @@ - - Object obj2 = Form::fieldLookup(obj->getDict (), "FT"); - if (obj2.isName("Btn")) { -- field = new FormFieldButton(docA, obj, pref, parent, usedParents); -+ field = FormFieldButton::create(docA, obj, pref, parent, usedParents); - } else if (obj2.isName("Tx")) { -- field = new FormFieldText(docA, obj, pref, parent, usedParents); -+ field = FormFieldText::create(docA, obj, pref, parent, usedParents); - } else if (obj2.isName("Ch")) { -- field = new FormFieldChoice(docA, obj, pref, parent, usedParents); -+ field = FormFieldChoice::create(docA, obj, pref, parent, usedParents); - } else if (obj2.isName("Sig")) { -- field = new FormFieldSignature(docA, obj, pref, parent, usedParents); -+ field = FormFieldSignature::create(docA, obj, pref, parent, usedParents); - } else { //we don't have an FT entry => non-terminal field -- field = new FormField(docA, obj, pref, parent, usedParents); -+ field = FormField::create(docA, obj, pref, parent, usedParents); - } - - return field; ---- poppler/Form.h -+++ poppler/Form.h -@@ -264,8 +264,16 @@ - //------------------------------------------------------------------------ - - class FormField { --public: -- FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, std::set *usedParents, FormFieldType t=formUndef); -+protected: -+ FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, FormFieldType t); -+ void init(std::set *usedParents); -+public: -+ static FormField *create(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, std::set *usedParents, FormFieldType t=formUndef) -+ { -+ FormField *f = new FormField(docA, aobj, aref, parent, t); -+ f->init(usedParents); -+ return f; -+ } - - virtual ~FormField(); - -@@ -338,8 +346,16 @@ - //------------------------------------------------------------------------ - - class FormFieldButton: public FormField { --public: -- FormFieldButton(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set *usedParents); -+private: -+ FormFieldButton(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); -+ void init(std::set *usedParents); -+public: -+ static FormFieldButton *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set *usedParents) -+ { -+ FormFieldButton *f = new FormFieldButton(docA, dict, ref, parent); -+ f->init(usedParents); -+ return f; -+ } - - FormButtonType getButtonType () { return btype; } - -@@ -384,8 +400,16 @@ - //------------------------------------------------------------------------ - - class FormFieldText: public FormField { --public: -- FormFieldText(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set *usedParents); -+private: -+ FormFieldText(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); -+ void init(std::set *usedParents); -+public: -+ static FormFieldText *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set *usedParents) -+ { -+ FormFieldText *f = new FormFieldText(docA, dict, ref, parent); -+ f->init(usedParents); -+ return f; -+ } - - GooString* getContent () { return content; } - GooString* getContentCopy (); -@@ -422,8 +446,16 @@ - //------------------------------------------------------------------------ - - class FormFieldChoice: public FormField { --public: -- FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set *usedParents); -+private: -+ FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent); -+ void init(std::set *usedParents); -+public: -+ static FormFieldChoice *create(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set *usedParents) -+ { -+ FormFieldChoice *f = new FormFieldChoice(docA, aobj, ref, parent); -+ f->init(usedParents); -+ return f; -+ } - - ~FormFieldChoice(); - -@@ -491,8 +523,16 @@ - - class FormFieldSignature: public FormField { - friend class FormWidgetSignature; --public: -- FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set *usedParents); -+private: -+ FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); -+ void init(std::set *usedParents); -+public: -+ static FormFieldSignature *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set *usedParents) -+ { -+ FormFieldSignature *f = new FormFieldSignature(docA, dict, ref, parent); -+ f->init(usedParents); -+ return f; -+ } - - // Use -1 for now as validationTime - SignatureInfo *validateSignature(bool doVerifyCert, bool forceRevalidation, time_t validationTime); ---- poppler/XRef.cc -+++ poppler/XRef.cc -@@ -293,6 +293,7 @@ - xRefStream = gFalse; - scannedSpecialFlags = gFalse; - encrypted = gFalse; -+ encAlgorithm = cryptRC4; - permFlags = defPermFlags; - ownerPasswordOk = gFalse; - rootNum = -1; -- cgit