From 372fe84b66848dd6cbb60ed4f9327416f9620f7f Mon Sep 17 00:00:00 2001 From: Matúš Kukan Date: Thu, 6 Feb 2014 12:28:36 +0100 Subject: Add apr and serf externals for alternative webdav implementation. Change-Id: I5e93bb6fb53537b889c6ba9888f0f32a0d6f8050 (cherry picked from commit 0b27253aff771e104a9fd5d17595b205b2fc39fd) --- Makefile.fetch | 3 ++ RepositoryExternal.mk | 52 +++++++++++++++++++++++++++++++ config_host.mk.in | 6 ++++ configure.ac | 41 ++++++++++++++++-------- download.lst | 6 ++++ external/Module_external.mk | 2 ++ external/apr/ExternalProject_apr.mk | 38 +++++++++++++++++++++++ external/apr/ExternalProject_apr_util.mk | 41 ++++++++++++++++++++++++ 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 +++++++++++++++++ solenv/gbuild/ExternalProject.mk | 1 + solenv/gbuild/platform/com_GCC_class.mk | 1 + solenv/gbuild/platform/com_MSC_class.mk | 10 ++++++ 23 files changed, 435 insertions(+), 13 deletions(-) create mode 100644 external/apr/ExternalProject_apr.mk create mode 100644 external/apr/ExternalProject_apr_util.mk create mode 100644 external/apr/Makefile create mode 100644 external/apr/Module_apr.mk create mode 100644 external/apr/README create mode 100644 external/apr/UnpackedTarball_apr.mk create mode 100644 external/apr/UnpackedTarball_apr_util.mk create mode 100644 external/apr/windows.build.patch.1 create mode 100644 external/serf/ExternalProject_serf.mk create mode 100644 external/serf/Makefile create mode 100644 external/serf/Module_serf.mk create mode 100644 external/serf/README create mode 100644 external/serf/UnpackedTarball_serf.mk create mode 100644 external/serf/windows.build.patch.1 diff --git a/Makefile.fetch b/Makefile.fetch index c82cb0724c04..9f362fcd21b9 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) \ @@ -87,6 +89,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 52e37a3c34be..cb0b4b552bc8 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -902,6 +902,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),NO) +$(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),NO) +$(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),NO) +$(call gb_LinkTarget_use_external_project,$(1),serf) +endif + +endef + +else + +gb_ExternalProject__use_apr := ifeq ($(SYSTEM_NEON),YES) @@ -939,6 +990,7 @@ endef endif # SYSTEM_NEON +endif # DISABLE_NEON ifeq ($(SYSTEM_REDLAND),YES) diff --git a/config_host.mk.in b/config_host.mk.in index 78dfd98600b6..c4efc56a49ac 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@ @@ -469,6 +471,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 SOLARLIB=@SOLARLIB@ @@ -486,6 +490,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@ @@ -544,6 +549,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 0b09fdebe079..78a388683105 100644 --- a/configure.ac +++ b/configure.ac @@ -9270,21 +9270,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 7e679739c52b..3cd3bdf57d31 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 @@ -28,6 +32,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 AFMS_TARBALL := 1756c4fa6c616ae15973c104cd8cb256-Adobe-Core35_AFMs-314.tar.gz export APACHE_COMMONS_CODEC_TARBALL := 2e482c7567908d334785ce7d69ddfff7-commons-codec-1.6-src.tar.gz diff --git a/external/Module_external.mk b/external/Module_external.mk index 0c21a7c5ebb3..da77a2c4634d 100644 --- a/external/Module_external.mk +++ b/external/Module_external.mk @@ -24,6 +24,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\ $(call gb_Helper_optional,ABW,libabw) \ $(call gb_Helper_optional,AFMS,afms) \ $(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) \ @@ -80,6 +81,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 000000000000..093cdde71a5f --- /dev/null +++ b/external/apr/ExternalProject_apr.mk @@ -0,0 +1,38 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_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 \ + --with-pic \ + $(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 000000000000..4de76ba4c43a --- /dev/null +++ b/external/apr/ExternalProject_apr_util.mk @@ -0,0 +1,41 @@ +# -*- 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 \ + --with-pic \ + $(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 000000000000..e4968cf85fb6 --- /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 000000000000..6bb85fb76204 --- /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 000000000000..778bdfdf692f --- /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 000000000000..5fa9d05082a7 --- /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 000000000000..06860f13967e --- /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 000000000000..929910beaccb --- /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 000000000000..afa2018a73fa --- /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 000000000000..e4968cf85fb6 --- /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 000000000000..10ec039359a2 --- /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 000000000000..0cfe55fb26c0 --- /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 000000000000..e6e950920b95 --- /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 000000000000..c659d41cdf43 --- /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 732197d20fdb..02741ccd7cc3 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 88542e1244a8..3dd6b84183c5 100644 --- a/solenv/gbuild/platform/com_GCC_class.mk +++ b/solenv/gbuild/platform/com_GCC_class.mk @@ -212,6 +212,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 603f0e0211d6..3114835ab6f5 100644 --- a/solenv/gbuild/platform/com_MSC_class.mk +++ b/solenv/gbuild/platform/com_MSC_class.mk @@ -525,6 +525,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 @@ -535,6 +542,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 -- cgit v1.2.3