cURL: implement new functionality with cleanup and fixes
authorJohn Crispin <john@openwrt.org>
Mon, 2 Feb 2015 09:02:24 +0000 (09:02 +0000)
committerJohn Crispin <john@openwrt.org>
Mon, 2 Feb 2015 09:02:24 +0000 (09:02 +0000)
remove obsolete configuration settings
  --disable-thread
  --enable-nonblocking
  --without-krb4
remove SSPI support
  only supported on windows
correct --with/without-ca-path handling
  only supported with OpenSSL and PolarSSL
correct LDAP/LDAPS protocol
  add dependency libopenldap
added SCP/SFTP protocol
  default "No"
  depends on libssh2
added IDN support
  default "No"
  depends on libidn
added SMB protocol (new in 7.40)
  default "No"
  require 'cryptographic authentication' and either 'GnuTLS' or 'OpenSSL' selected
added Unix sockets support (new in 7.40)
  default "No"
added error verbose messages
  default "No"
changes to Makefile
  Increase PKG_RELEASE
  PKG_CONFIG_DEPENDS and CONFIGURE_ARGS
    extended for new functionality
    use "autoconf_bool" for all --enable/--disable options
    restructure for easier reading
changes to Config.in
  extended for new functionality
  implement dependencies
  restructure and grouping for easier reading
build tested on XUbuntu 14.10 x86 for x86 (generic) and ar71xx (WNDR3800)

Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com>
SVN-Revision: 44243

package/network/utils/curl/Config.in
package/network/utils/curl/Makefile

index 87e5f99..11cfa39 100644 (file)
 if PACKAGE_libcurl
 
+comment "SSL support"
+
 choice
-       prompt "SSL library"
+       prompt "Selected SSL library"
        default LIBCURL_POLARSSL
 
-config LIBCURL_POLARSSL
-       bool "PolarSSL"
+       config LIBCURL_POLARSSL
+               bool "PolarSSL"
 
-config LIBCURL_CYASSL
-       bool "CyaSSL"
+       config LIBCURL_CYASSL
+               bool "CyaSSL"
 
-config LIBCURL_AXTLS
-       bool "axTLS"
+       config LIBCURL_AXTLS
+               bool "axTLS"
 
-config LIBCURL_OPENSSL
-       bool "OpenSSL"
+       config LIBCURL_OPENSSL
+               bool "OpenSSL"
 
-config LIBCURL_GNUTLS
-       bool "GNUTLS"
+       config LIBCURL_GNUTLS
+               bool "GNUTLS"
 
-config LIBCURL_NOSSL
-       bool "No SSL support"
+       config LIBCURL_NOSSL
+               bool "No SSL support"
 
 endchoice
 
-config LIBCURL_COOKIES
-       bool "Enable cookies support"
-       default y
-
-config LIBCURL_CRYPTO_AUTH
-       bool "Enable cryptographic authentication"
-       default n
+comment "Supported protocols"
 
 config LIBCURL_DICT
-       bool "Enable DICT support"
+       bool "DICT protocol"
        default n
 
 config LIBCURL_FILE
-       bool "Enable FILE support"
+       bool "FILE protocol"
        default y
 
 config LIBCURL_FTP
-       bool "Enable FTP support"
+       bool "FTP / FTPS protocol"
        default y
 
 config LIBCURL_GOPHER
-       bool "Enable Gopher support"
+       bool "Gopher protocol"
        default n
 
 config LIBCURL_HTTP
-       bool "Enable HTTP support"
+       bool "HTTP / HTTPS protocol"
+       default y
+
+config LIBCURL_COOKIES
+       bool "Enable Cookies support"
+       depends on LIBCURL_HTTP
        default y
 
 config LIBCURL_IMAP
-       bool "Enable IMAP support"
+       bool "IMAP / IMAPS protocol"
        default n
 
 config LIBCURL_LDAP
-       bool "Enable LDAP support"
+       bool "LDAP protocol"
        default n
 
 config LIBCURL_LDAPS
        bool "Enable LDAPS support"
+       depends on LIBCURL_LDAP && !LIBCURL_NOSSL
+       default y
+
+config LIBCURL_POP3
+       bool "POP3 / POP3S protocol"
        default n
 
-config LIBCURL_LIBCURL_OPTION
-       bool "Enable --libcurl C code generation support"
+config LIBCURL_RTSP
+       bool "RTSP protocol"
+       depends on LIBCURL_HTTP
        default n
+config LIBCURL_NO_RTSP
+       string "RTSP require HTTP protocol"
+       depends on !LIBCURL_HTTP
+       default "!"
 
