summaryrefslogtreecommitdiffstats
path: root/external/libetonyek
diff options
context:
space:
mode:
Diffstat (limited to 'external/libetonyek')
-rw-r--r--external/libetonyek/0001-allow-0-size-message.patch.130
-rw-r--r--external/libetonyek/0001-fix-build-with-MSVC.patch.128
-rw-r--r--external/libetonyek/0002-fix-build-with-MSVC.patch.155
-rw-r--r--external/libetonyek/ExternalPackage_libetonyek.mk22
-rw-r--r--external/libetonyek/ExternalProject_libetonyek.mk67
-rw-r--r--external/libetonyek/Library_etonyek.mk193
-rw-r--r--external/libetonyek/Makefile7
-rw-r--r--external/libetonyek/Module_libetonyek.mk31
-rw-r--r--external/libetonyek/README3
-rw-r--r--external/libetonyek/UnpackedTarball_libetonyek.mk38
-rw-r--r--external/libetonyek/inc/pch/precompiled_etonyek.cxx12
-rw-r--r--external/libetonyek/inc/pch/precompiled_etonyek.hxx79
-rw-r--r--external/libetonyek/libetonyek-bundled-soname.patch.011
-rw-r--r--external/libetonyek/rpath.patch10
-rw-r--r--external/libetonyek/ubsan.patch11
-rw-r--r--external/libetonyek/warnings.patch11
-rw-r--r--external/libetonyek/win_build.patch.113
17 files changed, 621 insertions, 0 deletions
diff --git a/external/libetonyek/0001-allow-0-size-message.patch.1 b/external/libetonyek/0001-allow-0-size-message.patch.1
new file mode 100644
index 000000000..62e584b81
--- /dev/null
+++ b/external/libetonyek/0001-allow-0-size-message.patch.1
@@ -0,0 +1,30 @@
+From 54762245feee35ce6885f7443da8f8443fccd5b5 Mon Sep 17 00:00:00 2001
+From: David Tardon <dtardon@redhat.com>
+Date: Wed, 26 May 2021 20:39:41 +0200
+Subject: [PATCH] allow 0-size message
+
+It likely means the input is broken, but there is no need to reject it.
+Let's just produce a dummy, empty message.
+
+Change-Id: I03a1e9827f21f6a0ce69d7e16dfcf2e9a0f2d44f
+---
+ src/lib/IWAMessage.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/lib/IWAMessage.cpp b/src/lib/IWAMessage.cpp
+index c01b1b6..9456444 100644
+--- a/src/lib/IWAMessage.cpp
++++ b/src/lib/IWAMessage.cpp
+@@ -42,7 +42,8 @@ IWAMessage::IWAMessage(const RVNGInputStreamPtr_t &input, unsigned long length)
+ : m_input(input)
+ , m_fields()
+ {
+- assert(length > 0);
++ if (length == 0)
++ return;
+
+ parse(length);
+ }
+--
+2.31.1
+
diff --git a/external/libetonyek/0001-fix-build-with-MSVC.patch.1 b/external/libetonyek/0001-fix-build-with-MSVC.patch.1
new file mode 100644
index 000000000..2a72844dc
--- /dev/null
+++ b/external/libetonyek/0001-fix-build-with-MSVC.patch.1
@@ -0,0 +1,28 @@
+From 1aa22c746b41a688296f4daf4fc35710d2045a33 Mon Sep 17 00:00:00 2001
+From: David Tardon <dtardon@redhat.com>
+Date: Wed, 19 May 2021 19:43:43 +0200
+Subject: [PATCH] fix build with MSVC
+
+error C2664: 'libetonyek::IWORKFormula::IWORKFormula(const boost::optional<unsigned int> &)': cannot convert argument 1 from 'int' to 'const boost::optional<unsigned int> &'
+
+Change-Id: Iaa3de2d0ef8f960495e5d5afebb75c5063955177
+---
+ src/lib/IWAParser.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/lib/IWAParser.cpp b/src/lib/IWAParser.cpp
+index 7fd95c3..a2bd292 100644
+--- a/src/lib/IWAParser.cpp
++++ b/src/lib/IWAParser.cpp
+@@ -3403,7 +3403,7 @@ bool IWAParser::parseFormula(const IWAMessage &msg, IWORKFormulaPtr_t &formula)
+ }
+ else
+ {
+- formula.reset(new IWORKFormula(0));
++ formula.reset(new IWORKFormula(boost::make_optional(0u)));
+ formula->parse(stack[0]);
+ }
+ return ok;
+--
+2.31.1
+
diff --git a/external/libetonyek/0002-fix-build-with-MSVC.patch.1 b/external/libetonyek/0002-fix-build-with-MSVC.patch.1
new file mode 100644
index 000000000..0eadb0912
--- /dev/null
+++ b/external/libetonyek/0002-fix-build-with-MSVC.patch.1
@@ -0,0 +1,55 @@
+From 7b69af66227309e9c258beca3bc3934be454a221 Mon Sep 17 00:00:00 2001
+From: David Tardon <dtardon@redhat.com>
+Date: Wed, 19 May 2021 21:11:40 +0200
+Subject: [PATCH] fix build with MSVC
+
+C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1428~1.299/Include\xutility(138): error C2668: 'libetonyek::IWORKStyle::IWORKStyle': ambiguous call to overloaded function
+C:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\workdir\UnpackedTarball\libetonyek\src\lib\IWORKStyle.h(32): note: could be 'libetonyek::IWORKStyle::IWORKStyle(const libetonyek::IWORKPropertyMap &,const boost::optional<std::string> &,const libetonyek::IWORKStylePtr_t &)'
+C:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\workdir\UnpackedTarball\libetonyek\src\lib\IWORKStyle.h(31): note: or 'libetonyek::IWORKStyle::IWORKStyle(const libetonyek::IWORKPropertyMap &,const boost::optional<std::string> &,const boost::optional<std::string> &)'
+C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1428~1.299/Include\xutility(137): note: while trying to match the argument list '(libetonyek::IWORKPropertyMap, const boost::none_t, _Ty)'
+ with
+ [
+ _Ty=nullptr
+ ]
+C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1428~1.299/Include\memory(2186): note: see reference to function template instantiation 'void std::_Construct_in_place<_Ty,libetonyek::IWORKPropertyMap&,const boost::none_t&,nullptr>(_Ty &,libetonyek::IWORKPropertyMap &,const boost::none_t &,nullptr &&) noexcept(false)' being compiled
+ with
+ [
+ _Ty=libetonyek::IWORKStyle
+ ]
+C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1428~1.299/Include\memory(2906): note: see reference to function template instantiation 'std::_Ref_count_obj2<_Ty>::_Ref_count_obj2<libetonyek::IWORKPropertyMap&,const boost::none_t&,nullptr>(libetonyek::IWORKPropertyMap &,const boost::none_t &,nullptr &&)' being compiled
+ with
+ [
+ _Ty=libetonyek::IWORKStyle
+ ]
+C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1428~1.299/Include\memory(2907): note: see reference to function template instantiation 'std::_Ref_count_obj2<_Ty>::_Ref_count_obj2<libetonyek::IWORKPropertyMap&,const boost::none_t&,nullptr>(libetonyek::IWORKPropertyMap &,const boost::none_t &,nullptr &&)' being compiled
+ with
+ [
+ _Ty=libetonyek::IWORKStyle
+ ]
+C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows/workdir/UnpackedTarball/libetonyek/src/lib/IWAParser.cpp(2358): note: see reference to function template instantiation 'std::shared_ptr<libetonyek::IWORKStyle> std::make_shared<libetonyek::IWORKStyle,libetonyek::IWORKPropertyMap&,const boost::none_t&,nullptr>(libetonyek::IWORKPropertyMap &,const boost::none_t &,nullptr &&)' being compiled
+
+Change-Id: Idf871474b2a20f252073846388d018cccc15bc11
+---
+ src/lib/IWAParser.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/lib/IWAParser.cpp b/src/lib/IWAParser.cpp
+index a2bd292..1fdeae7 100644
+--- a/src/lib/IWAParser.cpp
++++ b/src/lib/IWAParser.cpp
+@@ -2355,10 +2355,10 @@ void IWAParser::parseAuthorInComment(unsigned id)
+ IWORKPropertyMap props;
+ // normally yellow, but blue may be better in LO
+ props.put<property::FontColor>(IWORKColor(0,0,1,1));
+- spans[0]=std::make_shared<IWORKStyle>(props, boost::none, nullptr);
++ spans[0]=std::make_shared<IWORKStyle>(props, boost::none, IWORKStylePtr_t());
+ // reset color to default, if not, comment will be blue colored
+ props.put<property::FontColor>(IWORKColor(0,0,0,1));
+- spans[unsigned(len)]=std::make_shared<IWORKStyle>(props, boost::none, nullptr);
++ spans[unsigned(len)]=std::make_shared<IWORKStyle>(props, boost::none, IWORKStylePtr_t());
+ text.setSpans(spans);
+ text.parse(*m_currentText);
+ }
+--
+2.31.1
+
diff --git a/external/libetonyek/ExternalPackage_libetonyek.mk b/external/libetonyek/ExternalPackage_libetonyek.mk
new file mode 100644
index 000000000..98d4763c8
--- /dev/null
+++ b/external/libetonyek/ExternalPackage_libetonyek.mk
@@ -0,0 +1,22 @@
+# -*- 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_ExternalPackage_ExternalPackage,libetonyek,libetonyek))
+
+$(eval $(call gb_ExternalPackage_use_external_project,libetonyek,libetonyek))
+
+ifeq ($(OS),MACOSX)
+$(eval $(call gb_ExternalPackage_add_file,libetonyek,$(LIBO_LIB_FOLDER)/libetonyek-0.1.1.dylib,src/lib/.libs/libetonyek-0.1.1.dylib))
+else ifeq ($(OS),WNT)
+$(eval $(call gb_ExternalPackage_add_file,libetonyek,$(LIBO_LIB_FOLDER)/libetonyek-0.1.dll,src/lib/.libs/libetonyek-0.1.dll))
+else ifeq ($(DISABLE_DYNLOADING),)
+$(eval $(call gb_ExternalPackage_add_file,libetonyek,$(LIBO_LIB_FOLDER)/libetonyek-0.1-lo.so.1,src/lib/.libs/libetonyek-0.1-lo.so.1.0.$(ETONYEK_VERSION_MICRO)))
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/ExternalProject_libetonyek.mk b/external/libetonyek/ExternalProject_libetonyek.mk
new file mode 100644
index 000000000..e0f2f3e08
--- /dev/null
+++ b/external/libetonyek/ExternalProject_libetonyek.mk
@@ -0,0 +1,67 @@
+# -*- 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,libetonyek))
+
+$(eval $(call gb_ExternalProject_use_autoconf,libetonyek,build))
+
+$(eval $(call gb_ExternalProject_register_targets,libetonyek,\
+ build \
+))
+
+$(eval $(call gb_ExternalProject_use_externals,libetonyek,\
+ boost_headers \
+ glm_headers \
+ liblangtag \
+ libxml2 \
+ mdds_headers \
+ revenge \
+ zlib \
+))
+
+$(call gb_ExternalProject_get_state_target,libetonyek,build) :
+ $(call gb_Trace_StartRange,libetonyek,EXTERNAL)
+ $(call gb_ExternalProject_run,build,\
+ export PKG_CONFIG="" \
+ && MAKE=$(MAKE) $(gb_RUN_CONFIGURE) ./configure \
+ --with-pic \
+ $(if $(DISABLE_DYNLOADING), \
+ --enable-static --disable-shared \
+ , \
+ --enable-shared --disable-static \
+ ) \
+ --without-docs \
+ $(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
+ --disable-tests \
+ --disable-werror \
+ --disable-weffc \
+ --without-tools \
+ --with-mdds=1.0 \
+ $(if $(filter WNT,$(OS_FOR_BUILD)),MKDIR_P="$(shell cygpath -m /usr/bin/mkdir) -p") \
+ $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \
+ $(if $(filter LINUX,$(OS)), \
+ 'LDFLAGS=-Wl$(COMMA)-z$(COMMA)origin \
+ -Wl$(COMMA)-rpath$(COMMA)\$$$$ORIGIN') \
+ CPPFLAGS="$(CPPFLAGS) $(BOOST_CPPFLAGS)" \
+ CXXFLAGS="$(gb_CXXFLAGS) $(call gb_ExternalProject_get_build_flags,libetonyek)" \
+ LANGTAG_CFLAGS="$(LIBLANGTAG_CFLAGS)" \
+ LANGTAG_LIBS="$(LIBLANGTAG_LIBS)" \
+ XML_CFLAGS="$(LIBXML_CFLAGS)" \
+ XML_LIBS="$(LIBXML_LIBS)" \
+ $(gb_CONFIGURE_PLATFORMS) \
+ $(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+ && $(MAKE) \
+ $(if $(filter MACOSX,$(OS)),\
+ && $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \
+ $(EXTERNAL_WORKDIR)/src/lib/.libs/libetonyek-0.1.1.dylib \
+ ) \
+ )
+ $(call gb_Trace_EndRange,libetonyek,EXTERNAL)
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/Library_etonyek.mk b/external/libetonyek/Library_etonyek.mk
new file mode 100644
index 000000000..87e21fc4b
--- /dev/null
+++ b/external/libetonyek/Library_etonyek.mk
@@ -0,0 +1,193 @@
+# -*- 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_Library_Library,etonyek))
+
+$(eval $(call gb_Library_use_unpacked,etonyek,libetonyek))
+
+$(eval $(call gb_Library_use_externals,etonyek,\
+ boost_headers \
+ glm_headers \
+ liblangtag \
+ libxml2 \
+ mdds_headers \
+ revenge \
+ zlib \
+))
+
+$(eval $(call gb_Library_set_warnings_disabled,etonyek))
+
+$(eval $(call gb_Library_set_precompiled_header,etonyek,external/libetonyek/inc/pch/precompiled_etonyek))
+
+$(eval $(call gb_Library_set_include,etonyek,\
+ -I$(call gb_UnpackedTarball_get_dir,libetonyek)/inc \
+ -I$(call gb_UnpackedTarball_get_dir,libetonyek)/src/lib \
+ -I$(call gb_UnpackedTarball_get_dir,libetonyek)/src/lib/contexts \
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_Library_add_defs,etonyek,\
+ -DBOOST_ALL_NO_LIB \
+ -DDLL_EXPORT \
+ -DLIBETONYEK_BUILD \
+ -DNDEBUG \
+))
+
+$(eval $(call gb_Library_set_generated_cxx_suffix,etonyek,cpp))
+
+$(eval $(call gb_Library_add_generated_exception_objects,etonyek,\
+ UnpackedTarball/libetonyek/src/lib/EtonyekDocument \
+ UnpackedTarball/libetonyek/src/lib/IWAField \
+ UnpackedTarball/libetonyek/src/lib/IWAMessage \
+ UnpackedTarball/libetonyek/src/lib/IWAObjectIndex \
+ UnpackedTarball/libetonyek/src/lib/IWAParser \
+ UnpackedTarball/libetonyek/src/lib/IWAReader \
+ UnpackedTarball/libetonyek/src/lib/IWASnappyStream \
+ UnpackedTarball/libetonyek/src/lib/IWAText \
+ UnpackedTarball/libetonyek/src/lib/IWORKChainedTokenizer \
+ UnpackedTarball/libetonyek/src/lib/IWORKChart \
+ UnpackedTarball/libetonyek/src/lib/IWORKCollector \
+ UnpackedTarball/libetonyek/src/lib/IWORKDictionary \
+ UnpackedTarball/libetonyek/src/lib/IWORKDiscardContext \
+ UnpackedTarball/libetonyek/src/lib/IWORKDocumentInterface \
+ UnpackedTarball/libetonyek/src/lib/IWORKFormula \
+ UnpackedTarball/libetonyek/src/lib/IWORKLanguageManager \
+ UnpackedTarball/libetonyek/src/lib/IWORKMemoryStream \
+ UnpackedTarball/libetonyek/src/lib/IWORKOutputElements \
+ UnpackedTarball/libetonyek/src/lib/IWORKOutputManager \
+ UnpackedTarball/libetonyek/src/lib/IWORKParser \
+ UnpackedTarball/libetonyek/src/lib/IWORKPath \
+ UnpackedTarball/libetonyek/src/lib/IWORKPresentationRedirector \
+ UnpackedTarball/libetonyek/src/lib/IWORKProperties \
+ UnpackedTarball/libetonyek/src/lib/IWORKPropertyHandler \
+ UnpackedTarball/libetonyek/src/lib/IWORKPropertyMap \
+ UnpackedTarball/libetonyek/src/lib/IWORKRecorder \
+ UnpackedTarball/libetonyek/src/lib/IWORKShape \
+ UnpackedTarball/libetonyek/src/lib/IWORKSpreadsheetRedirector \
+ UnpackedTarball/libetonyek/src/lib/IWORKStyle \
+ UnpackedTarball/libetonyek/src/lib/IWORKStyleStack \
+ UnpackedTarball/libetonyek/src/lib/IWORKStylesheet \
+ UnpackedTarball/libetonyek/src/lib/IWORKSubDirStream \
+ UnpackedTarball/libetonyek/src/lib/IWORKTable \
+ UnpackedTarball/libetonyek/src/lib/IWORKTableRecorder \
+ UnpackedTarball/libetonyek/src/lib/IWORKText \
+ UnpackedTarball/libetonyek/src/lib/IWORKTextRecorder \
+ UnpackedTarball/libetonyek/src/lib/IWORKTextRedirector \
+ UnpackedTarball/libetonyek/src/lib/IWORKToken \
+ UnpackedTarball/libetonyek/src/lib/IWORKTokenizer \
+ UnpackedTarball/libetonyek/src/lib/IWORKTokenizerBase \
+ UnpackedTarball/libetonyek/src/lib/IWORKTransformation \
+ UnpackedTarball/libetonyek/src/lib/IWORKTypes \
+ UnpackedTarball/libetonyek/src/lib/IWORKXMLContext \
+ UnpackedTarball/libetonyek/src/lib/IWORKXMLContextBase \
+ UnpackedTarball/libetonyek/src/lib/IWORKXMLParserState \
+ UnpackedTarball/libetonyek/src/lib/IWORKZlibStream \
+ UnpackedTarball/libetonyek/src/lib/KEY1Dictionary \
+ UnpackedTarball/libetonyek/src/lib/KEY1Parser \
+ UnpackedTarball/libetonyek/src/lib/KEY1ParserState \
+ UnpackedTarball/libetonyek/src/lib/KEY1Token \
+ UnpackedTarball/libetonyek/src/lib/KEY2Dictionary \
+ UnpackedTarball/libetonyek/src/lib/KEY2Parser \
+ UnpackedTarball/libetonyek/src/lib/KEY2ParserState \
+ UnpackedTarball/libetonyek/src/lib/KEY2Token \
+ UnpackedTarball/libetonyek/src/lib/KEY6Parser \
+ UnpackedTarball/libetonyek/src/lib/KEYCollector \
+ UnpackedTarball/libetonyek/src/lib/KEYProperties \
+ UnpackedTarball/libetonyek/src/lib/KEYTypes \
+ UnpackedTarball/libetonyek/src/lib/NUM1Dictionary \
+ UnpackedTarball/libetonyek/src/lib/NUM1Parser \
+ UnpackedTarball/libetonyek/src/lib/NUM1ParserState \
+ UnpackedTarball/libetonyek/src/lib/NUM1Token \
+ UnpackedTarball/libetonyek/src/lib/NUM3Parser \
+ UnpackedTarball/libetonyek/src/lib/NUMCollector \
+ UnpackedTarball/libetonyek/src/lib/PAG1Dictionary \
+ UnpackedTarball/libetonyek/src/lib/PAG1Parser \
+ UnpackedTarball/libetonyek/src/lib/PAG1ParserState \
+ UnpackedTarball/libetonyek/src/lib/PAG1Token \
+ UnpackedTarball/libetonyek/src/lib/PAG5Parser \
+ UnpackedTarball/libetonyek/src/lib/PAGCollector \
+ UnpackedTarball/libetonyek/src/lib/PAGProperties \
+ UnpackedTarball/libetonyek/src/lib/PAGTypes \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKBezierElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKBinaryElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKBrContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKCalcEngineContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKCellCommentDrawableInfoElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKChartInfoElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKColorElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKCoreImageFilterDescriptorElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKDataElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKFieldElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKFillElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKFilteredImageElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKFormatElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKFormulaElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKGeometryElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKGroupElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKHeaderFooterContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKImageContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKImageElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKLayoutElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKLineElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKLineEndElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKLinkElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKListLabelGeometriesProperty \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKListLabelGeometryElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKListLabelIndentsProperty \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKListLabelTypeinfoElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKListLabelTypesProperty \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKListTextIndentsProperty \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKMediaElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKMetadataElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKNumberConverter \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKPElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKPathElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKPositionElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKPropertyContextBase \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKPropertyMapElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKRefContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKShapeContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKSizeElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKSpanElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKStringElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKStrokeContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKStyleContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKStyleRefContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKStylesContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKStylesheetBase \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTabElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTableInfoElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTabsElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTabularInfoElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTabularModelElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTextBodyElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTextElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTextLabelElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKTextStorageElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKUnfilteredElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/IWORKWrapElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/KEY1ContentElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/KEY1DivElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/KEY1FillElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/KEY1SpanElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/KEY1StringConverter \
+ UnpackedTarball/libetonyek/src/lib/contexts/KEY1StylesContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/KEY1TableElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/KEY2StyleContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/PAG1AnnotationContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/PAG1AnnotationElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/PAG1FootnotesElement \
+ UnpackedTarball/libetonyek/src/lib/contexts/PAG1ShapeContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/PAG1StyleContext \
+ UnpackedTarball/libetonyek/src/lib/contexts/PAG1TextStorageElement \
+ UnpackedTarball/libetonyek/src/lib/libetonyek_utils \
+ UnpackedTarball/libetonyek/src/lib/libetonyek_xml \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/Makefile b/external/libetonyek/Makefile
new file mode 100644
index 000000000..e4968cf85
--- /dev/null
+++ b/external/libetonyek/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/Module_libetonyek.mk b/external/libetonyek/Module_libetonyek.mk
new file mode 100644
index 000000000..94fd6ca0d
--- /dev/null
+++ b/external/libetonyek/Module_libetonyek.mk
@@ -0,0 +1,31 @@
+# -*- 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_Module_Module,libetonyek))
+
+$(eval $(call gb_Module_add_targets,libetonyek,\
+ UnpackedTarball_libetonyek \
+))
+
+ifeq ($(COM),MSC)
+
+$(eval $(call gb_Module_add_targets,libetonyek,\
+ Library_etonyek \
+))
+
+else
+
+$(eval $(call gb_Module_add_targets,libetonyek,\
+ ExternalPackage_libetonyek \
+ ExternalProject_libetonyek \
+))
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/README b/external/libetonyek/README
new file mode 100644
index 000000000..5fe625372
--- /dev/null
+++ b/external/libetonyek/README
@@ -0,0 +1,3 @@
+Library for import of Apple Keynote presentations.
+
+[https://wiki.documentfoundation.org/DLP/Libraries/libetonyek]
diff --git a/external/libetonyek/UnpackedTarball_libetonyek.mk b/external/libetonyek/UnpackedTarball_libetonyek.mk
new file mode 100644
index 000000000..81a3fa5b8
--- /dev/null
+++ b/external/libetonyek/UnpackedTarball_libetonyek.mk
@@ -0,0 +1,38 @@
+# -*- 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_UnpackedTarball_UnpackedTarball,libetonyek))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,libetonyek,$(ETONYEK_TARBALL)))
+
+$(eval $(call gb_UnpackedTarball_set_patchlevel,libetonyek,0))
+
+$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libetonyek))
+
+$(eval $(call gb_UnpackedTarball_add_patches,libetonyek,\
+ external/libetonyek/win_build.patch.1 \
+ external/libetonyek/ubsan.patch \
+ external/libetonyek/rpath.patch \
+ external/libetonyek/warnings.patch \
+ external/libetonyek/0001-fix-build-with-MSVC.patch.1 \
+ external/libetonyek/0002-fix-build-with-MSVC.patch.1 \
+ external/libetonyek/0001-allow-0-size-message.patch.1 \
+))
+
+ifneq ($(OS),MACOSX)
+ifneq ($(OS),WNT)
+ifneq ($(OS),iOS)
+$(eval $(call gb_UnpackedTarball_add_patches,libetonyek,\
+ external/libetonyek/libetonyek-bundled-soname.patch.0 \
+))
+endif
+endif
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/inc/pch/precompiled_etonyek.cxx b/external/libetonyek/inc/pch/precompiled_etonyek.cxx
new file mode 100644
index 000000000..56f4f6a2e
--- /dev/null
+++ b/external/libetonyek/inc/pch/precompiled_etonyek.cxx
@@ -0,0 +1,12 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ */
+
+#include "precompiled_etonyek.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/external/libetonyek/inc/pch/precompiled_etonyek.hxx b/external/libetonyek/inc/pch/precompiled_etonyek.hxx
new file mode 100644
index 000000000..9af8b1c25
--- /dev/null
+++ b/external/libetonyek/inc/pch/precompiled_etonyek.hxx
@@ -0,0 +1,79 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ */
+
+/*
+ This file has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2019-05-18 15:09:41 using:
+ ./bin/update_pch external/libetonyek etonyek --cutoff=1 --exclude:system --include:module --include:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./external/libetonyek/inc/pch/precompiled_etonyek.hxx "make external/libetonyek.build" --find-conflicts
+*/
+
+#if PCH_LEVEL >= 1
+#include <algorithm>
+#include <cassert>
+#include <cmath>
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
+#include <deque>
+#include <functional>
+#include <iomanip>
+#include <iterator>
+#include <libetonyek_utils.h>
+#include <libetonyek_xml.h>
+#include <limits>
+#include <map>
+#include <memory>
+#include <set>
+#include <sstream>
+#include <stack>
+#include <stdexcept>
+#include <string>
+#include <utility>
+#include <vector>
+#include <zlib.h>
+#include <boost/algorithm/string/predicate.hpp>
+#include <boost/fusion/adapted/std_pair.hpp>
+#include <boost/fusion/include/adapt_struct.hpp>
+#include <boost/fusion/include/std_pair.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/none.hpp>
+#include <boost/numeric/conversion/cast.hpp>
+#include <boost/optional.hpp>
+#include <boost/spirit/include/phoenix.hpp>
+#include <boost/spirit/include/qi.hpp>
+#include <boost/spirit/include/qi_attr.hpp>
+#include <boost/spirit/include/qi_lit.hpp>
+#include <boost/spirit/include/qi_optional.hpp>
+#include <boost/spirit/include/qi_parse_attr.hpp>
+#include <boost/spirit/include/qi_sequence.hpp>
+#include <boost/spirit/include/qi_symbols.hpp>
+#include <boost/variant.hpp>
+#include <boost/variant/recursive_variant.hpp>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <glm/glm.hpp>
+#include <libetonyek/libetonyek.h>
+#include <librevenge/librevenge.h>
+#include <libxml/xmlreader.h>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/external/libetonyek/libetonyek-bundled-soname.patch.0 b/external/libetonyek/libetonyek-bundled-soname.patch.0
new file mode 100644
index 000000000..15a58fa83
--- /dev/null
+++ b/external/libetonyek/libetonyek-bundled-soname.patch.0
@@ -0,0 +1,11 @@
+--- src/lib/Makefile.in.orig 2016-01-12 19:21:24.000000000 +0100
++++ src/lib/Makefile.in 2016-03-02 18:19:52.214551270 +0100
+@@ -538,7 +538,7 @@
+ $(XML_CFLAGS) $(ZLIB_CFLAGS) $(DEBUG_CXXFLAGS) $(am__append_1)
+ libetonyek_@ETONYEK_MAJOR_VERSION@_@ETONYEK_MINOR_VERSION@_la_LIBADD = libetonyek_internal.la $(REVENGE_LIBS) $(LANGTAG_LIBS) $(XML_LIBS) $(ZLIB_LIBS) @LIBETONYEK_WIN32_RESOURCE@
+ libetonyek_@ETONYEK_MAJOR_VERSION@_@ETONYEK_MINOR_VERSION@_la_DEPENDENCIES = libetonyek_internal.la @LIBETONYEK_WIN32_RESOURCE@
+-libetonyek_@ETONYEK_MAJOR_VERSION@_@ETONYEK_MINOR_VERSION@_la_LDFLAGS = $(version_info) -export-dynamic -no-undefined
++libetonyek_@ETONYEK_MAJOR_VERSION@_@ETONYEK_MINOR_VERSION@_la_LDFLAGS = $(version_info) -export-dynamic -no-undefined -release lo
+ libetonyek_@ETONYEK_MAJOR_VERSION@_@ETONYEK_MINOR_VERSION@_la_SOURCES = \
+ EtonyekDocument.cpp
+
diff --git a/external/libetonyek/rpath.patch b/external/libetonyek/rpath.patch
new file mode 100644
index 000000000..3a6280597
--- /dev/null
+++ b/external/libetonyek/rpath.patch
@@ -0,0 +1,10 @@
+--- configure
++++ configure
+@@ -14451,6 +14451,7 @@
+ esac
+ ;;
+ esac
++hardcode_libdir_flag_spec_CXX=
+ ;;
+
+ lynxos*)
diff --git a/external/libetonyek/ubsan.patch b/external/libetonyek/ubsan.patch
new file mode 100644
index 000000000..260e9f33d
--- /dev/null
+++ b/external/libetonyek/ubsan.patch
@@ -0,0 +1,11 @@
+--- src/lib/libetonyek_xml.cpp
++++ src/lib/libetonyek_xml.cpp
+@@ -35,7 +35,7 @@
+ unsigned long bytesRead = 0;
+ const unsigned char *const bytes = input->read((unsigned long)len, bytesRead);
+
+- std::memcpy(buffer, bytes, static_cast<size_t>(bytesRead));
++ if (bytesRead != 0) std::memcpy(buffer, bytes, static_cast<size_t>(bytesRead));
+ return static_cast<int>(bytesRead);
+ }
+ catch (...)
diff --git a/external/libetonyek/warnings.patch b/external/libetonyek/warnings.patch
new file mode 100644
index 000000000..841d70cb6
--- /dev/null
+++ b/external/libetonyek/warnings.patch
@@ -0,0 +1,11 @@
+--- src/lib/IWORKXMLContext.cpp
++++ src/lib/IWORKXMLContext.cpp
+@@ -18,7 +18,7 @@
+ {
+ }
+
+-void IWORKXMLContext::CDATA(const char */*value*/)
++void IWORKXMLContext::CDATA(const char * /*value*/)
+ {
+ ETONYEK_DEBUG_MSG(("IWORKXMLContext::cData: find unexpected CDATA block\n"));
+ }
diff --git a/external/libetonyek/win_build.patch.1 b/external/libetonyek/win_build.patch.1
new file mode 100644
index 000000000..a357737d8
--- /dev/null
+++ b/external/libetonyek/win_build.patch.1
@@ -0,0 +1,13 @@
+Fix the windows build - fix libtool
+
+--- libetonyek/ltmain.sh.orig 2015-05-20 00:47:55.378800000 +0200
++++ libetonyek/ltmain.sh 2015-05-20 00:47:33.648000000 +0200
+@@ -3722,6 +3722,8 @@
+ sleep 2
+ done
+ fi
++ # Cygwin ar.exe does not create directories for the objects!
++ mkdir -p $f_ex_an_ar_dir/contexts
+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+ 'stat=$?; rm -f "$lockfile"; exit $stat'
+ if test yes = "$lock_old_archive_extraction"; then