cURL: implement new functionality with cleanup and fixes

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>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44243 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
John Crispin 2015-02-02 09:02:24 +00:00
parent c532af473b
commit 1b42778f27
2 changed files with 192 additions and 133 deletions

View File

@ -1,111 +1,154 @@
if PACKAGE_libcurl if PACKAGE_libcurl
comment "SSL support"
choice choice
prompt "SSL library" prompt "Selected SSL library"
default LIBCURL_POLARSSL default LIBCURL_POLARSSL
config LIBCURL_POLARSSL config LIBCURL_POLARSSL
bool "PolarSSL" bool "PolarSSL"
config LIBCURL_CYASSL config LIBCURL_CYASSL
bool "CyaSSL" bool "CyaSSL"
config LIBCURL_AXTLS config LIBCURL_AXTLS
bool "axTLS" bool "axTLS"
config LIBCURL_OPENSSL config LIBCURL_OPENSSL
bool "OpenSSL" bool "OpenSSL"
config LIBCURL_GNUTLS config LIBCURL_GNUTLS
bool "GNUTLS" bool "GNUTLS"
config LIBCURL_NOSSL config LIBCURL_NOSSL
bool "No SSL support" bool "No SSL support"
endchoice endchoice
comment "Supported protocols"
config LIBCURL_DICT
bool "DICT protocol"
default n
config LIBCURL_FILE
bool "FILE protocol"
default y
config LIBCURL_FTP
bool "FTP / FTPS protocol"
default y
config LIBCURL_GOPHER
bool "Gopher protocol"
default n
config LIBCURL_HTTP
bool "HTTP / HTTPS protocol"
default y
config LIBCURL_COOKIES config LIBCURL_COOKIES
bool "Enable cookies support" bool "Enable Cookies support"
depends on LIBCURL_HTTP
default y
config LIBCURL_IMAP
bool "IMAP / IMAPS protocol"
default n
config LIBCURL_LDAP
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_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_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 default y
config LIBCURL_CRYPTO_AUTH config LIBCURL_CRYPTO_AUTH
bool "Enable cryptographic authentication" bool "Enable cryptographic authentication"
default n default n
config LIBCURL_DICT config LIBCURL_TLS_SRP
bool "Enable DICT support"
default n
config LIBCURL_FILE
bool "Enable FILE support"
default y
config LIBCURL_FTP
bool "Enable FTP support"
default y
config LIBCURL_GOPHER
bool "Enable Gopher support"
default n
config LIBCURL_HTTP
bool "Enable HTTP support"
default y
config LIBCURL_IMAP
bool "Enable IMAP support"
default n
config LIBCURL_LDAP
bool "Enable LDAP support"
default n
config LIBCURL_LDAPS
bool "Enable LDAPS support"
default n
config LIBCURL_LIBCURL_OPTION
bool "Enable --libcurl C code generation support"
default n
config LIBCURL_POP3
bool "Enable POP3 support"
default n
config LIBCURL_PROXY
bool "Enable proxy support"
default y
config LIBCURL_RTSP
bool "Enable RTSP support"
default n
config LIBCURL_SMTP
bool "Enable SMTP support"
default n
config LIBCURL_SSPI
bool "Enable SSPI"
default n
config LIBCURL_TELNET
bool "Enable TELNET support"
default n
config LIBCURL_TFTP
bool "Enable TFTP support"
default n
config LIBCURL_THREADED_RESOLVER
bool "Enable threaded resolver"
default n
config LIBCURL_TLS-SRP
bool "Enable TLS-SRP authentication" bool "Enable TLS-SRP authentication"
default n default n
config LIBCURL_LIBIDN
bool "Enable IDN support"
default n
config LIBCURL_THREADED_RESOLVER
bool "Enable threaded DNS resolver"
default n
help
Enable POSIX threaded asynchronous DNS resolution
config LIBCURL_ZLIB config LIBCURL_ZLIB
bool "Use zlib" bool "Enable zlib support"
default n
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_LIBCURL_OPTION
bool "Enable generation of C code"
default n
config LIBCURL_VERBOSE
bool "Enable verbose error strings"
default n default n
endif endif

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=curl PKG_NAME:=curl
PKG_VERSION:=7.40.0 PKG_VERSION:=7.40.0
PKG_RELEASE:=2 PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://curl.haxx.se/download/ \ PKG_SOURCE_URL:=http://curl.haxx.se/download/ \
@ -26,34 +26,45 @@ PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf PKG_FIXUP:=autoreconf
PKG_BUILD_PARALLEL:=1 PKG_BUILD_PARALLEL:=1
PKG_CONFIG_DEPENDS := \ PKG_CONFIG_DEPENDS:= \
CONFIG_IPV6 \
\
LIBCURL_AXTLS \ LIBCURL_AXTLS \
LIBCURL_COOKIES \
LIBCURL_CRYPTO_AUTH \
LIBCURL_CYASSL \ LIBCURL_CYASSL \
LIBCURL_GNUTLS \
LIBCURL_OPENSSL \
LIBCURL_POLARSSL \
LIBCURL_NOSSL \
\
LIBCURL_LIBIDN \
LIBCURL_SSH2 \
LIBCURL_ZLIB \
\
LIBCURL_DICT \ LIBCURL_DICT \
LIBCURL_FILE \ LIBCURL_FILE \
LIBCURL_FTP \ LIBCURL_FTP \
LIBCURL_GNUTLS \
LIBCURL_GOPHER \ LIBCURL_GOPHER \
LIBCURL_HTTP \ LIBCURL_HTTP \
LIBCURL_IMAP \ LIBCURL_IMAP \
LIBCURL_LDAP \ LIBCURL_LDAP \
LIBCURL_LDAPS \ LIBCURL_LDAPS \
LIBCURL_LIBCURL_OPTION \
LIBCURL_NOSSL \
LIBCURL_OPENSSL \
LIBCURL_POLARSSL \
LIBCURL_POP3 \ LIBCURL_POP3 \
LIBCURL_PROXY \
LIBCURL_RTSP \ LIBCURL_RTSP \
LIBCURL_NO_RTSP \
LIBCURL_SMB \
LIBCURL_NO_SMB \
LIBCURL_SMTP \ LIBCURL_SMTP \
LIBCURL_SSPI \
LIBCURL_TELNET \ LIBCURL_TELNET \
LIBCURL_TFTP \ LIBCURL_TFTP \
\
LIBCURL_COOKIES \
LIBCURL_CRYPTO_AUTH \
LIBCURL_LIBCURL_OPTION \
LIBCURL_PROXY \
LIBCURL_THREADED_RESOLVER \ LIBCURL_THREADED_RESOLVER \
LIBCURL_TLS-SRP \ LIBCURL_TLS_SRP \
LIBCURL_ZLIB LIBCURL_UNIX_SOCKETS \
LIBCURL_VERBOSE \
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
@ -75,8 +86,9 @@ define Package/libcurl
$(call Package/curl/Default) $(call Package/curl/Default)
SECTION:=libs SECTION:=libs
CATEGORY:=Libraries 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 DEPENDS:=+LIBCURL_POLARSSL:libpolarssl +LIBCURL_CYASSL:libcyassl +LIBCURL_AXTLS:libaxtls +LIBCURL_OPENSSL:libopenssl +LIBCURL_GNUTLS:libgnutls
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_ZLIB:zlib +LIBCURL_THREADED_RESOLVER:libpthread +LIBCURL_LDAP:libopenldap +LIBCURL_LIBIDN:libidn +LIBCURL_SSH2:libssh2
TITLE:=A client-side URL transfer library
MENU:=1 MENU:=1
endef endef
@ -88,47 +100,51 @@ endef
TARGET_CFLAGS += $(FPIC) TARGET_CFLAGS += $(FPIC)
CONFIGURE_ARGS += \ CONFIGURE_ARGS += \
--disable-debug \
--disable-ares \
--enable-shared \ --enable-shared \
--enable-static \ --enable-static \
--disable-thread \
--enable-nonblocking \
--disable-ares \
--disable-debug \
--disable-manual \ --disable-manual \
--disable-verbose \
--without-ca-bundle \ --without-ca-bundle \
$(if $(CONFIG_LIBCURL_NOSSL),,--with-ca-path=/etc/ssl/certs/) \
--without-krb4 \
--without-libidn \
--without-nss \ --without-nss \
--without-libssh2 \ --without-libmetalink \
--without-librtmp \
\
$(call autoconf_bool,CONFIG_IPV6,ipv6) \ $(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_AXTLS),--with-axtls="$(STAGING_DIR)/usr" --without-ca-path,--without-axtls) \
$(if $(CONFIG_LIBCURL_CRYPTO_AUTH),--enable,--disable)-crypto-auth \ $(if $(CONFIG_LIBCURL_CYASSL),--with-cyassl="$(STAGING_DIR)/usr" --without-ca-path,--without-cyassl) \
$(if $(CONFIG_LIBCURL_CYASSL),--with-cyassl="$(STAGING_DIR)/usr",--without-cyassl) \ $(if $(CONFIG_LIBCURL_GNUTLS),--with-gnutls="$(STAGING_DIR)/usr" --without-ca-path,--without-gnutls) \
$(if $(CONFIG_LIBCURL_DICT),--enable,--disable)-dict \ $(if $(CONFIG_LIBCURL_OPENSSL),--with-ssl="$(STAGING_DIR)/usr" --with-ca-path=/etc/ssl/certs,--without-ssl) \
$(if $(CONFIG_LIBCURL_FILE),--enable,--disable)-file \ $(if $(CONFIG_LIBCURL_POLARSSL),--with-polarssl="$(STAGING_DIR)/usr" --with-ca-path=/etc/ssl/certs,--without-polarssl) \
$(if $(CONFIG_LIBCURL_FTP),--enable,--disable)-ftp \ \
$(if $(CONFIG_LIBCURL_GOPHER),--enable,--disable)-gopher \ $(if $(CONFIG_LIBCURL_LIBIDN),--with-libidn="$(STAGING_DIR)/usr",--without-libidn) \
$(if $(CONFIG_LIBCURL_GNUTLS),--with-gnutls="$(STAGING_DIR)/usr",--without-gnutls) \ $(if $(CONFIG_LIBCURL_SSH2),--with-libssh2="$(STAGING_DIR)/usr",--without-libssh2) \
$(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_ZLIB),--with-zlib="$(STAGING_DIR)/usr",--without-zlib) \ $(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 define Build/Compile
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \