[arch-commits] Commit in libreoffice-still/trunk (6 files)

Andreas Radke andyrtr at archlinux.org
Wed Aug 3 16:18:27 UTC 2016


    Date: Wednesday, August 3, 2016 @ 16:18:27
  Author: andyrtr
Revision: 272974

upgpkg: libreoffice-still 5.1.5-1

upstream update 5.1.5

Added:
  libreoffice-still/trunk/liborcus-0.11.2.diff
  libreoffice-still/trunk/remove_unnecessary_orcus_external_usage_from_makefiles.diff
  libreoffice-still/trunk/update_liborcus_to_0.11.0.diff
Modified:
  libreoffice-still/trunk/PKGBUILD
Deleted:
  libreoffice-still/trunk/fix_gcc_build_error.diff
  libreoffice-still/trunk/hunspell14_buildfix.diff

-------------------------------------------------------------+
 PKGBUILD                                                    |  103 
 fix_gcc_build_error.diff                                    |   39 
 hunspell14_buildfix.diff                                    |   14 
 liborcus-0.11.2.diff                                        |  118 
 remove_unnecessary_orcus_external_usage_from_makefiles.diff |  124 
 update_liborcus_to_0.11.0.diff                              | 1983 ++++++++++
 6 files changed, 2274 insertions(+), 107 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2016-08-03 16:18:26 UTC (rev 272973)
+++ PKGBUILD	2016-08-03 16:18:27 UTC (rev 272974)
@@ -2,11 +2,18 @@
 # Maintainer: AndyRTR <andyrtr at archlinux.org>
 # Maintainer: Bartłomiej Piotrowski <bpiotrowski at archlinux.org>
 
+# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys. Feel free to contact foutrelis at archlinux.org for
+# more information.
+_google_default_client_id=413772536636.apps.googleusercontent.com
+_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4
+
 pkgbase=libreoffice-still
 pkgname=('libreoffice-still-sdk' 'libreoffice-still')
-_LOver=5.0.6.3
-pkgver=5.0.6
-pkgrel=3
+_LOver=5.1.5.2
+pkgver=5.1.5
+pkgrel=1
 arch=('i686' 'x86_64')
 license=('LGPL3')
 url="http://www.libreoffice.org/"
@@ -15,13 +22,14 @@
 	'libxslt' 'redland' 'icu' 'hyphen' 'lpsolve' 'gcc-libs' 'sh' 'graphite'
 	'lcms2' 'poppler>=0.24.0' 'libvisio' 'libetonyek' 'libodfgen' 'libcdr'
 	'libmspub' 'harfbuzz-icu' 'glew' 'nss' 'clucene' 'hicolor-icon-theme'
-	'desktop-file-utils' 'shared-mime-info' 'gtk2' 'xdg-utils' 'gst-plugins-base-libs'
+	'desktop-file-utils' 'shared-mime-info' 'gtk2' 'gst-plugins-base-libs'
 	'glu' 'sane' 'perl-archive-zip' 'zip' 'unzip' 'unixodbc' 'apache-ant'
-	'gperf' 'kdelibs' 'cppunit' 'beanshell2' 'vigra' 'clucene' #'gtk3' 
+	'gperf' 'kdelibs' 'gtk3' 'cppunit' 'beanshell2' 'vigra' 'clucene'
 	'junit' 'libmythes' 'libwpg'  'mesa' 'java-environment' 'postgresql-libs'
-	'bluez-libs' 'harfbuzz-icu' 'gdb' 'doxygen'  'libatomic_ops' 'glew'
+	'bluez-libs' 'harfbuzz-icu' 'gdb' 'doxygen'  'libatomic_ops' 'mdds' 'glew'
 	'apr' 'serf' 'ttf-liberation' 'glm' 'libxinerama' 'libpagemaker'
-	'libabw' 'libmwaw' 'libe-book' 'coin-or-mp' 'libfbclient')
+	'libabw' 'libmwaw' 'libe-book' 'coin-or-mp' 'liborcus' 'liblangtag'
+	'libexttextcat' 'libfbclient' 'libcmis')
 
 _mirror="http://download.documentfoundation.org/libreoffice/src/${pkgver}"
 #_mirror="http://dev-builds.libreoffice.org/pre-releases/src"
@@ -28,7 +36,7 @@
 _additional_source_url="http://dev-www.libreoffice.org/src"
 _additional_source_url2="http://dev-www.libreoffice.org/extern"
 source=(${_mirror}/libreoffice{,-help,-translations}-${_LOver}.tar.xz{,.asc}
-	${_additional_source_url}/d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2
+	${_additional_source_url}/boost_1_59_0.tar.bz2
 	${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
 	${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
 	${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
@@ -46,9 +54,6 @@
 	${_additional_source_url}/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip
 	${_additional_source_url}/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip
 	${_additional_source_url}/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip
-	${_additional_source_url}/10d61fbaa6a06348823651b1bd7940fe-libexttextcat-3.4.4.tar.bz2
-	${_additional_source_url}/mdds_0.12.1.tar.bz2
-	${_additional_source_url}/7681383be6ce489d84c1c74f4e7f9643-liborcus-0.7.0.tar.bz2
 	${_additional_source_url}/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
 	${_additional_source_url}/language-subtag-registry-2015-08-04.tar.bz2
 	${_additional_source_url}/4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
@@ -57,17 +62,16 @@
 	${_additional_source_url}/libgltf/libgltf-0.0.2.tar.bz2
 	${_additional_source_url}/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
 	${_additional_source_url}/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
-	${_additional_source_url}/5821b806a98e6c38370970e682ce76e8-libcmis-0.5.0.tar.gz
 	${_additional_source_url}/libfreehand-0.1.1.tar.bz2
-	${_additional_source_url}/36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2
 	${_additional_source_url2}/185d60944ea767075d27247c3162b3bc-unowinreg.dll
 	make-pyuno-work-with-system-wide-module-install.diff
 	libreoffice-still.sh libreoffice-still.csh
+	update_liborcus_to_0.11.0.diff
+	remove_unnecessary_orcus_external_usage_from_makefiles.diff
+	liborcus-0.11.2.diff
 	gcc6_buildfix.diff
-	fix_gcc_build_error.diff
-	hunspell14_buildfix.diff
 	buildfix.diff)
-noextract=(d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2
+noextract=(boost_1_59_0.tar.bz2
 	1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
 	35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
 	798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
@@ -85,9 +89,6 @@
 	3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip
 	ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip
 	db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip
-	10d61fbaa6a06348823651b1bd7940fe-libexttextcat-3.4.4.tar.bz2
-	mdds_0.12.1.tar.bz2
-	7681383be6ce489d84c1c74f4e7f9643-liborcus-0.7.0.tar.bz2
 	0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
 	language-subtag-registry-2015-08-04.tar.bz2
 	4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
@@ -96,18 +97,16 @@
 	libgltf-0.0.2.tar.bz2
 	d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
 	ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
-	5821b806a98e6c38370970e682ce76e8-libcmis-0.5.0.tar.gz
 	libfreehand-0.1.1.tar.bz2
-	36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2
 	185d60944ea767075d27247c3162b3bc-unowinreg.dll)
 validpgpkeys=('C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3') # LibreOffice Build Team (CODE SIGNING KEY) <build at documentfoundation.org>
-md5sums=('541d92329d433696c478f7669ac976f1'
+md5sums=('7103457a9d55544d8ce93e009f1b2ca1'
          'SKIP'
-         '902b0fa074a8b60a9598f558e9d687f7'
+         '05c2471dcbd424515ae9b0dd605e7c8c'
          'SKIP'
-         '644f33f2bc84fe9ffd8a4c09b41a36fc'
+         '7670bbe6b922add9fe82f57ac4ca506e'
          'SKIP'
-         'd6eef4b4cacb2183f2bf265a5a03a354'
+         '6aa9a5c6a4ca1016edd0ed1178e3cb87'
          '1f24ab1d39f4a51faf22244c94a6203f'
          '35c94d2df8893241173de1d16b6034c0'
          '798b2ffdc8bcfe7bca2cf92b62caf685'
@@ -125,9 +124,6 @@
          '3bdf40c0d199af31923e900d082ca2dd'
          'ace6ab49184e329db254e454a010f56d'
          'db60e4fde8dd6d6807523deb71ee34dc'
-         '10d61fbaa6a06348823651b1bd7940fe'
-         'ef2560ed5416652a7fe195305b14cebe'
-         '7681383be6ce489d84c1c74f4e7f9643'
          '0168229624cfac409e766913506961a8'
          'bf5986dbfa1c9a0f26cf1b00ed369484'
          '4b87018f7fff1d054939d19920b751a0'
@@ -136,19 +132,19 @@
          'd63a9f47ab048f5009d90693d6aa6424'
          'd8bd5eed178db6e2b18eeed243f85aa8'
          'ba2930200c9f019c2d93a8c88c651a0f'
-         '5821b806a98e6c38370970e682ce76e8'
          '8cf70c5dc4d24d2dc4a107f509d2d6d7'
-         '36271d3fa0d9dec1632029b6d7aac925'
          '185d60944ea767075d27247c3162b3bc'
          'dcb5ad3e5f7139227677ea064b075422'
          '40680393752d98bcb590f1f62efa61a9'
          'f82232620f3e27d1532c49af4b36ce9a'
+         '3f526b966a672d1237cfcbadae0e3f95'
+         'ac71e21ecc0976b2ea6e233854963d4b'
+         '58616b84405f0a610a713bbd060d3214'
          '6752d22fc5bcbdbef0640c6aca163e50'
-         '60a6a9bf86bbcefa8c712dc8ba8ab73f'
-         '2afac5aa93f7bcd85058348147c962e4'
          'd386f3a0b484cd3929329a294159f5bc')
 
 prepare() {
+
 	cd libreoffice-$_LOver
 
 	# move external sources into place
@@ -180,19 +176,22 @@
 	
 	# i686 build broken
 	[ "$CARCH" = "i686" ] && sed -i '/CppunitTest_sw_ooxmlimport/d' sw/Module_sw.mk
+	[ "$CARCH" = "i686" ] && sed -i '/CppunitTest_sw_ooxmlexport7/d' sw/Module_sw.mk
 	[ "$CARCH" = "i686" ] && sed -i '/CppunitTest_basic_scanner/d' basic/Module_basic.mk
 
 	# qt4 fix
 	sed -i "s:qmake:qmake-qt4:g" configure.ac
+
+	# https://cgit.freedesktop.org/libreoffice/core/commit/?id=b325b4c286b56a63316063a3ac4648bf7b7efcbe
+	patch -Np1 -i ${srcdir}/update_liborcus_to_0.11.0.diff
+	# https://cgit.freedesktop.org/libreoffice/core/commit/?id=07d4c443e21cd22545d4516515c50b1c8dd39a9b
+	patch -Np1 -i ${srcdir}/remove_unnecessary_orcus_external_usage_from_makefiles.diff
+	# https://cgit.freedesktop.org/libreoffice/core/commit/?id=db729f3b685fd832a3ec7387b339cf2bbeb4bd4d
+	patch -Np1 -i ${srcdir}/liborcus-0.11.2.diff
 	
 	# fix checking whether KDE is >= 4.2... configure: error: KDE version too old
 	# http://bugs.debian.org/823145
 	patch -Np1 -i ${srcdir}/gcc6_buildfix.diff
-	# commit b9fa2963cf12e6987b3a0acc219c4fa591e41be8
-	patch -Np1 -i ${srcdir}/fix_gcc_build_error.diff
-	
-	# hunspell 1.4.x fix
-	patch -Np1 -i ${srcdir}/hunspell14_buildfix.diff
 }
 
 build() {
@@ -200,13 +199,12 @@
 
 	# strip -s from Makeflags in case you use it to shorten build logs
 	_MAKEFLAGS=${MAKEFLAGS/-s/}
-
+	
 	./autogen.sh --with-build-version="${_LOver} Arch Linux build-${pkgrel}" --with-vendor="Arch Linux" \
 		--enable-split-app-modules \
 		--with-parallelism=${_MAKEFLAGS/-j/} \
 		--with-external-tar="${srcdir}/ext_sources" \
 		--disable-fetch-external \
-		--disable-verbose \
 		--enable-release-build \
 		--prefix=/usr --exec-prefix=/usr --sysconfdir=/etc \
 		--libdir=/usr/lib --mandir=/usr/share/man \
@@ -217,13 +215,9 @@
 		--enable-dbus \
 		--enable-evolution2\
 		--enable-gio\
-		--disable-gnome-vfs\
-		--disable-kde\
 		--enable-kde4\
-		--disable-gtk3 \
+		--enable-gtk3 \
 		--disable-gstreamer-0-10 \
-		--disable-gconf \
-		--disable-lockdown \
 		--enable-openssl \
 		--enable-odk\
 		--enable-orcus \
@@ -236,14 +230,14 @@
 		--without-fonts\
 		--with-system-apr \
 		--with-system-libcdr \
-		--without-system-mdds\
+		--with-system-mdds\
 		--without-myspell-dicts \
 		--with-system-libvisio \
-		--without-system-libcmis \
+		--with-system-libcmis \
 		--with-system-libmspub \
-		--without-system-libexttextcat \
-		--without-system-orcus \
-		--without-system-liblangtag \
+		--with-system-libexttextcat \
+		--with-system-orcus \
+		--with-system-liblangtag \
 		--without-system-jfreereport \
 		--without-system-apache-commons \
 		--with-system-libodfgen \
@@ -281,13 +275,13 @@
 		--without-system-hsqldb \
 		--with-alloc=system \
 		--with-system-clucene \
+		--with-gdrive-client-id=${_google_default_client_id} \
+		--with-gdrive-client-secret=${_google_default_client_secret} \
 		--disable-dependency-tracking \
 		--enable-hardlink-deliver
 
 	touch src.downloaded
 	make build
-	# use this if i686 fails
-	#make || make CppunitTest_sw_ooxmlsdrexport VALGRIND=memcheck
 
 	mkdir ${srcdir}/fakeinstall
 	make DESTDIR=${srcdir}/fakeinstall distro-pack-install
@@ -302,7 +296,7 @@
 	pkgdesc="Software Development Kit for LibreOffice maintenance branch"
 	depends=('libreoffice-still' 'gcc-libs' 'sh' 'make' 'zip' 'gcc' 'java-environment')
 	provides=('libreoffice-sdk')
-	conflicts=('libreoffice-still-sdk')
+	conflicts=('libreoffice-fresh-sdk')
 
 	for dir in $(grep -h ^%dir libreoffice-$_LOver/file-lists/sdk{,_doc}_list.txt); do
 		install -dm755 ${pkgdir}/${dir/\%dir/}
@@ -334,7 +328,8 @@
 		'lcms2' 'poppler>=0.24.0' 'libvisio' 'libetonyek' 'libodfgen' 'libcdr'
 		'libmspub' 'harfbuzz-icu' 'glew' 'nss' 'clucene' 'hicolor-icon-theme'
 		'desktop-file-utils' 'shared-mime-info' 'glu' 'libpagemaker'
-		'libxinerama' 'libabw' 'libmwaw' 'libe-book' 'libcups' 'gtk2' 'libfbclient')
+		'libxinerama' 'libabw' 'libmwaw' 'libe-book' 'libcups' 'gtk2'
+		'liborcus' 'liblangtag' 'libexttextcat' 'libfbclient' 'libcmis')
 	optdepends=('java-runtime:     adds java support'
 		'java-environment: required by extension-wiki-publisher and extension-nlpsolver'
 		'pstoedit:         translates PostScript and PDF graphics into other vector formats'
@@ -349,7 +344,7 @@
 		'libpaper:         takes care of papersize'
 		'postgresql-libs:  for postgresql-connector'
 		'coin-or-mp:	   required by the Calc solver'
-		#'gtk3:             for GTK3 integration'
+		'gtk3:             for GTK3 integration'
 		'kdelibs:          for KDE desktop integration')
 	backup=(etc/libreoffice/sofficerc
 		etc/libreoffice/bootstraprc

Deleted: fix_gcc_build_error.diff
===================================================================
--- fix_gcc_build_error.diff	2016-08-03 16:18:26 UTC (rev 272973)
+++ fix_gcc_build_error.diff	2016-08-03 16:18:27 UTC (rev 272974)
@@ -1,39 +0,0 @@
-From b9fa2963cf12e6987b3a0acc219c4fa591e41be8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
-Date: Wed, 3 Feb 2016 10:30:43 +0000
-Subject: fix gcc build error
-
-error: invalid operands of types '__gnu_cxx::__enable_if<true, double>::__type
-{aka double}' and 'int' to binary 'operator%'
-
-apparently there's a template returning double for abs for the
-non-int/long/float/double argument case. So promote earlier to int so the
-abs<int> is called
-
-Change-Id: I882a27c5ec349f894c1c9f4857687360a46b55ae
-
-diff --git a/sax/source/tools/converter.cxx b/sax/source/tools/converter.cxx
-index 744415e..cf061c9 100644
---- a/sax/source/tools/converter.cxx
-+++ b/sax/source/tools/converter.cxx
-@@ -1250,7 +1250,7 @@ bool Converter::convertDuration(util::Duration& rDuration,
- 
- 
- static void
--lcl_AppendTimezone(OUStringBuffer & i_rBuffer, sal_Int16 const nOffset)
-+lcl_AppendTimezone(OUStringBuffer & i_rBuffer, int const nOffset)
- {
-     if (0 == nOffset)
-     {
-@@ -1435,7 +1435,7 @@ lcl_MaxDaysPerMonth(const sal_Int32 nMonth, const sal_Int32 nYear)
- static void lcl_ConvertToUTC(
-         sal_Int16 & o_rYear, sal_uInt16 & o_rMonth, sal_uInt16 & o_rDay,
-         sal_uInt16 & o_rHours, sal_uInt16 & o_rMinutes,
--        sal_Int16 const nSourceOffset)
-+        int const nSourceOffset)
- {
-     sal_Int16 nOffsetHours(abs(nSourceOffset) / 60);
-     sal_Int16 const nOffsetMinutes(abs(nSourceOffset) % 60);
--- 
-cgit v0.10.2
-

Deleted: hunspell14_buildfix.diff
===================================================================
--- hunspell14_buildfix.diff	2016-08-03 16:18:26 UTC (rev 272973)
+++ hunspell14_buildfix.diff	2016-08-03 16:18:27 UTC (rev 272974)
@@ -1,14 +0,0 @@
-diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.cxx b/lingucomponent/source/spellcheck/spell/sspellimp.cxx
-index 6979a33..a9a1575 100644
---- a/lingucomponent/source/spellcheck/spell/sspellimp.cxx
-+++ b/lingucomponent/source/spellcheck/spell/sspellimp.cxx
-@@ -31,7 +31,6 @@
- 
- #include <lingutil.hxx>
- #include <hunspell.hxx>
--#include <dictmgr.hxx>
- #include <sspellimp.hxx>
- 
- #include <linguistic/lngprops.hxx>
--- 
-cgit v0.10.2

Added: liborcus-0.11.2.diff
===================================================================
--- liborcus-0.11.2.diff	                        (rev 0)
+++ liborcus-0.11.2.diff	2016-08-03 16:18:27 UTC (rev 272974)
@@ -0,0 +1,118 @@
+From db729f3b685fd832a3ec7387b339cf2bbeb4bd4d Mon Sep 17 00:00:00 2001
+From: Kohei Yoshida <kohei.yoshida at gmail.com>
+Date: Wed, 11 May 2016 21:45:56 -0400
+Subject: Update mdds to 1.2.0.  Note that the API version is also up.
+
+liborcus-0.11.2 is out only to make it buildable with mdds-1.2.
+
+Change-Id: I9648d827b008da252c57be0ebfd2efccb008ac70
+Reviewed-on: https://gerrit.libreoffice.org/24944
+Tested-by: Jenkins <ci at libreoffice.org>
+Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>
+
+diff --git a/configure.ac b/configure.ac
+index 3f1b7f0..6dea282 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -8832,7 +8832,7 @@ AC_SUBST(SYSTEM_BOOST)
+ dnl ===================================================================
+ dnl Check for system mdds
+ dnl ===================================================================
+-libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds >= 0.12.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
++libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.2 >= 1.2.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
+ 
+ dnl ===================================================================
+ dnl Check for system glm
+@@ -9148,7 +9148,7 @@ if test -z "$enable_orcus" -o "$enable_orcus" != no; then
+     ENABLE_ORCUS="TRUE"
+     AC_DEFINE(ENABLE_ORCUS)
+ 
+-    libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.11 >= 0.11.0])
++    libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.11 >= 0.11.2])
+     if test "$with_system_orcus" != "yes"; then
+         if test "$SYSTEM_BOOST" = "TRUE"; then
+             # ===========================================================
+diff --git a/sc/inc/mtvelements.hxx b/sc/inc/mtvelements.hxx
+index 0bc5162..18edafc 100644
+--- a/sc/inc/mtvelements.hxx
++++ b/sc/inc/mtvelements.hxx
+@@ -53,6 +53,7 @@ const mdds::mtv::element_t element_type_cellnote = mdds::mtv::element_type_user_
+ /// Mapped standard element types (for convenience).
+ const mdds::mtv::element_t element_type_numeric = mdds::mtv::element_type_numeric;
+ const mdds::mtv::element_t element_type_empty = mdds::mtv::element_type_empty;
++const mdds::mtv::element_t element_type_uint16 = mdds::mtv::element_type_ushort;
+ 
+ /// Custom element blocks.
+ 
+@@ -65,6 +66,7 @@ typedef mdds::mtv::noncopyable_managed_element_block<element_type_formula, ScFor
+ 
+ /// Mapped standard element blocks (for convenience).
+ typedef mdds::mtv::numeric_element_block numeric_block;
++typedef mdds::mtv::ushort_element_block uint16_block;
+ 
+ /// This needs to be in the same namespace as CellTextAttr.
+ MDDS_MTV_DEFINE_ELEMENT_CALLBACKS(CellTextAttr, element_type_celltextattr, CellTextAttr(), celltextattr_block)
+diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx
+index f1ce9a5..1689809 100644
+--- a/sc/source/core/tool/scmatrix.cxx
++++ b/sc/source/core/tool/scmatrix.cxx
+@@ -57,17 +57,15 @@ using ::std::unary_function;
+  * Custom string trait struct to tell mdds::multi_type_matrix about the
+  * custom string type and how to handle blocks storing them.
+  */
+-struct custom_string_trait
++struct matrix_trait
+ {
+-    typedef svl::SharedString string_type;
+     typedef sc::string_block string_element_block;
+-
+-    static const mdds::mtv::element_t string_type_identifier = sc::element_type_string;
++    typedef sc::uint16_block integer_element_block;
+ 
+     typedef mdds::mtv::custom_block_func1<sc::string_block> element_block_func;
+ };
+ 
+-typedef mdds::multi_type_matrix<custom_string_trait> MatrixImplType;
++typedef mdds::multi_type_matrix<matrix_trait> MatrixImplType;
+ 
+ namespace {
+ 
+@@ -2304,6 +2302,7 @@ public:
+                 }
+             }
+             break;
++            case mdds::mtm::element_integer:
+             case mdds::mtm::element_empty:
+             break;
+         }
+diff --git a/svl/source/misc/gridprinter.cxx b/svl/source/misc/gridprinter.cxx
+index 4044b3e..70e7439 100644
+--- a/svl/source/misc/gridprinter.cxx
++++ b/svl/source/misc/gridprinter.cxx
+@@ -26,12 +26,10 @@ const mdds::mtv::element_t element_type_string = mdds::mtv::element_type_user_st
+ // String block
+ typedef mdds::mtv::default_element_block<element_type_string, OUString> string_block;
+ 
+-struct custom_string_trait
++struct matrix_trait
+ {
+-    typedef OUString string_type;
+     typedef string_block string_element_block;
+-
+-    static const mdds::mtv::element_t string_type_identifier = element_type_string;
++    typedef mdds::mtv::ushort_element_block integer_element_block;
+ 
+     typedef mdds::mtv::custom_block_func1<string_block> element_block_func;
+ };
+@@ -48,7 +46,7 @@ MDDS_MTV_DEFINE_ELEMENT_CALLBACKS(OUString, svl::element_type_string, OUString()
+ 
+ namespace svl {
+ 
+-typedef mdds::multi_type_matrix<custom_string_trait> MatrixImplType;
++typedef mdds::multi_type_matrix<matrix_trait> MatrixImplType;
+ 
+ struct GridPrinter::Impl
+ {
+-- 
+cgit v0.10.2
+

Added: remove_unnecessary_orcus_external_usage_from_makefiles.diff
===================================================================
--- remove_unnecessary_orcus_external_usage_from_makefiles.diff	                        (rev 0)
+++ remove_unnecessary_orcus_external_usage_from_makefiles.diff	2016-08-03 16:18:27 UTC (rev 272974)
@@ -0,0 +1,124 @@
+From 07d4c443e21cd22545d4516515c50b1c8dd39a9b Mon Sep 17 00:00:00 2001
+From: Michael Stahl <mstahl at redhat.com>
+Date: Tue, 8 Mar 2016 15:01:59 +0100
+Subject: sc: remove unnecessary orcus external usage from makefiles
+
+This caused incremental builds to fail after today's orcus upgrade.
+
+The cxx files of these tests don't actually include orcus headers, so
+the libraries were not re-linked in incremental builds.
+
+Change-Id: Ibfcf216a7848f3c0adfae4ef59c4b756c290d6b2
+
+diff --git a/sc/CppunitTest_sc_bugfix_test.mk b/sc/CppunitTest_sc_bugfix_test.mk
+index 55311cd..712f444 100644
+--- a/sc/CppunitTest_sc_bugfix_test.mk
++++ b/sc/CppunitTest_sc_bugfix_test.mk
+@@ -16,8 +16,6 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sc_bugfix_test, \
+ $(eval $(call gb_CppunitTest_use_externals,sc_bugfix_test, \
+ 	boost_headers \
+ 	mdds_headers \
+-	orcus \
+-	orcus-parser \
+ 	libxml2 \
+ ))
+ 
+diff --git a/sc/CppunitTest_sc_copypaste.mk b/sc/CppunitTest_sc_copypaste.mk
+index 7df4f51..641709c 100644
+--- a/sc/CppunitTest_sc_copypaste.mk
++++ b/sc/CppunitTest_sc_copypaste.mk
+@@ -16,8 +16,6 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sc_copypaste, \
+ $(eval $(call gb_CppunitTest_use_externals,sc_copypaste, \
+ 	boost_headers \
+ 	mdds_headers \
+-	orcus \
+-	orcus-parser \
+ 	libxml2 \
+ ))
+ 
+diff --git a/sc/CppunitTest_sc_filters_test.mk b/sc/CppunitTest_sc_filters_test.mk
+index 4fbf489..db445f53 100644
+--- a/sc/CppunitTest_sc_filters_test.mk
++++ b/sc/CppunitTest_sc_filters_test.mk
+@@ -22,8 +22,6 @@ endif
+ $(eval $(call gb_CppunitTest_use_externals,sc_filters_test, \
+ 	boost_headers \
+ 	mdds_headers \
+-	orcus \
+-	orcus-parser \
+ ))
+ 
+ $(eval $(call gb_CppunitTest_use_libraries,sc_filters_test, \
+diff --git a/sc/CppunitTest_sc_opencl_test.mk b/sc/CppunitTest_sc_opencl_test.mk
+index 86605a2..ea93111 100644
+--- a/sc/CppunitTest_sc_opencl_test.mk
++++ b/sc/CppunitTest_sc_opencl_test.mk
+@@ -16,8 +16,6 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sc_opencl_test, \
+ $(eval $(call gb_CppunitTest_use_externals,sc_opencl_test, \
+ 	boost_headers \
+ 	mdds_headers \
+-	orcus \
+-	orcus-parser \
+ ))
+ 
+ $(eval $(call gb_CppunitTest_use_libraries,sc_opencl_test, \
+diff --git a/sc/CppunitTest_sc_rangelst_test.mk b/sc/CppunitTest_sc_rangelst_test.mk
+index 2bf6f0f..fa6f690 100644
+--- a/sc/CppunitTest_sc_rangelst_test.mk
++++ b/sc/CppunitTest_sc_rangelst_test.mk
+@@ -16,18 +16,12 @@ $(eval $(call gb_CppunitTest_use_externals,sc_rangelst_test, \
+     icuuc \
+ 	libxml2 \
+ 	mdds_headers \
+-	orcus \
+-	orcus-parser \
+ ))
+ 
+ $(eval $(call gb_CppunitTest_add_exception_objects,sc_rangelst_test, \
+     sc/qa/unit/rangelst_test \
+ ))
+ 
+-$(eval $(call gb_CppunitTest_use_library_objects,sc_rangelst_test, \
+-	scqahelper \
+-))
+-
+ $(eval $(call gb_CppunitTest_use_libraries,sc_rangelst_test, \
+     basegfx \
+     comphelper \
+@@ -45,6 +39,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sc_rangelst_test, \
+     sax \
+     sb \
+     sc \
++    scqahelper \
+     sfx \
+     sot \
+     svl \
+diff --git a/sc/CppunitTest_sc_subsequent_export_test.mk b/sc/CppunitTest_sc_subsequent_export_test.mk
+index 1cfaf69..6c2c9e5 100644
+--- a/sc/CppunitTest_sc_subsequent_export_test.mk
++++ b/sc/CppunitTest_sc_subsequent_export_test.mk
+@@ -16,8 +16,6 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sc_subsequent_export_test, \
+ $(eval $(call gb_CppunitTest_use_externals,sc_subsequent_export_test, \
+ 	boost_headers \
+ 	mdds_headers \
+-	orcus \
+-	orcus-parser \
+ 	libxml2 \
+ ))
+ 
+diff --git a/sc/CppunitTest_sc_subsequent_filters_test.mk b/sc/CppunitTest_sc_subsequent_filters_test.mk
+index 08dedbb..845206b 100644
+--- a/sc/CppunitTest_sc_subsequent_filters_test.mk
++++ b/sc/CppunitTest_sc_subsequent_filters_test.mk
+@@ -16,8 +16,6 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sc_subsequent_filters_test, \
+ $(eval $(call gb_CppunitTest_use_externals,sc_subsequent_filters_test, \
+ 	boost_headers \
+ 	mdds_headers \
+-	orcus \
+-	orcus-parser \
+ 	libxml2 \
+ ))
+ 
+-- 
+cgit v0.10.2
+

Added: update_liborcus_to_0.11.0.diff
===================================================================
--- update_liborcus_to_0.11.0.diff	                        (rev 0)
+++ update_liborcus_to_0.11.0.diff	2016-08-03 16:18:27 UTC (rev 272974)
@@ -0,0 +1,1983 @@
+From b325b4c286b56a63316063a3ac4648bf7b7efcbe Mon Sep 17 00:00:00 2001
+From: Kohei Yoshida <kohei.yoshida at gmail.com>
+Date: Sat, 5 Mar 2016 20:09:34 -0500
+Subject: Update liborcus to 0.11.0.
+
+Markus did half of this, and I simply carried the torch.
+
+Change-Id: Icd3ee1e4b5bd562faee06dfd9dce52a4bed49a71
+Reviewed-on: https://gerrit.libreoffice.org/22943
+Tested-by: Jenkins <ci at libreoffice.org>
+Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>
+
+diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
+index 5b497ee..c6fe371 100644
+--- a/RepositoryExternal.mk
++++ b/RepositoryExternal.mk
+@@ -743,6 +743,21 @@ $(call gb_LinkTarget_set_include,$(1),\
+ 
+ endef
+ 
++define gb_LinkTarget__use_boost_filesystem
++$(call gb_LinkTarget_add_defs,$(1),\
++	-DBOOST_ALL_NO_LIB \
++)
++
++$(call gb_LinkTarget_use_static_libraries,$(1),\
++	boost_filesystem \
++)
++
++endef
++
++define gb_ExternalProject__use_boost_filesystem
++$(call gb_ExternalProject_use_static_libraries,$(1),boost_filesystem)
++endef
++
+ define gb_ExternalProject__use_boost_headers
+ $(call gb_ExternalProject_use_unpacked,$(1),boost)
+ 
+@@ -3129,7 +3144,7 @@ $(call gb_LinkTarget_set_include,$(1),\
+ )
+ 
+ $(call gb_LinkTarget_add_libs,$(1),\
+-	-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.10 \
++       -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.11 \
+ )
+ 
+ $(if $(SYSTEM_BOOST), \
+@@ -3148,7 +3163,7 @@ $(call gb_LinkTarget_set_include,$(1),\
+ )
+ 
+ $(call gb_LinkTarget_add_libs,$(1),\
+-	-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.10 \
++	-L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.11 \
+ )
+ 
+ endef
+diff --git a/configure.ac b/configure.ac
+index 934d43a..dab1919 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -9196,7 +9196,7 @@ if test -z "$enable_orcus" -o "$enable_orcus" != no; then
+     ENABLE_ORCUS="TRUE"
+     AC_DEFINE(ENABLE_ORCUS)
+ 
+-    libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.10 >= 0.9.0])
++    libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.11 >= 0.11.0])
+     if test "$with_system_orcus" != "yes"; then
+         if test "$SYSTEM_BOOST" = "TRUE"; then
+             # ===========================================================
+diff --git a/download.lst b/download.lst
+index 906a579..475112b 100644
+--- a/download.lst
++++ b/download.lst
+@@ -117,8 +117,8 @@ export OPENCOLLADA_TARBALL := OpenCOLLADA-master-6509aa13af.tar.bz2
+ export OPENLDAP_TARBALL := 804c6cb5698db30b75ad0ff1c25baefd-openldap-2.4.31.tgz
+ export OPENSSL_MD5SUM := 9392e65072ce4b614c1392eefc1f23d0
+ export OPENSSL_TARBALL := openssl-1.0.2h.tar.gz
+-export ORCUS_MD5SUM := e6efcbe50a5fd4d50d513c9a7a4139b0
+-export ORCUS_TARBALL := liborcus-0.9.2.tar.gz
++export ORCUS_MD5SUM := ca1e5d486b29cd519bb1d9845a6a768e
++export ORCUS_TARBALL := liborcus-0.11.0.tar.gz
+ export OWNCLOUD_ANDROID_LIB_MD5SUM := 593f0aa47bf2efc0efda2d28fae063b2
+ export OWNCLOUD_ANDROID_LIB_TARBALL := owncloud-android-library-0.9.4-no-binary-deps.tar.gz
+ export PAGEMAKER_MD5SUM := 5c4985a68be0b79d3f809da5e12b143c
+diff --git a/external/boost/Module_boost.mk b/external/boost/Module_boost.mk
+index 5bac25e..ae407f5 100644
+--- a/external/boost/Module_boost.mk
++++ b/external/boost/Module_boost.mk
+@@ -11,6 +11,7 @@ $(eval $(call gb_Module_Module,boost))
+ 
+ $(eval $(call gb_Module_add_targets,boost,\
+ 	StaticLibrary_boostdatetime \
++	StaticLibrary_boost_filesystem \
+ 	StaticLibrary_boost_system \
+ 	StaticLibrary_boost_iostreams \
+ 	UnpackedTarball_boost \
+diff --git a/external/boost/StaticLibrary_boost_filesystem.mk b/external/boost/StaticLibrary_boost_filesystem.mk
+new file mode 100644
+index 0000000..024308a
+--- /dev/null
++++ b/external/boost/StaticLibrary_boost_filesystem.mk
+@@ -0,0 +1,36 @@
++# -*- 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_StaticLibrary_StaticLibrary,boost_filesystem))
++
++$(eval $(call gb_StaticLibrary_use_unpacked,boost_filesystem,boost))
++
++$(eval $(call gb_StaticLibrary_set_warnings_not_errors,boost_filesystem))
++
++# disable "auto link" "feature" on MSVC
++$(eval $(call gb_StaticLibrary_add_defs,boost_filesystem,\
++	-DBOOST_ALL_NO_LIB \
++))
++
++$(eval $(call gb_StaticLibrary_use_external,boost_filesystem,boost_headers))
++
++$(eval $(call gb_StaticLibrary_set_generated_cxx_suffix,boost_filesystem,cpp))
++
++$(eval $(call gb_StaticLibrary_add_generated_exception_objects,boost_filesystem,\
++	UnpackedTarball/boost/libs/filesystem/src/codecvt_error_category \
++	UnpackedTarball/boost/libs/filesystem/src/operations \
++	UnpackedTarball/boost/libs/filesystem/src/path \
++	UnpackedTarball/boost/libs/filesystem/src/path_traits \
++	UnpackedTarball/boost/libs/filesystem/src/portability \
++	UnpackedTarball/boost/libs/filesystem/src/unique_path \
++	UnpackedTarball/boost/libs/filesystem/src/utf8_codecvt_facet \
++	UnpackedTarball/boost/libs/filesystem/src/windows_file_codecvt \
++))
++
++# vim: set noet sw=4 ts=4:
+diff --git a/external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch b/external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch
+new file mode 100644
+index 0000000..d03c98d
+--- /dev/null
++++ b/external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch
+@@ -0,0 +1,1175 @@
++From a1df2d984d527931c6cbbe6547856283bdbf6a9b Mon Sep 17 00:00:00 2001
++From: Kohei Yoshida <kohei.yoshida at gmail.com>
++Date: Sun, 6 Mar 2016 21:21:31 -0500
++Subject: [PATCH] Fix for OSX build inside LibreOffice.
++
++---
++ include/orcus/sax_ns_parser.hpp          |   2 +-
++ slickedit/orcus.vpj                      | 178 ++++---------------------------
++ src/liborcus/dom_tree.cpp                |  12 +--
++ src/liborcus/json_document_tree.cpp      |  29 +++--
++ src/liborcus/json_document_tree_test.cpp |   2 +-
++ src/liborcus/ods_content_xml_context.cpp |   2 +-
++ src/liborcus/opc_reader.cpp              |   2 +-
++ src/liborcus/orcus_gnumeric.cpp          |   2 +-
++ src/liborcus/orcus_import_ods.cpp        |   2 +-
++ src/liborcus/orcus_import_xlsx.cpp       |   2 +-
++ src/liborcus/orcus_xls_xml.cpp           |   2 +-
++ src/liborcus/orcus_xlsx.cpp              |  20 ++--
++ src/liborcus/orcus_xml.cpp               |   4 +-
++ src/liborcus/xlsx_sheet_context.cpp      |   8 +-
++ src/liborcus/xml_map_tree.cpp            |   6 +-
++ src/liborcus/xml_structure_tree.cpp      |   4 +-
++ src/liborcus/yaml_document_tree.cpp      |  34 +++---
++ src/mso/encryption_info.cpp              |   3 +-
++ src/orcus_filter_global.cpp              |   2 +-
++ src/orcus_json_main.cpp                  |   2 +-
++ src/orcus_yaml_main.cpp                  |   2 +-
++ src/parser/json_parser_base.cpp          |   2 +-
++ src/parser/sax_parser_base.cpp           |   2 +-
++ src/parser/string_pool.cpp               |   4 +-
++ src/parser/yaml_parser_base.cpp          |   2 +-
++ src/spreadsheet/document.cpp             |   2 +-
++ 26 files changed, 95 insertions(+), 237 deletions(-)
++
++diff --git a/include/orcus/sax_ns_parser.hpp b/include/orcus/sax_ns_parser.hpp
++index 680f39d..49a2b48 100644
++--- a/include/orcus/sax_ns_parser.hpp
+++++ b/include/orcus/sax_ns_parser.hpp
++@@ -142,7 +142,7 @@ private:
++ 
++         void start_element(const sax::parser_element& elem)
++         {
++-            m_scopes.push_back(make_unique<__sax::elem_scope>());
+++            m_scopes.push_back(orcus::make_unique<__sax::elem_scope>());
++             __sax::elem_scope& scope = *m_scopes.back();
++             scope.ns = m_ns_cxt.get(elem.ns);
++             scope.name = elem.name;
++diff --git a/slickedit/orcus.vpj b/slickedit/orcus.vpj
++index 23c6d42..bbc89ec 100644
++--- a/slickedit/orcus.vpj
+++++ b/slickedit/orcus.vpj
++@@ -145,6 +145,10 @@
++             Filters=""></Folder>
++     </CustomFolders>
++     <Files AutoFolders="DirectoryView">
+++        <Folder Name="../example">
+++            <F N="../example/json.cpp"/>
+++            <F N="../example/json_parser.cpp"/>
+++        </Folder>
++         <Folder Name="../include">
++             <Folder Name="orcus">
++                 <Folder Name="mso">
++@@ -186,6 +190,7 @@
++                 <F N="../include/orcus/measurement.hpp"/>
++                 <F N="../include/orcus/orcus_csv.hpp"/>
++                 <F N="../include/orcus/orcus_gnumeric.hpp"/>
+++                <F N="../include/orcus/orcus_import_ods.hpp"/>
++                 <F N="../include/orcus/orcus_import_xlsx.hpp"/>
++                 <F N="../include/orcus/orcus_ods.hpp"/>
++                 <F N="../include/orcus/orcus_xls_xml.hpp"/>
++@@ -193,43 +198,34 @@
++                 <F N="../include/orcus/orcus_xml.hpp"/>
++                 <F N="../include/orcus/parser_base.hpp"/>
++                 <F N="../include/orcus/parser_global.hpp"/>
++-                <F N="../include/orcus/parser_global.hpp"/>
++-                <F N="../include/orcus/pstring.hpp"/>
++                 <F N="../include/orcus/pstring.hpp"/>
++                 <F N="../include/orcus/sax_ns_parser.hpp"/>
++-                <F N="../include/orcus/sax_ns_parser.hpp"/>
++-                <F N="../include/orcus/sax_parser.hpp"/>
++                 <F N="../include/orcus/sax_parser.hpp"/>
++                 <F N="../include/orcus/sax_parser_base.hpp"/>
++-                <F N="../include/orcus/sax_parser_base.hpp"/>
++-                <F N="../include/orcus/sax_token_parser.hpp"/>
++                 <F N="../include/orcus/sax_token_parser.hpp"/>
++                 <F N="../include/orcus/stream.hpp"/>
++-                <F N="../include/orcus/stream.hpp"/>
++                 <F N="../include/orcus/string_pool.hpp"/>
++-                <F N="../include/orcus/string_pool.hpp"/>
++-                <F N="../include/orcus/tokens.hpp"/>
++                 <F N="../include/orcus/tokens.hpp"/>
++                 <F N="../include/orcus/types.hpp"/>
++-                <F N="../include/orcus/types.hpp"/>
++-                <F N="../include/orcus/xml_namespace.hpp"/>
++                 <F N="../include/orcus/xml_namespace.hpp"/>
++                 <F N="../include/orcus/xml_structure_tree.hpp"/>
++-                <F N="../include/orcus/xml_structure_tree.hpp"/>
++                 <F N="../include/orcus/yaml_document_tree.hpp"/>
++                 <F N="../include/orcus/yaml_parser.hpp"/>
++                 <F N="../include/orcus/yaml_parser_base.hpp"/>
++                 <F N="../include/orcus/zip_archive.hpp"/>
++-                <F N="../include/orcus/zip_archive.hpp"/>
++-                <F N="../include/orcus/zip_archive_stream.hpp"/>
++                 <F N="../include/orcus/zip_archive_stream.hpp"/>
++             </Folder>
++         </Folder>
+++        <Folder Name="../misc">
+++            <F N="../misc/sorted_string_map_perf.cpp"/>
+++        </Folder>
++         <Folder Name="../parser_handlers">
++             <F N="../parser_handlers/css.hpp"/>
++             <F N="../parser_handlers/css_test.cpp"/>
++             <F N="../parser_handlers/csv.hpp"/>
++             <F N="../parser_handlers/csv_test.cpp"/>
+++            <F N="../parser_handlers/json.hpp"/>
+++            <F N="../parser_handlers/json_test.cpp"/>
++             <F N="../parser_handlers/sax.hpp"/>
++             <F N="../parser_handlers/sax_ns.hpp"/>
++             <F N="../parser_handlers/sax_ns_test.cpp"/>
++@@ -240,308 +236,172 @@
++         <Folder Name="../src">
++             <Folder Name="liborcus">
++                 <F N="../src/liborcus/common_test.cpp"/>
++-                <F N="../src/liborcus/common_test.cpp"/>
++-                <F N="../src/liborcus/config.cpp"/>
++                 <F N="../src/liborcus/config.cpp"/>
+++                <F N="../src/liborcus/constants.inl"/>
++                 <F N="../src/liborcus/css_document_tree.cpp"/>
++-                <F N="../src/liborcus/css_document_tree.cpp"/>
++-                <F N="../src/liborcus/css_document_tree_test.cpp"/>
++                 <F N="../src/liborcus/css_document_tree_test.cpp"/>
++                 <F N="../src/liborcus/css_selector.cpp"/>
++-                <F N="../src/liborcus/css_selector.cpp"/>
++-                <F N="../src/liborcus/detection_result.cpp"/>
++                 <F N="../src/liborcus/detection_result.cpp"/>
++                 <F N="../src/liborcus/detection_result.hpp"/>
++-                <F N="../src/liborcus/detection_result.hpp"/>
++                 <F N="../src/liborcus/dom_tree.cpp"/>
++-                <F N="../src/liborcus/dom_tree.cpp"/>
++-                <F N="../src/liborcus/format_detection.cpp"/>
++                 <F N="../src/liborcus/format_detection.cpp"/>
++                 <F N="../src/liborcus/format_detection_test.cpp"/>
++-                <F N="../src/liborcus/format_detection_test.cpp"/>
++-                <F N="../src/liborcus/global.cpp"/>
++                 <F N="../src/liborcus/global.cpp"/>
++                 <F N="../src/liborcus/gnumeric_cell_context.cpp"/>
++-                <F N="../src/liborcus/gnumeric_cell_context.cpp"/>
++                 <F N="../src/liborcus/gnumeric_cell_context.hpp"/>
++-                <F N="../src/liborcus/gnumeric_cell_context.hpp"/>
++-                <F N="../src/liborcus/gnumeric_cell_context_test.cpp"/>
++                 <F N="../src/liborcus/gnumeric_cell_context_test.cpp"/>
++                 <F N="../src/liborcus/gnumeric_context.cpp"/>
++-                <F N="../src/liborcus/gnumeric_context.cpp"/>
++-                <F N="../src/liborcus/gnumeric_context.hpp"/>
++                 <F N="../src/liborcus/gnumeric_context.hpp"/>
++                 <F N="../src/liborcus/gnumeric_detection_handler.cpp"/>
++-                <F N="../src/liborcus/gnumeric_detection_handler.cpp"/>
++                 <F N="../src/liborcus/gnumeric_detection_handler.hpp"/>
++-                <F N="../src/liborcus/gnumeric_detection_handler.hpp"/>
++-                <F N="../src/liborcus/gnumeric_handler.cpp"/>
++                 <F N="../src/liborcus/gnumeric_handler.cpp"/>
++                 <F N="../src/liborcus/gnumeric_handler.hpp"/>
++-                <F N="../src/liborcus/gnumeric_handler.hpp"/>
++-                <F N="../src/liborcus/gnumeric_helper.cpp"/>
++                 <F N="../src/liborcus/gnumeric_helper.cpp"/>
++                 <F N="../src/liborcus/gnumeric_helper.hpp"/>
++-                <F N="../src/liborcus/gnumeric_helper.hpp"/>
++                 <F N="../src/liborcus/gnumeric_helper_test.cpp"/>
++                 <F N="../src/liborcus/gnumeric_namespace_types.cpp"/>
++-                <F N="../src/liborcus/gnumeric_namespace_types.cpp"/>
++-                <F N="../src/liborcus/gnumeric_namespace_types.hpp"/>
++                 <F N="../src/liborcus/gnumeric_namespace_types.hpp"/>
++                 <F N="../src/liborcus/gnumeric_sheet_context.cpp"/>
++-                <F N="../src/liborcus/gnumeric_sheet_context.cpp"/>
++-                <F N="../src/liborcus/gnumeric_sheet_context.hpp"/>
++                 <F N="../src/liborcus/gnumeric_sheet_context.hpp"/>
++                 <F N="../src/liborcus/gnumeric_sheet_context_test.cpp"/>
++-                <F N="../src/liborcus/gnumeric_sheet_context_test.cpp"/>
++                 <F N="../src/liborcus/gnumeric_token_constants.hpp"/>
++-                <F N="../src/liborcus/gnumeric_token_constants.hpp"/>
++-                <F N="../src/liborcus/gnumeric_token_constants.inl"/>
++                 <F N="../src/liborcus/gnumeric_token_constants.inl"/>
++                 <F N="../src/liborcus/gnumeric_tokens.cpp"/>
++-                <F N="../src/liborcus/gnumeric_tokens.cpp"/>
++-                <F N="../src/liborcus/gnumeric_tokens.hpp"/>
++                 <F N="../src/liborcus/gnumeric_tokens.hpp"/>
++                 <F N="../src/liborcus/gnumeric_tokens.inl"/>
++-                <F N="../src/liborcus/gnumeric_tokens.inl"/>
++                 <F N="../src/liborcus/info.cpp"/>
++                 <F N="../src/liborcus/interface.cpp"/>
++-                <F N="../src/liborcus/interface.cpp"/>
++                 <F N="../src/liborcus/json_document_tree.cpp"/>
++                 <F N="../src/liborcus/json_document_tree_test.cpp"/>
++                 <F N="../src/liborcus/json_util.cpp"/>
++                 <F N="../src/liborcus/json_util.hpp"/>
++                 <F N="../src/liborcus/measurement.cpp"/>
++-                <F N="../src/liborcus/measurement.cpp"/>
++                 <F N="../src/liborcus/mock_spreadsheet.cpp"/>
++-                <F N="../src/liborcus/mock_spreadsheet.cpp"/>
++-                <F N="../src/liborcus/mock_spreadsheet.hpp"/>
++                 <F N="../src/liborcus/mock_spreadsheet.hpp"/>
++-                <F N="../src/liborcus/odf_namespace_types.cpp"/>
+++                <F N="../src/liborcus/odf_helper.cpp"/>
+++                <F N="../src/liborcus/odf_helper.hpp"/>
+++                <F N="../src/liborcus/odf_helper_test.cpp"/>
++                 <F N="../src/liborcus/odf_namespace_types.cpp"/>
++                 <F N="../src/liborcus/odf_namespace_types.hpp"/>
++-                <F N="../src/liborcus/odf_namespace_types.hpp"/>
++-                <F N="../src/liborcus/odf_namespace_types_cpp.inl"/>
++                 <F N="../src/liborcus/odf_namespace_types_cpp.inl"/>
++                 <F N="../src/liborcus/odf_namespace_types_hpp.inl"/>
++-                <F N="../src/liborcus/odf_namespace_types_hpp.inl"/>
++-                <F N="../src/liborcus/odf_para_context.cpp"/>
++                 <F N="../src/liborcus/odf_para_context.cpp"/>
++                 <F N="../src/liborcus/odf_para_context.hpp"/>
++-                <F N="../src/liborcus/odf_para_context.hpp"/>
++                 <F N="../src/liborcus/odf_styles.cpp"/>
++-                <F N="../src/liborcus/odf_styles.cpp"/>
++-                <F N="../src/liborcus/odf_styles.hpp"/>
++                 <F N="../src/liborcus/odf_styles.hpp"/>
++                 <F N="../src/liborcus/odf_styles_context.cpp"/>
++-                <F N="../src/liborcus/odf_styles_context.cpp"/>
++-                <F N="../src/liborcus/odf_styles_context.hpp"/>
++                 <F N="../src/liborcus/odf_styles_context.hpp"/>
++-                <F N="../src/liborcus/odf_token_constants.hpp"/>
+++                <F N="../src/liborcus/odf_styles_context_test.cpp"/>
++                 <F N="../src/liborcus/odf_token_constants.hpp"/>
++                 <F N="../src/liborcus/odf_token_constants.inl"/>
++-                <F N="../src/liborcus/odf_token_constants.inl"/>
++-                <F N="../src/liborcus/odf_tokens.cpp"/>
++                 <F N="../src/liborcus/odf_tokens.cpp"/>
++                 <F N="../src/liborcus/odf_tokens.hpp"/>
++-                <F N="../src/liborcus/odf_tokens.hpp"/>
++-                <F N="../src/liborcus/odf_tokens.inl"/>
++                 <F N="../src/liborcus/odf_tokens.inl"/>
++                 <F N="../src/liborcus/ods_content_xml_context.cpp"/>
++-                <F N="../src/liborcus/ods_content_xml_context.cpp"/>
++                 <F N="../src/liborcus/ods_content_xml_context.hpp"/>
++-                <F N="../src/liborcus/ods_content_xml_context.hpp"/>
++-                <F N="../src/liborcus/ods_content_xml_handler.cpp"/>
++                 <F N="../src/liborcus/ods_content_xml_handler.cpp"/>
++                 <F N="../src/liborcus/ods_content_xml_handler.hpp"/>
++-                <F N="../src/liborcus/ods_content_xml_handler.hpp"/>
++-                <F N="../src/liborcus/ods_session_data.cpp"/>
++                 <F N="../src/liborcus/ods_session_data.cpp"/>
++                 <F N="../src/liborcus/ods_session_data.hpp"/>
++-                <F N="../src/liborcus/ods_session_data.hpp"/>
++                 <F N="../src/liborcus/ooxml_content_types.cpp"/>
++-                <F N="../src/liborcus/ooxml_content_types.cpp"/>
++-                <F N="../src/liborcus/ooxml_content_types.hpp"/>
++                 <F N="../src/liborcus/ooxml_content_types.hpp"/>
++                 <F N="../src/liborcus/ooxml_global.cpp"/>
++-                <F N="../src/liborcus/ooxml_global.cpp"/>
++-                <F N="../src/liborcus/ooxml_global.hpp"/>
++                 <F N="../src/liborcus/ooxml_global.hpp"/>
++                 <F N="../src/liborcus/ooxml_namespace_types.cpp"/>
++-                <F N="../src/liborcus/ooxml_namespace_types.cpp"/>
++                 <F N="../src/liborcus/ooxml_namespace_types.hpp"/>
++-                <F N="../src/liborcus/ooxml_namespace_types.hpp"/>
++-                <F N="../src/liborcus/ooxml_schemas.cpp"/>
++                 <F N="../src/liborcus/ooxml_schemas.cpp"/>
++                 <F N="../src/liborcus/ooxml_schemas.hpp"/>
++-                <F N="../src/liborcus/ooxml_schemas.hpp"/>
++-                <F N="../src/liborcus/ooxml_token_constants.hpp"/>
++                 <F N="../src/liborcus/ooxml_token_constants.hpp"/>
++                 <F N="../src/liborcus/ooxml_token_constants.inl"/>
++-                <F N="../src/liborcus/ooxml_token_constants.inl"/>
++                 <F N="../src/liborcus/ooxml_tokens.cpp"/>
++-                <F N="../src/liborcus/ooxml_tokens.cpp"/>
++-                <F N="../src/liborcus/ooxml_tokens.hpp"/>
++                 <F N="../src/liborcus/ooxml_tokens.hpp"/>
++                 <F N="../src/liborcus/ooxml_tokens.inl"/>
++-                <F N="../src/liborcus/ooxml_tokens.inl"/>
++-                <F N="../src/liborcus/ooxml_types.cpp"/>
++                 <F N="../src/liborcus/ooxml_types.cpp"/>
++                 <F N="../src/liborcus/ooxml_types.hpp"/>
++-                <F N="../src/liborcus/ooxml_types.hpp"/>
++                 <F N="../src/liborcus/opc_context.cpp"/>
++-                <F N="../src/liborcus/opc_context.cpp"/>
++-                <F N="../src/liborcus/opc_context.hpp"/>
++                 <F N="../src/liborcus/opc_context.hpp"/>
++                 <F N="../src/liborcus/opc_reader.cpp"/>
++-                <F N="../src/liborcus/opc_reader.cpp"/>
++-                <F N="../src/liborcus/opc_reader.hpp"/>
++                 <F N="../src/liborcus/opc_reader.hpp"/>
++                 <F N="../src/liborcus/opc_token_constants.hpp"/>
++-                <F N="../src/liborcus/opc_token_constants.hpp"/>
++                 <F N="../src/liborcus/opc_token_constants.inl"/>
++-                <F N="../src/liborcus/opc_token_constants.inl"/>
++-                <F N="../src/liborcus/opc_tokens.inl"/>
++                 <F N="../src/liborcus/opc_tokens.inl"/>
++                 <F N="../src/liborcus/orcus_csv.cpp"/>
++-                <F N="../src/liborcus/orcus_csv.cpp"/>
++-                <F N="../src/liborcus/orcus_gnumeric.cpp"/>
++                 <F N="../src/liborcus/orcus_gnumeric.cpp"/>
++-                <F N="../src/liborcus/orcus_import_xlsx.cpp"/>
+++                <F N="../src/liborcus/orcus_import_ods.cpp"/>
++                 <F N="../src/liborcus/orcus_import_xlsx.cpp"/>
++                 <F N="../src/liborcus/orcus_ods.cpp"/>
++-                <F N="../src/liborcus/orcus_ods.cpp"/>
++-                <F N="../src/liborcus/orcus_xls_xml.cpp"/>
++                 <F N="../src/liborcus/orcus_xls_xml.cpp"/>
++                 <F N="../src/liborcus/orcus_xlsx.cpp"/>
++-                <F N="../src/liborcus/orcus_xlsx.cpp"/>
++-                <F N="../src/liborcus/orcus_xml.cpp"/>
++                 <F N="../src/liborcus/orcus_xml.cpp"/>
++                 <F N="../src/liborcus/session_context.cpp"/>
++-                <F N="../src/liborcus/session_context.cpp"/>
++                 <F N="../src/liborcus/session_context.hpp"/>
++-                <F N="../src/liborcus/session_context.hpp"/>
++-                <F N="../src/liborcus/spreadsheet_interface.cpp"/>
++                 <F N="../src/liborcus/spreadsheet_interface.cpp"/>
++                 <F N="../src/liborcus/spreadsheet_types.cpp"/>
++-                <F N="../src/liborcus/spreadsheet_types.cpp"/>
++-                <F N="../src/liborcus/xls_xml_context.cpp"/>
+++                <F N="../src/liborcus/string_helper.cpp"/>
+++                <F N="../src/liborcus/string_helper.hpp"/>
++                 <F N="../src/liborcus/xls_xml_context.cpp"/>
++                 <F N="../src/liborcus/xls_xml_context.hpp"/>
++-                <F N="../src/liborcus/xls_xml_context.hpp"/>
++                 <F N="../src/liborcus/xls_xml_detection_handler.cpp"/>
++-                <F N="../src/liborcus/xls_xml_detection_handler.cpp"/>
++-                <F N="../src/liborcus/xls_xml_detection_handler.hpp"/>
++                 <F N="../src/liborcus/xls_xml_detection_handler.hpp"/>
++                 <F N="../src/liborcus/xls_xml_handler.cpp"/>
++-                <F N="../src/liborcus/xls_xml_handler.cpp"/>
++-                <F N="../src/liborcus/xls_xml_handler.hpp"/>
++                 <F N="../src/liborcus/xls_xml_handler.hpp"/>
++                 <F N="../src/liborcus/xls_xml_namespace_types.cpp"/>
++-                <F N="../src/liborcus/xls_xml_namespace_types.cpp"/>
++                 <F N="../src/liborcus/xls_xml_namespace_types.hpp"/>
++-                <F N="../src/liborcus/xls_xml_namespace_types.hpp"/>
++-                <F N="../src/liborcus/xls_xml_token_constants.hpp"/>
++                 <F N="../src/liborcus/xls_xml_token_constants.hpp"/>
++                 <F N="../src/liborcus/xls_xml_token_constants.inl"/>
++-                <F N="../src/liborcus/xls_xml_token_constants.inl"/>
++-                <F N="../src/liborcus/xls_xml_tokens.cpp"/>
++                 <F N="../src/liborcus/xls_xml_tokens.cpp"/>
++                 <F N="../src/liborcus/xls_xml_tokens.hpp"/>
++-                <F N="../src/liborcus/xls_xml_tokens.hpp"/>
++                 <F N="../src/liborcus/xls_xml_tokens.inl"/>
++-                <F N="../src/liborcus/xls_xml_tokens.inl"/>
++-                <F N="../src/liborcus/xlsx_autofilter_context.cpp"/>
++                 <F N="../src/liborcus/xlsx_autofilter_context.cpp"/>
++                 <F N="../src/liborcus/xlsx_autofilter_context.hpp"/>
++-                <F N="../src/liborcus/xlsx_autofilter_context.hpp"/>
++                 <F N="../src/liborcus/xlsx_conditional_format_context.cpp"/>
++                 <F N="../src/liborcus/xlsx_conditional_format_context.hpp"/>
++                 <F N="../src/liborcus/xlsx_context.cpp"/>
++-                <F N="../src/liborcus/xlsx_context.cpp"/>
++-                <F N="../src/liborcus/xlsx_context.hpp"/>
++                 <F N="../src/liborcus/xlsx_context.hpp"/>
++                 <F N="../src/liborcus/xlsx_handler.cpp"/>
++-                <F N="../src/liborcus/xlsx_handler.cpp"/>
++-                <F N="../src/liborcus/xlsx_handler.hpp"/>
++                 <F N="../src/liborcus/xlsx_handler.hpp"/>
++                 <F N="../src/liborcus/xlsx_helper.cpp"/>
++                 <F N="../src/liborcus/xlsx_helper.hpp"/>
++                 <F N="../src/liborcus/xlsx_pivot_context.cpp"/>
++-                <F N="../src/liborcus/xlsx_pivot_context.cpp"/>
++-                <F N="../src/liborcus/xlsx_pivot_context.hpp"/>
++                 <F N="../src/liborcus/xlsx_pivot_context.hpp"/>
++                 <F N="../src/liborcus/xlsx_revision_context.cpp"/>
++-                <F N="../src/liborcus/xlsx_revision_context.cpp"/>
++                 <F N="../src/liborcus/xlsx_revision_context.hpp"/>
++-                <F N="../src/liborcus/xlsx_revision_context.hpp"/>
++-                <F N="../src/liborcus/xlsx_session_data.cpp"/>
++                 <F N="../src/liborcus/xlsx_session_data.cpp"/>
++                 <F N="../src/liborcus/xlsx_session_data.hpp"/>
++-                <F N="../src/liborcus/xlsx_session_data.hpp"/>
++-                <F N="../src/liborcus/xlsx_sheet_context.cpp"/>
++                 <F N="../src/liborcus/xlsx_sheet_context.cpp"/>
++                 <F N="../src/liborcus/xlsx_sheet_context.hpp"/>
++-                <F N="../src/liborcus/xlsx_sheet_context.hpp"/>
++                 <F N="../src/liborcus/xlsx_sheet_context_test.cpp"/>
++-                <F N="../src/liborcus/xlsx_sheet_context_test.cpp"/>
++-                <F N="../src/liborcus/xlsx_table_context.cpp"/>
++                 <F N="../src/liborcus/xlsx_table_context.cpp"/>
++                 <F N="../src/liborcus/xlsx_table_context.hpp"/>
++-                <F N="../src/liborcus/xlsx_table_context.hpp"/>
++-                <F N="../src/liborcus/xlsx_types.cpp"/>
++                 <F N="../src/liborcus/xlsx_types.cpp"/>
++                 <F N="../src/liborcus/xlsx_types.hpp"/>
++-                <F N="../src/liborcus/xlsx_types.hpp"/>
++                 <F N="../src/liborcus/xlsx_workbook_context.cpp"/>
++-                <F N="../src/liborcus/xlsx_workbook_context.cpp"/>
++-                <F N="../src/liborcus/xlsx_workbook_context.hpp"/>
++                 <F N="../src/liborcus/xlsx_workbook_context.hpp"/>
++                 <F N="../src/liborcus/xml_context_base.cpp"/>
++-                <F N="../src/liborcus/xml_context_base.cpp"/>
++-                <F N="../src/liborcus/xml_context_base.hpp"/>
++                 <F N="../src/liborcus/xml_context_base.hpp"/>
++                 <F N="../src/liborcus/xml_context_global.cpp"/>
++-                <F N="../src/liborcus/xml_context_global.cpp"/>
++                 <F N="../src/liborcus/xml_context_global.hpp"/>
++-                <F N="../src/liborcus/xml_context_global.hpp"/>
++-                <F N="../src/liborcus/xml_map_tree.cpp"/>
++                 <F N="../src/liborcus/xml_map_tree.cpp"/>
++                 <F N="../src/liborcus/xml_map_tree.hpp"/>
++-                <F N="../src/liborcus/xml_map_tree.hpp"/>
++-                <F N="../src/liborcus/xml_map_tree_test.cpp"/>
++                 <F N="../src/liborcus/xml_map_tree_test.cpp"/>
++                 <F N="../src/liborcus/xml_simple_stream_handler.cpp"/>
++-                <F N="../src/liborcus/xml_simple_stream_handler.cpp"/>
++                 <F N="../src/liborcus/xml_simple_stream_handler.hpp"/>
++-                <F N="../src/liborcus/xml_simple_stream_handler.hpp"/>
++-                <F N="../src/liborcus/xml_stream_handler.cpp"/>
++                 <F N="../src/liborcus/xml_stream_handler.cpp"/>
++                 <F N="../src/liborcus/xml_stream_handler.hpp"/>
++-                <F N="../src/liborcus/xml_stream_handler.hpp"/>
++-                <F N="../src/liborcus/xml_stream_parser.cpp"/>
++                 <F N="../src/liborcus/xml_stream_parser.cpp"/>
++                 <F N="../src/liborcus/xml_stream_parser.hpp"/>
++-                <F N="../src/liborcus/xml_stream_parser.hpp"/>
++                 <F N="../src/liborcus/xml_structure_tree.cpp"/>
++-                <F N="../src/liborcus/xml_structure_tree.cpp"/>
++-                <F N="../src/liborcus/xml_structure_tree_test.cpp"/>
++                 <F N="../src/liborcus/xml_structure_tree_test.cpp"/>
++                 <F N="../src/liborcus/yaml_document_tree.cpp"/>
++                 <F N="../src/liborcus/yaml_document_tree_test.cpp"/>
++             </Folder>
++             <Folder Name="mso">
++                 <F N="../src/mso/encryption_info.cpp"/>
++-                <F N="../src/mso/encryption_info.cpp"/>
++             </Folder>
++             <Folder Name="parser">
++                 <F N="../src/parser/base64.cpp"/>
++-                <F N="../src/parser/base64.cpp"/>
++-                <F N="../src/parser/base64_test.cpp"/>
++                 <F N="../src/parser/base64_test.cpp"/>
++                 <F N="../src/parser/cell_buffer.cpp"/>
++-                <F N="../src/parser/cell_buffer.cpp"/>
++-                <F N="../src/parser/css_parser_base.cpp"/>
++                 <F N="../src/parser/css_parser_base.cpp"/>
++                 <F N="../src/parser/css_types.cpp"/>
++                 <F N="../src/parser/csv_parser_base.cpp"/>
++@@ -565,6 +425,7 @@
++                 <F N="../src/parser/yaml_parser_base.cpp"/>
++                 <F N="../src/parser/zip_archive.cpp"/>
++                 <F N="../src/parser/zip_archive_stream.cpp"/>
+++                <F N="../src/parser/zip_archive_test.cpp"/>
++             </Folder>
++             <Folder Name="python">
++                 <F N="../src/python/json.cpp"/>
++@@ -597,7 +458,6 @@
++             <F N="../src/orcus_json_main.cpp"/>
++             <F N="../src/orcus_mso_encryption.cpp"/>
++             <F N="../src/orcus_ods_main.cpp"/>
++-            <F N="../src/orcus_test_common.cpp"/>
++             <F N="../src/orcus_test_csv.cpp"/>
++             <F N="../src/orcus_test_ods.cpp"/>
++             <F N="../src/orcus_test_xls_xml.cpp"/>
++diff --git a/src/liborcus/dom_tree.cpp b/src/liborcus/dom_tree.cpp
++index 255a7d7..1b4588b 100644
++--- a/src/liborcus/dom_tree.cpp
+++++ b/src/liborcus/dom_tree.cpp
++@@ -177,7 +177,7 @@ void dom_tree::content::print(ostream& os, const xmlns_context& /*cxt*/) const
++ dom_tree::content::~content() {}
++ 
++ dom_tree::dom_tree(xmlns_context& cxt) :
++-    mp_impl(make_unique<dom_tree_impl>(cxt)) {}
+++    mp_impl(orcus::make_unique<dom_tree_impl>(cxt)) {}
++ 
++ dom_tree::~dom_tree() {}
++ 
++@@ -242,7 +242,7 @@ void dom_tree::start_element(xmlns_id_t ns, const pstring& name)
++ 
++     // Append new element as a child element of the current element.
++     p = mp_impl->m_elem_stack.back();
++-    p->child_nodes.push_back(make_unique<element>(ns, name_safe));
+++    p->child_nodes.push_back(orcus::make_unique<element>(ns, name_safe));
++     p = static_cast<element*>(p->child_nodes.back().get());
++     p->attrs.swap(mp_impl->m_cur_attrs);
++     mp_impl->m_elem_stack.push_back(p);
++@@ -269,7 +269,7 @@ void dom_tree::set_characters(const pstring& val)
++ 
++     element* p = mp_impl->m_elem_stack.back();
++     val2 = mp_impl->m_pool.intern(val2).first; // Make sure the string is persistent.
++-    p->child_nodes.push_back(make_unique<content>(val2));
+++    p->child_nodes.push_back(orcus::make_unique<content>(val2));
++ }
++ 
++ void dom_tree::set_attribute(xmlns_id_t ns, const pstring& name, const pstring& val)
++@@ -283,7 +283,7 @@ void dom_tree::set_attribute(xmlns_id_t ns, const pstring& name, const pstring&
++ 
++ void dom_tree::set_doctype(const sax::doctype_declaration& dtd)
++ {
++-    mp_impl->m_doctype = make_unique<sax::doctype_declaration>(dtd);  // make a copy.
+++    mp_impl->m_doctype = orcus::make_unique<sax::doctype_declaration>(dtd);  // make a copy.
++ 
++     sax::doctype_declaration& this_dtd = *mp_impl->m_doctype;
++     string_pool& pool = mp_impl->m_pool;
++@@ -360,7 +360,7 @@ void dom_tree::dump_compact(ostream& os) const
++ 
++     scopes_type scopes;
++ 
++-    scopes.push_back(make_unique<scope>(string(), mp_impl->m_root));
+++    scopes.push_back(orcus::make_unique<scope>(string(), mp_impl->m_root));
++     while (!scopes.empty())
++     {
++         bool new_scope = false;
++@@ -418,7 +418,7 @@ void dom_tree::dump_compact(ostream& os) const
++             ++cur_scope.current_pos;
++             ostringstream elem_name;
++             elem->print(elem_name, mp_impl->m_ns_cxt);
++-            scopes.push_back(make_unique<scope>(elem_name.str()));
+++            scopes.push_back(orcus::make_unique<scope>(elem_name.str()));
++             scope& child_scope = *scopes.back();
++             child_scope.nodes.swap(nodes);
++             child_scope.current_pos = child_scope.nodes.begin();
++diff --git a/src/liborcus/json_document_tree.cpp b/src/liborcus/json_document_tree.cpp
++index adafcbf..81289e1 100644
++--- a/src/liborcus/json_document_tree.cpp
+++++ b/src/liborcus/json_document_tree.cpp
++@@ -55,7 +55,6 @@ using node_t = json::detail::node_t;
++ 
++ const char* tab = "    ";
++ constexpr char quote = '"';
++-constexpr char backslash = '\\';
++ 
++ const xmlns_id_t NS_orcus_json_xml = "http://schemas.kohei.us/orcus/2015/json";
++ 
++@@ -455,13 +454,13 @@ public:
++     {
++         if (m_root)
++         {
++-            json_value* jv = push_value(make_unique<json_value_array>());
+++            json_value* jv = push_value(orcus::make_unique<json_value_array>());
++             assert(jv && jv->type == node_t::array);
++             m_stack.push_back(parser_stack(jv));
++         }
++         else
++         {
++-            m_root = make_unique<json_value_array>();
+++            m_root = orcus::make_unique<json_value_array>();
++             m_stack.push_back(parser_stack(m_root.get()));
++         }
++     }
++@@ -476,13 +475,13 @@ public:
++     {
++         if (m_root)
++         {
++-            json_value* jv = push_value(make_unique<json_value_object>());
+++            json_value* jv = push_value(orcus::make_unique<json_value_object>());
++             assert(jv && jv->type == node_t::object);
++             m_stack.push_back(parser_stack(jv));
++         }
++         else
++         {
++-            m_root = make_unique<json_value_object>();
+++            m_root = orcus::make_unique<json_value_object>();
++             m_stack.push_back(parser_stack(m_root.get()));
++         }
++     }
++@@ -504,17 +503,17 @@ public:
++ 
++     void boolean_true()
++     {
++-        push_value(make_unique<json_value>(node_t::boolean_true));
+++        push_value(orcus::make_unique<json_value>(node_t::boolean_true));
++     }
++ 
++     void boolean_false()
++     {
++-        push_value(make_unique<json_value>(node_t::boolean_false));
+++        push_value(orcus::make_unique<json_value>(node_t::boolean_false));
++     }
++ 
++     void null()
++     {
++-        push_value(make_unique<json_value>(node_t::null));
+++        push_value(orcus::make_unique<json_value>(node_t::null));
++     }
++ 
++     void string(const char* p, size_t len, bool transient)
++@@ -524,12 +523,12 @@ public:
++             // The tree manages the life cycle of this string value.
++             s = m_pool.intern(s).first;
++ 
++-        push_value(make_unique<json_value_string>(s));
+++        push_value(orcus::make_unique<json_value_string>(s));
++     }
++ 
++     void number(double val)
++     {
++-        push_value(make_unique<json_value_number>(val));
+++        push_value(orcus::make_unique<json_value_number>(val));
++     }
++ 
++     void swap(std::unique_ptr<json_value>& other_root)
++@@ -554,8 +553,8 @@ struct node::impl
++     impl(const json_value* jv) : m_node(jv) {}
++ };
++ 
++-node::node(const json_value* jv) : mp_impl(make_unique<impl>(jv)) {}
++-node::node(const node& other) : mp_impl(make_unique<impl>(other.mp_impl->m_node)) {}
+++node::node(const json_value* jv) : mp_impl(orcus::make_unique<impl>(jv)) {}
+++node::node(const node& other) : mp_impl(orcus::make_unique<impl>(other.mp_impl->m_node)) {}
++ node::node(node&& rhs) : mp_impl(std::move(rhs.mp_impl)) {}
++ node::~node() {}
++ 
++@@ -720,12 +719,12 @@ struct json_document_tree::impl
++     std::unique_ptr<string_pool> m_own_pool;
++     string_pool& m_pool;
++ 
++-    impl() : m_own_pool(make_unique<string_pool>()), m_pool(*m_own_pool) {}
+++    impl() : m_own_pool(orcus::make_unique<string_pool>()), m_pool(*m_own_pool) {}
++     impl(string_pool& pool) : m_pool(pool) {}
++ };
++ 
++-json_document_tree::json_document_tree() : mp_impl(make_unique<impl>()) {}
++-json_document_tree::json_document_tree(string_pool& pool) : mp_impl(make_unique<impl>(pool)) {}
+++json_document_tree::json_document_tree() : mp_impl(orcus::make_unique<impl>()) {}
+++json_document_tree::json_document_tree(string_pool& pool) : mp_impl(orcus::make_unique<impl>(pool)) {}
++ json_document_tree::~json_document_tree() {}
++ 
++ void json_document_tree::load(const std::string& strm, const json_config& config)
++diff --git a/src/liborcus/json_document_tree_test.cpp b/src/liborcus/json_document_tree_test.cpp
++index da16150..4b4fcbd 100644
++--- a/src/liborcus/json_document_tree_test.cpp
+++++ b/src/liborcus/json_document_tree_test.cpp
++@@ -193,7 +193,7 @@ std::unique_ptr<json_document_tree> get_doc_tree(const char* filepath)
++     cout << "--- original" << endl;
++     cout << strm << endl;
++ 
++-    auto doc = make_unique<json_document_tree>();
+++    auto doc = orcus::make_unique<json_document_tree>();
++     doc->load(strm, test_config);
++ 
++     return doc;
++diff --git a/src/liborcus/ods_content_xml_context.cpp b/src/liborcus/ods_content_xml_context.cpp
++index f496353..c4e706d 100644
++--- a/src/liborcus/ods_content_xml_context.cpp
+++++ b/src/liborcus/ods_content_xml_context.cpp
++@@ -588,7 +588,7 @@ void ods_content_xml_context::push_cell_value()
++         ods_session_data& ods_data =
++             static_cast<ods_session_data&>(*get_session_context().mp_data);
++         ods_data.m_formulas.push_back(
++-            make_unique<ods_session_data::formula>(
+++            orcus::make_unique<ods_session_data::formula>(
++                 m_tables.size()-1, m_row, m_col, m_cell_attr.formula_grammar, m_cell_attr.formula));
++ 
++         ods_session_data::formula& formula_data = *ods_data.m_formulas.back();
++diff --git a/src/liborcus/opc_reader.cpp b/src/liborcus/opc_reader.cpp
++index 814b2cf..666530e 100644
++--- a/src/liborcus/opc_reader.cpp
+++++ b/src/liborcus/opc_reader.cpp
++@@ -244,7 +244,7 @@ void opc_reader::read_content_types()
++         m_config, m_ns_repo, opc_tokens,
++         reinterpret_cast<const char*>(&buffer[0]), buffer.size());
++ 
++-    auto handler = make_unique<xml_simple_stream_handler>(
+++    auto handler = orcus::make_unique<xml_simple_stream_handler>(
++         new opc_content_types_context(m_session_cxt, opc_tokens));
++ 
++     parser.set_handler(handler.get());
++diff --git a/src/liborcus/orcus_gnumeric.cpp b/src/liborcus/orcus_gnumeric.cpp
++index 1873c0e..c29bef9 100644
++--- a/src/liborcus/orcus_gnumeric.cpp
+++++ b/src/liborcus/orcus_gnumeric.cpp
++@@ -82,7 +82,7 @@ void orcus_gnumeric::read_content_xml(const char* p, size_t size)
++ {
++     xml_stream_parser parser(get_config(), mp_impl->m_ns_repo, gnumeric_tokens, p, size);
++ 
++-    auto handler = make_unique<gnumeric_content_xml_handler>(
+++    auto handler = orcus::make_unique<gnumeric_content_xml_handler>(
++         mp_impl->m_cxt, gnumeric_tokens, mp_impl->mp_factory);
++ 
++     parser.set_handler(handler.get());
++diff --git a/src/liborcus/orcus_import_ods.cpp b/src/liborcus/orcus_import_ods.cpp
++index af1135e..2d76dbb 100644
++--- a/src/liborcus/orcus_import_ods.cpp
+++++ b/src/liborcus/orcus_import_ods.cpp
++@@ -32,7 +32,7 @@ void import_ods::read_styles(const char* p, size_t n, spreadsheet::iface::import
++ 
++     session_context cxt;
++     odf_styles_map_type styles_map;
++-    auto context = make_unique<styles_context>(cxt, odf_tokens, styles_map, styles);
+++    auto context = orcus::make_unique<styles_context>(cxt, odf_tokens, styles_map, styles);
++ 
++     xml_simple_stream_handler stream_handler(context.release());
++ 
++diff --git a/src/liborcus/orcus_import_xlsx.cpp b/src/liborcus/orcus_import_xlsx.cpp
++index 2f9f172..0d4a933 100644
++--- a/src/liborcus/orcus_import_xlsx.cpp
+++++ b/src/liborcus/orcus_import_xlsx.cpp
++@@ -33,7 +33,7 @@ void import_xlsx::read_table(const char* p, size_t n, spreadsheet::iface::import
++         return;
++ 
++     session_context cxt;
++-    auto handler = make_unique<xlsx_table_xml_handler>(cxt, ooxml_tokens, *table);
+++    auto handler = orcus::make_unique<xlsx_table_xml_handler>(cxt, ooxml_tokens, *table);
++ 
++     xmlns_repository ns_repo;
++     ns_repo.add_predefined_values(NS_ooxml_all);
++diff --git a/src/liborcus/orcus_xls_xml.cpp b/src/liborcus/orcus_xls_xml.cpp
++index 2849219..22ffeab 100644
++--- a/src/liborcus/orcus_xls_xml.cpp
+++++ b/src/liborcus/orcus_xls_xml.cpp
++@@ -92,7 +92,7 @@ void orcus_xls_xml::read_stream(const char* content, size_t len)
++     xml_stream_parser parser(
++         get_config(), mp_impl->m_ns_repo, xls_xml_tokens, content, len);
++ 
++-    auto handler = make_unique<xls_xml_handler>(
+++    auto handler = orcus::make_unique<xls_xml_handler>(
++         mp_impl->m_cxt, xls_xml_tokens, mp_impl->mp_factory);
++ 
++     parser.set_handler(handler.get());
++diff --git a/src/liborcus/orcus_xlsx.cpp b/src/liborcus/orcus_xlsx.cpp
++index 8c578e6..7c1e46c 100644
++--- a/src/liborcus/orcus_xlsx.cpp
+++++ b/src/liborcus/orcus_xlsx.cpp
++@@ -286,7 +286,7 @@ void orcus_xlsx::read_workbook(const string& dir_path, const string& file_name)
++     if (buffer.empty())
++         return;
++ 
++-    auto handler = make_unique<xml_simple_stream_handler>(
+++    auto handler = orcus::make_unique<xml_simple_stream_handler>(
++         new xlsx_workbook_context(mp_impl->m_cxt, ooxml_tokens));
++ 
++     xml_stream_parser parser(
++@@ -341,7 +341,7 @@ void orcus_xlsx::read_sheet(const string& dir_path, const string& file_name, xls
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++         reinterpret_cast<const char*>(&buffer[0]), buffer.size());
++ 
++-    auto handler = make_unique<xlsx_sheet_xml_handler>(
+++    auto handler = orcus::make_unique<xlsx_sheet_xml_handler>(
++         mp_impl->m_cxt, ooxml_tokens, data->id-1, sheet);
++ 
++     parser.set_handler(handler.get());
++@@ -373,7 +373,7 @@ void orcus_xlsx::read_shared_strings(const string& dir_path, const string& file_
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++         reinterpret_cast<const char*>(&buffer[0]), buffer.size());
++ 
++-    auto handler = make_unique<xml_simple_stream_handler>(
+++    auto handler = orcus::make_unique<xml_simple_stream_handler>(
++         new xlsx_shared_strings_context(
++             mp_impl->m_cxt, ooxml_tokens, mp_impl->mp_factory->get_shared_strings()));
++ 
++@@ -406,7 +406,7 @@ void orcus_xlsx::read_styles(const string& dir_path, const string& file_name)
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++         reinterpret_cast<const char*>(&buffer[0]), buffer.size());
++ 
++-    auto handler = make_unique<xml_simple_stream_handler>(
+++    auto handler = orcus::make_unique<xml_simple_stream_handler>(
++         new xlsx_styles_context(
++             mp_impl->m_cxt, ooxml_tokens, mp_impl->mp_factory->get_styles()));
++ 
++@@ -441,7 +441,7 @@ void orcus_xlsx::read_table(const std::string& dir_path, const std::string& file
++     if (buffer.empty())
++         return;
++ 
++-    auto handler = make_unique<xlsx_table_xml_handler>(mp_impl->m_cxt, ooxml_tokens, *table);
+++    auto handler = orcus::make_unique<xlsx_table_xml_handler>(mp_impl->m_cxt, ooxml_tokens, *table);
++ 
++     xml_stream_parser parser(
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++@@ -471,7 +471,7 @@ void orcus_xlsx::read_pivot_cache_def(const std::string& dir_path, const std::st
++     if (buffer.empty())
++         return;
++ 
++-    auto handler = make_unique<xlsx_pivot_cache_def_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
+++    auto handler = orcus::make_unique<xlsx_pivot_cache_def_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
++ 
++     xml_stream_parser parser(
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++@@ -502,7 +502,7 @@ void orcus_xlsx::read_pivot_cache_rec(const std::string& dir_path, const std::st
++     if (buffer.empty())
++         return;
++ 
++-    auto handler = make_unique<xlsx_pivot_cache_rec_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
+++    auto handler = orcus::make_unique<xlsx_pivot_cache_rec_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
++ 
++     xml_stream_parser parser(
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++@@ -532,7 +532,7 @@ void orcus_xlsx::read_pivot_table(const std::string& dir_path, const std::string
++     if (buffer.empty())
++         return;
++ 
++-    auto handler = make_unique<xlsx_pivot_table_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
+++    auto handler = orcus::make_unique<xlsx_pivot_table_xml_handler>(mp_impl->m_cxt, ooxml_tokens);
++ 
++     xml_stream_parser parser(
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++@@ -567,7 +567,7 @@ void orcus_xlsx::read_rev_headers(const std::string& dir_path, const std::string
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++         reinterpret_cast<const char*>(&buffer[0]), buffer.size());
++ 
++-    auto handler = make_unique<xml_simple_stream_handler>(
+++    auto handler = orcus::make_unique<xml_simple_stream_handler>(
++         new xlsx_revheaders_context(mp_impl->m_cxt, ooxml_tokens));
++ 
++     parser.set_handler(handler.get());
++@@ -600,7 +600,7 @@ void orcus_xlsx::read_rev_log(const std::string& dir_path, const std::string& fi
++         get_config(), mp_impl->m_ns_repo, ooxml_tokens,
++         reinterpret_cast<const char*>(&buffer[0]), buffer.size());
++ 
++-    auto handler = make_unique<xml_simple_stream_handler>(
+++    auto handler = orcus::make_unique<xml_simple_stream_handler>(
++         new xlsx_revlog_context(mp_impl->m_cxt, ooxml_tokens));
++ 
++     parser.set_handler(handler.get());
++diff --git a/src/liborcus/orcus_xml.cpp b/src/liborcus/orcus_xml.cpp
++index 2cb7fa3..f97c4f9 100644
++--- a/src/liborcus/orcus_xml.cpp
+++++ b/src/liborcus/orcus_xml.cpp
++@@ -343,7 +343,7 @@ void write_range_reference_group(
++     scopes_type scopes;
++     for (spreadsheet::row_t current_row = 0; current_row < ref.row_size; ++current_row)
++     {
++-        scopes.push_back(make_unique<scope>(root)); // root element
+++        scopes.push_back(orcus::make_unique<scope>(root)); // root element
++ 
++         while (!scopes.empty())
++         {
++@@ -378,7 +378,7 @@ void write_range_reference_group(
++                     // This is a non-leaf element.  Push a new scope with this
++                     // element and re-start the loop.
++                     ++cur_scope.current_child_pos;
++-                    scopes.push_back(make_unique<scope>(child_elem));
+++                    scopes.push_back(orcus::make_unique<scope>(child_elem));
++                     new_scope = true;
++                     break;
++                 }
++diff --git a/src/liborcus/xlsx_sheet_context.cpp b/src/liborcus/xlsx_sheet_context.cpp
++index f350049..720319a 100644
++--- a/src/liborcus/xlsx_sheet_context.cpp
+++++ b/src/liborcus/xlsx_sheet_context.cpp
++@@ -547,7 +547,7 @@ void xlsx_sheet_context::end_element_cell()
++         {
++             // shared formula expression
++             session_data.m_shared_formulas.push_back(
++-                make_unique<xlsx_session_data::shared_formula>(
+++                orcus::make_unique<xlsx_session_data::shared_formula>(
++                     m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.shared_id,
++                     m_cur_formula.str.str(), m_cur_formula.ref.str()));
++         }
++@@ -555,14 +555,14 @@ void xlsx_sheet_context::end_element_cell()
++         {
++             // array formula expression
++             session_data.m_formulas.push_back(
++-                make_unique<xlsx_session_data::formula>(
+++                orcus::make_unique<xlsx_session_data::formula>(
++                     m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.str.str(), m_cur_formula.ref.str()));
++         }
++         else
++         {
++             // normal (non-shared) formula expression
++             session_data.m_formulas.push_back(
++-                make_unique<xlsx_session_data::formula>(
+++                orcus::make_unique<xlsx_session_data::formula>(
++                     m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.str.str()));
++         }
++     }
++@@ -570,7 +570,7 @@ void xlsx_sheet_context::end_element_cell()
++     {
++         // shared formula without formula expression
++         session_data.m_shared_formulas.push_back(
++-            make_unique<xlsx_session_data::shared_formula>(
+++            orcus::make_unique<xlsx_session_data::shared_formula>(
++                 m_sheet_id, m_cur_row, m_cur_col, m_cur_formula.shared_id));
++     }
++     else if (m_cur_formula.type == spreadsheet::formula_t::data_table)
++diff --git a/src/liborcus/xml_map_tree.cpp b/src/liborcus/xml_map_tree.cpp
++index 132ccb9..69fbc75 100644
++--- a/src/liborcus/xml_map_tree.cpp
+++++ b/src/liborcus/xml_map_tree.cpp
++@@ -666,7 +666,7 @@ xml_map_tree::linkable* xml_map_tree::get_element_stack(
++         {
++             // Insert a new element of this name.
++             children.push_back(
++-                make_unique<element>(
+++                orcus::make_unique<element>(
++                     token.ns, m_names.intern(token.name.get(), token.name.size()).first,
++                     element_unlinked, reference_unknown));
++             cur_element = children.back().get();
++@@ -695,7 +695,7 @@ xml_map_tree::linkable* xml_map_tree::get_element_stack(
++             throw xpath_error("This attribute is already linked.  You can't link the same attribute twice.");
++ 
++         attrs.push_back(
++-            make_unique<attribute>(
+++            orcus::make_unique<attribute>(
++                 token.ns, m_names.intern(token.name.get(), token.name.size()).first, ref_type));
++ 
++         ret = attrs.back().get();
++@@ -710,7 +710,7 @@ xml_map_tree::linkable* xml_map_tree::get_element_stack(
++         {
++             // No element of that name exists.
++             children.push_back(
++-                make_unique<element>(
+++                orcus::make_unique<element>(
++                     token.ns, m_names.intern(token.name.get(), token.name.size()).first,
++                     element_linked, ref_type));
++ 
++diff --git a/src/liborcus/xml_structure_tree.cpp b/src/liborcus/xml_structure_tree.cpp
++index f2d62bd..3a08c64 100644
++--- a/src/liborcus/xml_structure_tree.cpp
+++++ b/src/liborcus/xml_structure_tree.cpp
++@@ -451,7 +451,7 @@ void xml_structure_tree::dump_compact(ostream& os) const
++     cxt.dump(os);
++ 
++     element_ref ref(mp_impl->mp_root->name, &mp_impl->mp_root->prop);
++-    scopes.push_back(make_unique<scope>(entity_name(), false, ref));
+++    scopes.push_back(orcus::make_unique<scope>(entity_name(), false, ref));
++     while (!scopes.empty())
++     {
++         bool new_scope = false;
++@@ -505,7 +505,7 @@ void xml_structure_tree::dump_compact(ostream& os) const
++ 
++             // Push a new scope, and restart the loop with the new scope.
++             ++cur_scope.current_pos;
++-            scopes.push_back(make_unique<scope>(this_elem.name, this_elem.prop->repeat));
+++            scopes.push_back(orcus::make_unique<scope>(this_elem.name, this_elem.prop->repeat));
++             scope& child_scope = *scopes.back();
++             child_scope.elements.swap(elems);
++             child_scope.current_pos = child_scope.elements.begin();
++diff --git a/src/liborcus/yaml_document_tree.cpp b/src/liborcus/yaml_document_tree.cpp
++index b7cc4bc..5aad4f2 100644
++--- a/src/liborcus/yaml_document_tree.cpp
+++++ b/src/liborcus/yaml_document_tree.cpp
++@@ -254,13 +254,13 @@ public:
++ 
++         if (m_root)
++         {
++-            yaml_value* yv = push_value(make_unique<yaml_value_sequence>());
+++            yaml_value* yv = push_value(orcus::make_unique<yaml_value_sequence>());
++             assert(yv && yv->type == node_t::sequence);
++             m_stack.push_back(parser_stack(yv));
++         }
++         else
++         {
++-            m_root = make_unique<yaml_value_sequence>();
+++            m_root = orcus::make_unique<yaml_value_sequence>();
++             m_stack.push_back(parser_stack(m_root.get()));
++         }
++     }
++@@ -276,13 +276,13 @@ public:
++         assert(m_in_document);
++         if (m_root)
++         {
++-            yaml_value* yv = push_value(make_unique<yaml_value_map>());
+++            yaml_value* yv = push_value(orcus::make_unique<yaml_value_map>());
++             assert(yv && yv->type == node_t::map);
++             m_stack.push_back(parser_stack(yv));
++         }
++         else
++         {
++-            m_root = make_unique<yaml_value_map>();
+++            m_root = orcus::make_unique<yaml_value_map>();
++             m_stack.push_back(parser_stack(m_root.get()));
++         }
++     }
++@@ -319,11 +319,11 @@ public:
++ 
++         if (m_root)
++         {
++-            yaml_value* yv = push_value(make_unique<yaml_value_string>(p, n));
+++            yaml_value* yv = push_value(orcus::make_unique<yaml_value_string>(p, n));
++             assert(yv && yv->type == node_t::string);
++         }
++         else
++-            m_root = make_unique<yaml_value_string>(p, n);
+++            m_root = orcus::make_unique<yaml_value_string>(p, n);
++     }
++ 
++     void number(double val)
++@@ -331,11 +331,11 @@ public:
++         assert(m_in_document);
++         if (m_root)
++         {
++-            yaml_value* yv = push_value(make_unique<yaml_value_number>(val));
+++            yaml_value* yv = push_value(orcus::make_unique<yaml_value_number>(val));
++             assert(yv && yv->type == node_t::number);
++         }
++         else
++-            m_root = make_unique<yaml_value_number>(val);
+++            m_root = orcus::make_unique<yaml_value_number>(val);
++     }
++ 
++     void boolean_true()
++@@ -343,11 +343,11 @@ public:
++         assert(m_in_document);
++         if (m_root)
++         {
++-            yaml_value* yv = push_value(make_unique<yaml_value>(node_t::boolean_true));
+++            yaml_value* yv = push_value(orcus::make_unique<yaml_value>(node_t::boolean_true));
++             assert(yv && yv->type == node_t::boolean_true);
++         }
++         else
++-            m_root = make_unique<yaml_value>(node_t::boolean_true);
+++            m_root = orcus::make_unique<yaml_value>(node_t::boolean_true);
++     }
++ 
++     void boolean_false()
++@@ -355,11 +355,11 @@ public:
++         assert(m_in_document);
++         if (m_root)
++         {
++-            yaml_value* yv = push_value(make_unique<yaml_value>(node_t::boolean_false));
+++            yaml_value* yv = push_value(orcus::make_unique<yaml_value>(node_t::boolean_false));
++             assert(yv && yv->type == node_t::boolean_false);
++         }
++         else
++-            m_root = make_unique<yaml_value>(node_t::boolean_false);
+++            m_root = orcus::make_unique<yaml_value>(node_t::boolean_false);
++     }
++ 
++     void null()
++@@ -367,11 +367,11 @@ public:
++         assert(m_in_document);
++         if (m_root)
++         {
++-            yaml_value* yv = push_value(make_unique<yaml_value>(node_t::null));
+++            yaml_value* yv = push_value(orcus::make_unique<yaml_value>(node_t::null));
++             assert(yv && yv->type == node_t::null);
++         }
++         else
++-            m_root = make_unique<yaml_value>(node_t::null);
+++            m_root = orcus::make_unique<yaml_value>(node_t::null);
++     }
++ 
++     void swap(std::vector<document_root_type>& docs)
++@@ -396,8 +396,8 @@ struct node::impl
++     impl(const yaml_value* yv) : m_node(yv) {}
++ };
++ 
++-node::node(const yaml_value* yv) : mp_impl(make_unique<impl>(yv)) {}
++-node::node(const node& other) : mp_impl(make_unique<impl>(other.mp_impl->m_node)) {}
+++node::node(const yaml_value* yv) : mp_impl(orcus::make_unique<impl>(yv)) {}
+++node::node(const node& other) : mp_impl(orcus::make_unique<impl>(other.mp_impl->m_node)) {}
++ node::node(node&& rhs) : mp_impl(std::move(rhs.mp_impl)) {}
++ node::~node() {}
++ 
++@@ -548,7 +548,7 @@ double node::numeric_value() const
++ 
++ }}
++ 
++-yaml_document_tree::yaml_document_tree() : mp_impl(make_unique<impl>()) {}
+++yaml_document_tree::yaml_document_tree() : mp_impl(orcus::make_unique<impl>()) {}
++ yaml_document_tree::~yaml_document_tree() {}
++ 
++ void yaml_document_tree::load(const std::string& strm)
++diff --git a/src/mso/encryption_info.cpp b/src/mso/encryption_info.cpp
++index 1d428fc..e9bc3ad 100644
++--- a/src/mso/encryption_info.cpp
+++++ b/src/mso/encryption_info.cpp
++@@ -143,11 +143,10 @@ public:
++ 
++ class sax_handler
++ {
++-    xmlns_context& m_ns_cxt;
++     vector<sax_ns_parser_attribute> m_attrs;
++ 
++ public:
++-    sax_handler(xmlns_context& ns_cxt) : m_ns_cxt(ns_cxt) {}
+++    sax_handler(xmlns_context& /*ns_cxt*/) {}
++     void doctype(const sax::doctype_declaration&) {}
++     void start_declaration(const pstring&) {}
++     void end_declaration(const pstring&) {}
++diff --git a/src/orcus_filter_global.cpp b/src/orcus_filter_global.cpp
++index 09c2ab6..df50496 100644
++--- a/src/orcus_filter_global.cpp
+++++ b/src/orcus_filter_global.cpp
++@@ -239,7 +239,7 @@ std::unique_ptr<json_config> parse_json_args(int argc, char** argv)
++         return nullptr;
++     }
++ 
++-    std::unique_ptr<json_config> config = make_unique<json_config>();
+++    std::unique_ptr<json_config> config = orcus::make_unique<json_config>();
++ 
++     if (vm.count("input"))
++         config->input_path = vm["input"].as<string>();
++diff --git a/src/orcus_json_main.cpp b/src/orcus_json_main.cpp
++index edca63a..6a739b2 100644
++--- a/src/orcus_json_main.cpp
+++++ b/src/orcus_json_main.cpp
++@@ -25,7 +25,7 @@ using namespace orcus;
++ 
++ std::unique_ptr<json_document_tree> load_doc(const std::string& strm, const json_config& config)
++ {
++-    std::unique_ptr<json_document_tree> doc(make_unique<json_document_tree>());
+++    std::unique_ptr<json_document_tree> doc(orcus::make_unique<json_document_tree>());
++     try
++     {
++         doc->load(strm, config);
++diff --git a/src/orcus_yaml_main.cpp b/src/orcus_yaml_main.cpp
++index 3d15742..c028f64 100644
++--- a/src/orcus_yaml_main.cpp
+++++ b/src/orcus_yaml_main.cpp
++@@ -76,7 +76,7 @@ std::unique_ptr<yaml_config> parse_yaml_args(int argc, char** argv)
++         return nullptr;
++     }
++ 
++-    std::unique_ptr<yaml_config> config = make_unique<yaml_config>();
+++    std::unique_ptr<yaml_config> config = orcus::make_unique<yaml_config>();
++ 
++     if (vm.count("input"))
++         config->input_path = vm["input"].as<string>();
++diff --git a/src/parser/json_parser_base.cpp b/src/parser/json_parser_base.cpp
++index 50e3f36..eff27b7 100644
++--- a/src/parser/json_parser_base.cpp
+++++ b/src/parser/json_parser_base.cpp
++@@ -35,7 +35,7 @@ struct parser_base::impl
++ };
++ 
++ parser_base::parser_base(const char* p, size_t n) :
++-    ::orcus::parser_base(p, n), mp_impl(make_unique<impl>()) {}
+++    ::orcus::parser_base(p, n), mp_impl(orcus::make_unique<impl>()) {}
++ 
++ parser_base::~parser_base() {}
++ 
++diff --git a/src/parser/sax_parser_base.cpp b/src/parser/sax_parser_base.cpp
++index 51d56a4..3cd4f25 100644
++--- a/src/parser/sax_parser_base.cpp
+++++ b/src/parser/sax_parser_base.cpp
++@@ -57,7 +57,7 @@ struct parser_base::impl
++ 
++ parser_base::parser_base(const char* content, size_t size) :
++     ::orcus::parser_base(content, size),
++-    mp_impl(make_unique<impl>()),
+++    mp_impl(orcus::make_unique<impl>()),
++     m_nest_level(0),
++     m_buffer_pos(0),
++     m_root_elem_open(true)
++diff --git a/src/parser/string_pool.cpp b/src/parser/string_pool.cpp
++index 83c0501..baba88a 100644
++--- a/src/parser/string_pool.cpp
+++++ b/src/parser/string_pool.cpp
++@@ -61,7 +61,7 @@ struct string_pool::impl
++     string_store_type m_store;
++ };
++ 
++-string_pool::string_pool() : mp_impl(make_unique<impl>()) {}
+++string_pool::string_pool() : mp_impl(orcus::make_unique<impl>()) {}
++ 
++ string_pool::~string_pool()
++ {
++@@ -82,7 +82,7 @@ pair<pstring, bool> string_pool::intern(const char* str, size_t n)
++     if (itr == mp_impl->m_set.end())
++     {
++         // This string has not been interned.  Intern it.
++-        mp_impl->m_store.push_back(make_unique<string>(str, n));
+++        mp_impl->m_store.push_back(orcus::make_unique<string>(str, n));
++         pair<string_set_type::iterator,bool> r = mp_impl->m_set.insert(pstring(mp_impl->m_store.back()->data(), n));
++         if (!r.second)
++             throw general_error("failed to intern a new string instance.");
++diff --git a/src/parser/yaml_parser_base.cpp b/src/parser/yaml_parser_base.cpp
++index 656dfdc..3c93266 100644
++--- a/src/parser/yaml_parser_base.cpp
+++++ b/src/parser/yaml_parser_base.cpp
++@@ -59,7 +59,7 @@ const size_t parser_base::parse_indent_end_of_stream = std::numeric_limits<size_
++ const size_t parser_base::scope_empty = std::numeric_limits<size_t>::max() - 2;
++ 
++ parser_base::parser_base(const char* p, size_t n) :
++-    ::orcus::parser_base(p, n), mp_impl(make_unique<impl>()) {}
+++    ::orcus::parser_base(p, n), mp_impl(orcus::make_unique<impl>()) {}
++ 
++ parser_base::~parser_base() {}
++ 
++diff --git a/src/spreadsheet/document.cpp b/src/spreadsheet/document.cpp
++index a80646c..17cc113 100644
++--- a/src/spreadsheet/document.cpp
+++++ b/src/spreadsheet/document.cpp
++@@ -448,7 +448,7 @@ sheet* document::append_sheet(const pstring& sheet_name, row_t row_size, col_t c
++     sheet_t sheet_index = static_cast<sheet_t>(mp_impl->m_sheets.size());
++ 
++     mp_impl->m_sheets.push_back(
++-        make_unique<sheet_item>(
+++        orcus::make_unique<sheet_item>(
++             *this, sheet_name_safe, sheet_index, row_size, col_size));
++ 
++     mp_impl->m_context.append_sheet(
++-- 
++2.4.5
++
+diff --git a/external/liborcus/0001-Get-it-to-build-on-Windows.patch b/external/liborcus/0001-Get-it-to-build-on-Windows.patch
+new file mode 100755
+index 0000000..dca91b3
+--- /dev/null
++++ b/external/liborcus/0001-Get-it-to-build-on-Windows.patch
+@@ -0,0 +1,212 @@
++From c5d7282214727bcc28b6ec7e2b8016b40872cd3b Mon Sep 17 00:00:00 2001
++From: Kohei Yoshida <kohei.yoshida at gmail.com>
++Date: Mon, 7 Mar 2016 18:35:23 -0500
++Subject: [PATCH] Get it to build on Windows.
++
++---
++ include/orcus/json_parser.hpp       | 32 +++++++++++++-------------------
++ include/orcus/parser_global.hpp     |  4 ++--
++ src/liborcus/json_document_tree.cpp |  2 +-
++ src/liborcus/json_util.cpp          |  4 ++--
++ src/liborcus/yaml_document_tree.cpp |  4 +++-
++ src/parser/parser_global.cpp        |  3 +++
++ src/parser/pstring.cpp              |  1 +
++ src/parser/stream.cpp               |  4 ++--
++ src/parser/yaml_parser_base.cpp     | 17 ++++++-----------
++ 9 files changed, 33 insertions(+), 38 deletions(-)
++
++diff --git a/include/orcus/json_parser.hpp b/include/orcus/json_parser.hpp
++index 5d733fb..183b831 100644
++--- a/include/orcus/json_parser.hpp
+++++ b/include/orcus/json_parser.hpp
++@@ -204,16 +204,13 @@ void json_parser<_Handler>::object()
++         if (!res.str)
++         {
++             // Parsing was unsuccessful.
++-            switch (res.length)
++-            {
++-                case parse_quoted_string_state::error_no_closing_quote:
++-                    throw json::parse_error("object: stream ended prematurely before reaching the closing quote of a key.", offset());
++-                case parse_quoted_string_state::error_illegal_escape_char:
++-                    json::parse_error::throw_with(
++-                        "object: illegal escape character '", cur_char(), "' in key value.", offset());
++-                default:
++-                    throw json::parse_error("object: unknown error while parsing a key value.", offset());
++-            }
+++            if (res.length == parse_quoted_string_state::error_no_closing_quote)
+++                throw json::parse_error("object: stream ended prematurely before reaching the closing quote of a key.", offset());
+++            else if (res.length == parse_quoted_string_state::error_illegal_escape_char)
+++                json::parse_error::throw_with(
+++                    "object: illegal escape character '", cur_char(), "' in key value.", offset());
+++            else
+++                throw json::parse_error("object: unknown error while parsing a key value.", offset());
++         }
++ 
++         m_handler.object_key(res.str, res.length, res.transient);
++@@ -297,15 +294,12 @@ void json_parser<_Handler>::string()
++     }
++ 
++     // Parsing was unsuccessful.
++-    switch (res.length)
++-    {
++-        case parse_quoted_string_state::error_no_closing_quote:
++-            throw json::parse_error("string: stream ended prematurely before reaching the closing quote.", offset());
++-        case parse_quoted_string_state::error_illegal_escape_char:
++-            json::parse_error::throw_with("string: illegal escape character '", cur_char(), "'.", offset());
++-        default:
++-            throw json::parse_error("string: unknown error.", offset());
++-    }
+++    if (res.length == parse_quoted_string_state::error_no_closing_quote)
+++        throw json::parse_error("string: stream ended prematurely before reaching the closing quote.", offset());
+++    else if (res.length == parse_quoted_string_state::error_illegal_escape_char)
+++        json::parse_error::throw_with("string: illegal escape character '", cur_char(), "'.", offset());
+++    else
+++        throw json::parse_error("string: unknown error.", offset());
++ }
++ 
++ }
++diff --git a/include/orcus/parser_global.hpp b/include/orcus/parser_global.hpp
++index 6fab254..b76aec4 100644
++--- a/include/orcus/parser_global.hpp
+++++ b/include/orcus/parser_global.hpp
++@@ -31,8 +31,8 @@ enum class string_escape_char_t
++  */
++ struct parse_quoted_string_state
++ {
++-    static constexpr size_t error_no_closing_quote    = 1;
++-    static constexpr size_t error_illegal_escape_char = 2;
+++    ORCUS_PSR_DLLPUBLIC static const size_t error_no_closing_quote;
+++    ORCUS_PSR_DLLPUBLIC static const size_t error_illegal_escape_char;
++ 
++     const char* str;
++     size_t length;
++diff --git a/src/liborcus/json_document_tree.cpp b/src/liborcus/json_document_tree.cpp
++index 81289e1..2fb8a41 100644
++--- a/src/liborcus/json_document_tree.cpp
+++++ b/src/liborcus/json_document_tree.cpp
++@@ -54,7 +54,7 @@ using json_value = json::detail::json_value;
++ using node_t = json::detail::node_t;
++ 
++ const char* tab = "    ";
++-constexpr char quote = '"';
+++const char quote = '"';
++ 
++ const xmlns_id_t NS_orcus_json_xml = "http://schemas.kohei.us/orcus/2015/json";
++ 
++diff --git a/src/liborcus/json_util.cpp b/src/liborcus/json_util.cpp
++index 37bd2b0..8f593cd 100644
++--- a/src/liborcus/json_util.cpp
+++++ b/src/liborcus/json_util.cpp
++@@ -11,8 +11,8 @@ namespace orcus { namespace json {
++ 
++ namespace {
++ 
++-constexpr char quote = '"';
++-constexpr char backslash = '\\';
+++const char quote = '"';
+++const char backslash = '\\';
++ 
++ }
++ 
++diff --git a/src/liborcus/yaml_document_tree.cpp b/src/liborcus/yaml_document_tree.cpp
++index 5aad4f2..27bb7e8 100644
++--- a/src/liborcus/yaml_document_tree.cpp
+++++ b/src/liborcus/yaml_document_tree.cpp
++@@ -155,6 +155,8 @@ struct parser_stack
++     yaml_value* node;
++ 
++     parser_stack(yaml_value* _node) : node(_node) {}
+++    parser_stack(const parser_stack&) = delete;
+++    parser_stack(parser_stack&& r) : key(std::move(r.key)), node(r.node) {}
++ };
++ 
++ typedef std::unique_ptr<yaml_value> document_root_type;
++@@ -577,7 +579,7 @@ const char* kw_false = "false";
++ const char* kw_tilde = "~";
++ const char* kw_null = "null";
++ 
++-constexpr char quote = '"';
+++const char quote = '"';
++ 
++ void dump_indent(std::ostringstream& os, size_t scope)
++ {
++diff --git a/src/parser/parser_global.cpp b/src/parser/parser_global.cpp
++index 6e6b656..4023689 100644
++--- a/src/parser/parser_global.cpp
+++++ b/src/parser/parser_global.cpp
++@@ -12,6 +12,9 @@
++ 
++ namespace orcus {
++ 
+++const size_t parse_quoted_string_state::error_no_closing_quote = 1;
+++const size_t parse_quoted_string_state::error_illegal_escape_char = 2;
+++
++ bool is_blank(char c)
++ {
++     return is_in(c, " \t\n\r");
++diff --git a/src/parser/pstring.cpp b/src/parser/pstring.cpp
++index 303e88e..50ab2ca 100644
++--- a/src/parser/pstring.cpp
+++++ b/src/parser/pstring.cpp
++@@ -12,6 +12,7 @@
++ #include <cassert>
++ #include <iostream>
++ #include <vector>
+++#include <algorithm>
++ 
++ using namespace std;
++ 
++diff --git a/src/parser/stream.cpp b/src/parser/stream.cpp
++index 00a24a0..eb73dcc 100644
++--- a/src/parser/stream.cpp
+++++ b/src/parser/stream.cpp
++@@ -85,7 +85,7 @@ std::string create_parse_error_output(const std::string& strm, std::ptrdiff_t of
++     if (offset < 0)
++         return std::string();
++ 
++-    constexpr size_t max_line_length = 60;
+++    const size_t max_line_length = 60;
++ 
++     auto line_info = find_line_with_offset(strm, offset);
++     pstring line = std::get<0>(line_info);
++@@ -113,7 +113,7 @@ std::string create_parse_error_output(const std::string& strm, std::ptrdiff_t of
++     // The error line is too long.  Only show a segment of the line where the
++     // error occurred.
++ 
++-    constexpr size_t fixed_offset = 20;
+++    const size_t fixed_offset = 20;
++ 
++     size_t line_start = offset_on_line - fixed_offset;
++     size_t line_end = line_start + max_line_length;
++diff --git a/src/parser/yaml_parser_base.cpp b/src/parser/yaml_parser_base.cpp
++index 3c93266..c6e7939 100644
++--- a/src/parser/yaml_parser_base.cpp
+++++ b/src/parser/yaml_parser_base.cpp
++@@ -289,18 +289,13 @@ void throw_quoted_string_parse_error(const char* func_name, const parse_quoted_s
++ {
++     std::ostringstream os;
++     os << func_name << ": failed to parse ";
++-    switch (ret.length)
++-    {
++-        case parse_quoted_string_state::error_illegal_escape_char:
++-            os << "due to the presence of illegal escape character.";
++-        break;
++-        case parse_quoted_string_state::error_no_closing_quote:
++-            os << "because the closing quote was not found.";
++-        break;
++-        default:
++-            os << "due to unknown reason.";
+++    if (ret.length == parse_quoted_string_state::error_illegal_escape_char)
+++        os << "due to the presence of illegal escape character.";
+++    else if (ret.length == parse_quoted_string_state::error_no_closing_quote)
+++        os << "because the closing quote was not found.";
+++    else
+++        os << "due to unknown reason.";
++ 
++-    }
++     throw parse_error(os.str());
++ }
++ 
++-- 
++1.8.1.msysgit.1
++
+diff --git a/external/liborcus/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk
+index 4411592..56debe9 100644
+--- a/external/liborcus/ExternalPackage_liborcus.mk
++++ b/external/liborcus/ExternalPackage_liborcus.mk
+@@ -12,11 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,liborcus,liborcus))
+ $(eval $(call gb_ExternalPackage_use_external_project,liborcus,liborcus))
+ 
+ ifeq ($(OS),MACOSX)
+-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.10.0.dylib,src/liborcus/.libs/liborcus-0.10.0.dylib))
+-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.10.0.dylib,src/parser/.libs/liborcus-parser-0.10.0.dylib))
++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.11.0.dylib,src/liborcus/.libs/liborcus-0.11.0.dylib))
++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.11.0.dylib,src/parser/.libs/liborcus-parser-0.11.0.dylib))
+ else ifeq ($(DISABLE_DYNLOADING),)
+-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.10.so.0,src/liborcus/.libs/liborcus-0.10.so.0.0.0))
+-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.10.so.0,src/parser/.libs/liborcus-parser-0.10.so.0.0.0))
++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.11.so.0,src/liborcus/.libs/liborcus-0.11.so.0.0.0))
++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.11.so.0,src/parser/.libs/liborcus-parser-0.11.so.0.0.0))
+ endif
+ 
+ # vim: set noet sw=4 ts=4:
+diff --git a/external/liborcus/ExternalProject_liborcus.mk b/external/liborcus/ExternalProject_liborcus.mk
+index 7eb8fdb..580ef847 100644
+--- a/external/liborcus/ExternalProject_liborcus.mk
++++ b/external/liborcus/ExternalProject_liborcus.mk
+@@ -13,6 +13,7 @@ $(eval $(call gb_ExternalProject_use_autoconf,liborcus,build))
+ 
+ $(eval $(call gb_ExternalProject_use_externals,liborcus, \
+     boost_headers \
++    boost_filesystem \
+     boost_iostreams \
+     boost_system \
+ 	mdds_headers \
+@@ -38,9 +39,9 @@ ifneq ($(SYSTEM_ZLIB),)
+ liborcus_LIBS+=-lz
+ endif
+ ifneq ($(SYSTEM_BOOST),)
+-liborcus_LIBS+=$(BOOST_SYSTEM_LIB) $(BOOST_IOSTREAMS_LIB)
++liborcus_LIBS+=$(BOOST_SYSTEM_LIB) $(BOOST_IOSTREAMS_LIB) $(BOOST_FILESYSTEM_LIB)
+ else
+-liborcus_LIBS+=-L$(gb_StaticLibrary_WORKDIR) -lboost_system -lboost_iostreams
++liborcus_LIBS+=-L$(gb_StaticLibrary_WORKDIR) -lboost_system -lboost_iostreams -lboost_filesystem
+ endif
+ ifeq ($(OS),ANDROID)
+ liborcus_LIBS+=-lgnustl_shared -lm
+@@ -96,12 +97,13 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) :
+ 			, \
+ 				--enable-shared --disable-static \
+ 			) \
+-			$(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
+-			--disable-spreadsheet-model \
+-			--without-tools \
+-			--disable-werror \
+-			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
+-			$(if $(SYSTEM_BOOST),,\
++                       $(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
++                       --disable-spreadsheet-model \
++                       --without-tools \
++                       --disable-python \
++                       --disable-werror \
++                       $(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
++                       $(if $(SYSTEM_BOOST),,\
+ 				--with-boost=$(WORKDIR)/UnpackedTarball/boost \
+ 				boost_cv_lib_iostreams=yes \
+ 				boost_cv_lib_system=yes \
+@@ -111,8 +113,8 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) :
+ 		   $(MAKE) \
+ 		$(if $(filter MACOSX,$(OS)),\
+ 			&& $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \
+-				$(gb_Package_SOURCEDIR_liborcus)/src/liborcus/.libs/liborcus-0.10.0.dylib \
+-				$(gb_Package_SOURCEDIR_liborcus)/src/parser/.libs/liborcus-parser-0.10.0.dylib \
++				$(gb_Package_SOURCEDIR_liborcus)/src/liborcus/.libs/liborcus-0.11.0.dylib \
++				$(gb_Package_SOURCEDIR_liborcus)/src/parser/.libs/liborcus-parser-0.11.0.dylib \
+ 		) \
+ 	)
+ 
+diff --git a/external/liborcus/Library_orcus-parser.mk b/external/liborcus/Library_orcus-parser.mk
+index c3b4eec..28af14e 100644
+--- a/external/liborcus/Library_orcus-parser.mk
++++ b/external/liborcus/Library_orcus-parser.mk
+@@ -39,6 +39,8 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\
+ 	UnpackedTarball/liborcus/src/parser/css_types \
+ 	UnpackedTarball/liborcus/src/parser/csv_parser_base \
+ 	UnpackedTarball/liborcus/src/parser/exception \
++	UnpackedTarball/liborcus/src/parser/json_parser_base \
++	UnpackedTarball/liborcus/src/parser/parser_base \
+ 	UnpackedTarball/liborcus/src/parser/parser_global \
+ 	UnpackedTarball/liborcus/src/parser/pstring \
+ 	UnpackedTarball/liborcus/src/parser/sax_parser_base \
+@@ -48,6 +50,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\
+ 	UnpackedTarball/liborcus/src/parser/tokens \
+ 	UnpackedTarball/liborcus/src/parser/types \
+ 	UnpackedTarball/liborcus/src/parser/xml_namespace \
++	UnpackedTarball/liborcus/src/parser/yaml_parser_base \
+ 	UnpackedTarball/liborcus/src/parser/zip_archive \
+ 	UnpackedTarball/liborcus/src/parser/zip_archive_stream \
+ ))
+diff --git a/external/liborcus/Library_orcus.mk b/external/liborcus/Library_orcus.mk
+index ae98d5e..96169f1 100644
+--- a/external/liborcus/Library_orcus.mk
++++ b/external/liborcus/Library_orcus.mk
+@@ -13,6 +13,7 @@ $(eval $(call gb_Library_use_unpacked,orcus,liborcus))
+ 
+ $(eval $(call gb_Library_use_externals,orcus,\
+ 	boost_headers \
++	boost_filesystem \
+ 	boost_iostreams \
+ 	boost_system \
+ 	mdds_headers \
+@@ -53,12 +54,16 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
+ 	UnpackedTarball/liborcus/src/liborcus/gnumeric_namespace_types \
+ 	UnpackedTarball/liborcus/src/liborcus/gnumeric_sheet_context \
+ 	UnpackedTarball/liborcus/src/liborcus/gnumeric_tokens \
++	UnpackedTarball/liborcus/src/liborcus/info \
+ 	UnpackedTarball/liborcus/src/liborcus/interface \
++	UnpackedTarball/liborcus/src/liborcus/json_document_tree \
++	UnpackedTarball/liborcus/src/liborcus/json_util \
+ 	UnpackedTarball/liborcus/src/liborcus/measurement \
++	UnpackedTarball/liborcus/src/liborcus/odf_helper \
+ 	UnpackedTarball/liborcus/src/liborcus/odf_namespace_types \
+ 	UnpackedTarball/liborcus/src/liborcus/odf_para_context \
+-	UnpackedTarball/liborcus/src/liborcus/odf_styles \
+ 	UnpackedTarball/liborcus/src/liborcus/odf_styles_context \
++	UnpackedTarball/liborcus/src/liborcus/odf_styles \
+ 	UnpackedTarball/liborcus/src/liborcus/odf_tokens \
+ 	UnpackedTarball/liborcus/src/liborcus/ods_content_xml_context \
+ 	UnpackedTarball/liborcus/src/liborcus/ods_content_xml_handler \
+@@ -73,18 +78,26 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
+ 	UnpackedTarball/liborcus/src/liborcus/opc_reader \
+ 	UnpackedTarball/liborcus/src/liborcus/orcus_csv \
+ 	UnpackedTarball/liborcus/src/liborcus/orcus_gnumeric \
++	UnpackedTarball/liborcus/src/liborcus/orcus_import_ods \
++	UnpackedTarball/liborcus/src/liborcus/orcus_import_xlsx \
+ 	UnpackedTarball/liborcus/src/liborcus/orcus_ods \
+ 	UnpackedTarball/liborcus/src/liborcus/orcus_xlsx \
++	UnpackedTarball/liborcus/src/liborcus/orcus_xls_xml \
+ 	UnpackedTarball/liborcus/src/liborcus/orcus_xml \
+ 	UnpackedTarball/liborcus/src/liborcus/session_context \
+ 	UnpackedTarball/liborcus/src/liborcus/spreadsheet_interface \
+ 	UnpackedTarball/liborcus/src/liborcus/spreadsheet_types \
+-	UnpackedTarball/liborcus/src/liborcus/xls_xml_namespace_types \
++	UnpackedTarball/liborcus/src/liborcus/string_helper \
+ 	UnpackedTarball/liborcus/src/liborcus/xlsx_autofilter_context \
+ 	UnpackedTarball/liborcus/src/liborcus/xlsx_conditional_format_context \
+ 	UnpackedTarball/liborcus/src/liborcus/xlsx_context \
+ 	UnpackedTarball/liborcus/src/liborcus/xlsx_handler \
+ 	UnpackedTarball/liborcus/src/liborcus/xlsx_helper \
++	UnpackedTarball/liborcus/src/liborcus/xls_xml_context \
++	UnpackedTarball/liborcus/src/liborcus/xls_xml_detection_handler \
++	UnpackedTarball/liborcus/src/liborcus/xls_xml_handler \
++	UnpackedTarball/liborcus/src/liborcus/xls_xml_namespace_types \
++	UnpackedTarball/liborcus/src/liborcus/xls_xml_tokens \
+ 	UnpackedTarball/liborcus/src/liborcus/xlsx_pivot_context \
+ 	UnpackedTarball/liborcus/src/liborcus/xlsx_revision_context \
+ 	UnpackedTarball/liborcus/src/liborcus/xlsx_session_data \
+@@ -99,6 +112,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\
+ 	UnpackedTarball/liborcus/src/liborcus/xml_stream_handler \
+ 	UnpackedTarball/liborcus/src/liborcus/xml_stream_parser \
+ 	UnpackedTarball/liborcus/src/liborcus/xml_structure_tree \
++	UnpackedTarball/liborcus/src/liborcus/yaml_document_tree \
+ ))
+ 
+ # vim: set noet sw=4 ts=4:
+diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk
+index 825fa49..0e337ef 100644
+--- a/external/liborcus/UnpackedTarball_liborcus.mk
++++ b/external/liborcus/UnpackedTarball_liborcus.mk
+@@ -16,8 +16,15 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,liborcus,1))
+ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\
+ 	external/liborcus/0001-workaround-a-linking-problem-on-windows.patch \
+ 	external/liborcus/rpath.patch.0 \
+-	external/liborcus/fix-crash-ooo55043-1.patch.0 \
+-	external/liborcus/unusedheader.patch.0 \
++	external/liborcus/0001-Fix-for-OSX-build-inside-LibreOffice.patch \
++	external/liborcus/0001-Get-it-to-build-on-Windows.patch \
+ ))
+ 
++ifeq ($(OS),WNT)
++$(eval $(call gb_UnpackedTarball_add_patches,liborcus,\
++	external/liborcus/windows-constants-hack.patch \
++))
++endif
++
++
+ # vim: set noet sw=4 ts=4:
+diff --git a/external/liborcus/fix-crash-ooo55043-1.patch.0 b/external/liborcus/fix-crash-ooo55043-1.patch.0
+deleted file mode 100644
+index 58a97c0..0000000
+--- a/external/liborcus/fix-crash-ooo55043-1.patch.0
++++ /dev/null
+@@ -1,17 +0,0 @@
+---- src/parser/zip_archive_stream.cpp
+-+++ src/parser/zip_archive_stream.cpp
+-@@ -91,8 +91,13 @@
+- 
+- void zip_archive_stream_blob::read(unsigned char* buffer, size_t length) const
+- {
+-+    if (!length)
+-+        return;
+-     // First, make sure we have enough blob to satisfy the requested stream length.
+--    size_t length_available = m_size - tell();
+-+    const size_t pos = tell();
+-+    if (pos > m_size)
+-+        throw zip_error("Stream is seeked past end. No data available");
+-+    const size_t length_available = m_size - pos;
+-     if (length_available < length)
+-         throw zip_error("There is not enough stream left to fill requested length.");
+- 
+diff --git a/external/liborcus/unusedheader.patch.0 b/external/liborcus/unusedheader.patch.0
+deleted file mode 100644
+index 4f7a77b..0000000
+--- a/external/liborcus/unusedheader.patch.0
++++ /dev/null
+@@ -1,11 +0,0 @@
+---- ./src/parser/pstring.cpp.orig	2015-12-02 14:38:44.658744408 +0000
+-+++ ./src/parser/pstring.cpp	2015-12-02 14:38:50.449658497 +0000
+-@@ -13,8 +13,6 @@
+- #include <iostream>
+- #include <vector>
+- 
+--#include <boost/thread/mutex.hpp>
+--
+- using namespace std;
+- 
+- namespace orcus {
+diff --git a/external/liborcus/windows-constants-hack.patch b/external/liborcus/windows-constants-hack.patch
+new file mode 100755
+index 0000000..876bc16
+--- /dev/null
++++ b/external/liborcus/windows-constants-hack.patch
+@@ -0,0 +1,15 @@
++diff --git a/src/liborcus/info.cpp b/src/liborcus/info.cpp
++index ae571f5..539ce18 100644
++--- a/src/liborcus/info.cpp
+++++ b/src/liborcus/info.cpp
++@@ -7,7 +7,9 @@
++ 
++ #include "orcus/info.hpp"
++ 
++-#include "constants.inl"
+++#define ORCUS_MAJOR_VERSION 0
+++#define ORCUS_MINOR_VERSION 11
+++#define ORCUS_MICRO_VERSION 0
++ 
++ namespace orcus {
++ 
+diff --git a/sc/Library_scfilt.mk b/sc/Library_scfilt.mk
+index 74f2ce5..b764290 100644
+--- a/sc/Library_scfilt.mk
++++ b/sc/Library_scfilt.mk
+@@ -227,6 +227,7 @@ ifeq ($(ENABLE_ORCUS),TRUE)
+ $(eval $(call gb_Library_use_externals,scfilt,\
+ 	orcus \
+ 	orcus-parser \
++	boost_filesystem \
+ 	boost_system \
+ 	boost_iostreams \
+ 	zlib \
+diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
+index 63b36ef..05fe4cb 100644
+--- a/sc/source/filter/inc/orcusinterface.hxx
++++ b/sc/source/filter/inc/orcusinterface.hxx
+@@ -375,6 +375,7 @@ public:
+ 
+     virtual void set_border_count(size_t n) override;
+     virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, const char* s, size_t n) override;
++    virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, orcus::spreadsheet::border_style_t style) override;
+     virtual void set_border_color(orcus::spreadsheet::border_direction_t dir,
+             orcus::spreadsheet::color_elem_t alpha,
+             orcus::spreadsheet::color_elem_t red,
+@@ -425,6 +426,7 @@ public:
+     virtual void set_cell_style_name(const char* s, size_t n) override;
+     virtual void set_cell_style_xf(size_t index) override;
+     virtual void set_cell_style_builtin(size_t index) override;
++    virtual void set_cell_style_parent_name(const char* s, size_t n) override;
+     virtual size_t commit_cell_style() override;
+ };
+ 
+diff --git a/sc/source/filter/orcus/filterdetect.cxx b/sc/source/filter/orcus/filterdetect.cxx
+index 7dfccb9..9ae30ad 100644
+--- a/sc/source/filter/orcus/filterdetect.cxx
++++ b/sc/source/filter/orcus/filterdetect.cxx
+@@ -93,7 +93,7 @@ OUString OrcusFormatDetect::detect(css::uno::Sequence<css::beans::PropertyValue>
+     }
+ 
+     orcus::format_t eFormat = orcus::detect(reinterpret_cast<const unsigned char*>(aContent.getStr()), aContent.getLength());
+-    if (eFormat == orcus::format_gnumeric)
++    if (eFormat == orcus::format_t::gnumeric)
+         return OUString("Gnumeric XML");
+ 
+     return OUString();
+diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
+index e50b8bf..496faea 100644
+--- a/sc/source/filter/orcus/interface.cxx
++++ b/sc/source/filter/orcus/interface.cxx
+@@ -55,7 +55,7 @@ void ScOrcusGlobalSettings::set_default_formula_grammar(orcus::spreadsheet::form
+ 
+ orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula_grammar() const
+ {
+-    return orcus::spreadsheet::formula_grammar_unknown;
++    return orcus::spreadsheet::formula_grammar_t::unknown;
+ }
+ 
+ ScOrcusFactory::StringCellCache::StringCellCache(const ScAddress& rPos, size_t nIndex) :
+@@ -231,19 +231,19 @@ double translateToInternal(double nVal, orcus::length_unit_t unit)
+ {
+     switch(unit)
+     {
+-        case orcus::length_unit_inch:
++        case orcus::length_unit_t::inch:
+             return nVal * 72.0 * 20.0;
+             break;
+-        case orcus::length_unit_twip:
++        case orcus::length_unit_t::twip:
+             return nVal;
+             break;
+-        case orcus::length_unit_point:
++        case orcus::length_unit_t::point:
+             return nVal * 20.0;
+             break;
+-        case orcus::length_unit_centimeter:
++        case orcus::length_unit_t::centimeter:
+             return nVal * 20.0 * 72.0 / 2.54;
+             break;
+-        case orcus::length_unit_unknown:
++        case orcus::length_unit_t::unknown:
+             SAL_WARN("sc.orcus", "unknown unit");
+             break;
+         default:
+@@ -393,18 +393,18 @@ void ScOrcusConditionalFormat::set_type(os::conditional_format_t type)
+ {
+     switch (type)
+     {
+-        case os::conditional_format_condition:
+-        case os::conditional_format_formula:
++        case os::conditional_format_t::condition:
++        case os::conditional_format_t::formula:
+             meEntryType = condformat::CONDITION;
+             // mpCurrentEntry.reset(new ScCondFormatEntry());
+         break;
+-        case os::conditional_format_date:
++        case os::conditional_format_t::date:
+         break;
+-        case os::conditional_format_colorscale:
++        case os::conditional_format_t::colorscale:
+         break;
+-        case os::conditional_format_databar:
++        case os::conditional_format_t::databar:
+         break;
+-        case os::conditional_format_iconset:
++        case os::conditional_format_t::iconset:
+         break;
+         default:
+             SAL_INFO("sc.orcus.condformat", "unknown conditional_format_t value");
+@@ -549,17 +549,17 @@ formula::FormulaGrammar::Grammar getCalcGrammarFromOrcus( os::formula_grammar_t
+     formula::FormulaGrammar::Grammar eGrammar = formula::FormulaGrammar::GRAM_ODFF;
+     switch(grammar)
+     {
+-        case orcus::spreadsheet::formula_grammar_ods:
++        case orcus::spreadsheet::formula_grammar_t::ods:
+             eGrammar = formula::FormulaGrammar::GRAM_ODFF;
+             break;
+-        case orcus::spreadsheet::formula_grammar_xlsx_2007:
+-        case orcus::spreadsheet::formula_grammar_xlsx_2010:
++        case orcus::spreadsheet::formula_grammar_t::xlsx_2007:
++        case orcus::spreadsheet::formula_grammar_t::xlsx_2010:
+             eGrammar = formula::FormulaGrammar::GRAM_OOXML;
+             break;
+-        case orcus::spreadsheet::formula_grammar_gnumeric:
++        case orcus::spreadsheet::formula_grammar_t::gnumeric:
+             eGrammar = formula::FormulaGrammar::GRAM_ENGLISH_XL_A1;
+             break;
+-        case orcus::spreadsheet::formula_grammar_unknown:
++        case orcus::spreadsheet::formula_grammar_t::unknown:
+             break;
+     }
+ 
+@@ -799,16 +799,16 @@ SvxBoxItemLine getDirection(os::border_direction_t dir)
+ {
+     switch (dir)
+     {
+-        case os::border_right:
++        case os::border_direction_t::right:
+             return SvxBoxItemLine::RIGHT;
+         break;
+-        case os::border_left:
++        case os::border_direction_t::left:
+             return SvxBoxItemLine::RIGHT;
+         break;
+-        case os::border_top:
++        case os::border_direction_t::top:
+             return SvxBoxItemLine::RIGHT;
+         break;
+-        case os::border_bottom:
++        case os::border_direction_t::bottom:
+             return SvxBoxItemLine::RIGHT;
+         break;
+         default:
+@@ -947,15 +947,15 @@ void ScOrcusStyles::set_font_underline(orcus::spreadsheet::underline_t e)
+ {
+     switch(e)
+     {
+-        case orcus::spreadsheet::underline_single:
+-        case orcus::spreadsheet::underline_single_accounting:
++        case orcus::spreadsheet::underline_t::single_line:
++        case orcus::spreadsheet::underline_t::single_accounting:
+             maCurrentFont.meUnderline = UNDERLINE_SINGLE;
+             break;
+-        case orcus::spreadsheet::underline_double:
+-        case orcus::spreadsheet::underline_double_accounting:
++        case orcus::spreadsheet::underline_t::double_line:
++        case orcus::spreadsheet::underline_t::double_accounting:
+             maCurrentFont.meUnderline = UNDERLINE_DOUBLE;
+             break;
+-        case orcus::spreadsheet::underline_none:
++        case orcus::spreadsheet::underline_t::none:
+             maCurrentFont.meUnderline = UNDERLINE_NONE;
+             break;
+     }
+@@ -1019,6 +1019,12 @@ void ScOrcusStyles::set_border_style(orcus::spreadsheet::border_direction_t /*di
+     // implement later
+ }
+ 
++void ScOrcusStyles::set_border_style(
++    orcus::spreadsheet::border_direction_t /*dir*/, orcus::spreadsheet::border_style_t /*style*/)
++{
++    // implement later
++}
++
+ void ScOrcusStyles::set_border_color(orcus::spreadsheet::border_direction_t dir,
+             orcus::spreadsheet::color_elem_t alpha,
+             orcus::spreadsheet::color_elem_t red,
+@@ -1186,6 +1192,11 @@ void ScOrcusStyles::set_cell_style_builtin(size_t index)
+     maCurrentCellStyle.mnBuiltInId = index;
+ }
+ 
++void ScOrcusStyles::set_cell_style_parent_name(const char* /*s*/, size_t /*n*/)
++{
++    // place holder
++}
++
+ size_t ScOrcusStyles::commit_cell_style()
+ {
+     SAL_INFO("sc.orcus.style", "commit cell style: " << maCurrentCellStyle.maName);
+-- 
+cgit v0.10.2
+



More information about the arch-commits mailing list