[Libreoffice-commits] core.git: 2 commits - config_host.mk.in configure.ac download.lst external/apr external/Module_external.mk external/serf Makefile.fetch postprocess/CustomTarget_registry.mk postprocess/Rdb_services.mk RepositoryExternal.mk Repository.mk solenv/gbuild ucb/Library_ucpdav1.mk ucb/Module_ucb.mk ucb/source

Matúš Kukan matus.kukan at collabora.com
Thu Mar 6 03:36:58 PST 2014


 Makefile.fetch                                 |    3 
 Repository.mk                                  |    2 
 RepositoryExternal.mk                          |   52 +++++++++++++++
 config_host.mk.in                              |    8 ++
 configure.ac                                   |   83 ++++++++++++++++---------
 download.lst                                   |    6 +
 external/Module_external.mk                    |    2 
 external/apr/ExternalProject_apr.mk            |   37 +++++++++++
 external/apr/ExternalProject_apr_util.mk       |   40 ++++++++++++
 external/apr/Makefile                          |    7 ++
 external/apr/Module_apr.mk                     |   19 +++++
 external/apr/README                            |    5 +
 external/apr/UnpackedTarball_apr.mk            |   14 ++++
 external/apr/UnpackedTarball_apr_util.mk       |   22 ++++++
 external/apr/windows.build.patch.1             |   53 +++++++++++++++
 external/serf/ExternalProject_serf.mk          |   48 ++++++++++++++
 external/serf/Makefile                         |    7 ++
 external/serf/Module_serf.mk                   |   17 +++++
 external/serf/README                           |    4 +
 external/serf/UnpackedTarball_serf.mk          |   22 ++++++
 external/serf/windows.build.patch.1            |   29 ++++++++
 postprocess/CustomTarget_registry.mk           |    2 
 postprocess/Rdb_services.mk                    |    2 
 solenv/gbuild/ExternalProject.mk               |    1 
 solenv/gbuild/platform/com_GCC_class.mk        |    1 
 solenv/gbuild/platform/com_MSC_class.mk        |   10 +++
 ucb/Library_ucpdav1.mk                         |   55 ++++++++++++++++
 ucb/Module_ucb.mk                              |    7 --
 ucb/source/ucp/webdav/ContentProperties.hxx    |    4 -
 ucb/source/ucp/webdav/PropertyMap.hxx          |    4 -
 ucb/source/ucp/webdav/webdavcontent.cxx        |    4 -
 ucb/source/ucp/webdav/webdavresponseparser.cxx |    4 -
 ucb/source/ucp/webdav/webdavservices.cxx       |   10 ---
 33 files changed, 529 insertions(+), 55 deletions(-)

New commits:
commit dcae0509135c2067635ae3cf84b05dc9fb3d2d02
Author: Matúš Kukan <matus.kukan at collabora.com>
Date:   Tue Feb 25 21:47:33 2014 +0100

    Build webdav based on serf if neon is disabled.
    
    Change-Id: I0cbb89c8d5ac65eda8bb21aaf0d07996a015d281

diff --git a/Repository.mk b/Repository.mk
index 79d7089..5072b70 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -533,7 +533,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo, \
 	textconv_dict \
 	ucb1 \
 	ucbhelper \
-	$(if $(DISABLE_NEON),,ucpdav1) \
+	$(if $(WITH_WEBDAV),ucpdav1) \
 	ucpfile1 \
 	ucpftp1 \
 	ucpchelp1 \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index eec50bd..a4daea7 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -1000,7 +1000,9 @@ gb_LinkTarget__use_liblangtag :=
 
 endif # ENABLE_LIBLANGTAG
 
-ifneq ($(DISABLE_NEON),)
+gb_ExternalProject__use_apr :=
+
+ifeq ($(WITH_WEBDAV),serf)
 
 define gb_LinkTarget__use_apr
 $(call gb_LinkTarget_set_include,$(1),\
@@ -1048,9 +1050,7 @@ endif
 
 endef
 
-else
-
-gb_ExternalProject__use_apr :=
+else ifeq ($(WITH_WEBDAV),neon)
 
 ifneq ($(SYSTEM_NEON),)
 
@@ -1088,7 +1088,7 @@ endef
 
 endif # SYSTEM_NEON
 
-endif # DISABLE_NEON
+endif # WITH_WEBDAV
 
 ifneq ($(SYSTEM_REDLAND),)
 
diff --git a/config_host.mk.in b/config_host.mk.in
index cbe2978..1c2d25b 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -95,7 +95,6 @@ export DISABLE_CVE_TESTS=@DISABLE_CVE_TESTS@
 export DISABLE_DBCONNECTIVITY=@DISABLE_DBCONNECTIVITY@
 export DISABLE_DYNLOADING=@DISABLE_DYNLOADING@
 export DISABLE_EXPORT=@DISABLE_EXPORT@
-export DISABLE_NEON=@DISABLE_NEON@
 export DISABLE_OPENSSL=@DISABLE_OPENSSL@
 export DISABLE_PYTHON=@DISABLE_PYTHON@
 export DISABLE_SCRIPTING=@DISABLE_SCRIPTING@
@@ -607,6 +606,7 @@ export WITH_MOZAB4WIN=@WITH_MOZAB4WIN@
 export WITH_MYSPELL_DICTS=@WITH_MYSPELL_DICTS@
 export WITH_POOR_HELP_LOCALIZATIONS=@WITH_POOR_HELP_LOCALIZATIONS@
 export WITH_THEMES=@WITH_THEMES@
+export WITH_WEBDAV=@WITH_WEBDAV@
 export WORKDIR=@WORKDIR@
 export WORKDIR_FOR_BUILD=@WORKDIR_FOR_BUILD@
 export WORK_STAMP=@SOURCEVERSION@
diff --git a/configure.ac b/configure.ac
index 6c78067..cdae8b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -652,7 +652,6 @@ linux-android*)
     build_gstreamer=no
     build_gstreamer_0_10=no
     enable_lotuswordpro=no