-config LIBCURL_POP3
-       bool "Enable POP3 support"
+config LIBCURL_SSH2
+       bool "SCP / SFTP protocol"
+       default n
+
+config LIBCURL_SMB
+       bool "SMB protocol (CIFS)"
+       depends on LIBCURL_CRYPTO_AUTH && (LIBCURL_GNUTLS || LIBCURL_OPENSSL)
+       default n
+config LIBCURL_NO_SMB
+       string "SMB require 'cryptographic authentication' and either 'GnuTLS' or 'OpenSSL'"
+       depends on !LIBCURL_CRYPTO_AUTH || (!LIBCURL_GNUTLS && !LIBCURL_OPENSSL)
+       default "!"
+
+config LIBCURL_SMTP
+       bool "SMTP / SMTPS protocol"
        default n
 
+config LIBCURL_TELNET
+       bool "TELNET protocol"
+       default n
+
+config LIBCURL_TFTP
+       bool "TFTP protocol"
+       default n
+
+comment "Miscellaneous"
+
 config LIBCURL_PROXY
        bool "Enable proxy support"
        default y
 
-config LIBCURL_RTSP
-       bool "Enable RTSP support"
+config LIBCURL_CRYPTO_AUTH
+       bool "Enable cryptographic authentication"
        default n
 
-config LIBCURL_SMTP
-       bool "Enable SMTP support"
+config LIBCURL_TLS_SRP
+       bool "Enable TLS-SRP authentication"
        default n
 
-config LIBCURL_SSPI
-       bool "Enable SSPI"
+config LIBCURL_LIBIDN
+       bool "Enable IDN support"
        default n
 
-config LIBCURL_TELNET
-       bool "Enable TELNET support"
+config LIBCURL_THREADED_RESOLVER
+       bool "Enable threaded DNS resolver"
        default n
+       help
+               Enable POSIX threaded asynchronous DNS resolution
 
-config LIBCURL_TFTP
-       bool "Enable TFTP support"
+config LIBCURL_ZLIB
+       bool "Enable zlib support"
        default n
 
-config LIBCURL_THREADED_RESOLVER
-       bool "Enable threaded resolver"
+config LIBCURL_UNIX_SOCKETS
+       bool "Enable unix domain socket support"
        default n
+       help
+               Enable HTTP over unix domain sockets.
+               To use this with the curl command line, you specify the socket path to the new --unix-domain option.
+               This feature is actually not limited to HTTP, you can do all the TCP-based protocols 
+               except FTP over the unix domain socket, but it is only HTTP that is regularly used this way. 
+               The reason FTP isn't supported is of course its use of two connections 
+               which would be even weirder to do like this.
 
-config LIBCURL_TLS-SRP
-       bool "Enable TLS-SRP authentication"
+config LIBCURL_LIBCURL_OPTION
+       bool "Enable generation of C code"
        default n
 
-config LIBCURL_ZLIB
-       bool "Use zlib"
+config LIBCURL_VERBOSE
+       bool "Enable verbose error strings"
        default n
 
 endif
index 7274e2c..6da3a66 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=curl
 PKG_VERSION:=7.40.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://curl.haxx.se/download/ \
@@ -26,34 +26,45 @@ PKG_LICENSE_FILES:=COPYING
 PKG_FIXUP:=autoreconf
 PKG_BUILD_PARALLEL:=1
 
-PKG_CONFIG_DEPENDS := \
+PKG_CONFIG_DEPENDS:= \
+  CONFIG_IPV6 \
+  \
   LIBCURL_AXTLS \
-  LIBCURL_COOKIES \
-  LIBCURL_CRYPTO_AUTH \
   LIBCURL_CYASSL \
+  LIBCURL_GNUTLS \
+  LIBCURL_OPENSSL \
+  LIBCURL_POLARSSL \
+  LIBCURL_NOSSL \
+  \
+  LIBCURL_LIBIDN \
+  LIBCURL_SSH2 \
+  LIBCURL_ZLIB \
+  \
   LIBCURL_DICT \
   LIBCURL_FILE \
   LIBCURL_FTP \
-  LIBCURL_GNUTLS \
   LIBCURL_GOPHER \
   LIBCURL_HTTP \
   LIBCURL_IMAP \
   LIBCURL_LDAP \
   LIBCURL_LDAPS \
-  LIBCURL_LIBCURL_OPTION \
-  LIBCURL_NOSSL \
-  LIBCURL_OPENSSL \
-  LIBCURL_POLARSSL \
   LIBCURL_POP3 \
-  LIBCURL_PROXY \
   LIBCURL_RTSP \
+  LIBCURL_NO_RTSP \
+  LIBCURL_SMB \
+  LIBCURL_NO_SMB \
   LIBCURL_SMTP \
