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>

SVN-Revision: 44243
master
John Crispin 10 years ago
parent 043f462be4
commit 83693349fc
  1. 137
      package/network/utils/curl/Config.in
  2. 114
      package/network/utils/curl/Makefile

@ -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
config LIBCURL_COOKIES comment "Supported protocols"
bool "Enable cookies support"
default y
config LIBCURL_CRYPTO_AUTH
bool "Enable cryptographic authentication"
default n
config LIBCURL_DICT config LIBCURL_DICT
bool "Enable DICT support" bool "DICT protocol"
default n default n
config LIBCURL_FILE config LIBCURL_FILE
bool "Enable FILE support" bool "FILE protocol"
default y default y
config LIBCURL_FTP config LIBCURL_FTP
bool "Enable FTP support" bool "FTP / FTPS protocol"
default y default y
config LIBCURL_GOPHER config LIBCURL_GOPHER
bool "Enable Gopher support" bool "Gopher protocol"
default n default n
config LIBCURL_HTTP 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 default y
config LIBCURL_IMAP config LIBCURL_IMAP
bool "Enable IMAP support" bool "IMAP / IMAPS protocol"
default n default n
config LIBCURL_LDAP config LIBCURL_LDAP
bool "Enable LDAP support" bool "LDAP protocol"
default n default n
config LIBCURL_LDAPS config LIBCURL_LDAPS
bool "Enable LDAPS support" bool "Enable LDAPS support"
depends on LIBCURL_LDAP && !LIBCURL_NOSSL
default y
config LIBCURL_POP3
bool "POP3 / POP3S protocol"
default n default n
config LIBCURL_LIBCURL_OPTION config LIBCURL_RTSP
bool "Enable --libcurl C code generation support" bool "RTSP protocol"
depends on LIBCURL_HTTP
default n default n
config LIBCURL_NO_RTSP
string "RTSP require HTTP protocol"
depends on !LIBCURL_HTTP
default "!"
config LIBCURL_POP3 config LIBCURL_SSH2
bool "Enable POP3 support" 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 default n
config LIBCURL_TELNET
bool "TELNET protocol"
default n
config LIBCURL_TFTP
bool "TFTP protocol"
default n
comment "Miscellaneous"
config LIBCURL_PROXY config LIBCURL_PROXY
bool "Enable proxy support" bool "Enable proxy support"
default y default y
config LIBCURL_RTSP config LIBCURL_CRYPTO_AUTH
bool "Enable RTSP support" bool "Enable cryptographic authentication"
default n default n
config LIBCURL_SMTP config LIBCURL_TLS_SRP
bool "Enable SMTP support" bool "Enable TLS-SRP authentication"
default n default n
config LIBCURL_SSPI config LIBCURL_LIBIDN
bool "Enable SSPI" bool "Enable IDN support"
default n default n
config LIBCURL_TELNET config LIBCURL_THREADED_RESOLVER
bool "Enable TELNET support" bool "Enable threaded DNS resolver"
default n default n
help
Enable POSIX threaded asynchronous DNS resolution
config LIBCURL_TFTP config LIBCURL_ZLIB
bool "Enable TFTP support" bool "Enable zlib support"
default n default n
config LIBCURL_THREADED_RESOLVER config LIBCURL_UNIX_SOCKETS
bool "Enable threaded resolver" bool "Enable unix domain socket support"
default n 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 config LIBCURL_LIBCURL_OPTION
bool "Enable TLS-SRP authentication" bool "Enable generation of C code"
default n default n
config LIBCURL_ZLIB config LIBCURL_VERBOSE
bool "Use zlib" bool "Enable verbose error strings"
default n default n
endif endif

@ -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) \

Loading…
Cancel
Save