libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

commit 4cc6bd209feaba1548f127d6f2f5eeccc94c0f03
parent 0bffbdc5f5452478245fab72c9d952c104cf3f59
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 23 Nov 2025 18:01:21 +0100

add check for mbedtls

Diffstat:
Mconfigure.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"])