-  LIBCURL_SSPI \
   LIBCURL_TELNET \
   LIBCURL_TFTP \
+  \
+  LIBCURL_COOKIES \
+  LIBCURL_CRYPTO_AUTH \
+  LIBCURL_LIBCURL_OPTION \
+  LIBCURL_PROXY \
   LIBCURL_THREADED_RESOLVER \
-  LIBCURL_TLS-SRP \
-  LIBCURL_ZLIB
+  LIBCURL_TLS_SRP \
+  LIBCURL_UNIX_SOCKETS \
+  LIBCURL_VERBOSE \
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -75,8 +86,9 @@ define Package/libcurl
   $(call Package/curl/Default)
   SECTION:=libs
   CATEGORY:=Libraries
-  DEPENDS:=+LIBCURL_POLARSSL:libpolarssl +LIBCURL_CYASSL:libcyassl +LIBCURL_AXTLS:libaxtls +LIBCURL_OPENSSL:libopenssl +LIBCURL_GNUTLS:libgnutls +LIBCURL_ZLIB:zlib +LIBCURL_THREADED_RESOLVER:libpthread
-  TITLE:=A client-side URL transfer library using $(if $(CONFIG_LIBCURL_POLARSSL),PolarSSL)$(if $(CONFIG_LIBCURL_OPENSSL),OpenSSL)$(if $(CONFIG_LIBCURL_GNUTLS),GNUTLS)$(if $(CONFIG_LIBCURL_NOSSL),no SSL)
+  DEPENDS:=+LIBCURL_POLARSSL:libpolarssl +LIBCURL_CYASSL:libcyassl +LIBCURL_AXTLS:libaxtls +LIBCURL_OPENSSL:libopenssl +LIBCURL_GNUTLS:libgnutls 
+  DEPENDS += +LIBCURL_ZLIB:zlib +LIBCURL_THREADED_RESOLVER:libpthread +LIBCURL_LDAP:libopenldap +LIBCURL_LIBIDN:libidn +LIBCURL_SSH2:libssh2
+  TITLE:=A client-side URL transfer library
   MENU:=1
 endef
 
@@ -88,47 +100,51 @@ endef
 TARGET_CFLAGS += $(FPIC)
 
 CONFIGURE_ARGS += \
+       --disable-debug \
+       --disable-ares \
        --enable-shared \
        --enable-static \
-       --disable-thread \
-       --enable-nonblocking \
-       --disable-ares \
-       --disable-debug \
        --disable-manual \
-       --disable-verbose \
        --without-ca-bundle \
-       $(if $(CONFIG_LIBCURL_NOSSL),,--with-ca-path=/etc/ssl/certs/) \
-       --without-krb4 \
-       --without-libidn \
        --without-nss \
-       --without-libssh2 \
+       --without-libmetalink \
+       --without-librtmp \
+       \
        $(call autoconf_bool,CONFIG_IPV6,ipv6) \
