commit 4cc6bd209feaba1548f127d6f2f5eeccc94c0f03
parent 0bffbdc5f5452478245fab72c9d952c104cf3f59
Author: Christian Grothoff <christian@grothoff.org>
Date: Sun, 23 Nov 2025 18:01:21 +0100
add check for mbedtls
Diffstat:
| M | configure.ac | | | 137 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- |
1 file changed, 131 insertions(+), 6 deletions(-)
diff --git a/configure.ac b/configure.ac
@@ -1444,7 +1444,7 @@ int main(int argc, char *argv[])
enum some_Enm local_e_var;
static constexpr unsigned int arr0[1 + zero_const_expr_s] = { one_const_expr_u };
constexpr int arr1[one_const_expr_u] = { zero_const_expr_s };
-
+
switch(argc)
{
case zero_const_expr_s:
@@ -1460,7 +1460,7 @@ int main(int argc, char *argv[])
local_e_var = enm_Val_Two;
break;
}
-
+
return (arr0[0] + (unsigned int)local_e_var) ==
one_const_expr_u ? (arr1[0] - zero_const_expr_s) : (!! argv[0]);
}
@@ -1557,7 +1557,7 @@ AS_UNSET([SAVE_ac_c_werror_flag])
# Check for 'fallthrough' keywords
save_CFLAGS_ac="${CFLAGS_ac}"
CFLAGS="${user_CFLAGS}"
-# Use strictest warning flags
+# Use strictest warning flags
MHD_FIND_ADD_CC_CFLAG([CFLAGS_ac], [-Wimplicit-fallthrough=5],[-Wimplicit-fallthrough=4],[-Wimplicit-fallthrough=3],
[-Wimplicit-fallthrough])
AC_CACHE_CHECK([for 'fallthrough' keyword supported by $CC],[mhd_cv_cc_kwd_fallthrough],
@@ -1610,7 +1610,7 @@ AS_CASE([${mhd_cv_cc_kwd_fallthrough}],
CFLAGS_ac="${save_CFLAGS_ac}"
CFLAGS="${CFLAGS_ac} ${user_CFLAGS}"
-# Check for full support of atomic variables
+# Check for full support of atomic variables
AC_CACHE_CHECK([whether $CC supports atomic variables],
[mhd_cv_c_atomic_variables],
[
@@ -5767,6 +5767,7 @@ AS_IF([[test "x$enable_postparser" != "xno"]],
AM_CONDITIONAL([MHD_SUPPORT_POST_PARSER], [test "x$enable_postparser" != "xno"])
AC_MSG_RESULT([[$enable_postparser]])
+have_mbedtls=no
have_gnutls=no
have_gnutls_pkgcfg=no
have_openssl=no
@@ -6143,8 +6144,116 @@ choke me now
]
)
+ AC_MSG_CHECKING([[how to find mbedTLS library]])
+ AC_ARG_WITH([[mbedtls]],
+ [
+ AS_HELP_STRING([[--with-mbedtls[=PRFX]]],
+ [use mbedTLS for HTTPS support, optional PRFX overrides pkg-config data for mbedTLS headers (PRFX/include) and libs (PRFX/lib)])
+ ],
+ [
+ AS_CASE([$with_mbedtls],
+ [no],[
+ have_mbedtls="no"
+ AC_MSG_RESULT([[mbedTLS disabled]])
+ AS_UNSET([MBEDTLS_CPPFLAGS])
+ AS_UNSET([MBEDTLS_CFLAGS])
+ AS_UNSET([MBEDTLS_LDFLAGS])
+ AS_UNSET([MBEDTLS_LIBS])
+ ],
+ [yes],[
+ AC_MSG_RESULT([[automatically, forced]])
+ ],
+ [
+ AC_MSG_RESULT([[-I$with_mbedtls/include -L$with_mbedtls/lib -lmbedtls -lmbedx509 -lmbedcrypto]])
+ LDFLAGS="${LDFLAGS_ac} -L$with_mbedtls/lib ${user_LDFLAGS}"
+ CPPFLAGS="${CPPFLAGS_ac} -I$with_mbedtls/include ${user_CPPFLAGS}"
+ have_mbedtls_pkgcfg="no"
+ # A simple check for the working header and the library
+ MHD_CHECK_FUNC([mbedtls_ssl_init],
+ [[
+#include <mbedtls/ssl.h>
+ ]],
+ [[
+ mbedtls_ssl_context ssl;
+ mbedtls_ssl_init(&ssl);
+ mbedtls_ssl_free(&ssl);
+ ]],
+ [
+ have_mbedtls="yes"
+ MBEDTLS_CPPFLAGS="-I$with_mbedtls/include"
+ AS_UNSET([MBEDTLS_CFLAGS])
+ MBEDTLS_LDFLAGS="-L$with_mbedtls/lib"
+ MBEDTLS_LIBS="-lmbedtls -lmbedx509 -lmbedcrypto"
+ ],
+ [AC_MSG_ERROR([cannot find usable mbedTLS at specified prefix $with_mbedtls])],
+ [-lmbedtls -lmbedx509 -lmbedcrypto]
+ )
+ CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}"
+ CFLAGS="${CFLAGS_ac} ${user_CFLAGS}"
+ LDFLAGS="${LDFLAGS_ac} ${user_LDFLAGS}"
+ ])
+ ],
+ [AC_MSG_RESULT([[automatically]])]
+ )
- AS_IF([test "x$have_gnutls" = "xyes" || test "x$have_openssl" = "xyes"],
+ AS_IF([test "x$with_mbedtls" != "xno" && test "x$have_mbedtls" != "xyes"],
+ [
+ PKG_CHECK_MODULES([MBEDTLS], [[mbedtls >= 2.0]],
+ [
+ CPPFLAGS="${CPPFLAGS_ac} $MBEDTLS_CFLAGS ${user_CPPFLAGS}"
+ # A simple check for the working header and the library
+ MHD_CHECK_FUNC([mbedtls_ssl_init],
+ [[
+#include <mbedtls/ssl.h>
+ ]],
+ [[
+ mbedtls_ssl_context ssl;
+ mbedtls_ssl_init(&ssl);
+ mbedtls_ssl_free(&ssl);
+ ]],
+ [
+ have_mbedtls="yes"
+ have_mbedtls_pkgcfg="yes"
+ # MBEDTLS_CFLAGS is actually CPPFLAGS
+ MBEDTLS_CPPFLAGS="$MBEDTLS_CFLAGS"
+ AS_UNSET([MBEDTLS_CFLAGS])
+ # MBEDTLS_LIBS is a combination of LDFLAGS and LIBS
+ AS_UNSET([MBEDTLS_LDFLAGS])
+ ],
+ [
+ AS_VAR_IF([with_mbedtls],["yes"],
+ [AC_MSG_ERROR([cannot find usable mbedTLS])]
+ )
+ AC_MSG_WARN([pkg-config reports that mbedTLS is present, but mbedTLS cannot be used])
+ AS_UNSET([MBEDTLS_CPPFLAGS])
+ AS_UNSET([MBEDTLS_CFLAGS])
+ AS_UNSET([MBEDTLS_LDFLAGS])
+ AS_UNSET([MBEDTLS_LIBS])
+ ],
+ [$MBEDTLS_LIBS]
+ )
+ ],
+ [
+ # check for mbedTLS at default paths
+ have_mbedtls_pkgcfg="no"
+ AS_VAR_IF([with_mbedtls],["yes"],
+ [AC_MSG_ERROR([cannot find usable mbedTLS])]
+ )
+ AS_UNSET([MBEDTLS_CPPFLAGS])
+ AS_UNSET([MBEDTLS_CFLAGS])
+ AS_UNSET([MBEDTLS_LDFLAGS])
+ AS_UNSET([MBEDTLS_LIBS])
+ ]
+ )
+ ]
+ )
+
+ AS_VAR_IF([have_mbedtls],["yes"],[:],
+ [have_mbedtls="no"]
+ )
+
+
+ AS_IF([test "x$have_gnutls" = "xyes" || test "x$have_openssl" = "xyes" || test "x$have_mbedtls" = "xyes"],
[
enable_https="yes"
multiple_tls="no"
@@ -6180,7 +6289,19 @@ choke me now
MHD_PREPEND_FLAG_TO_VAR([MHD_TLS_LIBDEPS],[$OPENSSL_LIBS])
]
)
- AS_VAR_IF([multiple_tls],["yes"],
+ AS_VAR_IF([have_mbedtls],["yes"],
+ [
+ AS_IF([test -n "${MSG_TLS_BACKENDS}"],
+ [
+ MSG_TLS_BACKENDS="${MSG_TLS_BACKENDS}, "
+ multiple_tls="yes"
+ ]
+ )
+ AC_DEFINE([MHD_SUPPORT_MBEDTLS],[1],[Define to '1' i][f mbedTLS library should be used])
+ MSG_TLS_BACKENDS="${MSG_TLS_BACKENDS}mbedTLS"
+ ]
+ )
+AS_VAR_IF([multiple_tls],["yes"],
[
MSG_HTTPS="yes (multiple backends)"
AC_DEFINE([mhd_HAVE_SEVERAL_TLS_BACKENDS],[1],[Define to '1' if several TLS backend are linked])
@@ -6234,6 +6355,10 @@ AM_CONDITIONAL([MHD_SUPPORT_OPENSSL], [[test "x$have_openssl" = "xyes"]])
AC_SUBST([OPENSSL_CPPFLAGS])
AC_SUBST([OPENSSL_LDFLAGS])
AC_SUBST([OPENSSL_LIBS])
+AM_CONDITIONAL([MHD_SUPPORT_MBEDTLS], [[test "x$have_mbedtls" = "xyes"]])
+AC_SUBST([MBEDTLS_CPPFLAGS])
+AC_SUBST([MBEDTLS_LDFLAGS])
+AC_SUBST([MBEDTLS_LIBS])
AM_CONDITIONAL([MHD_ENABLE_MULTITLS], [test "x$multiple_tls" = "xyes"])
AM_CONDITIONAL([MHD_SUPPORT_HTTPS], [test "x$enable_https" = "xyes"])