summaryrefslogtreecommitdiff
path: root/external/curl
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2013-10-17 19:28:04 +0200
committerDavid Tardon <dtardon@redhat.com>2013-10-18 06:50:42 +0000
commita777285f9b8efc4e00183a25d39913f78eddc0ad (patch)
treed27b5a2462fde325792008715e2e94788da05bde /external/curl
parent39f73d93874114e2bacfd73da137180aad95a3f6 (diff)
fdo#70393: move curl to a subdir of external
Change-Id: I76401636aab7d4de198912b154d6ec3da35a711d Reviewed-on: https://gerrit.libreoffice.org/6298 Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'external/curl')
-rw-r--r--external/curl/ExternalPackage_curl.mk45
-rw-r--r--external/curl/ExternalProject_curl.mk78
-rw-r--r--external/curl/Makefile7
-rw-r--r--external/curl/Module_curl.mk18
-rw-r--r--external/curl/README1
-rw-r--r--external/curl/UnpackedTarball_curl.mk34
-rw-r--r--external/curl/curl-7.26.0.patch86
-rw-r--r--external/curl/curl-7.26.0_mingw.patch24
-rw-r--r--external/curl/curl-7.26.0_nspr.patch17
-rw-r--r--external/curl/curl-7.26.0_strlcat.patch9
-rw-r--r--external/curl/curl-7.26.0_win-proxy.patch130
-rw-r--r--external/curl/curl-7.26.0_win.patch59
-rw-r--r--external/curl/curl-aix.patch13
-rw-r--r--external/curl/curl-android.patch16
14 files changed, 537 insertions, 0 deletions
diff --git a/external/curl/ExternalPackage_curl.mk b/external/curl/ExternalPackage_curl.mk
new file mode 100644
index 000000000000..5f552602baf0
--- /dev/null
+++ b/external/curl/ExternalPackage_curl.mk
@@ -0,0 +1,45 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,curl,curl))
+
+$(eval $(call gb_ExternalPackage_use_external_project,curl,curl))
+
+ifneq ($(OS),WNT)
+
+ifeq ($(COM),GCC)
+$(eval $(call gb_ExternalPackage_add_file,curl,lib/pkgconfig/libcurl.pc,libcurl.pc))
+endif
+
+ifeq ($(DISABLE_DYNLOADING),TRUE)
+$(eval $(call gb_ExternalPackage_add_file,curl,lib/libcurl.a,lib/.libs/libcurl.a))
+else ifeq ($(OS),ANDROID)
+$(eval $(call gb_ExternalPackage_add_file,curl,lib/libcurl.so,lib/.libs/libcurl.so))
+else ifeq ($(OS),AIX)
+$(eval $(call gb_ExternalPackage_add_library_for_install,curl,lib/libcurl.so,lib/.libs/libcurl.so.4))
+else
+# TODO: Do we really want the unversioned library in the installation?
+# And if that's true, why do we need to deliver the versioned one at all?
+$(eval $(call gb_ExternalPackage_add_library_for_install,curl,lib/libcurl.so,lib/.libs/libcurl.so.4.2.0))
+$(eval $(call gb_ExternalPackage_add_file,curl,lib/libcurl.so.4,lib/.libs/libcurl.so.4.2.0))
+endif
+
+else ifeq ($(OS)$(COM),WNTGCC)
+
+$(eval $(call gb_ExternalPackage_add_file,curl,lib/libcurl.a,lib/.libs/libcurl.a))
+$(eval $(call gb_ExternalPackage_add_library_for_install,curl,bin/libcurl.dll,lib/.libs/libcurl.dll))
+
+else ifeq ($(COM),MSC)
+
+$(eval $(call gb_ExternalPackage_add_file,curl,lib/libcurl.lib,lib/libcurl.lib))
+$(eval $(call gb_ExternalPackage_add_library_for_install,curl,bin/libcurl.dll,lib/libcurl.dll))
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/curl/ExternalProject_curl.mk b/external/curl/ExternalProject_curl.mk
new file mode 100644
index 000000000000..23dce1170044
--- /dev/null
+++ b/external/curl/ExternalProject_curl.mk
@@ -0,0 +1,78 @@
+# -*- 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,curl))
+
+$(eval $(call gb_ExternalProject_use_externals,curl,\
+ nss3 \
+ zlib \
+))
+
+$(eval $(call gb_ExternalProject_register_targets,curl,\
+ build \
+))
+
+ifneq ($(OS),WNT)
+
+curl_CPPFLAGS :=
+curl_LDFLAGS :=
+
+ifneq ($(SYSBASE),)
+curl_CPPFLAGS += -I$(SYSBASE)/usr/include
+curl_LDFLAGS += -L$(SYSBASE)/usr/lib
+endif
+
+# there are 2 include paths, the other one is passed to --with-nss below
+ifeq ($(SYSTEM_NSS),NO)
+curl_CPPFLAGS += -I$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/public/nss
+endif
+
+$(call gb_ExternalProject_get_state_target,curl,build):
+ $(call gb_ExternalProject_run,build,\
+ CPPFLAGS="$(curl_CPPFLAGS)" \
+ LDFLAGS="$(curl_LDFLAGS)" \
+ ./configure \
+ --with-nss$(if $(filter NO,$(SYSTEM_NSS)),="$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/out") \
+ --without-ssl \
+ --without-libidn --enable-ftp --enable-ipv6 --enable-http --disable-gopher \
+ --disable-file --disable-ldap --disable-telnet --disable-dict --without-libssh2 \
+ $(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+ $(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
+ $(if $(filter TRUE,$(ENABLE_DEBUG)),--enable-debug) \
+ && cd lib \
+ && $(MAKE) \
+ )
+
+else ifeq ($(OS)$(COM),WNTGCC)
+
+$(call gb_ExternalProject_get_state_target,curl,build):
+ $(call gb_ExternalProject_run,build,\
+ PATH=$(OUTDIR)/bin:$$PATH ./configure --with-nss --without-ssl --enable-ftp --enable-ipv6 --disable-http --disable-gopher \
+ --disable-file --disable-ldap --disable-telnet --disable-dict --build=i586-pc-mingw32 --host=i586-pc-mingw32 \
+ $(if $(filter TRUE,$(ENABLE_DEBUG)),--enable-debug) \
+ CC="$(CC) -mthreads $(if $(filter YES,$(MINGW_SHARED_GCCLIB)),-shared-libgcc)" \
+ LIBS="-lws2_32 -lwinmm $(if $(filter YES,$(MINGW_SHARED_GXXLIB)),$(MINGW_SHARED_LIBSTDCPP))" \
+ LDFLAGS="$(patsubst ;, -L,$(ILIB))" \
+ CPPFLAGS="$(INCLUDE)" OBJDUMP="objdump" \
+ && cd lib \
+ && $(MAKE) \
+ )
+
+else ifeq ($(COM),MSC)
+
+$(call gb_ExternalProject_get_state_target,curl,build):
+ $(call gb_ExternalProject_run,build,\
+ MAKEFLAGS= LIB="$(ILIB)" nmake -f Makefile.vc9 \
+ cfg=$(if $(MSVC_USE_DEBUG_RUNTIME),debug-dll,release-dll) \
+ EXCFLAGS="/EHa /Zc:wchar_t- /D_CRT_SECURE_NO_DEPRECATE /DUSE_WINDOWS_SSPI $(SOLARINC)" $(if $(filter X86_64,$(CPUNAME)),MACHINE=X64) \
+ ,lib)
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/curl/Makefile b/external/curl/Makefile
new file mode 100644
index 000000000000..ccb1c85a04da
--- /dev/null
+++ b/external/curl/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/curl/Module_curl.mk b/external/curl/Module_curl.mk
new file mode 100644
index 000000000000..2b4c61c04ac9
--- /dev/null
+++ b/external/curl/Module_curl.mk
@@ -0,0 +1,18 @@
+# -*- 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,curl))
+
+$(eval $(call gb_Module_add_targets,curl,\
+ UnpackedTarball_curl \
+ ExternalPackage_curl \
+ ExternalProject_curl \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/curl/README b/external/curl/README
new file mode 100644
index 000000000000..292e4edf57b6
--- /dev/null
+++ b/external/curl/README
@@ -0,0 +1 @@
+A URL manipulation engine from [http://curl.haxx.se/].
diff --git a/external/curl/UnpackedTarball_curl.mk b/external/curl/UnpackedTarball_curl.mk
new file mode 100644
index 000000000000..aa3e41302f88
--- /dev/null
+++ b/external/curl/UnpackedTarball_curl.mk
@@ -0,0 +1,34 @@
+# -*- 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,curl))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,curl,$(CURL_TARBALL),,curl))
+
+$(eval $(call gb_UnpackedTarball_set_patchlevel,curl,1))
+
+$(eval $(call gb_UnpackedTarball_fix_end_of_line,curl,\
+ Makefile.msvc.names \
+ lib/Makefile.vc9 \
+))
+$(eval $(call gb_UnpackedTarball_add_patches,curl,\
+ external/curl/curl-7.26.0.patch \
+ external/curl/curl-7.26.0_nspr.patch \
+ external/curl/curl-aix.patch \
+ external/curl/curl-7.26.0_win.patch \
+ external/curl/curl-7.26.0_mingw.patch \
+ external/curl/curl-7.26.0_win-proxy.patch \
+ external/curl/curl-7.26.0_strlcat.patch \
+))
+ifeq ($(OS),ANDROID)
+$(eval $(call gb_UnpackedTarball_add_patches,curl,\
+ external/curl/curl-android.patch \
+))
+endif
+# vim: set noet sw=4 ts=4:
diff --git a/external/curl/curl-7.26.0.patch b/external/curl/curl-7.26.0.patch
new file mode 100644
index 000000000000..6cebdc17bbd7
--- /dev/null
+++ b/external/curl/curl-7.26.0.patch
@@ -0,0 +1,86 @@
+diff -ur curl-7.26.0/configure misc/build/curl-7.26.0/configure
+--- curl-7.26.0/configure 2012-07-02 13:28:51.327994494 +0200
++++ misc/build/curl-7.26.0/configure 2012-07-02 13:32:38.754006822 +0200
+@@ -2693,8 +2693,8 @@
+
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compile='$CC -c $ADDCFLAGS $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $ADDCFLAGS $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+@@ -3855,8 +3855,8 @@
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compile='$CC -c $ADDCFLAGS $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $ADDCFLAGS $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+@@ -4506,15 +4506,15 @@
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
++ CFLAGS="$ADDCFLAGS -g -O2"
+ else
+- CFLAGS="-g"
++ CFLAGS="$ADDCFLAGS -g"
+ fi
+ else
+ if test "$GCC" = yes; then
+- CFLAGS="-O2"
++ CFLAGS="$ADDCFLAGS -O2"
+ else
+- CFLAGS=
++ CFLAGS="$ADDCFLAGS"
+ fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+diff -ur curl-7.26.0/lib/setup.h misc/build/curl-7.26.0/lib/setup.h
+--- curl-7.26.0/lib/setup.h 2012-07-02 13:28:51.322994494 +0200
++++ misc/build/curl-7.26.0/lib/setup.h 2012-07-02 13:41:15.652034841 +0200
+@@ -231,6 +231,7 @@
+ # include <winsock2.h>
+ # ifdef HAVE_WS2TCPIP_H
+ # include <ws2tcpip.h>
++# include <wspiapi.h>
+ # endif
+ # else
+ # ifdef HAVE_WINSOCK_H
+diff -ur curl-7.26.0/ltmain.sh misc/build/curl-7.26.0/ltmain.sh
+--- curl-7.26.0/ltmain.sh 2012-07-02 13:28:51.298994493 +0200
++++ misc/build/curl-7.26.0/ltmain.sh 2012-07-02 13:42:46.511039769 +0200
+@@ -7334,13 +7334,13 @@
+ #
+ case $version_type in
+ # correct linux to gnu/linux during the next big refactor
+- darwin|linux|osf|windows|none)
++ darwin|linux|osf|windows|freebsd-aout|freebsd-elf|none)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+- freebsd-aout|freebsd-elf|qnx|sunos)
++ qnx|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+@@ -7420,8 +7420,8 @@
+ ;;
+
+ freebsd-elf)
+- major=".$current"
+- versuffix=".$current"
++ major=.`expr $current - $age`
++ versuffix="$major"
+ ;;
+
+ irix | nonstopux)
diff --git a/external/curl/curl-7.26.0_mingw.patch b/external/curl/curl-7.26.0_mingw.patch
new file mode 100644
index 000000000000..79318732a69b
--- /dev/null
+++ b/external/curl/curl-7.26.0_mingw.patch
@@ -0,0 +1,24 @@
+--- curl-7.26.0/lib/setup.h 2009-10-29 05:21:58.000000000 +0900
++++ misc/build/curl-7.26.0/lib/setup.h 2010-03-02 06:03:10.009500000 +0900
+@@ -40,6 +40,21 @@
+
+ #include "curl_config.h"
+
++#ifdef __MINGW32__
++#undef HAVE_DLFCN_H
++#define HAVE_GETHOSTBYADDR 1
++#define HAVE_GETHOSTBYNAME 1
++#undef HAVE_LIBZ
++#undef HAVE_NETDB_H
++#undef HAVE_POLL_H
++#undef HAVE_SYS_IOCTL_H
++#undef HAVE_SYS_POLL_H
++#undef HAVE_SYS_UIO_H
++#undef HAVE_TERMIOS_H
++#undef HAVE_TERMIO_H
++#undef HAVE_ZLIB_H
++#endif
++
+ #else /* HAVE_CONFIG_H */
+
+ #ifdef _WIN32_WCE
diff --git a/external/curl/curl-7.26.0_nspr.patch b/external/curl/curl-7.26.0_nspr.patch
new file mode 100644
index 000000000000..4eee75e2c62c
--- /dev/null
+++ b/external/curl/curl-7.26.0_nspr.patch
@@ -0,0 +1,17 @@
+diff -ur curl-7.26.0/configure misc/build/curl-7.26.0/configure
+--- curl-7.26.0/configure 2012-07-11 10:06:15.249214153 +0200
++++ misc/build/curl-7.26.0/configure 2012-07-11 10:09:48.967225739 +0200
+@@ -22779,6 +22779,13 @@
+ addcflags=""
+ version="unknown"
+ fi
++
++ # NSPR includes and libs are needed with nss
++ check=`nspr-config --version 2>/dev/null`
++ if test -n "$check"; then
++ addlib="$addlib `nspr-config --libs`"
++ addcflags="$addcflags `nspr-config --cflags`"
++ fi
+ fi
+ else
+ # Without pkg-config, we'll kludge in some defaults
diff --git a/external/curl/curl-7.26.0_strlcat.patch b/external/curl/curl-7.26.0_strlcat.patch
new file mode 100644
index 000000000000..c5536f822641
--- /dev/null
+++ b/external/curl/curl-7.26.0_strlcat.patch
@@ -0,0 +1,9 @@
+--- curl-7.26.0/lib/strequal.h
++++ misc/build/curl-7.26.0/strequal.h
+@@ -30,6 +30,5 @@
+ #ifndef HAVE_STRLCAT
+ #define strlcat(x,y,z) Curl_strlcat(x,y,z)
+ #endif
+-size_t strlcat(char *dst, const char *src, size_t siz);
+
+ #endif
diff --git a/external/curl/curl-7.26.0_win-proxy.patch b/external/curl/curl-7.26.0_win-proxy.patch
new file mode 100644
index 000000000000..e3beb4004885
--- /dev/null
+++ b/external/curl/curl-7.26.0_win-proxy.patch
@@ -0,0 +1,130 @@
+--- curl-7.26.0/lib/Makefile.vc9
++++ misc/build/curl-7.26.0/lib/Makefile.vc9
+@@ -116,7 +116,7 @@ LFLAGS = /nologo /machine:$(MACHINE)
+ SSLLIBS = libeay32.lib ssleay32.lib
+ ZLIBLIBSDLL= zdll.lib
+ ZLIBLIBS = zlib.lib
+-WINLIBS = ws2_32.lib wldap32.lib
++WINLIBS = ws2_32.lib wldap32.lib winhttp.lib
+ CFLAGS = $(CFLAGS) $(EXCFLAGS)
+
+ CFGSET = FALSE
+--- curl-7.26.0/lib/url.c
++++ misc/build/curl-7.26.0/lib/url.c
+@@ -80,6 +80,10 @@ void idn_free (void *ptr);
+ int curl_win32_idn_to_ascii(const char *in, char **out);
+ #endif /* USE_LIBIDN */
+
++#ifdef WIN32
++#include <WinHttp.h>
++#endif
++
+ #include "urldata.h"
+ #include "netrc.h"
+
+@@ -4111,6 +4115,21 @@ static bool check_noproxy(const char* name, const char* no_proxy)
+ return FALSE;
+ }
+
++#ifdef WIN32
++static char* wstrToCstr( LPWSTR wStr )
++{
++ int bufSize;
++ char* out = NULL;
++ if(wStr != NULL) {
++ bufSize = WideCharToMultiByte(
++ CP_ACP, 0, wStr, -1, NULL, 0, NULL, NULL );
++ out = ( char* )malloc( bufSize * sizeof(char));
++ WideCharToMultiByte( CP_ACP, 0, wStr, -1, out, bufSize, NULL, NULL );
++ }
++ return out;
++}
++#endif
++
+ /****************************************************************
+ * Detect what (if any) proxy to use. Remember that this selects a host
+ * name and is not limited to HTTP proxies only.
+@@ -4119,6 +4138,7 @@ static bool check_noproxy(const char* name, const char* no_proxy)
+ static char *detect_proxy(struct connectdata *conn)
+ {
+ char *proxy = NULL;
++ char *no_proxy=NULL;
+
+ #ifndef CURL_DISABLE_HTTP
+ /* If proxy was not specified, we check for default proxy environment
+@@ -4138,7 +4158,63 @@ static char *detect_proxy(struct connectdata *conn)
+ * For compatibility, the all-uppercase versions of these variables are
+ * checked if the lowercase versions don't exist.
+ */
+- char *no_proxy=NULL;
++#ifdef WIN32
++ WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *ieProxyConfig;
++ ieProxyConfig = (WINHTTP_CURRENT_USER_IE_PROXY_CONFIG*)
++ malloc(sizeof(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG));
++ if(WinHttpGetIEProxyConfigForCurrentUser(ieProxyConfig)) {
++ if(!ieProxyConfig->fAutoDetect) {
++ char *ieProxy;
++ char *ieNoProxy;
++ char* pos;
++
++ ieProxy = wstrToCstr(ieProxyConfig->lpszProxy);
++ ieNoProxy = wstrToCstr(ieProxyConfig->lpszProxyBypass);
++
++ /* Convert the ieNoProxy into a proper no_proxy value */
++ if(NULL != ieNoProxy) {
++ no_proxy = strdup(ieNoProxy);
++ pos = strpbrk(no_proxy, "; ");
++ while(NULL != pos) {
++ no_proxy[pos-no_proxy] = ',';
++ pos = strpbrk(no_proxy, "; ");
++ }
++ }
++
++ if(!check_noproxy(conn->host.name, no_proxy)) {
++ /* Look for the http proxy setting */
++ char* tok;
++
++ if(NULL != ieProxy) {
++ tok = strtok(ieProxy, ";");
++ if(strchr(tok, '=') == NULL) {
++ proxy = strdup(ieProxy);
++ }
++ else {
++ do {
++ if(strncmp(tok, "http=", 5) == 0) {
++ /* We found HTTP proxy value, then use it */
++ proxy = strdup( tok + 5 );
++ }
++ tok = strtok(NULL, ";");
++ }
++ while(NULL != tok);
++ }
++ }
++ }
++
++ free(ieProxy);
++ free(ieNoProxy);
++ }
++ else {
++ /* TODO Handle the Proxy config Auto Detection case */
++ }
++
++ GlobalFree( ieProxyConfig->lpszAutoConfigUrl );
++ GlobalFree( ieProxyConfig->lpszProxy );
++ GlobalFree( ieProxyConfig->lpszProxyBypass );
++ }
++#else /* !WIN32 */
+ char proxy_env[128];
+
+ no_proxy=curl_getenv("no_proxy");
+@@ -4189,9 +4265,9 @@ static char *detect_proxy(struct connectdata *conn)
+ }
+ } /* if(!check_noproxy(conn->host.name, no_proxy)) - it wasn't specified
+ non-proxy */
++#endif /* WIN32 */
+ if(no_proxy)
+ free(no_proxy);
+-
+ #else /* !CURL_DISABLE_HTTP */
+
+ (void)conn;
diff --git a/external/curl/curl-7.26.0_win.patch b/external/curl/curl-7.26.0_win.patch
new file mode 100644
index 000000000000..0b3eed2d2eb6
--- /dev/null
+++ b/external/curl/curl-7.26.0_win.patch
@@ -0,0 +1,59 @@
+--- curl-7.26.0/Makefile.msvc.names 2011-03-19 09:17:12.000000000 -0600
++++ misc/build/curl-7.26.0/Makefile.msvc.names 2012-07-02 07:20:39.323448800 -0600
+@@ -43,7 +43,7 @@
+ !ENDIF
+
+ !IF !DEFINED(LIB_NAME_STA_DBG) || "$(LIB_NAME_STA_DBG)" == ""
+-LIB_NAME_STA_DBG = $(LIB_NAME_STA_REL)d
++LIB_NAME_STA_DBG = $(LIB_NAME_STA_REL)
+ !ENDIF
+
+ !IF !DEFINED(LIB_NAME_DYN_REL) || "$(LIB_NAME_DYN_REL)" == ""
+@@ -51,7 +51,7 @@
+ !ENDIF
+
+ !IF !DEFINED(LIB_NAME_DYN_DBG) || "$(LIB_NAME_DYN_DBG)" == ""
+-LIB_NAME_DYN_DBG = $(LIB_NAME_DYN_REL)d
++LIB_NAME_DYN_DBG = $(LIB_NAME_DYN_REL)
+ !ENDIF
+
+ # --------------------------------------------
+@@ -59,11 +59,11 @@
+ # --------------------------------------------
+
+ !IF !DEFINED(LIB_NAME_IMP_REL) || "$(LIB_NAME_IMP_REL)" == ""
+-LIB_NAME_IMP_REL = $(LIB_NAME_DYN_REL)_imp
++LIB_NAME_IMP_REL = $(LIB_NAME_DYN_REL)
+ !ENDIF
+
+ !IF !DEFINED(LIB_NAME_IMP_DBG) || "$(LIB_NAME_IMP_DBG)" == ""
+-LIB_NAME_IMP_DBG = $(LIB_NAME_DYN_DBG)_imp
++LIB_NAME_IMP_DBG = $(LIB_NAME_DYN_DBG)
+ !ENDIF
+
+ # --------------------------------------
+--- curl/lib/Makefile.vc9 2012-05-24 12:07:02.000000000 -0400
++++ curl/lib/Makefile.vc9 2012-10-29 11:53:44.658809300 -0400
+@@ -117,7 +117,7 @@
+ ZLIBLIBSDLL= zdll.lib
+ ZLIBLIBS = zlib.lib
+ WINLIBS = ws2_32.lib wldap32.lib
+-CFLAGS = $(CFLAGS)
++CFLAGS = $(CFLAGS) $(EXCFLAGS)
+
+ CFGSET = FALSE
+
+@@ -620,11 +620,11 @@
+ debug-dll-ssl-dll\libcurl.res \
+ debug-dll-zlib-dll\libcurl.res \
+ debug-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+- rc /dDEBUGBUILD=1 /Fo $@ libcurl.rc
++ rc $(SOLARINC) /dDEBUGBUILD=1 /Fo $@ libcurl.rc
+
+ release-dll\libcurl.res \
+ release-dll-ssl-dll\libcurl.res \
+ release-dll-zlib-dll\libcurl.res \
+ release-dll-ssl-dll-zlib-dll\libcurl.res: libcurl.rc
+- rc /dDEBUGBUILD=0 /Fo $@ libcurl.rc
++ rc $(SOLARINC) /dDEBUGBUILD=0 /Fo $@ libcurl.rc
+ !ENDIF # End of case where a config was provided.
diff --git a/external/curl/curl-aix.patch b/external/curl/curl-aix.patch
new file mode 100644
index 000000000000..708411ccf1ef
--- /dev/null
+++ b/external/curl/curl-aix.patch
@@ -0,0 +1,13 @@
+diff -ur curl-7.26.0/config.guess misc/build/curl-7.26.0/config.guess
+--- curl-7.26.0/config.guess 2012-07-02 13:46:52.428053096 +0200
++++ misc/build/curl-7.26.0/config.guess 2012-07-02 13:48:13.644057499 +0200
+@@ -565,6 +565,9 @@
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
++ if [ "$IBM_REV" == "V7BETA" ]; then
++ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
++ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
diff --git a/external/curl/curl-android.patch b/external/curl/curl-android.patch
new file mode 100644
index 000000000000..40cf12447dbb
--- /dev/null
+++ b/external/curl/curl-android.patch
@@ -0,0 +1,16 @@
+diff -ur curl-7.26.0/ltmain.sh misc/build/curl-7.26.0/ltmain.sh
+--- curl-7.26.0/ltmain.sh 2012-07-02 14:05:04.256112279 +0200
++++ misc/build/curl-7.26.0/ltmain.sh 2012-07-02 14:07:23.775119842 +0200
+@@ -7307,6 +7307,12 @@
+ func_warning "\`-release' is ignored for convenience libraries"
+ else
+
++ # Force no versioning suffix for Android thanks to silly
++ # apkbuilder which doesn't add extra native libs unless their
++ # name ends with .so
++
++ version_type=none
++
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0