-       $(if $(CONFIG_LIBCURL_AXTLS),--with-axtls="$(STAGING_DIR)/usr",--without-axtls) \
-       $(if $(CONFIG_LIBCURL_COOKIES),--enable,--disable)-cookies \
-       $(if $(CONFIG_LIBCURL_CRYPTO_AUTH),--enable,--disable)-crypto-auth \
-       $(if $(CONFIG_LIBCURL_CYASSL),--with-cyassl="$(STAGING_DIR)/usr",--without-cyassl) \
-       $(if $(CONFIG_LIBCURL_DICT),--enable,--disable)-dict \
-       $(if $(CONFIG_LIBCURL_FILE),--enable,--disable)-file \
-       $(if $(CONFIG_LIBCURL_FTP),--enable,--disable)-ftp \
-       $(if $(CONFIG_LIBCURL_GOPHER),--enable,--disable)-gopher \
-       $(if $(CONFIG_LIBCURL_GNUTLS),--with-gnutls="$(STAGING_DIR)/usr",--without-gnutls) \
-       $(if $(CONFIG_LIBCURL_HTTP),--enable,--disable)-http \
-       $(if $(CONFIG_LIBCURL_IMAP),--enable,--disable)-imap \
-       $(if $(CONFIG_LIBCURL_LDAP),--enable,--disable)-ldap \
-       $(if $(CONFIG_LIBCURL_LDAPS),--enable,--disable)-ldaps \
-       $(if $(CONFIG_LIBCURL_LIBCURL_OPTION),--enable,--disable)-libcurl-option \
-       $(if $(CONFIG_LIBCURL_OPENSSL),--with-ssl="$(STAGING_DIR)/usr",--without-ssl) \
-       $(if $(CONFIG_LIBCURL_POLARSSL),--with-polarssl="$(STAGING_DIR)/usr",--without-polarssl) \
-       $(if $(CONFIG_LIBCURL_POP3),--enable,--disable)-pop3 \
-       $(if $(CONFIG_LIBCURL_PROXY),--enable,--disable)-proxy \
-       $(if $(CONFIG_LIBCURL_RTSP),--enable,--disable)-rtsp \
-       $(if $(CONFIG_LIBCURL_TELNET),--enable,--disable)-telnet \
-       $(if $(CONFIG_LIBCURL_TFTP),--enable,--disable)-tftp \
-       $(if $(CONFIG_LIBCURL_SMTP),--enable,--disable)-smtp \
-       $(if $(CONFIG_LIBCURL_SSPI),--enable,--disable)-sspi \
-       $(if $(CONFIG_LIBCURL_THREADED_RESOLVER),--enable,--disable)-threaded-resolver \
-       $(if $(CONFIG_LIBCURL_TLS-SRP),--enable,--disable)-tls-srp \
+       \
+       $(if $(CONFIG_LIBCURL_AXTLS),--with-axtls="$(STAGING_DIR)/usr" --without-ca-path,--without-axtls) \
+       $(if $(CONFIG_LIBCURL_CYASSL),--with-cyassl="$(STAGING_DIR)/usr" --without-ca-path,--without-cyassl) \
+       $(if $(CONFIG_LIBCURL_GNUTLS),--with-gnutls="$(STAGING_DIR)/usr" --without-ca-path,--without-gnutls) \
+       $(if $(CONFIG_LIBCURL_OPENSSL),--with-ssl="$(STAGING_DIR)/usr" --with-ca-path=/etc/ssl/certs,--without-ssl) \
+       $(if $(CONFIG_LIBCURL_POLARSSL),--with-polarssl="$(STAGING_DIR)/usr" --with-ca-path=/etc/ssl/certs,--without-polarssl) \
+       \
+       $(if $(CONFIG_LIBCURL_LIBIDN),--with-libidn="$(STAGING_DIR)/usr",--without-libidn) \
+       $(if $(CONFIG_LIBCURL_SSH2),--with-libssh2="$(STAGING_DIR)/usr",--without-libssh2) \
        $(if $(CONFIG_LIBCURL_ZLIB),--with-zlib="$(STAGING_DIR)/usr",--without-zlib) \
+       \
+       $(call autoconf_bool,CONFIG_LIBCURL_DICT,dict) \
+       $(call autoconf_bool,CONFIG_LIBCURL_FILE,file) \
+       $(call autoconf_bool,CONFIG_LIBCURL_FTP,ftp) \
+       $(call autoconf_bool,CONFIG_LIBCURL_GOPHER,gopher) \
+       $(call autoconf_bool,CONFIG_LIBCURL_HTTP,http) \
+       $(call autoconf_bool,CONFIG_LIBCURL_IMAP,imap) \
+       $(call autoconf_bool,CONFIG_LIBCURL_LDAP,ldap) \
+       $(call autoconf_bool,CONFIG_LIBCURL_LDAPS,ldaps) \
+       $(call autoconf_bool,CONFIG_LIBCURL_POP3,pop3) \
+       $(call autoconf_bool,CONFIG_LIBCURL_RTSP,rtsp) \
+       $(call autoconf_bool,CONFIG_LIBCURL_SMB,smb) \
+       $(call autoconf_bool,CONFIG_LIBCURL_SMTP,smtp) \
+       $(call autoconf_bool,CONFIG_LIBCURL_TELNET,telnet) \
+       $(call autoconf_bool,CONFIG_LIBCURL_TFTP,tftp) \
+       \
+       $(call autoconf_bool,CONFIG_LIBCURL_COOKIES,cookies) \
+       $(call autoconf_bool,CONFIG_LIBCURL_CRYPTO_AUTH,crypto-auth) \
+       $(call autoconf_bool,CONFIG_LIBCURL_LIBCURL_OPTION,libcurl-option) \
+       $(call autoconf_bool,CONFIG_LIBCURL_PROXY,proxy) \
+       $(call autoconf_bool,CONFIG_LIBCURL_THREADED_RESOLVER,threaded-resolver) \
+       $(call autoconf_bool,CONFIG_LIBCURL_TLS_SRP,tls-srp) \
+       $(call autoconf_bool,CONFIG_LIBCURL_UNIX_SOCKETS,unix-sockets) \
+       $(call autoconf_bool,CONFIG_LIBCURL_VERBOSE,verbose) \
 
 define Build/Compile
        +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \