[Libreoffice-commits] core.git: 2 commits - config_host.mk.in configure.ac download.lst external/libodfgen external/librevenge external/Module_external.mk Makefile.fetch RepositoryExternal.mk

David Tardon dtardon at redhat.com
Sun May 25 03:49:44 PDT 2014


 Makefile.fetch                                             |    1 
 RepositoryExternal.mk                                      |   83 +
 config_host.mk.in                                          |    2 
 configure.ac                                               |    5 
 download.lst                                               |    2 
 external/Module_external.mk                                |    1 
 external/libodfgen/0001-properly-export-API-symbols.patch  |  149 ++
 external/libodfgen/ExternalPackage_libodfgen.mk            |   22 
 external/libodfgen/ExternalProject_libodfgen.mk            |   11 
 external/libodfgen/Library_odfgen.mk                       |   50 
 external/libodfgen/Module_libodfgen.mk                     |   16 
 external/libodfgen/UnpackedTarball_libodfgen.mk            |    6 
 external/librevenge/0001-properly-export-API-symbols.patch |  752 +++++++++++++
 external/librevenge/ExternalPackage_librevenge.mk          |   22 
 external/librevenge/ExternalProject_librevenge.mk          |   44 
 external/librevenge/Library_revenge.mk                     |   48 
 external/librevenge/Makefile                               |    7 
 external/librevenge/Module_librevenge.mk                   |   31 
 external/librevenge/README                                 |    3 
 external/librevenge/UnpackedTarball_librevenge.mk          |   20 
 20 files changed, 1267 insertions(+), 8 deletions(-)

New commits:
commit b421ce79e39867917ba53be7bf69c8a4e7f8a8ac
Author: David Tardon <dtardon at redhat.com>
Date:   Sat May 24 08:39:54 2014 +0200

    bundle librevenge
    
    Change-Id: Ic36c1670866545db2cf2f29867de7e5b0ad2d57d

diff --git a/Makefile.fetch b/Makefile.fetch
index b9f500f..204c8f8 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -195,6 +195,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
 		$(call fetch_Optional,REDLAND,RAPTOR_TARBALL) \
 		$(call fetch_Optional,REDLAND,RASQAL_TARBALL) \
 		$(call fetch_Optional,REDLAND,REDLAND_TARBALL) \
+		$(call fetch_Optional,REVENGE,REVENGE_TARBALL) \
 		$(call fetch_Optional,RHINO,RHINO_TARBALL) \
 		$(call fetch_Optional,RHINO,SWING_TARBALL) \
 		$(call fetch_Optional,SERF,SERF_TARBALL) \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 52c4c6d..13eb221 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -1761,6 +1761,59 @@ endif
 endif # SYSTEM_ODFGEN
 
 
+ifneq ($(SYSTEM_REVENGE),)
+
+define gb_LinkTarget__use_revenge
+$(call gb_LinkTarget_set_include,$(1),\
+	$$(INCLUDE) \
+    $(REVENGE_CFLAGS) \
+)
+$(call gb_LinkTarget_add_libs,$(1),$(REVENGE_LIBS))
+
+endef
+
+else # !SYSTEM_REVENGE
+
+ifeq ($(COM),MSC)
+
+$(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo,\
+	revenge \
+))
+
+define gb_LinkTarget__use_revenge
+$(call gb_LinkTarget_set_include,$(1),\
+	-I$(call gb_UnpackedTarball_get_dir,librevenge)/inc \
+	$$(INCLUDE) \
+)
+$(call gb_LinkTarget_use_libraries,$(1),\
+	revenge \
+)
+
+endef
+
+else # !MSC
+
+$(eval $(call gb_Helper_register_packages_for_install,ooo, \
+	librevenge \
+))
+
+define gb_LinkTarget__use_revenge
+$(call gb_LinkTarget_use_package,$(1),librevenge)
+
+$(call gb_LinkTarget_set_include,$(1),\
+	-I$(call gb_UnpackedTarball_get_dir,librevenge)/inc \
+	$$(INCLUDE) \
+)
+$(call gb_LinkTarget_add_libs,$(1),\
+	-L$(call gb_UnpackedTarball_get_dir,librevenge)/src/lib/.libs -lrevenge-0.0 \
+)
+endef
+
+endif # MSC
+
+endif # SYSTEM_REVENGE
+
+
 ifneq ($(SYSTEM_ABW),)
 
 define gb_LinkTarget__use_abw
diff --git a/config_host.mk.in b/config_host.mk.in
index b287539..27615e9 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -464,6 +464,8 @@ export RASQAL_MAJOR=@RASQAL_MAJOR@
 export REDLAND_CFLAGS=$(gb_SPACE)@REDLAND_CFLAGS@
 export REDLAND_LIBS=$(gb_SPACE)@REDLAND_LIBS@
 export REDLAND_MAJOR=@REDLAND_MAJOR@
+export REVENGE_CFLAGS=$(gb_SPACE)@REVENGE_CFLAGS@
+export REVENGE_LIBS=$(gb_SPACE)@REVENGE_LIBS@
 export RHINO_JAR=@RHINO_JAR@
 export RPM=@RPM@
 export RTL_ARCH=@RTL_ARCH@
diff --git a/configure.ac b/configure.ac
index d407a5e..ad27916 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7663,6 +7663,11 @@ fi
 AC_SUBST([ENABLE_EOT])
 
 dnl ===================================================================
+dnl Check for system librevenge
+dnl ===================================================================
+libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0])
+
+dnl ===================================================================
 dnl Check for system libe-book
 dnl ===================================================================
 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.0 >= 0.0.2],["-I${WORKDIR}/UnpackedTarball/libebook/inc"],["-L${WORKDIR}/UnpackedTarball/libebook/src/lib/.libs -le-book-0.0"])
diff --git a/download.lst b/download.lst
index 0601ccd..19cfb4b 100644
--- a/download.lst
+++ b/download.lst
@@ -121,6 +121,8 @@ export PYTHON_TARBALL := Python-3.3.5.tgz
 export RAPTOR_TARBALL := 4ceb9316488b0ea01acf011023cf7fff-raptor2-2.0.9.tar.gz
 export RASQAL_TARBALL := b12c5f9cfdb6b04efce5a4a186b8416b-rasqal-0.9.30.tar.gz
 export REDLAND_TARBALL := 32f8e1417a64d3c6f2c727f9053f55ea-redland-1.0.16.tar.gz
+export REVENGE_MD5SUM := b483b99af21c92c763a1c6a28ebee958
+export REVENGE_TARBALL := librevenge-0.0.0.tar.bz2
 export RHINO_TARBALL := 798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
 export SERF_MD5SUM := 4f8e76c9c6567aee1d66aba49f76a58b
 export SERF_TARBALL := serf-1.2.1.tar.bz2
diff --git a/external/Module_external.mk b/external/Module_external.mk
index 4f9dde6..7049278 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -84,6 +84,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
 	$(call gb_Helper_optional,POSTGRESQL,postgresql) \
 	$(call gb_Helper_optional,PYTHON,python3) \
 	$(call gb_Helper_optional,REDLAND,redland) \
+	$(call gb_Helper_optional,REVENGE,librevenge) \
 	$(call gb_Helper_optional,RHINO,rhino) \
 	$(call gb_Helper_optional,SERF,serf) \
 	$(call gb_Helper_optional,UCPP,ucpp) \
