xref: /aosp_15_r20/external/curl/m4/curl-bearssl.m4 (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker#***************************************************************************
2*6236dae4SAndroid Build Coastguard Worker#                                  _   _ ____  _
3*6236dae4SAndroid Build Coastguard Worker#  Project                     ___| | | |  _ \| |
4*6236dae4SAndroid Build Coastguard Worker#                             / __| | | | |_) | |
5*6236dae4SAndroid Build Coastguard Worker#                            | (__| |_| |  _ <| |___
6*6236dae4SAndroid Build Coastguard Worker#                             \___|\___/|_| \_\_____|
7*6236dae4SAndroid Build Coastguard Worker#
8*6236dae4SAndroid Build Coastguard Worker# Copyright (C) Daniel Stenberg, <[email protected]>, et al.
9*6236dae4SAndroid Build Coastguard Worker#
10*6236dae4SAndroid Build Coastguard Worker# This software is licensed as described in the file COPYING, which
11*6236dae4SAndroid Build Coastguard Worker# you should have received as part of this distribution. The terms
12*6236dae4SAndroid Build Coastguard Worker# are also available at https://curl.se/docs/copyright.html.
13*6236dae4SAndroid Build Coastguard Worker#
14*6236dae4SAndroid Build Coastguard Worker# You may opt to use, copy, modify, merge, publish, distribute and/or sell
15*6236dae4SAndroid Build Coastguard Worker# copies of the Software, and permit persons to whom the Software is
16*6236dae4SAndroid Build Coastguard Worker# furnished to do so, under the terms of the COPYING file.
17*6236dae4SAndroid Build Coastguard Worker#
18*6236dae4SAndroid Build Coastguard Worker# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19*6236dae4SAndroid Build Coastguard Worker# KIND, either express or implied.
20*6236dae4SAndroid Build Coastguard Worker#
21*6236dae4SAndroid Build Coastguard Worker# SPDX-License-Identifier: curl
22*6236dae4SAndroid Build Coastguard Worker#
23*6236dae4SAndroid Build Coastguard Worker#***************************************************************************
24*6236dae4SAndroid Build Coastguard Worker
25*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_WITH_BEARSSL], [
26*6236dae4SAndroid Build Coastguard Workerdnl ----------------------------------------------------
27*6236dae4SAndroid Build Coastguard Workerdnl check for BearSSL
28*6236dae4SAndroid Build Coastguard Workerdnl ----------------------------------------------------
29*6236dae4SAndroid Build Coastguard Worker
30*6236dae4SAndroid Build Coastguard Workerif test "x$OPT_BEARSSL" != xno; then
31*6236dae4SAndroid Build Coastguard Worker  _cppflags=$CPPFLAGS
32*6236dae4SAndroid Build Coastguard Worker  _ldflags=$LDFLAGS
33*6236dae4SAndroid Build Coastguard Worker  ssl_msg=
34*6236dae4SAndroid Build Coastguard Worker
35*6236dae4SAndroid Build Coastguard Worker  if test X"$OPT_BEARSSL" != Xno; then
36*6236dae4SAndroid Build Coastguard Worker
37*6236dae4SAndroid Build Coastguard Worker    if test "$OPT_BEARSSL" = "yes"; then
38*6236dae4SAndroid Build Coastguard Worker      OPT_BEARSSL=""
39*6236dae4SAndroid Build Coastguard Worker    fi
40*6236dae4SAndroid Build Coastguard Worker
41*6236dae4SAndroid Build Coastguard Worker    if test -z "$OPT_BEARSSL" ; then
42*6236dae4SAndroid Build Coastguard Worker      dnl check for lib first without setting any new path
43*6236dae4SAndroid Build Coastguard Worker
44*6236dae4SAndroid Build Coastguard Worker      AC_CHECK_LIB(bearssl, br_ssl_client_init_full,
45*6236dae4SAndroid Build Coastguard Worker      dnl libbearssl found, set the variable
46*6236dae4SAndroid Build Coastguard Worker      [
47*6236dae4SAndroid Build Coastguard Worker        AC_DEFINE(USE_BEARSSL, 1, [if BearSSL is enabled])
48*6236dae4SAndroid Build Coastguard Worker        AC_SUBST(USE_BEARSSL, [1])
49*6236dae4SAndroid Build Coastguard Worker        BEARSSL_ENABLED=1
50*6236dae4SAndroid Build Coastguard Worker        USE_BEARSSL="yes"
51*6236dae4SAndroid Build Coastguard Worker        ssl_msg="BearSSL"
52*6236dae4SAndroid Build Coastguard Worker        test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
53*6236dae4SAndroid Build Coastguard Worker      ], [], -lbearssl)
54*6236dae4SAndroid Build Coastguard Worker    fi
55*6236dae4SAndroid Build Coastguard Worker
56*6236dae4SAndroid Build Coastguard Worker    addld=""
57*6236dae4SAndroid Build Coastguard Worker    addlib=""
58*6236dae4SAndroid Build Coastguard Worker    addcflags=""
59*6236dae4SAndroid Build Coastguard Worker    bearssllib=""
60*6236dae4SAndroid Build Coastguard Worker
61*6236dae4SAndroid Build Coastguard Worker    if test "x$USE_BEARSSL" != "xyes"; then
62*6236dae4SAndroid Build Coastguard Worker      dnl add the path and test again
63*6236dae4SAndroid Build Coastguard Worker      addld=-L$OPT_BEARSSL/lib$libsuff
64*6236dae4SAndroid Build Coastguard Worker      addcflags=-I$OPT_BEARSSL/include
65*6236dae4SAndroid Build Coastguard Worker      bearssllib=$OPT_BEARSSL/lib$libsuff
66*6236dae4SAndroid Build Coastguard Worker
67*6236dae4SAndroid Build Coastguard Worker      LDFLAGS="$LDFLAGS $addld"
68*6236dae4SAndroid Build Coastguard Worker      if test "$addcflags" != "-I/usr/include"; then
69*6236dae4SAndroid Build Coastguard Worker        CPPFLAGS="$CPPFLAGS $addcflags"
70*6236dae4SAndroid Build Coastguard Worker      fi
71*6236dae4SAndroid Build Coastguard Worker
72*6236dae4SAndroid Build Coastguard Worker      AC_CHECK_LIB(bearssl, br_ssl_client_init_full,
73*6236dae4SAndroid Build Coastguard Worker        [
74*6236dae4SAndroid Build Coastguard Worker        AC_DEFINE(USE_BEARSSL, 1, [if BearSSL is enabled])
75*6236dae4SAndroid Build Coastguard Worker        AC_SUBST(USE_BEARSSL, [1])
76*6236dae4SAndroid Build Coastguard Worker        BEARSSL_ENABLED=1
77*6236dae4SAndroid Build Coastguard Worker        USE_BEARSSL="yes"
78*6236dae4SAndroid Build Coastguard Worker        ssl_msg="BearSSL"
79*6236dae4SAndroid Build Coastguard Worker        test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
80*6236dae4SAndroid Build Coastguard Worker        ],
81*6236dae4SAndroid Build Coastguard Worker        [
82*6236dae4SAndroid Build Coastguard Worker          CPPFLAGS=$_cppflags
83*6236dae4SAndroid Build Coastguard Worker          LDFLAGS=$_ldflags
84*6236dae4SAndroid Build Coastguard Worker        ], -lbearssl)
85*6236dae4SAndroid Build Coastguard Worker    fi
86*6236dae4SAndroid Build Coastguard Worker
87*6236dae4SAndroid Build Coastguard Worker    if test "x$USE_BEARSSL" = "xyes"; then
88*6236dae4SAndroid Build Coastguard Worker      AC_MSG_NOTICE([detected BearSSL])
89*6236dae4SAndroid Build Coastguard Worker      check_for_ca_bundle=1
90*6236dae4SAndroid Build Coastguard Worker
91*6236dae4SAndroid Build Coastguard Worker      LIBS="-lbearssl $LIBS"
92*6236dae4SAndroid Build Coastguard Worker
93*6236dae4SAndroid Build Coastguard Worker      if test -n "$bearssllib"; then
94*6236dae4SAndroid Build Coastguard Worker        dnl when shared libs were found in a path that the run-time
95*6236dae4SAndroid Build Coastguard Worker        dnl linker doesn't search through, we need to add it to
96*6236dae4SAndroid Build Coastguard Worker        dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
97*6236dae4SAndroid Build Coastguard Worker        dnl due to this
98*6236dae4SAndroid Build Coastguard Worker        if test "x$cross_compiling" != "xyes"; then
99*6236dae4SAndroid Build Coastguard Worker          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$bearssllib"
100*6236dae4SAndroid Build Coastguard Worker          export CURL_LIBRARY_PATH
101*6236dae4SAndroid Build Coastguard Worker          AC_MSG_NOTICE([Added $bearssllib to CURL_LIBRARY_PATH])
102*6236dae4SAndroid Build Coastguard Worker        fi
103*6236dae4SAndroid Build Coastguard Worker      fi
104*6236dae4SAndroid Build Coastguard Worker    fi
105*6236dae4SAndroid Build Coastguard Worker
106*6236dae4SAndroid Build Coastguard Worker  fi dnl BearSSL not disabled
107*6236dae4SAndroid Build Coastguard Worker
108*6236dae4SAndroid Build Coastguard Worker  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
109*6236dae4SAndroid Build Coastguard Workerfi
110*6236dae4SAndroid Build Coastguard Worker])
111