-    enable_neon=no
     enable_mpl_subset=yes
     enable_opengl=no
     enable_report_builder=no
@@ -1777,6 +1776,14 @@ AC_ARG_WITH(lpsolver,
     WITH_LPSOLVER=$withval,
     WITH_LPSOLVER="lpsolve")
 
+AC_ARG_WITH(webdav,
+    AS_HELP_STRING([--with-webdav],
+        [Specify which library to use for webdav implementation.
+         Possible values: "neon", "serf", "no". The default value is "neon".
+         Example: --with-webdav="serf"]),
+    WITH_WEBDAV=$withval,
+    WITH_WEBDAV="neon")
+
 AC_ARG_WITH(linker-hash-style,
     AS_HELP_STRING([--with-linker-hash-style],
         [Use linker with --hash-style=<style> when linking shared objects.
@@ -7333,7 +7340,6 @@ if test $_os = iOS; then
     enable_lotuswordpro=no
     enable_postgresql_sdbc=no
     enable_lotuswordpro=no
-    enable_neon=no
     enable_extension_integration=no
     enable_report_builder=no
     with_theme="tango"
@@ -9156,15 +9162,16 @@ AC_SUBST(XRANDR_CFLAGS)
 AC_SUBST(XRANDR_LIBS)
 AC_SUBST(ENABLE_RANDR)
 
-dnl ===================================================================
-dnl Check for building neon
-dnl ===================================================================
-AC_MSG_CHECKING([whether to use neon])
-if test "$enable_neon" = "no"; then
-    AC_MSG_RESULT([no])
-    DISABLE_NEON=TRUE
-    AC_SUBST(DISABLE_NEON)
-
+if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
+    WITH_WEBDAV="serf"
+fi
+if test $_os = iOS -o $_os = Android; then
+    WITH_WEBDAV="no"
+fi
+AC_MSG_CHECKING([for webdav library])
+case "$WITH_WEBDAV" in
+serf)
+    AC_MSG_RESULT([serf])
     # Check for system apr-util
     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
@@ -9179,11 +9186,10 @@ if test "$enable_neon" = "no"; then
     if test "$COM" = "MSC"; then
         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/Release/serf-1.lib"
     fi
-else
-    AC_MSG_RESULT([yes])
-    dnl ===================================================================
-    dnl Check for system neon
-    dnl ===================================================================
+    ;;
+neon)
+    AC_MSG_RESULT([neon])
+    # Check for system neon
     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.26.0])
     if test "$with_system_neon" = "yes"; then
         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
@@ -9194,7 +9200,13 @@ else
         NEON_VERSION=0295
     fi
     AC_SUBST(NEON_VERSION)
-fi
+    ;;
+*)
+    AC_MSG_RESULT([none, disabled])
+    WITH_WEBDAV=""
+    ;;
+esac
+AC_SUBST(WITH_WEBDAV)
 
 dnl ===================================================================
 dnl Check for disabling cve_tests
@@ -9257,7 +9269,7 @@ dnl ===================================================================
 dnl Check for building gnutls
 dnl ===================================================================
 AC_MSG_CHECKING([whether to use gnutls])
-if test "$enable_neon" != "no" && test "$enable_openssl" = "no"; then
+if test "$WITH_WEBDAV" = "neon" && test "$enable_openssl" = "no"; then
     AC_MSG_RESULT([yes])
     AM_PATH_LIBGCRYPT()
     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
@@ -12481,8 +12493,8 @@ if test "$enable_mpl_subset" = "yes"; then
     if test "$enable_lotuswordpro" = "yes"; then
         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
     fi
-    if test "$enable_neon" != "no" -o "x$DISABLE_NEON" != "xTRUE"; then
-        AC_MSG_ERROR([need to --disable-neon - webdav support.])
+    if test "$WITH_WEBDAV" = "neon"; then
+        AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
     fi
     if test "x$enable_ext_mariadb_connector" = "xyes"; then
         AC_MSG_ERROR([need to --disable-ext-mariadb-connector - mariadb/mysql support.])
diff --git a/postprocess/CustomTarget_registry.mk b/postprocess/CustomTarget_registry.mk
index ebd2afe..76f722c 100644
--- a/postprocess/CustomTarget_registry.mk
+++ b/postprocess/CustomTarget_registry.mk
@@ -335,7 +335,7 @@ ifneq (unx,$(GUIBASE))
 postprocess_FILES_main += \
 	$(postprocess_MOD)/org/openoffice/Office/Paths-notunixdesktop.xcu
 endif
-ifeq ($(DISABLE_NEON),$(false))
+ifneq ($(WITH_WEBDAV),)
 postprocess_FILES_main += $(postprocess_MOD)/org/openoffice/ucb/Configuration-neon.xcu
 endif
 ifeq ($(ENABLE_EVOAB2),TRUE)
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index 41f3077..f6a9b17 100755
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -152,7 +152,7 @@ $(eval $(call gb_Rdb_add_components,services,\
 			winaccessibility/source/service/winaccessibility \
 		) \
 	) \
