summaryrefslogtreecommitdiffstats
path: root/external/libvisio
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--external/libvisio/ExternalProject_libvisio.mk48
-rw-r--r--external/libvisio/Makefile7
-rw-r--r--external/libvisio/Module_libvisio.mk17
-rw-r--r--external/libvisio/README3
-rw-r--r--external/libvisio/UnpackedTarball_libvisio.mk23
-rw-r--r--external/libvisio/tdf-77915-fix-import-of-default-shape-fill-color.patch13
-rw-r--r--external/libvisio/ubsan.patch11
7 files changed, 122 insertions, 0 deletions
diff --git a/external/libvisio/ExternalProject_libvisio.mk b/external/libvisio/ExternalProject_libvisio.mk
new file mode 100644
index 0000000000..01fe27290f
--- /dev/null
+++ b/external/libvisio/ExternalProject_libvisio.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_ExternalProject_ExternalProject,libvisio))
+
+$(eval $(call gb_ExternalProject_use_autoconf,libvisio,build))
+
+$(eval $(call gb_ExternalProject_register_targets,libvisio,\
+ build \
+))
+
+$(eval $(call gb_ExternalProject_use_externals,libvisio,\
+ boost_headers \
+ icu \
+ libxml2 \
+ revenge \
+))
+
+$(call gb_ExternalProject_get_state_target,libvisio,build) :
+ $(call gb_Trace_StartRange,libvisio,EXTERNAL)
+ $(call gb_ExternalProject_run,build,\
+ export PKG_CONFIG="" \
+ && MAKE=$(MAKE) $(gb_RUN_CONFIGURE) ./configure \
+ --with-pic \
+ --enable-static \
+ --disable-shared \
+ --without-docs \
+ --disable-tests \
+ --disable-tools \
+ $(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
+ --disable-werror \
+ $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \
+ $(if $(gb_FULLDEPS),,--disable-dependency-tracking) \
+ CXXFLAGS="$(CXXFLAGS) $(gb_CXXFLAGS) $(call gb_ExternalProject_get_build_flags,libvisio)" \
+ CPPFLAGS="$(CPPFLAGS) $(BOOST_CPPFLAGS)" \
+ LDFLAGS="$(call gb_ExternalProject_get_link_flags,libvisio)" \
+ $(gb_CONFIGURE_PLATFORMS) \
+ && $(MAKE) \
+ )
+ $(call gb_Trace_EndRange,libvisio,EXTERNAL)
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libvisio/Makefile b/external/libvisio/Makefile
new file mode 100644
index 0000000000..e4968cf85f
--- /dev/null
+++ b/external/libvisio/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/libvisio/Module_libvisio.mk b/external/libvisio/Module_libvisio.mk
new file mode 100644
index 0000000000..00b05d25d1
--- /dev/null
+++ b/external/libvisio/Module_libvisio.mk
@@ -0,0 +1,17 @@
+# -*- 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,libvisio))
+
+$(eval $(call gb_Module_add_targets,libvisio,\
+ ExternalProject_libvisio \
+ UnpackedTarball_libvisio \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libvisio/README b/external/libvisio/README
new file mode 100644
index 0000000000..d3ddc6c9b1
--- /dev/null
+++ b/external/libvisio/README
@@ -0,0 +1,3 @@
+Libvisio is library providing ability to interpret and import visio diagrams into various applications.
+
+[https://wiki.documentfoundation.org/DLP/Libraries/libvisio]
diff --git a/external/libvisio/UnpackedTarball_libvisio.mk b/external/libvisio/UnpackedTarball_libvisio.mk
new file mode 100644
index 0000000000..85e356db88
--- /dev/null
+++ b/external/libvisio/UnpackedTarball_libvisio.mk
@@ -0,0 +1,23 @@
+# -*- 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,libvisio))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,libvisio,$(VISIO_TARBALL)))
+
+$(eval $(call gb_UnpackedTarball_set_patchlevel,libvisio,0))
+
+$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libvisio))
+
+$(eval $(call gb_UnpackedTarball_add_patches,libvisio, \
+ external/libvisio/ubsan.patch \
+ external/libvisio/tdf-77915-fix-import-of-default-shape-fill-color.patch \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libvisio/tdf-77915-fix-import-of-default-shape-fill-color.patch b/external/libvisio/tdf-77915-fix-import-of-default-shape-fill-color.patch
new file mode 100644
index 0000000000..68c0c2c88b
--- /dev/null
+++ b/external/libvisio/tdf-77915-fix-import-of-default-shape-fill-color.patch
@@ -0,0 +1,13 @@
+--- src/lib/VSDStyles.h
++++ src/lib/VSDStyles.h
+@@ -129,7 +129,9 @@ struct VSDOptionalFillStyle
+ ASSIGN_OPTIONAL(style.qsFillColour, qsFillColour);
+ ASSIGN_OPTIONAL(style.qsShadowColour, qsShadowColour);
+ ASSIGN_OPTIONAL(style.qsFillMatrix, qsFillMatrix);
+- ASSIGN_OPTIONAL(style.fgColour, fgColour);
++ // Colour 'Blue, Variant 1' is special. It is the default,
++ // and it is not saved explicitely in the VSDX file.
++ ASSIGN_OPTIONAL(style.fgColour, fgColour);else fgColour = Colour(0x5b, 0x9b, 0xd5, 0);
+ ASSIGN_OPTIONAL(style.bgColour, bgColour);
+ ASSIGN_OPTIONAL(style.shadowFgColour, shadowFgColour);
+ }
diff --git a/external/libvisio/ubsan.patch b/external/libvisio/ubsan.patch
new file mode 100644
index 0000000000..c9ffbd98f4
--- /dev/null
+++ b/external/libvisio/ubsan.patch
@@ -0,0 +1,11 @@
+--- src/lib/VSDContentCollector.cpp
++++ src/lib/VSDContentCollector.cpp
+@@ -3220,7 +3220,7 @@
+ }
+ if (U_SUCCESS(status) && conv)
+ {
+- const auto *src = (const char *)&characters[0];
++ const auto *src = (const char *)characters.data();
+ const char *srcLimit = (const char *)src + characters.size();
+ while (src < srcLimit)
+ {