# [PATCH] ./configure.ac: Detect SSL in libcurl using curl-config

2 messages from 2016-06-28 to 2016-06-28. Participants: Дилян Палаузов, Junio C Hamano.
Thread: https://gitlist.dev/t/42733

## Дилян Палаузов, 2016-06-28 12:04

Subject: [PATCH] ./configure.ac: Detect SSL in libcurl using curl-config
Message-ID: <20160628120434.28105-1-git-dpa@aegee.org>
URL: https://gitlist.dev/e/20160628120434.28105-1-git-dpa%40aegee.org

```
The API of libcurl does not mention Curl_ssl_init() and when curl is built
with -flto, the Curl_ssl_init symbol is not exported.

https://curl.haxx.se/libcurl/using/ suggests calling
  curl-config --feature | grep SSL
to see, if the installed curl has SSL support.  Another approach would
be calling curl_version_info and checking the returned struct.

This patch removes the check for the Curl_ssl_init exported symbol from
libcurl and uses curl-config to detect SSL support in libcurl.

Signed-Off-By: Дилян Палаузов <git-dpa@aegee.org>
---
 configure.ac | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/configure.ac b/configure.ac
index c279025..5e9ba59 100644
--- a/configure.ac
+++ b/configure.ac
@@ -528,16 +528,6 @@ AC_CHECK_LIB([curl], [curl_global_init],
 [NO_CURL=],
 [NO_CURL=YesPlease])
 
-if test -z "${NO_CURL}" && test -z "${NO_OPENSSL}"; then
-
-AC_CHECK_LIB([curl], [Curl_ssl_init],
-[NEEDS_SSL_WITH_CURL=YesPlease],
-[NEEDS_SSL_WITH_CURL=])
-
-GIT_CONF_SUBST([NEEDS_SSL_WITH_CURL])
-
-fi
-
 GIT_UNSTASH_FLAGS($CURLDIR)
 
 GIT_CONF_SUBST([NO_CURL])
@@ -550,6 +540,17 @@ AC_CHECK_PROG([CURL_CONFIG], [curl-config],
 
 if test $CURL_CONFIG != no; then
     GIT_CONF_SUBST([CURL_CONFIG])
+    if test -z "${NO_OPENSSL}"; then
+      AC_MSG_CHECKING([if Curl supports SSL])
+      if test $(curl-config --features|grep SSL) = SSL; then
+         NEEDS_SSL_WITH_CURL=YesPlease
+         AC_MSG_RESULT([yes])
+      else
+         NEEDS_SSL_WITH_CURL=
+         AC_MSG_RESULT([no])
+      fi
+      GIT_CONF_SUBST([NEEDS_SSL_WITH_CURL])
+    fi
 fi
 
 fi
-- 
2.9.0


```

## Junio C Hamano, 2016-06-28 16:32

Subject: Re: [PATCH] ./configure.ac: Detect SSL in libcurl using curl-config
Message-ID: <xmqqeg7h9svf.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqqeg7h9svf.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <20160628120434.28105-1-git-dpa@aegee.org>

```
Дилян Палаузов  <git-dpa@aegee.org> writes:

> The API of libcurl does not mention Curl_ssl_init() and when curl is built
> with -flto, the Curl_ssl_init symbol is not exported.
>
> https://curl.haxx.se/libcurl/using/ suggests calling
>   curl-config --feature | grep SSL
> to see, if the installed curl has SSL support.  Another approach would
> be calling curl_version_info and checking the returned struct.
>
> This patch removes the check for the Curl_ssl_init exported symbol from
> libcurl and uses curl-config to detect SSL support in libcurl.
>
> Signed-Off-By: Дилян Палаузов <git-dpa@aegee.org>
> ---

This is a tangent, but the patch made me notice [*1*] that a user
cannot build Git without libcurl support if curl is installed on the
system, with something like:

	$ ./configure NO_CURL=NoThanks

I do not know if that is a problem (it certainly is NOT a new
problem introduced by your change).

Anyway, will queue.

Thanks.

[Footnote]

*1* The updated code does not have any branch based on $NO_CURL the
    original used to have, even though it does branch on
    $NO_OPENSSL, which is why I got curious.

>  configure.ac | 21 +++++++++++----------
>  1 file changed, 11 insertions(+), 10 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index c279025..5e9ba59 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -528,16 +528,6 @@ AC_CHECK_LIB([curl], [curl_global_init],
>  [NO_CURL=],
>  [NO_CURL=YesPlease])
>  
> -if test -z "${NO_CURL}" && test -z "${NO_OPENSSL}"; then
> -
> -AC_CHECK_LIB([curl], [Curl_ssl_init],
> -[NEEDS_SSL_WITH_CURL=YesPlease],
> -[NEEDS_SSL_WITH_CURL=])
> -
> -GIT_CONF_SUBST([NEEDS_SSL_WITH_CURL])
> -
> -fi
> -
>  GIT_UNSTASH_FLAGS($CURLDIR)
>  
>  GIT_CONF_SUBST([NO_CURL])
> @@ -550,6 +540,17 @@ AC_CHECK_PROG([CURL_CONFIG], [curl-config],
>  
>  if test $CURL_CONFIG != no; then
>      GIT_CONF_SUBST([CURL_CONFIG])
> +    if test -z "${NO_OPENSSL}"; then
> +      AC_MSG_CHECKING([if Curl supports SSL])
> +      if test $(curl-config --features|grep SSL) = SSL; then
> +         NEEDS_SSL_WITH_CURL=YesPlease
> +         AC_MSG_RESULT([yes])
> +      else
> +         NEEDS_SSL_WITH_CURL=
> +         AC_MSG_RESULT([no])
> +      fi
> +      GIT_CONF_SUBST([NEEDS_SSL_WITH_CURL])
> +    fi
>  fi
>  
>  fi

```