diff --git a/external/librevenge/0001-properly-export-API-symbols.patch b/external/librevenge/0001-properly-export-API-symbols.patch
new file mode 100644
index 0000000..64513a0
--- /dev/null
+++ b/external/librevenge/0001-properly-export-API-symbols.patch
@@ -0,0 +1,752 @@
+From d0df6db52ae8db3b3e9549837e698a091474e727 Mon Sep 17 00:00:00 2001
+From: David Tardon <dtardon at redhat.com>
+Date: Sun, 25 May 2014 08:52:57 +0200
+Subject: [PATCH] properly export API symbols
+
+---
+ inc/librevenge-generators/Makefile.am              |  1 +
+ .../RVNGCSVSpreadsheetGenerator.h                  |  4 ++-
+ inc/librevenge-generators/RVNGHTMLTextGenerator.h  |  4 ++-
+ .../RVNGRawDrawingGenerator.h                      |  4 ++-
+ .../RVNGRawPresentationGenerator.h                 |  4 ++-
+ .../RVNGRawSpreadsheetGenerator.h                  |  4 ++-
+ inc/librevenge-generators/RVNGRawTextGenerator.h   |  4 ++-
+ .../RVNGSVGPresentationGenerator.h                 |  4 ++-
+ .../RVNGTextDrawingGenerator.h                     |  4 ++-
+ .../RVNGTextPresentationGenerator.h                |  9 +++++-
+ .../RVNGTextSpreadsheetGenerator.h                 |  4 ++-
+ inc/librevenge-generators/RVNGTextTextGenerator.h  |  4 ++-
+ .../librevenge-generators-api.h                    | 36 ++++++++++++++++++++++
+ inc/librevenge-stream/Makefile.am                  |  1 +
+ inc/librevenge-stream/RVNGDirectoryStream.h        |  4 ++-
+ inc/librevenge-stream/RVNGStream.h                 |  4 ++-
+ inc/librevenge-stream/RVNGStreamImplementation.h   |  6 ++--
+ inc/librevenge-stream/librevenge-stream-api.h      | 36 ++++++++++++++++++++++
+ inc/librevenge/Makefile.am                         |  1 +
+ inc/librevenge/RVNGBinaryData.h                    |  5 ++-
+ inc/librevenge/RVNGDrawingInterface.h              |  4 ++-
+ inc/librevenge/RVNGPresentationInterface.h         |  4 ++-
+ inc/librevenge/RVNGProperty.h                      |  7 +++--
+ inc/librevenge/RVNGPropertyList.h                  |  5 ++-
+ inc/librevenge/RVNGPropertyListVector.h            |  4 ++-
+ inc/librevenge/RVNGSVGDrawingGenerator.h           |  4 ++-
+ inc/librevenge/RVNGSpreadsheetInterface.h          |  4 ++-
+ inc/librevenge/RVNGString.h                        |  4 ++-
+ inc/librevenge/RVNGStringVector.h                  |  4 ++-
+ inc/librevenge/RVNGTextInterface.h                 |  4 ++-
+ inc/librevenge/librevenge-api.h                    | 36 ++++++++++++++++++++++
+ src/lib/Makefile.am                                |  6 ++++
+ 32 files changed, 202 insertions(+), 27 deletions(-)
+ create mode 100644 inc/librevenge-generators/librevenge-generators-api.h
+ create mode 100644 inc/librevenge-stream/librevenge-stream-api.h
+ create mode 100644 inc/librevenge/librevenge-api.h
+
+diff --git a/inc/librevenge-generators/RVNGCSVSpreadsheetGenerator.h b/inc/librevenge-generators/RVNGCSVSpreadsheetGenerator.h
+index 40cce77..084b55c 100644
+--- a/inc/librevenge-generators/RVNGCSVSpreadsheetGenerator.h
++++ b/inc/librevenge-generators/RVNGCSVSpreadsheetGenerator.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGCSVSPREADSHEETGENERATOR_H
+ #define RVNGCSVSPREADSHEETGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -32,7 +34,7 @@ struct RVNGCSVSpreadsheetGeneratorImpl;
+   *
+   * See \c ::librevenge::RVNGSpreadsheetInterface for documentation of the basic interface.
+   */
+-class RVNGCSVSpreadsheetGenerator : public RVNGSpreadsheetInterface
++class REVENGE_GENERATORS_API RVNGCSVSpreadsheetGenerator : public RVNGSpreadsheetInterface
+ {
+ 	//! unimplemented copy constructor to prevent copy
+ 	RVNGCSVSpreadsheetGenerator(const RVNGCSVSpreadsheetGenerator &other);
+diff --git a/inc/librevenge-generators/RVNGHTMLTextGenerator.h b/inc/librevenge-generators/RVNGHTMLTextGenerator.h
+index 9bb9b77..6dacfb8 100644
+--- a/inc/librevenge-generators/RVNGHTMLTextGenerator.h
++++ b/inc/librevenge-generators/RVNGHTMLTextGenerator.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGHTMLTEXTGENERATOR_H
+ #define RVNGHTMLTEXTGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -29,7 +31,7 @@ namespace librevenge
+ 
+ struct RVNGHTMLTextGeneratorImpl;
+ 
+-class RVNGHTMLTextGenerator : public RVNGTextInterface
++class REVENGE_GENERATORS_API RVNGHTMLTextGenerator : public RVNGTextInterface
+ {
+ public:
+ 	explicit RVNGHTMLTextGenerator(RVNGString &document);
+diff --git a/inc/librevenge-generators/RVNGRawDrawingGenerator.h b/inc/librevenge-generators/RVNGRawDrawingGenerator.h
+index 2b60cc3..a0a6475 100644
+--- a/inc/librevenge-generators/RVNGRawDrawingGenerator.h
++++ b/inc/librevenge-generators/RVNGRawDrawingGenerator.h
+@@ -22,6 +22,8 @@
+ #ifndef RVNGRAWDRAWINGGENERATOR_H
+ #define RVNGRAWDRAWINGGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge-stream/librevenge-stream.h>
+ #include <librevenge/librevenge.h>
+ 
+@@ -30,7 +32,7 @@ namespace librevenge
+ 
+ struct RVNGRawDrawingGeneratorImpl;
+ 
+-class RVNGRawDrawingGenerator : public RVNGDrawingInterface
++class REVENGE_GENERATORS_API RVNGRawDrawingGenerator : public RVNGDrawingInterface
+ {
+ 	// disable copying
+ 	RVNGRawDrawingGenerator(const RVNGRawDrawingGenerator &other);
+diff --git a/inc/librevenge-generators/RVNGRawPresentationGenerator.h b/inc/librevenge-generators/RVNGRawPresentationGenerator.h
+index 8a3f1c9..9438541 100644
+--- a/inc/librevenge-generators/RVNGRawPresentationGenerator.h
++++ b/inc/librevenge-generators/RVNGRawPresentationGenerator.h
+@@ -15,6 +15,8 @@
+ #ifndef RVNGRAWPRESENTATIONGENERATOR_H
+ #define RVNGRAWPRESENTATIONGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -23,7 +25,7 @@ namespace librevenge
+ 
+ struct RVNGRawPresentationGeneratorImpl;
+ 
+-class RVNGRawPresentationGenerator : public RVNGPresentationInterface
++class REVENGE_GENERATORS_API RVNGRawPresentationGenerator : public RVNGPresentationInterface
+ {
+ 	// disable copying
+ 	RVNGRawPresentationGenerator(const RVNGRawPresentationGenerator &other);
+diff --git a/inc/librevenge-generators/RVNGRawSpreadsheetGenerator.h b/inc/librevenge-generators/RVNGRawSpreadsheetGenerator.h
+index ff584c7..84be1c1 100644
+--- a/inc/librevenge-generators/RVNGRawSpreadsheetGenerator.h
++++ b/inc/librevenge-generators/RVNGRawSpreadsheetGenerator.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGRAWSPREADSHEETGENERATOR_H
+ #define RVNGRAWSPREADSHEETGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -29,7 +31,7 @@ namespace librevenge
+ 
+ struct RVNGRawSpreadsheetGeneratorImpl;
+ 
+-class RVNGRawSpreadsheetGenerator : public RVNGSpreadsheetInterface
++class REVENGE_GENERATORS_API RVNGRawSpreadsheetGenerator : public RVNGSpreadsheetInterface
+ {
+ 	// disable copying
+ 	RVNGRawSpreadsheetGenerator(const RVNGRawSpreadsheetGenerator &other);
+diff --git a/inc/librevenge-generators/RVNGRawTextGenerator.h b/inc/librevenge-generators/RVNGRawTextGenerator.h
+index 2df33d4..7781b07 100644
+--- a/inc/librevenge-generators/RVNGRawTextGenerator.h
++++ b/inc/librevenge-generators/RVNGRawTextGenerator.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGRAWTEXTGENERATOR_H
+ #define RVNGRAWTEXTGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -29,7 +31,7 @@ namespace librevenge
+ 
+ struct RVNGRawTextGeneratorImpl;
+ 
+-class RVNGRawTextGenerator : public RVNGTextInterface
++class REVENGE_GENERATORS_API RVNGRawTextGenerator : public RVNGTextInterface
+ {
+ 	// disable copying
+ 	RVNGRawTextGenerator(const RVNGRawTextGenerator &other);
+diff --git a/inc/librevenge-generators/RVNGSVGPresentationGenerator.h b/inc/librevenge-generators/RVNGSVGPresentationGenerator.h
+index 996ee35..2e18da1 100644
+--- a/inc/librevenge-generators/RVNGSVGPresentationGenerator.h
++++ b/inc/librevenge-generators/RVNGSVGPresentationGenerator.h
+@@ -15,6 +15,8 @@
+ #ifndef RVNGSVGPRESENTATIONGENERATOR_H
+ #define RVNGSVGPRESENTATIONGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -23,7 +25,7 @@ namespace librevenge
+ 
+ struct RVNGSVGPresentationGeneratorImpl;
+ 
+-class RVNGSVGPresentationGenerator : public RVNGPresentationInterface
++class REVENGE_GENERATORS_API RVNGSVGPresentationGenerator : public RVNGPresentationInterface
+ {
+ 	// disable copying
+ 	RVNGSVGPresentationGenerator(const RVNGSVGPresentationGenerator &other);
+diff --git a/inc/librevenge-generators/RVNGTextDrawingGenerator.h b/inc/librevenge-generators/RVNGTextDrawingGenerator.h
+index ba9a9cc..2b3160e 100644
+--- a/inc/librevenge-generators/RVNGTextDrawingGenerator.h
++++ b/inc/librevenge-generators/RVNGTextDrawingGenerator.h
+@@ -15,6 +15,8 @@
+ #ifndef RVNGTEXTDRAWINGGENERATOR_H
+ #define RVNGTEXTDRAWINGGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge-stream/librevenge-stream.h>
+ #include <librevenge/librevenge.h>
+ 
+@@ -23,7 +25,7 @@ namespace librevenge
+ 
+ struct RVNGTextDrawingGeneratorImpl;
+ 
+-class RVNGTextDrawingGenerator : public RVNGDrawingInterface
++class REVENGE_GENERATORS_API RVNGTextDrawingGenerator : public RVNGDrawingInterface
+ {
+ 	// disable copying
+ 	RVNGTextDrawingGenerator(const RVNGTextDrawingGenerator &other);
+diff --git a/inc/librevenge-generators/RVNGTextPresentationGenerator.h b/inc/librevenge-generators/RVNGTextPresentationGenerator.h
+index f89691e..9bef369 100644
+--- a/inc/librevenge-generators/RVNGTextPresentationGenerator.h
++++ b/inc/librevenge-generators/RVNGTextPresentationGenerator.h
+@@ -12,6 +12,11 @@
+  * applicable instead of those above.
+  */
+ 
++#ifndef RVNGTEXTPRESENTATIONGENERATOR_H
++#define RVNGTEXTPRESENTATIONGENERATOR_H
++
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -20,7 +25,7 @@ namespace librevenge
+ 
+ struct RVNGTextPresentationGeneratorImpl;
+ 
+-class RVNGTextPresentationGenerator : public RVNGPresentationInterface
++class REVENGE_GENERATORS_API RVNGTextPresentationGenerator : public RVNGPresentationInterface
+ {
+ 	// disable copying
+ 	RVNGTextPresentationGenerator(const RVNGTextPresentationGenerator &other);
+@@ -124,4 +129,6 @@ private:
+ 
+ }
+ 
++#endif
++
+ /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
+diff --git a/inc/librevenge-generators/RVNGTextSpreadsheetGenerator.h b/inc/librevenge-generators/RVNGTextSpreadsheetGenerator.h
+index e140153..9ac9dc8 100644
+--- a/inc/librevenge-generators/RVNGTextSpreadsheetGenerator.h
++++ b/inc/librevenge-generators/RVNGTextSpreadsheetGenerator.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGTEXTSPREADSHEETGENERATOR_H
+ #define RVNGTEXTSPREADSHEETGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -32,7 +34,7 @@ struct RVNGTextSpreadsheetGeneratorImpl;
+   *
+   * See \c ::librevenge::RVNGSpreadsheetInterface for documentation of the basic interface.
+   */
+-class RVNGTextSpreadsheetGenerator : public RVNGSpreadsheetInterface
++class REVENGE_GENERATORS_API RVNGTextSpreadsheetGenerator : public RVNGSpreadsheetInterface
+ {
+ 	//! unimplemented copy constructor to prevent copy
+ 	RVNGTextSpreadsheetGenerator(const RVNGTextSpreadsheetGenerator &other);
+diff --git a/inc/librevenge-generators/RVNGTextTextGenerator.h b/inc/librevenge-generators/RVNGTextTextGenerator.h
+index 87828fd..ec657d5 100644
+--- a/inc/librevenge-generators/RVNGTextTextGenerator.h
++++ b/inc/librevenge-generators/RVNGTextTextGenerator.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGTEXTTEXTGENERATOR_H
+ #define RVNGTEXTTEXTGENERATOR_H
+ 
++#include "librevenge-generators-api.h"
++
+ #include <librevenge/librevenge.h>
+ #include <librevenge-stream/librevenge-stream.h>
+ 
+@@ -29,7 +31,7 @@ namespace librevenge
+ 
+ struct RVNGTextTextGeneratorImpl;
+ 
+-class RVNGTextTextGenerator : public RVNGTextInterface
++class REVENGE_GENERATORS_API RVNGTextTextGenerator : public RVNGTextInterface
+ {
+ 	// disable copying
+ 	RVNGTextTextGenerator(const RVNGTextTextGenerator &other);
+diff --git a/inc/librevenge-generators/librevenge-generators-api.h b/inc/librevenge-generators/librevenge-generators-api.h
+new file mode 100644
+index 0000000..8d4a5ea
+--- /dev/null
++++ b/inc/librevenge-generators/librevenge-generators-api.h
+@@ -0,0 +1,36 @@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
++/* librevenge
++ * Version: MPL 2.0 / LGPLv2.1+
++ *
++ * 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/.
++ *
++ * Major Contributor(s):
++ * Copyright (C) 2002 William Lachance (wrlach at gmail.com)
++ * Copyright (C) 2002 Marc Maurer (uwog at uwog.net)
++ *
++ * For minor contributions see the git repository.
++ *
++ * Alternatively, the contents of this file may be used under the terms
++ * of the GNU Lesser General Public License Version 2.1 or later
++ * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
++ * applicable instead of those above.
++ */
++
++#ifndef INCLUDED_LIBREVENGE_GENERATORS_LIBREVENGE_GENERATORS_API_H
++#define INCLUDED_LIBREVENGE_GENERATORS_LIBREVENGE_GENERATORS_API_H
++
++#ifdef DLL_EXPORT
++#ifdef LIBREVENGE_GENERATORS_BUILD
++#define REVENGE_GENERATORS_API __declspec(dllexport)
++#else
++#define REVENGE_GENERATORS_API __declspec(dllimport)
++#endif
++#else
++#define REVENGE_GENERATORS_API
++#endif
++
++#endif /* INCLUDED_LIBREVENGE_GENERATORS_LIBREVENGE_GENERATORS_API_H */
++
++/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
+diff --git a/inc/librevenge-stream/RVNGDirectoryStream.h b/inc/librevenge-stream/RVNGDirectoryStream.h
+index dee185e..46d2101 100644
+--- a/inc/librevenge-stream/RVNGDirectoryStream.h
++++ b/inc/librevenge-stream/RVNGDirectoryStream.h
+@@ -22,6 +22,8 @@
+ #ifndef RVNGDIRECTORYSTREAM_H_INCLUDED
+ #define RVNGDIRECTORYSTREAM_H_INCLUDED
+ 
++#include "librevenge-stream-api.h"
++
+ #include "RVNGStream.h"
+ 
+ namespace librevenge
+@@ -29,7 +31,7 @@ namespace librevenge
+ 
+ struct RVNGDirectoryStreamImpl;
+ 
+-class RVNGDirectoryStream : public RVNGInputStream
++class REVENGE_STREAM_API RVNGDirectoryStream : public RVNGInputStream
+ {
+ 	// disable copying
+ 	RVNGDirectoryStream(const RVNGDirectoryStream &);
+diff --git a/inc/librevenge-stream/RVNGStream.h b/inc/librevenge-stream/RVNGStream.h
+index 6b1b38e..1b40bef 100644
+--- a/inc/librevenge-stream/RVNGStream.h
++++ b/inc/librevenge-stream/RVNGStream.h
+@@ -20,6 +20,8 @@
+ #ifndef RVNGSTREAM_H
+ #define RVNGSTREAM_H
+ 
++#include "librevenge-stream-api.h"
++
+ namespace librevenge
+ {
+ 
+@@ -30,7 +32,7 @@ enum RVNG_SEEK_TYPE
+ 	RVNG_SEEK_END
+ };
+ 
+-class RVNGInputStream
++class REVENGE_STREAM_API RVNGInputStream
+ {
+ public:
+ 	RVNGInputStream() {}
+diff --git a/inc/librevenge-stream/RVNGStreamImplementation.h b/inc/librevenge-stream/RVNGStreamImplementation.h
+index 06ff938..f4c1a74 100644
+--- a/inc/librevenge-stream/RVNGStreamImplementation.h
++++ b/inc/librevenge-stream/RVNGStreamImplementation.h
+@@ -20,6 +20,8 @@
+ #ifndef RVNGSTREAMIMPLEMENTATION_H
+ #define RVNGSTREAMIMPLEMENTATION_H
+ 
++#include "librevenge-stream-api.h"
++
+ #include "RVNGStream.h"
+ 
+ namespace librevenge
+@@ -27,7 +29,7 @@ namespace librevenge
+ 
+ class RVNGFileStreamPrivate;
+ 
+-class RVNGFileStream: public RVNGInputStream
++class REVENGE_STREAM_API RVNGFileStream: public RVNGInputStream
+ {
+ public:
+ 	explicit RVNGFileStream(const char *filename);
+@@ -53,7 +55,7 @@ private:
+ 
+ class RVNGStringStreamPrivate;
+ 
+-class RVNGStringStream: public RVNGInputStream
++class REVENGE_STREAM_API RVNGStringStream: public RVNGInputStream
+ {
+ public:
+ 	RVNGStringStream(const unsigned char *data, const unsigned int dataSize);
+diff --git a/inc/librevenge-stream/librevenge-stream-api.h b/inc/librevenge-stream/librevenge-stream-api.h
+new file mode 100644
+index 0000000..5b544fc
+--- /dev/null
++++ b/inc/librevenge-stream/librevenge-stream-api.h
+@@ -0,0 +1,36 @@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
++/* librevenge
++ * Version: MPL 2.0 / LGPLv2.1+
++ *
++ * 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/.
++ *
++ * Major Contributor(s):
++ * Copyright (C) 2002 William Lachance (wrlach at gmail.com)
++ * Copyright (C) 2002 Marc Maurer (uwog at uwog.net)
++ *
++ * For minor contributions see the git repository.
++ *
++ * Alternatively, the contents of this file may be used under the terms
++ * of the GNU Lesser General Public License Version 2.1 or later
++ * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
++ * applicable instead of those above.
++ */
++
++#ifndef INCLUDED_LIBREVENGE_STREAM_LIBREVENGE_STREAM_API_H
++#define INCLUDED_LIBREVENGE_STREAM_LIBREVENGE_STREAM_API_H
++
++#ifdef DLL_EXPORT
++#ifdef LIBREVENGE_STREAM_BUILD
++#define REVENGE_STREAM_API __declspec(dllexport)
++#else
++#define REVENGE_STREAM_API __declspec(dllimport)
++#endif
++#else
++#define REVENGE_STREAM_API
++#endif
++
++#endif /* INCLUDED_LIBREVENGE_STREAM_LIBREVENGE_STREAM_API_H */
++
++/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
+diff --git a/inc/librevenge/RVNGBinaryData.h b/inc/librevenge/RVNGBinaryData.h
+index c09b26a..825f4dc 100644
+--- a/inc/librevenge/RVNGBinaryData.h
++++ b/inc/librevenge/RVNGBinaryData.h
+@@ -20,7 +20,10 @@
+ #ifndef RVNGBINARYDATA_H
+ #define RVNGBINARYDATA_H
+ 
++#include "librevenge-api.h"
++
+ #include <librevenge-stream/librevenge-stream.h>
++
+ #include "RVNGString.h"
+ 
+ namespace librevenge
+@@ -28,7 +31,7 @@ namespace librevenge
+ 
+ struct RVNGBinaryDataImpl;
+ 
+-class RVNGBinaryData
++class REVENGE_API RVNGBinaryData
+ {
+ public:
+ 	RVNGBinaryData();
+diff --git a/inc/librevenge/RVNGDrawingInterface.h b/inc/librevenge/RVNGDrawingInterface.h
+index 0030e49..3b87cda 100644
+--- a/inc/librevenge/RVNGDrawingInterface.h
++++ b/inc/librevenge/RVNGDrawingInterface.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGDRAWINGINTERFACE_H
+ #define RVNGDRAWINGINTERFACE_H
+ 
++#include "librevenge-api.h"
++
+ #include "RVNGPropertyList.h"
+ #include "RVNGPropertyListVector.h"
+ #include "RVNGBinaryData.h"
+@@ -28,7 +30,7 @@
+ namespace librevenge
+ {
+ 
+-class RVNGDrawingInterface
++class REVENGE_API RVNGDrawingInterface
+ {
+ public:
+ 	virtual ~RVNGDrawingInterface() {}
+diff --git a/inc/librevenge/RVNGPresentationInterface.h b/inc/librevenge/RVNGPresentationInterface.h
+index 2142082..32fec64 100644
+--- a/inc/librevenge/RVNGPresentationInterface.h
++++ b/inc/librevenge/RVNGPresentationInterface.h
+@@ -15,6 +15,8 @@
+ #ifndef RVNGPRESENTATIONINTERFACE_H
+ #define RVNGPRESENTATIONINTERFACE_H
+ 
++#include "librevenge-api.h"
++
+ #include "RVNGPropertyList.h"
+ #include "RVNGPropertyListVector.h"
+ 
+@@ -23,7 +25,7 @@ namespace librevenge
+ 
+ /** Interface for import of presentations.
+   */
+-class RVNGPresentationInterface
++class REVENGE_API RVNGPresentationInterface
+ {
+ public:
+ 	virtual ~RVNGPresentationInterface() {}
+diff --git a/inc/librevenge/RVNGProperty.h b/inc/librevenge/RVNGProperty.h
+index 46c94fa..df56c2c 100644
+--- a/inc/librevenge/RVNGProperty.h
++++ b/inc/librevenge/RVNGProperty.h
+@@ -19,6 +19,9 @@
+ 
+ #ifndef RVNGPROPERTY_H
+ #define RVNGPROPERTY_H
++
++#include "librevenge-api.h"
++
+ #include "RVNGString.h"
+ 
+ namespace librevenge
+@@ -26,7 +29,7 @@ namespace librevenge
+ 
+ enum RVNGUnit { RVNG_INCH, RVNG_PERCENT, RVNG_POINT, RVNG_TWIP, RVNG_GENERIC, RVNG_UNIT_ERROR };
+ 
+-class RVNGProperty
++class REVENGE_API RVNGProperty
+ {
+ public:
+ 	virtual ~RVNGProperty();
+@@ -38,7 +41,7 @@ public:
+ 	virtual RVNGProperty *clone() const = 0;
+ };
+ 
+-class RVNGPropertyFactory
++class REVENGE_API RVNGPropertyFactory
+ {
+ public:
+ 	static RVNGProperty *newStringProp(const RVNGString &str);
+diff --git a/inc/librevenge/RVNGPropertyList.h b/inc/librevenge/RVNGPropertyList.h
+index 8d08bc9..c00af07 100644
+--- a/inc/librevenge/RVNGPropertyList.h
++++ b/inc/librevenge/RVNGPropertyList.h
+@@ -20,6 +20,9 @@
+ 
+ #ifndef RVNGPROPERTYLIST_H
+ #define RVNGPROPERTYLIST_H
++
++#include "librevenge-api.h"
++
+ #include "RVNGProperty.h"
+ 
+ namespace librevenge
+@@ -32,7 +35,7 @@ class RVNGPropertyListImpl;
+ class RVNGPropertyListIterImpl;
+ class RVNGPropertyListVector;
+ 
+-class RVNGPropertyList
++class REVENGE_API RVNGPropertyList
+ {
+ public:
+ 	RVNGPropertyList();
+diff --git a/inc/librevenge/RVNGPropertyListVector.h b/inc/librevenge/RVNGPropertyListVector.h
+index 33c4f22..850326e 100644
+--- a/inc/librevenge/RVNGPropertyListVector.h
++++ b/inc/librevenge/RVNGPropertyListVector.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGPROPERTYLISTVECTOR_H
+ #define RVNGPROPERTYLISTVECTOR_H
+ 
++#include "librevenge-api.h"
++
+ #include "RVNGPropertyList.h"
+ 
+ namespace librevenge
+@@ -29,7 +31,7 @@ namespace librevenge
+ class RVNGPropertyListVectorImpl;
+ class RVNGPropertyListVectorIterImpl;
+ 
+-class RVNGPropertyListVector : public RVNGProperty
++class REVENGE_API RVNGPropertyListVector : public RVNGProperty
+ {
+ public:
+ 	RVNGPropertyListVector(const RVNGPropertyListVector &);
+diff --git a/inc/librevenge/RVNGSVGDrawingGenerator.h b/inc/librevenge/RVNGSVGDrawingGenerator.h
+index 4a90a99..9bfce26 100644
+--- a/inc/librevenge/RVNGSVGDrawingGenerator.h
++++ b/inc/librevenge/RVNGSVGDrawingGenerator.h
+@@ -21,6 +21,8 @@
+ #ifndef RVNGSVGDRAWINGGENERATOR_H
+ #define RVNGSVGDRAWINGGENERATOR_H
+ 
++#include "librevenge-api.h"
++
+ #include "RVNGDrawingInterface.h"
+ #include "RVNGStringVector.h"
+ 
+@@ -29,7 +31,7 @@ namespace librevenge
+ 
+ struct RVNGSVGDrawingGeneratorPrivate;
+ 
+-class RVNGSVGDrawingGenerator : public RVNGDrawingInterface
++class REVENGE_API RVNGSVGDrawingGenerator : public RVNGDrawingInterface
+ {
+ public:
+ 	RVNGSVGDrawingGenerator(RVNGStringVector &vec, const RVNGString &nmspace);
+diff --git a/inc/librevenge/RVNGSpreadsheetInterface.h b/inc/librevenge/RVNGSpreadsheetInterface.h
+index 28093b1..c839eec 100644
+--- a/inc/librevenge/RVNGSpreadsheetInterface.h
++++ b/inc/librevenge/RVNGSpreadsheetInterface.h
+@@ -22,6 +22,8 @@
+ #ifndef RVNGSPREADSHEETINTERFACE_H
+ #define RVNGSPREADSHEETINTERFACE_H
+ 
++#include "librevenge-api.h"
++
+ #include "RVNGString.h"
+ #include "RVNGPropertyList.h"
+ #include "RVNGPropertyListVector.h"
+@@ -46,7 +48,7 @@ definitions listed here.
+ 			if neededlibrevenge:name the numbering style name
+ */
+ 
+-class RVNGSpreadsheetInterface
++class REVENGE_API RVNGSpreadsheetInterface
+ {
+ public:
+ 
+diff --git a/inc/librevenge/RVNGString.h b/inc/librevenge/RVNGString.h
+index 79f7494..cbea3bc 100644
+--- a/inc/librevenge/RVNGString.h
++++ b/inc/librevenge/RVNGString.h
+@@ -21,12 +21,14 @@
+ #ifndef RVNGSTRING_H
+ #define RVNGSTRING_H
+ 
++#include "librevenge-api.h"
++
+ namespace librevenge
+ {
+ 
+ class RVNGStringImpl;
+ 
+-class RVNGString
++class REVENGE_API RVNGString
+ {
+ public:
+ 	RVNGString();
+diff --git a/inc/librevenge/RVNGStringVector.h b/inc/librevenge/RVNGStringVector.h
+index 4a83609..912159a 100644
+--- a/inc/librevenge/RVNGStringVector.h
++++ b/inc/librevenge/RVNGStringVector.h
+@@ -20,6 +20,8 @@
+ #ifndef RVNGSTRINGVECTOR_H
+ #define RVNGSTRINGVECTOR_H
+ 
++#include "librevenge-api.h"
++
+ #include "RVNGString.h"
+ 
+ namespace librevenge
+@@ -27,7 +29,7 @@ namespace librevenge
+ 
+ class RVNGStringVectorImpl;
+ 
+-class RVNGStringVector
++class REVENGE_API RVNGStringVector
+ {
+ public:
+ 	RVNGStringVector();
+diff --git a/inc/librevenge/RVNGTextInterface.h b/inc/librevenge/RVNGTextInterface.h
+index 8c1c6d4..843b13e 100644
+--- a/inc/librevenge/RVNGTextInterface.h
++++ b/inc/librevenge/RVNGTextInterface.h
+@@ -22,6 +22,8 @@
+ #ifndef RVNGTEXTINTERFACE_H
+ #define RVNGTEXTINTERFACE_H
+ 
++#include "librevenge-api.h"
++
+ #include "RVNGPropertyList.h"
+ #include "RVNGPropertyListVector.h"
+ 
+@@ -36,7 +38,7 @@ definitions listed here.
+ 
+ class RVNGInputStream;
+ 
+-class RVNGTextInterface
++class REVENGE_API RVNGTextInterface
+ {
+ public:
+ 	virtual ~RVNGTextInterface() {}
+diff --git a/inc/librevenge/librevenge-api.h b/inc/librevenge/librevenge-api.h
+new file mode 100644
+index 0000000..708c8a1
+--- /dev/null
++++ b/inc/librevenge/librevenge-api.h
+@@ -0,0 +1,36 @@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
++/* librevenge
++ * Version: MPL 2.0 / LGPLv2.1+
++ *
++ * 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/.
++ *
++ * Major Contributor(s):
++ * Copyright (C) 2002 William Lachance (wrlach at gmail.com)
++ * Copyright (C) 2002 Marc Maurer (uwog at uwog.net)
++ *
++ * For minor contributions see the git repository.
++ *
++ * Alternatively, the contents of this file may be used under the terms
++ * of the GNU Lesser General Public License Version 2.1 or later
++ * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
++ * applicable instead of those above.
++ */
++
++#ifndef INCLUDED_LIBREVENGE_LIBREVENGE_API_H
++#define INCLUDED_LIBREVENGE_LIBREVENGE_API_H
++
++#ifdef DLL_EXPORT
++#ifdef LIBREVENGE_BUILD
++#define REVENGE_API __declspec(dllexport)
++#else
++#define REVENGE_API __declspec(dllimport)
++#endif
++#else
++#define REVENGE_API
++#endif
++
++#endif /* INCLUDED_LIBREVENGE_LIBREVENGE_API_H */
++
++/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
+-- 
+1.9.0
+
diff --git a/external/librevenge/ExternalPackage_librevenge.mk b/external/librevenge/ExternalPackage_librevenge.mk
new file mode 100644
index 0000000..d65fdca
--- /dev/null
+++ b/external/librevenge/ExternalPackage_librevenge.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,librevenge,librevenge))
+
+$(eval $(call gb_ExternalPackage_use_external_project,librevenge,librevenge))
+
+ifeq ($(OS),MACOSX)
+$(eval $(call gb_ExternalPackage_add_file,librevenge,$(LIBO_LIB_FOLDER)/librevenge-0.0.0.dylib,src/lib/.libs/librevenge-0.0.dylib))
+else ifeq ($(OS),WNT)
+$(eval $(call gb_ExternalPackage_add_file,librevenge,$(LIBO_LIB_FOLDER)/librevenge-0.0.dll,src/lib/.libs/librevenge-0.0.dll))
+else ifeq ($(filter IOS ANDROID,$(OS)),)
+$(eval $(call gb_ExternalPackage_add_file,librevenge,$(LIBO_LIB_FOLDER)/librevenge-0.0.so.0,src/lib/.libs/librevenge-0.0.so.0.0.0))
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/librevenge/ExternalProject_librevenge.mk b/external/librevenge/ExternalProject_librevenge.mk
new file mode 100644
index 0000000..e9a826c
--- /dev/null
+++ b/external/librevenge/ExternalProject_librevenge.mk
@@ -0,0 +1,44 @@
+# -*- 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,librevenge))
+
+$(eval $(call gb_ExternalProject_use_autoconf,librevenge,build))
+
+$(eval $(call gb_ExternalProject_register_targets,librevenge,\
+	build \
+))
+
+# TODO: test for zlib is unconditional in configure by mistake. Remove on the next release.
+$(eval $(call gb_ExternalProject_use_externals,librevenge,\
+	boost_headers \
+	zlib \
+))
+
+$(call gb_ExternalProject_get_state_target,librevenge,build) :
+	$(call gb_ExternalProject_run,build,\
+		export PKG_CONFIG="" \
+		&& ./configure \
+			--with-pic \
+			--enable-shared \
+			--disable-static \
+			--disable-debug \
+			--disable-werror \
+			--disable-weffc \
+			--disable-streams \
+			--disable-generators \
+			--without-docs \
+			$(if $(VERBOSE)$(verbose),--enable-silent-rules) \
+			CXXFLAGS="$(if $(SYSTEM_BOOST),$(BOOST_CPPFLAGS),-I$(call gb_UnpackedTarball_get_dir,boost) -I$(BUILDDIR)/config_$(gb_Side))" \
+			$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+		&& $(MAKE) \
+	)
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/librevenge/Library_revenge.mk b/external/librevenge/Library_revenge.mk
new file mode 100644
index 0000000..1976781
--- /dev/null
+++ b/external/librevenge/Library_revenge.mk
@@ -0,0 +1,48 @@
+# -*- 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,revenge))
+
+$(eval $(call gb_Library_use_unpacked,revenge,librevenge))
+
+$(eval $(call gb_Library_use_externals,revenge,\
+    boost_headers \
+))
+
+$(eval $(call gb_Library_set_warnings_not_errors,revenge))
+
+$(eval $(call gb_Library_set_include,revenge,\
+    -I$(call gb_UnpackedTarball_get_dir,librevenge)/inc \
+    $$(INCLUDE) \
+))
+
+# -DLIBREVENGE_STREAM_BUILD is present so that linker does not complain
+#  about unresolved external symbol RVNGStream::~RVNGStream
+$(eval $(call gb_Library_add_defs,revenge,\
+	-DBOOST_ALL_NO_LIB \
+	-DDLL_EXPORT \
+	-DLIBREVENGE_BUILD \
+	-DLIBREVENGE_STREAM_BUILD \
+	-DNDEBUG \
+))
+
+$(eval $(call gb_Library_set_generated_cxx_suffix,revenge,cpp))
+
+$(eval $(call gb_Library_add_generated_exception_objects,revenge,\
+    UnpackedTarball/librevenge/src/lib/RVNGBinaryData \
+    UnpackedTarball/librevenge/src/lib/RVNGMemoryStream \
+    UnpackedTarball/librevenge/src/lib/RVNGProperty \
+    UnpackedTarball/librevenge/src/lib/RVNGPropertyList \
+    UnpackedTarball/librevenge/src/lib/RVNGPropertyListVector \
+    UnpackedTarball/librevenge/src/lib/RVNGString \
+    UnpackedTarball/librevenge/src/lib/RVNGStringVector \
+    UnpackedTarball/librevenge/src/lib/RVNGSVGDrawingGenerator \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/librevenge/Makefile b/external/librevenge/Makefile
new file mode 100644
index 0000000..e4968cf
--- /dev/null
+++ b/external/librevenge/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/librevenge/Module_librevenge.mk b/external/librevenge/Module_librevenge.mk
new file mode 100644
index 0000000..cd11805
--- /dev/null
+++ b/external/librevenge/Module_librevenge.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,librevenge))
+
+$(eval $(call gb_Module_add_targets,librevenge,\
+	UnpackedTarball_librevenge \
+))
+
+ifeq ($(COM),MSC)
+
+$(eval $(call gb_Module_add_targets,librevenge,\
+	Library_revenge \
+))
+
+else
+
+$(eval $(call gb_Module_add_targets,librevenge,\
+	ExternalPackage_librevenge \
+	ExternalProject_librevenge \
+))
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/librevenge/README b/external/librevenge/README
new file mode 100644
index 0000000..23007ff
--- /dev/null
+++ b/external/librevenge/README
@@ -0,0 +1,3 @@
+From [http://sourceforge.net/p/libwpd/wiki/librevenge/]. A base library
+for writing document import filters. It has interfaces for text documents,
+vector graphics, spreadsheets and presentations.
diff --git a/external/librevenge/UnpackedTarball_librevenge.mk b/external/librevenge/UnpackedTarball_librevenge.mk
new file mode 100644
index 0000000..8311eab
--- /dev/null
+++ b/external/librevenge/UnpackedTarball_librevenge.mk
@@ -0,0 +1,20 @@
+# -*- 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,librevenge))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,librevenge,$(REVENGE_TARBALL)))
+
+$(eval $(call gb_UnpackedTarball_set_patchlevel,librevenge,1))
+
+$(eval $(call gb_UnpackedTarball_add_patches,librevenge,\
+	external/librevenge/0001-properly-export-API-symbols.patch \
+))
+
+# vim: set noet sw=4 ts=4:
commit 36c3f914261f921a62500c2a80da89489748a6fc
Author: David Tardon <dtardon at redhat.com>
Date:   Sat May 24 09:13:33 2014 +0200

    build libodfgen as shared lib
    
    Change-Id: I3a2c9f56e87ee6395bd3505a8fe372632e242312

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 8b35b8c..52c4c6d 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -1720,18 +1720,44 @@ endef
 
 else # !SYSTEM_ODFGEN
 
+ifeq ($(COM),MSC)
+
+$(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo,\
+	odfgen \
+))
+
+define gb_LinkTarget__use_odfgen
+$(call gb_LinkTarget_set_include,$(1),\
+	-I$(call gb_UnpackedTarball_get_dir,libodfgen)/inc \
+	$$(INCLUDE) \
+)
+$(call gb_LinkTarget_use_libraries,$(1),\
+	odfgen \
+)
+
+endef
+
+else # !MSC
+
+$(eval $(call gb_Helper_register_packages_for_install,ooo, \
+	libodfgen \
+))
+
 define gb_LinkTarget__use_odfgen
+$(call gb_LinkTarget_use_package,$(1),libodfgen)
+
 $(call gb_LinkTarget_set_include,$(1),\
 	-I$(call gb_UnpackedTarball_get_dir,libodfgen)/inc \
 	$$(INCLUDE) \
 )
 $(call gb_LinkTarget_add_libs,$(1),\
-	$(call gb_UnpackedTarball_get_dir,libodfgen)/src/.libs/libodfgen-0.0$(gb_StaticLibrary_PLAINEXT) \
+	-L$(call gb_UnpackedTarball_get_dir,libodfgen)/src/.libs -lodfgen-0.0 \
 )
-$(call gb_LinkTarget_use_external_project,$(1),libodfgen)
 
 endef
 
+endif
+
 endif # SYSTEM_ODFGEN
 
 
diff --git a/external/libodfgen/0001-properly-export-API-symbols.patch b/external/libodfgen/0001-properly-export-API-symbols.patch
new file mode 100644
index 0000000..3f488eb
--- /dev/null
+++ b/external/libodfgen/0001-properly-export-API-symbols.patch
@@ -0,0 +1,149 @@
+From 431087afd938b0d9cea2f5c4b88da0746e3758a8 Mon Sep 17 00:00:00 2001
+From: David Tardon <dtardon at redhat.com>
+Date: Sat, 24 May 2014 20:19:17 +0200
+Subject: [PATCH] properly export API symbols
+
+---
+ inc/libodfgen/Makefile.am            |  1 +
+ inc/libodfgen/OdfDocumentHandler.hxx |  4 +++-
+ inc/libodfgen/OdgGenerator.hxx       |  3 ++-
+ inc/libodfgen/OdpGenerator.hxx       |  3 ++-
+ inc/libodfgen/OdsGenerator.hxx       |  3 ++-
+ inc/libodfgen/OdtGenerator.hxx       |  3 ++-
+ inc/libodfgen/libodfgen-api.hxx      | 38 ++++++++++++++++++++++++++++++++++++
+ src/Makefile.am                      |  5 +++--
+ 8 files changed, 53 insertions(+), 7 deletions(-)
+ create mode 100644 inc/libodfgen/libodfgen-api.hxx
+
+diff --git a/inc/libodfgen/OdfDocumentHandler.hxx b/inc/libodfgen/OdfDocumentHandler.hxx
+index 79c387b..19e04e3 100644
+--- a/inc/libodfgen/OdfDocumentHandler.hxx
++++ b/inc/libodfgen/OdfDocumentHandler.hxx
+@@ -26,6 +26,8 @@
+ #define _ODFDOCUMENTHANDLER_HXX_
+ #include <libwpd/libwpd.h>
+ 
++#include "libodfgen-api.hxx"
++
+ /** Type of ODF content a generator should produce.
+   *
+   * @sa OdgGenerator, OdpGenerator, OdtGenerator
+@@ -57,7 +59,7 @@ typedef bool (*OdfEmbeddedImage)(const WPXBinaryData &input, librev
+   * saved to a file, printed to the standard output, saved to a file
+   * inside a package, or whatever else.
+   */
+-class OdfDocumentHandler
++class ODFGENAPI OdfDocumentHandler
+ {
+ public:
+ 	virtual ~OdfDocumentHandler() {}
+diff --git a/inc/libodfgen/OdgGenerator.hxx b/inc/libodfgen/OdgGenerator.hxx
+index f818e3e..24455d8 100644
+--- a/inc/libodfgen/OdgGenerator.hxx
++++ b/inc/libodfgen/OdgGenerator.hxx
+@@ -27,6 +27,7 @@
+ #include <libwpd/libwpd.h>
+ #include <libwpg/libwpg.h>
+ 
++#include "libodfgen-api.hxx"
+ #include "OdfDocumentHandler.hxx"
+ 
+ class OdgGeneratorPrivate;
+@@ -37,7 +38,7 @@ class OdgGeneratorPrivate;
+   * See @c libwpg library for documentation of the
+   * libwpg::WPGPaintInterface interface.
+   */
+-class OdgGenerator : public libwpg::WPGPaintInterface
++class ODFGENAPI OdgGenerator : public libwpg::WPGPaintInterface
+ {
+ public:
+ 	OdgGenerator(OdfDocumentHandler *pHandler, const OdfStreamType streamType);
+diff --git a/inc/libodfgen/OdpGenerator.hxx b/inc/libodfgen/OdpGenerator.hxx
+index 71f2562..c61f5ad 100644
+--- a/inc/libodfgen/OdpGenerator.hxx
++++ b/inc/libodfgen/OdpGenerator.hxx
+@@ -27,6 +27,7 @@
+ 
+ #include <libetonyek/libetonyek.h>
+ 
++#include "libodfgen-api.hxx"
+ #include "OdfDocumentHandler.hxx"
+ 
+ class OdpGeneratorPrivate;
+@@ -37,7 +38,7 @@ class OdpGeneratorPrivate;
+   * See @c libetonyek library for documentation of the
+   * libetonyek::KEYPresentationInterface interface.
+   */
+-class OdpGenerator : public libetonyek::KEYPresentationInterface
++class ODFGENAPI OdpGenerator : public libetonyek::KEYPresentationInterface
+ {
+ public:
+ 	OdpGenerator(OdfDocumentHandler *pHandler, const OdfStreamType streamType);
+diff --git a/inc/libodfgen/OdtGenerator.hxx b/inc/libodfgen/OdtGenerator.hxx
+index 9c3ff88..e11778c 100644
+--- a/inc/libodfgen/OdtGenerator.hxx
++++ b/inc/libodfgen/OdtGenerator.hxx
+@@ -29,6 +29,7 @@
+ 
+ #include <libwpd/libwpd.h>
+ 
++#include "libodfgen-api.hxx"
+ #include "OdfDocumentHandler.hxx"
+ 
+ /** Handler for embedded objects.
+@@ -39,7 +40,7 @@ class OdfGenerator;
+   * See @c libwpd library for documentation of the ::WPXDocumentInterface
+   * interface.
+   */
+-class OdtGenerator : public WPXDocumentInterface
++class ODFGENAPI OdtGenerator : public WPXDocumentInterface
+ {
+ public:
+ 	OdtGenerator(OdfDocumentHandler *pHandler, const OdfStreamType streamType);
+diff --git a/inc/libodfgen/libodfgen-api.hxx b/inc/libodfgen/libodfgen-api.hxx
+new file mode 100644
+index 0000000..39ffd05
+--- /dev/null
++++ b/inc/libodfgen/libodfgen-api.hxx
+@@ -0,0 +1,38 @@
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
++/* libodfgen
++ * Version: MPL 2.0 / LGPLv2.1+
++ *
++ * 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/.
++ *
++ * Major Contributor(s):
++ * Copyright (C) 2013 Fridrich Strba <fridrich.strba at bluewin.ch>
++ * Copyright (C) 2011 Eilidh McAdam <tibbylickle at gmail.com>
++ *
++ * For minor contributions see the git repository.
++ *
++ * Alternatively, the contents of this file may be used under the terms
++ * of the GNU Lesser General Public License Version 2.1 or later
++ * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
++ * applicable instead of those above.
++ *
++ * For further information visit http://libwpd.sourceforge.net
++ */
++
++#ifndef INCLUDED_LIBODFGEN_LIBODFGEN_API_HXX
++#define INCLUDED_LIBODFGEN_LIBODFGEN_API_HXX
++
++#ifdef DLL_EXPORT
++#ifdef LIBODFGEN_BUILD
++#define ODFGENAPI __declspec(dllexport)
++#else
++#define ODFGENAPI __declspec(dllimport)
++#endif
++#else
++#define ODFGENAPI
++#endif
++
++#endif // INCLUDED_LIBODFGEN_LIBODFGEN_API_HXX
++
++/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
+-- 
+1.9.0
+
diff --git a/external/libodfgen/ExternalPackage_libodfgen.mk b/external/libodfgen/ExternalPackage_libodfgen.mk
new file mode 100644
index 0000000..a0692ed
--- /dev/null
+++ b/external/libodfgen/ExternalPackage_libodfgen.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,libodfgen,libodfgen))
+
+$(eval $(call gb_ExternalPackage_use_external_project,libodfgen,libodfgen))
+
+ifeq ($(OS),MACOSX)
+$(eval $(call gb_ExternalPackage_add_file,libodfgen,$(LIBO_LIB_FOLDER)/libodfgen-0.0.0.dylib,src/.libs/libodfgen-0.0.dylib))
+else ifeq ($(OS),WNT)
+$(eval $(call gb_ExternalPackage_add_file,libodfgen,$(LIBO_LIB_FOLDER)/libodfgen-0.0.dll,src/.libs/libodfgen-0.0.dll))
+else ifeq ($(filter IOS ANDROID,$(OS)),)
+$(eval $(call gb_ExternalPackage_add_file,libodfgen,$(LIBO_LIB_FOLDER)/libodfgen-0.0.so.0,src/.libs/libodfgen-0.0.so.0.0.4))
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libodfgen/ExternalProject_libodfgen.mk b/external/libodfgen/ExternalProject_libodfgen.mk
index fc88a48..80cb2b0 100644
--- a/external/libodfgen/ExternalProject_libodfgen.mk
+++ b/external/libodfgen/ExternalProject_libodfgen.mk
@@ -27,16 +27,17 @@ $(call gb_ExternalProject_get_state_target,libodfgen,build) :
 		export PKG_CONFIG="" \
 		&& ./configure \
 			--with-pic \
-			--enable-static \
-			--disable-shared \
+			--enable-shared \
+			--disable-static \
 			--disable-debug \
 			--disable-werror \
 			--disable-weffc \
+			--without-docs \
+			$(if $(VERBOSE)$(verbose),--enable-silent-rules) \
 			CXXFLAGS="$(if $(SYSTEM_BOOST),$(BOOST_CPPFLAGS),-I$(call gb_UnpackedTarball_get_dir,boost) -I$(BUILDDIR)/config_$(gb_Side))" \
 			$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
-		&& (cd $(EXTERNAL_WORKDIR)/src && \
-			$(if $(VERBOSE)$(verbose),V=1) \
-			$(MAKE)) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+		&& $(MAKE) \
 	)
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/libodfgen/Library_odfgen.mk b/external/libodfgen/Library_odfgen.mk
new file mode 100644
index 0000000..ce18735
--- /dev/null
+++ b/external/libodfgen/Library_odfgen.mk
@@ -0,0 +1,50 @@
+# -*- 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,odfgen))
+
+$(eval $(call gb_Library_use_unpacked,odfgen,libodfgen))
+
+$(eval $(call gb_Library_use_externals,odfgen,\
+    boost_headers \
+	etonyek \
+	wpd \
+	wpg \
+))
+
+$(eval $(call gb_Library_set_warnings_not_errors,odfgen))
+
+$(eval $(call gb_Library_set_include,odfgen,\
+    -I$(call gb_UnpackedTarball_get_dir,libodfgen)/inc \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_Library_add_defs,odfgen,\
+	-DBOOST_ALL_NO_LIB \
+	-DDLL_EXPORT \
+	-DLIBODFGEN_BUILD \
+	-DNDEBUG \
+))
+
+$(eval $(call gb_Library_add_generated_exception_objects,odfgen,\
+    UnpackedTarball/libodfgen/src/DocumentElement \
+    UnpackedTarball/libodfgen/src/FontStyle \
+    UnpackedTarball/libodfgen/src/GraphicFunctions \
+    UnpackedTarball/libodfgen/src/InternalHandler \
+    UnpackedTarball/libodfgen/src/ListStyle \
+    UnpackedTarball/libodfgen/src/OdgGenerator \
+    UnpackedTarball/libodfgen/src/OdpGenerator \
+    UnpackedTarball/libodfgen/src/OdtGenerator \
+    UnpackedTarball/libodfgen/src/PageSpan \
+    UnpackedTarball/libodfgen/src/SectionStyle \
+    UnpackedTarball/libodfgen/src/TableStyle \
+    UnpackedTarball/libodfgen/src/TextRunStyle \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libodfgen/Module_libodfgen.mk b/external/libodfgen/Module_libodfgen.mk
index d94d34f..c107274 100644
--- a/external/libodfgen/Module_libodfgen.mk
+++ b/external/libodfgen/Module_libodfgen.mk
@@ -10,8 +10,22 @@
 $(eval $(call gb_Module_Module,libodfgen))
 
 $(eval $(call gb_Module_add_targets,libodfgen,\
-	ExternalProject_libodfgen \
 	UnpackedTarball_libodfgen \
 ))
 
+ifeq ($(COM),MSC)
+
+$(eval $(call gb_Module_add_targets,libodfgen,\
+	Library_odfgen \
+))
+
+else
+
+$(eval $(call gb_Module_add_targets,libodfgen,\
+	ExternalPackage_libodfgen \
+	ExternalProject_libodfgen \
+))
+
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libodfgen/UnpackedTarball_libodfgen.mk b/external/libodfgen/UnpackedTarball_libodfgen.mk
index 1a7f26c..fc8f6e2 100644
--- a/external/libodfgen/UnpackedTarball_libodfgen.mk
+++ b/external/libodfgen/UnpackedTarball_libodfgen.mk
@@ -11,4 +11,10 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,libodfgen))
 
 $(eval $(call gb_UnpackedTarball_set_tarball,libodfgen,$(ODFGEN_TARBALL)))
 
+$(eval $(call gb_UnpackedTarball_set_patchlevel,libodfgen,1))
+
+$(eval $(call gb_UnpackedTarball_add_patches,libodfgen,\
+	external/libodfgen/0001-properly-export-API-symbols.patch \
+))
+
 # vim: set noet sw=4 ts=4:


More information about the Libreoffice-commits mailing list