-	$(if $(DISABLE_NEON),, \
+	$(if $(WITH_WEBDAV), \
 		ucb/source/ucp/webdav-neon/ucpdav1 \
 	) \
 	$(if $(DISABLE_SCRIPTING),, \
diff --git a/ucb/Library_ucpdav1.mk b/ucb/Library_ucpdav1.mk
index 55b3a323..42d273f 100644
--- a/ucb/Library_ucpdav1.mk
+++ b/ucb/Library_ucpdav1.mk
@@ -24,6 +24,8 @@ $(eval $(call gb_Library_use_libraries,ucpdav1,\
 	$(gb_UWINAPI) \
 ))
 
+ifeq ($(WITH_WEBDAV),neon)
+
 $(eval $(call gb_Library_use_externals,ucpdav1,\
 	boost_headers \
 	libxml2 \
@@ -55,6 +57,59 @@ $(eval $(call gb_Library_add_exception_objects,ucpdav1,\
 	ucb/source/ucp/webdav-neon/webdavservices \
 ))
 
+else # WITH_WEBDAV == serf
+
+$(eval $(call gb_Library_set_warnings_not_errors,ucpdav1))
+
+$(eval $(call gb_Library_use_externals,ucpdav1,\
+	boost_headers \
+	apr \
+	openssl \
+	serf \
+	zlib \
+))
+
+$(eval $(call gb_Library_add_libs,ucpdav1,\
+	$(if $(filter $(OS),LINUX),-lpthread) \
+))
+
+$(eval $(call gb_Library_add_exception_objects,ucpdav1,\
+	ucb/source/ucp/webdav/AprEnv \
+	ucb/source/ucp/webdav/ContentProperties \
+	ucb/source/ucp/webdav/DAVProperties \
+	ucb/source/ucp/webdav/DAVResourceAccess \
+	ucb/source/ucp/webdav/DAVSessionFactory \
+	ucb/source/ucp/webdav/DateTimeHelper \
+	ucb/source/ucp/webdav/SerfCallbacks \
+	ucb/source/ucp/webdav/SerfCopyReqProcImpl \
+	ucb/source/ucp/webdav/SerfDeleteReqProcImpl \
+	ucb/source/ucp/webdav/SerfGetReqProcImpl \
+	ucb/source/ucp/webdav/SerfHeadReqProcImpl \
+	ucb/source/ucp/webdav/SerfInputStream \
+	ucb/source/ucp/webdav/SerfMkColReqProcImpl \
+	ucb/source/ucp/webdav/SerfMoveReqProcImpl \
+	ucb/source/ucp/webdav/SerfPostReqProcImpl \
+	ucb/source/ucp/webdav/SerfPropFindReqProcImpl \
+	ucb/source/ucp/webdav/SerfPropPatchReqProcImpl \
+	ucb/source/ucp/webdav/SerfPutReqProcImpl \
+	ucb/source/ucp/webdav/SerfRequestProcessor \
+	ucb/source/ucp/webdav/SerfRequestProcessorImpl \
+	ucb/source/ucp/webdav/SerfRequestProcessorImplFac \
+	ucb/source/ucp/webdav/SerfSession \
+	ucb/source/ucp/webdav/SerfUri \
+	ucb/source/ucp/webdav/UCBDeadPropertyValue \
+	ucb/source/ucp/webdav/webdavcontent \
+	ucb/source/ucp/webdav/webdavcontentcaps \
+	ucb/source/ucp/webdav/webdavdatasupplier \
+	ucb/source/ucp/webdav/webdavprovider \
+	ucb/source/ucp/webdav/webdavresponseparser \
+	ucb/source/ucp/webdav/webdavresultset \
+	ucb/source/ucp/webdav/webdavservices \
+ ))
+	#ucb/source/ucp/webdav/SerfLockStore
+
+endif # WITH_WEBDAV
+
 ifeq ($(OS),WNT)
 $(eval $(call gb_Library_use_system_win32_libs,ucpdav1,\
 	ws2_32 \
diff --git a/ucb/Module_ucb.mk b/ucb/Module_ucb.mk
index 1e64c24..c07d7510 100644
--- a/ucb/Module_ucb.mk
+++ b/ucb/Module_ucb.mk
@@ -14,6 +14,7 @@ $(eval $(call gb_Module_add_targets,ucb,\
 	Library_srtrs1 \
 	Library_ucb1 \
 	$(if $(ENABLE_CMIS),Library_ucpcmis1) \
+	$(if $(WITH_WEBDAV),Library_ucpdav1) \
 	Library_ucpexpand1 \
 	Library_ucpext \
 	Library_ucpfile1 \
@@ -23,12 +24,6 @@ $(eval $(call gb_Module_add_targets,ucb,\
 	Library_ucptdoc1 \
 ))
 
-ifneq ($(DISABLE_NEON),TRUE)
-$(eval $(call gb_Module_add_targets,ucb,\
-	Library_ucpdav1 \
-))
-endif
-
 ifeq ($(ENABLE_GIO),TRUE)
 $(eval $(call gb_Module_add_targets,ucb,\
 	Library_ucpgio1 \
diff --git a/ucb/source/ucp/webdav/ContentProperties.hxx b/ucb/source/ucp/webdav/ContentProperties.hxx
index 286a699..374ad46 100644
--- a/ucb/source/ucp/webdav/ContentProperties.hxx
+++ b/ucb/source/ucp/webdav/ContentProperties.hxx
@@ -24,7 +24,7 @@
 
 #include <memory>
 #include <vector>
-#include <unordered_map>
+#include <boost/unordered_map.hpp>
 #include <rtl/ustring.hxx>
 #include <com/sun/star/uno/Any.hxx>
 #include <com/sun/star/uno/Sequence.hxx>
@@ -82,7 +82,7 @@ public:
 
 };
 
-typedef std::unordered_map
+typedef boost::unordered_map
 <
     OUString,
     PropertyValue,
diff --git a/ucb/source/ucp/webdav/PropertyMap.hxx b/ucb/source/ucp/webdav/PropertyMap.hxx
index c1ec982..bc61ebf 100644
--- a/ucb/source/ucp/webdav/PropertyMap.hxx
+++ b/ucb/source/ucp/webdav/PropertyMap.hxx
@@ -22,7 +22,7 @@
 #ifndef _WEBDAV_UCP_PROPERTYMAP_HXX
 #define _WEBDAV_UCP_PROPERTYMAP_HXX
 
-#include <unordered_set>
+#include <boost/unordered_set.hpp>
 #include <com/sun/star/beans/Property.hpp>
 
 namespace http_dav_ucp {
@@ -46,7 +46,7 @@ struct hashPropertyName
     }
 };
 
-typedef std::unordered_set
+typedef boost::unordered_set
 <
     ::com::sun::star::beans::Property,
     hashPropertyName,
diff --git a/ucb/source/ucp/webdav/webdavcontent.cxx b/ucb/source/ucp/webdav/webdavcontent.cxx
index 8c1b526..ad60a93 100644
--- a/ucb/source/ucp/webdav/webdavcontent.cxx
+++ b/ucb/source/ucp/webdav/webdavcontent.cxx
@@ -285,7 +285,7 @@ void SAL_CALL Content::release()
 
 // virtual
 uno::Any SAL_CALL Content::queryInterface( const uno::Type & rType )
-    throw ( uno::RuntimeException )
+    throw ( uno::RuntimeException, std::exception )
 {
     // Note: isFolder may require network activities! So call it only
     //       if it is really necessary!!!
@@ -341,7 +341,7 @@ XTYPEPROVIDER_COMMON_IMPL( Content );
 
 // virtual
 uno::Sequence< uno::Type > SAL_CALL Content::getTypes()
-    throw( uno::RuntimeException )
+    throw( uno::RuntimeException, std::exception )
 {
     sal_Bool bFolder = sal_False;
     try
diff --git a/ucb/source/ucp/webdav/webdavresponseparser.cxx b/ucb/source/ucp/webdav/webdavresponseparser.cxx
index 8be333a..cb9535b 100644
--- a/ucb/source/ucp/webdav/webdavresponseparser.cxx
+++ b/ucb/source/ucp/webdav/webdavresponseparser.cxx
@@ -28,7 +28,7 @@
 #include <com/sun/star/ucb/LockScope.hpp>
 #include <com/sun/star/ucb/LockType.hpp>
 #include <map>
-#include <unordered_map>
+#include <boost/unordered_map.hpp>
 
 
 
@@ -94,7 +94,7 @@ namespace
 
     WebDAVName StrToWebDAVName(const OUString& rStr)
     {
-        typedef std::unordered_map< OUString, WebDAVName, OUStringHash > WebDAVNameMapper;
+        typedef boost::unordered_map< OUString, WebDAVName, OUStringHash > WebDAVNameMapper;
         typedef std::pair< OUString, WebDAVName > WebDAVNameValueType;
         static WebDAVNameMapper aWebDAVNameMapperList;
 
diff --git a/ucb/source/ucp/webdav/webdavservices.cxx b/ucb/source/ucp/webdav/webdavservices.cxx
index 4b85a97..47509dd 100644
--- a/ucb/source/ucp/webdav/webdavservices.cxx
+++ b/ucb/source/ucp/webdav/webdavservices.cxx
@@ -25,15 +25,7 @@
 
 using namespace com::sun::star;
 
-
-extern "C" void SAL_CALL component_getImplementationEnvironment(
-    const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ )
-{
-    *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-}
-
-
-extern "C" void * SAL_CALL component_getFactory(
+extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL ucpdav1_component_getFactory(
     const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
 {
     void * pRet = 0;
commit 0b27253aff771e104a9fd5d17595b205b2fc39fd
Author: Matúš Kukan <matus.kukan at collabora.com>
Date:   Thu Feb 6 12:28:36 2014 +0100

    Add apr and serf externals for alternative webdav implementation.
    
    Change-Id: I5e93bb6fb53537b889c6ba9888f0f32a0d6f8050

diff --git a/Makefile.fetch b/Makefile.fetch
index 3c1799a..683f238 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -76,6 +76,8 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
 	$(foreach item, \
 		$(call fetch_Optional,LIBATOMIC_OPS,LIBATOMIC_OPS_TARBALL) \
 		$(call fetch_Optional,ABW,ABW_TARBALL) \
+		$(call fetch_Optional,APR,APR_TARBALL) \
+		$(call fetch_Optional,APR,APR_UTIL_TARBALL) \
 		$(call fetch_Optional,CDR,CDR_TARBALL) \
 		$(call fetch_Optional,COINMP,COINMP_TARBALL) \
 		$(call fetch_Optional,EBOOK,EBOOK_TARBALL) \
@@ -88,6 +90,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
 		$(call fetch_Optional,MSPUB,MSPUB_TARBALL) \
 		$(call fetch_Optional,MWAW,MWAW_TARBALL) \
 		$(call fetch_Optional,ODFGEN,ODFGEN_TARBALL) \
+		$(call fetch_Optional,SERF,SERF_TARBALL) \
 		$(call fetch_Optional,VISIO,VISIO_TARBALL) \
 	,$(call fetch_Download_item_special,http://dev-www.libreoffice.org/src,$(item)))
 	$(foreach item, \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 4ff6748..eec50bd 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -1000,6 +1000,57 @@ gb_LinkTarget__use_liblangtag :=
 
 endif # ENABLE_LIBLANGTAG
 
+ifneq ($(DISABLE_NEON),)
+
+define gb_LinkTarget__use_apr
+$(call gb_LinkTarget_set_include,$(1),\
+	$$(INCLUDE) \
+	$(APR_CFLAGS) \
+)
+$(call gb_LinkTarget_add_libs,$(1),\
+	$(APR_LIBS) \
+)
+
+ifeq ($(SYSTEM_APR),)
+$(call gb_LinkTarget_use_system_win32_libs,$(1),\
+	mswsock \
+	rpcrt4 \
+	shell32 \
+)
+$(call gb_LinkTarget_add_defs,$(1),\
+	-DAPR_DECLARE_STATIC \
+	-DAPU_DECLARE_STATIC \
+)
+$(call gb_LinkTarget_use_external_project,$(1),apr_util)
+endif
+
+endef
+
+define gb_ExternalProject__use_apr
+ifeq ($(SYSTEM_APR),)
+$(call gb_ExternalProject_use_external_project,$(1),apr_util)
+endif
+
+endef
+
+define gb_LinkTarget__use_serf
+$(call gb_LinkTarget_set_include,$(1),\
+	$(SERF_CFLAGS) \
+	$$(INCLUDE) \
+)
+$(call gb_LinkTarget_add_libs,$(1),\
+	$(SERF_LIBS) \
+)
+
+ifeq ($(SYSTEM_SERF),)
+$(call gb_LinkTarget_use_external_project,$(1),serf)
+endif
+
+endef
+
+else
+
+gb_ExternalProject__use_apr :=
 
 ifneq ($(SYSTEM_NEON),)
 
@@ -1037,6 +1088,7 @@ endef
 
 endif # SYSTEM_NEON
 
+endif # DISABLE_NEON
 
 ifneq ($(SYSTEM_REDLAND),)
 
diff --git a/config_host.mk.in b/config_host.mk.in
index 2108ffe..cbe2978 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -23,6 +23,8 @@ export ANDROID_SDK_HOME=@ANDROID_SDK_HOME@
 export ANT=@ANT@
 export ANT_HOME=@ANT_HOME@
 export ANT_LIB=@ANT_LIB@
+export APR_CFLAGS=$(gb_SPACE)@APR_CFLAGS@
+export APR_LIBS=$(gb_SPACE)@APR_LIBS@
 export AR=@AR@
 export ASSERT_ALWAYS_ABORT=@ASSERT_ALWAYS_ABORT@
 export ATL_INCLUDE=@ATL_INCLUDE@
@@ -467,6 +469,8 @@ export SAL_ENABLE_FILE_LOCKING=1
 export SCPDEFS=@SCPDEFS@
 export SDKDIRNAME=@SDKDIRNAME@
 export SDKDIRNAME_FOR_BUILD=@SDKDIRNAME_FOR_BUILD@
+export SERF_CFLAGS=$(gb_SPACE)@SERF_CFLAGS@
+export SERF_LIBS=$(gb_SPACE)@SERF_LIBS@
 export SHOWINCLUDES_PREFIX=@SHOWINCLUDES_PREFIX@
 export SOLARINC=@SOLARINC@
 export SPLIT_APP_MODULES=@SPLIT_APP_MODULES@
@@ -483,6 +487,7 @@ export SUNTEMPLATES_IT_PACK=@SUNTEMPLATES_IT_PACK@
 export SYSBASE=@SYSBASE@
 export SYSTEM_ABW=@SYSTEM_ABW@
 export SYSTEM_APACHE_COMMONS=@SYSTEM_APACHE_COMMONS@
+export SYSTEM_APR=@SYSTEM_APR@
 export SYSTEM_BOOST=@SYSTEM_BOOST@
 export SYSTEM_BSH=@SYSTEM_BSH@
 export SYSTEM_CAIRO=@SYSTEM_CAIRO@
@@ -543,6 +548,7 @@ export SYSTEM_POSTGRESQL=@SYSTEM_POSTGRESQL@
 export SYSTEM_PYTHON=@SYSTEM_PYTHON@
 export SYSTEM_REDLAND=@SYSTEM_REDLAND@
 export SYSTEM_RHINO=@SYSTEM_RHINO@
+export SYSTEM_SERF=@SYSTEM_SERF@
 export SYSTEM_UCPP=@SYSTEM_UCPP@
 export SYSTEM_VIGRA=@SYSTEM_VIGRA@
 export SYSTEM_VISIO=@SYSTEM_VISIO@
diff --git a/configure.ac b/configure.ac
index 6742046..6c78067 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9164,21 +9164,36 @@ if test "$enable_neon" = "no"; then
     AC_MSG_RESULT([no])
     DISABLE_NEON=TRUE
     AC_SUBST(DISABLE_NEON)
+
+    # Check for system apr-util
+    libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
+                             ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
+                             ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
+    if test "$COM" = "MSC"; then
+        APR_LIBS="${WORKDIR}/UnpackedTarball/apr/LibR/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/LibR/aprutil-1.lib"
+    fi
+
+    # Check for system serf
+    libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
+                             ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
+    if test "$COM" = "MSC"; then
+        SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/Release/serf-1.lib"
+    fi
 else
     AC_MSG_RESULT([yes])
-dnl ===================================================================
-dnl Check for system neon
-dnl ===================================================================
-libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.26.0])
-if test "$with_system_neon" = "yes"; then
-    NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
-    libo_MINGW_CHECK_DLL([libneon])
-    libo_MINGW_TRY_DLL([libtasn1])
-    libo_MINGW_TRY_DLL([libgnutls])
-else
-    NEON_VERSION=0295
-fi
-AC_SUBST(NEON_VERSION)
+    dnl ===================================================================
+    dnl Check for system neon
+    dnl ===================================================================
+    libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.26.0])
+    if test "$with_system_neon" = "yes"; then
+        NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
+        libo_MINGW_CHECK_DLL([libneon])
+        libo_MINGW_TRY_DLL([libtasn1])
+        libo_MINGW_TRY_DLL([libgnutls])
+    else
+        NEON_VERSION=0295
+    fi
+    AC_SUBST(NEON_VERSION)
 fi
 
 dnl ===================================================================
diff --git a/download.lst b/download.lst
index fbcad54..5de30f1 100644
--- a/download.lst
+++ b/download.lst
@@ -1,5 +1,9 @@
 ABW_MD5SUM := 40fa48e03b1e28ae0325cc34b35bc46d
 export ABW_TARBALL := libabw-0.0.2.tar.bz2
+APR_MD5SUM := eff9d741b0999a9bbab96862dd2a2a3d
+export APR_TARBALL := apr-1.4.8.tar.gz
+APR_UTIL_MD5SUM := 71a11d037240b292f824ba1eb537b4e3
+export APR_UTIL_TARBALL := apr-util-1.5.3.tar.gz
 CDR_MD5SUM := d88f9b94df880d2c05be943b000ca112
 export CDR_TARBALL := libcdr-0.0.14.tar.bz2
 COINMP_MD5SUM := 1cce53bf4b40ae29790d2c5c9f8b1129
@@ -30,6 +34,8 @@ LIBATOMIC_OPS_MD5SUM := c0b86562d5aa40761a87134f83e6adcf
 export LIBATOMIC_OPS_TARBALL := libatomic_ops-7_2d.zip
 LIBEOT_MD5SUM := aa24f5dd2a2992f4a116aa72af817548
 export LIBEOT_TARBALL := libeot-0.01.tar.bz2
+SERF_MD5SUM := 4f8e76c9c6567aee1d66aba49f76a58b
+export SERF_TARBALL := serf-1.2.1.tar.bz2
 
 export APACHE_COMMONS_CODEC_TARBALL := 2e482c7567908d334785ce7d69ddfff7-commons-codec-1.6-src.tar.gz
 export APACHE_COMMONS_HTTPCLIENT_TARBALL := 2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz
diff --git a/external/Module_external.mk b/external/Module_external.mk
index a3ad7d4..3fa5501 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -23,6 +23,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
 	np_sdk \
 	$(call gb_Helper_optional,ABW,libabw) \
 	$(call gb_Helper_optional,APACHE_COMMONS,apache-commons) \
+	$(call gb_Helper_optional,APR,apr) \
 	$(call gb_Helper_optional,BOOST,boost) \
 	$(call gb_Helper_optional,BSH,beanshell) \
 	$(call gb_Helper_optional,CAIRO,cairo) \
@@ -81,6 +82,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
 	$(call gb_Helper_optional,PYTHON,python3) \
 	$(call gb_Helper_optional,REDLAND,redland) \
 	$(call gb_Helper_optional,RHINO,rhino) \
+	$(call gb_Helper_optional,SERF,serf) \
 	$(call gb_Helper_optional,UCPP,ucpp) \
 	$(call gb_Helper_optional,VIGRA,vigra) \
 	$(call gb_Helper_optional,VISIO,libvisio) \
diff --git a/external/apr/ExternalProject_apr.mk b/external/apr/ExternalProject_apr.mk
new file mode 100644
index 0000000..4848ae8
--- /dev/null
+++ b/external/apr/ExternalProject_apr.mk
@@ -0,0 +1,37 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalProject_ExternalProject,apr))
+
+$(eval $(call gb_ExternalProject_register_targets,apr,\
+	build \
+))
+
+$(eval $(call gb_ExternalProject_use_nmake,apr,build))
+
+ifeq ($(COM),MSC)
+$(call gb_ExternalProject_get_state_target,apr,build):
+	$(call gb_ExternalProject_run,build,\
+		nmake -nologo -f apr.mak \
+			CFG="apr - Win32 $(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release)" \
+			RECURSE=0 \
+	)
+
+else
+$(call gb_ExternalProject_get_state_target,apr,build):
+	+$(call gb_ExternalProject_run,build,\
+		./configure \
+			--enable-static --disable-shared \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM))\
+		&& $(MAKE) libapr-1.la \
+	)
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/apr/ExternalProject_apr_util.mk b/external/apr/ExternalProject_apr_util.mk
new file mode 100644
index 0000000..ba0f7cb
--- /dev/null
+++ b/external/apr/ExternalProject_apr_util.mk
@@ -0,0 +1,40 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalProject_ExternalProject,apr_util))
+
+$(eval $(call gb_ExternalProject_use_external_project,apr_util,apr))
+
+$(eval $(call gb_ExternalProject_register_targets,apr_util,\
+	build \
+))
+
+$(eval $(call gb_ExternalProject_use_nmake,apr_util,build))
+
+ifeq ($(COM),MSC)
+$(call gb_ExternalProject_get_state_target,apr_util,build):
+	$(call gb_ExternalProject_run,build,\
+		nmake -nologo -f aprutil.mak \
+			CFG="aprutil - Win32 $(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release)" \
+			RECURSE=0 \
+	)
+
+else
+$(call gb_ExternalProject_get_state_target,apr_util,build):
+	+$(call gb_ExternalProject_run,build,\
+		./configure \
+			--enable-static --disable-shared \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM))\
+			--with-apr=$(call gb_UnpackedTarball_get_dir,apr)/apr-1-config \
+		&& $(MAKE) libaprutil-1.la \
+	)
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/apr/Makefile b/external/apr/Makefile
new file mode 100644
index 0000000..e4968cf
--- /dev/null
+++ b/external/apr/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/apr/Module_apr.mk b/external/apr/Module_apr.mk
new file mode 100644
index 0000000..6bb85fb
--- /dev/null
+++ b/external/apr/Module_apr.mk
@@ -0,0 +1,19 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Module_Module,apr))
+
+$(eval $(call gb_Module_add_targets,apr,\
+	UnpackedTarball_apr \
+	UnpackedTarball_apr_util \
+	ExternalProject_apr \
+	ExternalProject_apr_util \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/apr/README b/external/apr/README
new file mode 100644
index 0000000..778bdfd
--- /dev/null
+++ b/external/apr/README
@@ -0,0 +1,5 @@
+The mission of the Apache Portable Runtime (APR) project is to create
+and maintain software libraries that provide a predictable and consistent
+interface to underlying platform-specific implementations.
+
+From [http://apr.apache.org/].
diff --git a/external/apr/UnpackedTarball_apr.mk b/external/apr/UnpackedTarball_apr.mk
new file mode 100644
index 0000000..5fa9d05
--- /dev/null
+++ b/external/apr/UnpackedTarball_apr.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,apr))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,apr,$(APR_TARBALL)))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/apr/UnpackedTarball_apr_util.mk b/external/apr/UnpackedTarball_apr_util.mk
new file mode 100644
index 0000000..06860f1
--- /dev/null
+++ b/external/apr/UnpackedTarball_apr_util.mk
@@ -0,0 +1,22 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,apr_util))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,apr_util,$(APR_UTIL_TARBALL)))
+
+$(eval $(call gb_UnpackedTarball_fix_end_of_line,apr_util,\
+	aprutil.mak \
+))
+
+$(eval $(call gb_UnpackedTarball_add_patches,apr_util,\
+	external/apr/windows.build.patch.1 \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/apr/windows.build.patch.1 b/external/apr/windows.build.patch.1
new file mode 100644
index 0000000..929910b
--- /dev/null
+++ b/external/apr/windows.build.patch.1
@@ -0,0 +1,53 @@
+diff -ur apr_util.org/aprutil.mak apr_util/aprutil.mak
+--- apr_util.org/aprutil.mak	2014-03-05 16:40:02.385701779 +0100
++++ apr_util/aprutil.mak	2014-03-05 16:40:49.409702332 +0100
+@@ -210,8 +210,6 @@
+ 	"$(INTDIR)\apr_uri.obj" \
+ 	"$(INTDIR)\xlate.obj" \
+ 	"$(INTDIR)\apr_xml.obj" \
+-	"..\apr-iconv\LibR\apriconv-1.lib" \
+-	".\xml\expat\lib\LibR\xml.lib"
+ 
+ "$(OUTDIR)\aprutil-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+     $(LIB32) @<<
+@@ -406,8 +404,6 @@
+ 	"$(INTDIR)\apr_uri.obj" \
+ 	"$(INTDIR)\xlate.obj" \
+ 	"$(INTDIR)\apr_xml.obj" \
+-	"..\apr-iconv\LibD\apriconv-1.lib" \
+-	".\xml\expat\lib\LibD\xml.lib"
+ 
+ "$(OUTDIR)\aprutil-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+     $(LIB32) @<<
+@@ -602,8 +598,6 @@
+ 	"$(INTDIR)\apr_uri.obj" \
+ 	"$(INTDIR)\xlate.obj" \
+ 	"$(INTDIR)\apr_xml.obj" \
+-	"..\apr-iconv\x64\LibR\apriconv-1.lib" \
+-	".\xml\expat\lib\x64\LibR\xml.lib"
+ 
+ "$(OUTDIR)\aprutil-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+     $(LIB32) @<<
+@@ -798,8 +792,6 @@
+ 	"$(INTDIR)\apr_uri.obj" \
+ 	"$(INTDIR)\xlate.obj" \
+ 	"$(INTDIR)\apr_xml.obj" \
+-	"..\apr-iconv\x64\LibD\apriconv-1.lib" \
+-	".\xml\expat\lib\x64\LibD\xml.lib"
+ 
+ "$(OUTDIR)\aprutil-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+     $(LIB32) @<<
+diff -ur apr_util.org/include/apu.hw apr_util/include/apu.hw
+--- apr_util.org/include/apu.hw	2014-03-05 16:40:02.377701779 +0100
++++ apr_util/include/apu.hw	2014-03-05 16:40:38.769702207 +0100
+@@ -138,8 +138,8 @@
+ #define APU_HAVE_NSS            0
+ #endif
+ 
+-#define APU_HAVE_APR_ICONV      1
+-#define APU_HAVE_ICONV          0
++#undef APU_HAVE_APR_ICONV
++#undef APU_HAVE_ICONV
+ #define APR_HAS_XLATE           (APU_HAVE_APR_ICONV || APU_HAVE_ICONV)
+ 
+ #endif /* APU_H */
diff --git a/external/serf/ExternalProject_serf.mk b/external/serf/ExternalProject_serf.mk
new file mode 100644
index 0000000..afa2018
--- /dev/null
+++ b/external/serf/ExternalProject_serf.mk
@@ -0,0 +1,48 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalProject_ExternalProject,serf))
+
+$(eval $(call gb_ExternalProject_use_externals,serf,\
+	apr \
+))
+
+$(eval $(call gb_ExternalProject_register_targets,serf,\
+	build \
+))
+
+$(eval $(call gb_ExternalProject_use_nmake,serf,build))
+
+ifeq ($(COM),MSC)
+$(call gb_ExternalProject_get_state_target,serf,build):
+	$(call gb_ExternalProject_run,build,\
+		APR_SRC="..\apr" \
+		APRUTIL_SRC="..\apr_util" \
+		OPENSSL_SRC="..\openssl" \
+		ZLIB_SRC="..\zlib" \
+		nmake -nologo -f serf.mak \
+			$(if $(MSVC_USE_DEBUG_RUNTIME),DEBUG_BUILD=T Debug,Release)/serf-1.lib \
+	)
+
+else
+# serf is using SERF_LIBS variable, so pass it empty
+$(call gb_ExternalProject_get_state_target,serf,build):
+	+$(call gb_ExternalProject_run,build,\
+		./configure SERF_LIBS= \
+			--enable-option-checking=fatal \
+			$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM))\
+			$(if $(SYSTEM_APR),,--with-apr=$(call gb_UnpackedTarball_get_dir,apr)/apr-1-config) \
+			$(if $(SYSTEM_APR),,--with-apr-util=$(call gb_UnpackedTarball_get_dir,apr_util)/apu-1-config) \
+			$(if $(SYSTEM_OPENSSL),,--with-openssl=$(call gb_UnpackedTarball_get_dir,openssl)) \
+		&& $(MAKE) libserf-1.la \
+	)
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/serf/Makefile b/external/serf/Makefile
new file mode 100644
index 0000000..e4968cf
--- /dev/null
+++ b/external/serf/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/serf/Module_serf.mk b/external/serf/Module_serf.mk
new file mode 100644
index 0000000..10ec039
--- /dev/null
+++ b/external/serf/Module_serf.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Module_Module,serf))
+
+$(eval $(call gb_Module_add_targets,serf,\
+	UnpackedTarball_serf \
+	ExternalProject_serf \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/serf/README b/external/serf/README
new file mode 100644
index 0000000..0cfe55f
--- /dev/null
+++ b/external/serf/README
@@ -0,0 +1,4 @@
+The serf library is a high performance C-based HTTP client library
+built upon the Apache Portable Runtime (APR) library.
+
+From [http://code.google.com/p/serf/].
diff --git a/external/serf/UnpackedTarball_serf.mk b/external/serf/UnpackedTarball_serf.mk
new file mode 100644
index 0000000..e6e9509
--- /dev/null
+++ b/external/serf/UnpackedTarball_serf.mk
@@ -0,0 +1,22 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,serf))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,serf,$(SERF_TARBALL)))
+
+$(eval $(call gb_UnpackedTarball_fix_end_of_line,serf,\
+	serf.mak \
+))
+
+$(eval $(call gb_UnpackedTarball_add_patches,serf,\
+	external/serf/windows.build.patch.1 \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/serf/windows.build.patch.1 b/external/serf/windows.build.patch.1
new file mode 100644
index 0000000..c659d41
--- /dev/null
+++ b/external/serf/windows.build.patch.1
@@ -0,0 +1,29 @@
+diff -ur serf.org/serf.mak serf/serf.mak
+--- serf.org/serf.mak	2014-03-05 16:31:26.681695709 +0100
++++ serf/serf.mak	2014-03-05 16:32:20.969696348 +0100
+@@ -93,7 +93,7 @@
+ WIN32_DEFS = /D WIN32 /D WIN32_LEAN_AND_MEAN /D NOUSER /D NOGDI /D NONLS /D NOCRYPT /D SERF_HAVE_SSPI
+ 
+ CPP=cl.exe
+-CPP_PROJ = /c /nologo $(CFLAGS) $(WIN32_DEFS) $(APR_FLAGS) $(APRUTIL_FLAGS) $(OPENSSL_FLAGS) $(ZLIB_FLAGS) /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"
++CPP_PROJ = /c /nologo /D APR_DECLARE_STATIC /D APU_DECLARE_STATIC $(CFLAGS) $(WIN32_DEFS) $(APR_FLAGS) $(APRUTIL_FLAGS) $(OPENSSL_FLAGS) $(ZLIB_FLAGS) /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"
+ LIB32=link.exe
+ LIB32_FLAGS=/nologo
+ 
+@@ -127,16 +127,6 @@
+     "$(INTDIR)\socket_buckets.obj" \
+     "$(INTDIR)\ssl_buckets.obj" \
+ 
+-!IFDEF OPENSSL_STATIC
+-LIB32_OBJS = $(LIB32_OBJS) "$(OPENSSL_SRC)\out32\libeay32.lib" \
+-               "$(OPENSSL_SRC)\out32\ssleay32.lib"
+-!ELSE
+-LIB32_OBJS = $(LIB32_OBJS) "$(OPENSSL_SRC)\out32dll\libeay32.lib" \
+-               "$(OPENSSL_SRC)\out32dll\ssleay32.lib"
+-!ENDIF
+-
+-LIB32_OBJS = $(LIB32_OBJS) $(APR_LIBS) $(APRUTIL_LIBS) $(ZLIB_LIBS) 
+-
+ SYS_LIBS = secur32.lib
+ 
+ TEST_OBJS = \
diff --git a/solenv/gbuild/ExternalProject.mk b/solenv/gbuild/ExternalProject.mk
index 0495340..f57649f 100644
--- a/solenv/gbuild/ExternalProject.mk
+++ b/solenv/gbuild/ExternalProject.mk
@@ -212,6 +212,7 @@ $(if $(findstring YES,$(UNPACKED_IS_BIN_TARBALL)),\
 	touch $@,
 $(call gb_Helper_print_on_error,cd $(EXTERNAL_WORKDIR)/$(3) && \
 	$(if $(WRAPPERS),export $(WRAPPERS) &&) \
+	$(if $(NMAKE),INCLUDE="$(gb_ExternalProject_INCLUDE)" LIB="$(ILIB)" MAKEFLAGS=) \
 	$(2) && touch $@,$(EXTERNAL_WORKDIR)/$(if $(3),$(3)/,)$(if $(4),$(4),$(1).log))
 )
 endef
diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk
index df582ca..3c109fe 100644
--- a/solenv/gbuild/platform/com_GCC_class.mk
+++ b/solenv/gbuild/platform/com_GCC_class.mk
@@ -187,6 +187,7 @@ endef
 # ExternalProject class
 
 gb_ExternalProject_use_autoconf :=
+gb_ExternalProject_use_nmake :=
 
 # StaticLibrary class
 
diff --git a/solenv/gbuild/platform/com_MSC_class.mk b/solenv/gbuild/platform/com_MSC_class.mk
index eeb0fa0..fb617ac 100644
--- a/solenv/gbuild/platform/com_MSC_class.mk
+++ b/solenv/gbuild/platform/com_MSC_class.mk
@@ -492,6 +492,13 @@ $(call gb_ExternalProject_get_preparation_target,$(1)) : $(call gb_Executable_ge
 $(call gb_ExternalProject_get_state_target,$(1),$(2)): WRAPPERS := $(gb_AUTOCONF_WRAPPERS)
 endef
 
+# Set INCLUDE and LIB variables and unset MAKEFLAGS when using nmake
+#
+# gb_ExternalProject_use_nmake project state_target
+define gb_ExternalProject_use_nmake
+$(call gb_ExternalProject_get_state_target,$(1),$(2)): NMAKE := $(true)
+endef
+
 # if ccache is enabled, then split it and use lastword as REAL_FOO
 # /opt/lo/bin/ccache /cygdrive/c/PROGRA~2/MICROS~2.0/VC/bin/cl.exe
 
@@ -502,6 +509,9 @@ gb_AUTOCONF_WRAPPERS = \
 	CXX="$(call gb_Executable_get_target,g++-wrapper)" \
     LD="$(shell cygpath -w $(COMPATH)/bin/link.exe) -nologo"
 
+gb_ExternalProject_INCLUDE := \
+	$(subst -I,,$(subst $(WHITESPACE),;,$(subst -I. , ,$(SOLARINC))))
+
 # InstallScript class
 
 gb_InstallScript_EXT := .inf


More information about the Libreoffice-commits mailing list