aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2017-06-20 23:55:34 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2017-06-20 23:55:34 +0300
commita7b7a32ec6dd493e00573da4b2f343f02feb0aa7 (patch)
tree2a9ec05b301f297ca1b302dcb74beb08d164aca5 /configure.ac
parent6364c4700d06232f2ea418b2146ba9e264d90086 (diff)
downloadlibmicrohttpd-a7b7a32ec6dd493e00573da4b2f343f02feb0aa7.tar.gz
libmicrohttpd-a7b7a32ec6dd493e00573da4b2f343f02feb0aa7.zip
Dropped dependency on libgcrypt with new GnuTLS (>2.12.20) versions
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac175
1 files changed, 132 insertions, 43 deletions
diff --git a/configure.ac b/configure.ac
index b8b10c62..c249aef1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1255,20 +1255,6 @@ then
1255# Next block is large unindented block 1255# Next block is large unindented block
1256# 1256#
1257 1257
1258# libgcrypt linkage: required for HTTPS support
1259AM_PATH_LIBGCRYPT([1.2.2], [have_gcrypt=yes], [have_gcrypt=no])
1260if test "x$have_gcrypt" = "xyes"
1261then
1262 SAVE_CFLAGS="$CFLAGS"
1263 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
1264 # LIBGCRYPT_CFLAGS can be actually a CPPFLAGS, so check them both
1265 SAVE_CPPFLAGS="$CPPFLAGS"
1266 CPPFLAGS="$CPPFLAGS $LIBGCRYPT_CFLAGS"
1267 AC_CHECK_HEADERS([gcrypt.h], [], [have_gcrypt=no], [AC_INCLUDES_DEFAULT])
1268 CFLAGS="$SAVE_CFLAGS"
1269 CPPFLAGS="$SAVE_CPPFLAGS"
1270fi
1271
1272# gnutls 1258# gnutls
1273have_gnutls_pkgcfg=no 1259have_gnutls_pkgcfg=no
1274AC_MSG_CHECKING([[how to find GnuTLS library]]) 1260AC_MSG_CHECKING([[how to find GnuTLS library]])
@@ -1358,16 +1344,33 @@ AS_IF([test "x$with_gnutls" != "xno" && test "x$have_gnutls" != "xyes"],
1358 LIBS="$SAVE_LIBS" 1344 LIBS="$SAVE_LIBS"
1359 ], 1345 ],
1360 [ 1346 [
1347 # check for GnuTLS at default paths
1361 have_gnutls_pkgcfg='no' 1348 have_gnutls_pkgcfg='no'
1349 AC_CHECK_HEADERS([gnutls/gnutls.h],
1350 [AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1351 [
1352 GNUTLS_LIBS="-lgnutls"
1353 AC_CHECK_LIB([gnutls], [gnutls_load_file], [AC_CHECK_LIB([gnutls], [gnutls_privkey_import_x509_raw], [have_gnutls_sni=yes])])
1354 have_gnutls=yes
1355 ])], [], [AC_INCLUDES_DEFAULT])
1356 ])
1357 ])
1358
1359have_gcrypt='unknown'
1360AS_IF([test "x$with_gnutls" != "xno" && test "x$have_gnutls" != "xyes"],
1361 [
1362 AM_PATH_LIBGCRYPT([1.2.2], [have_gcrypt=yes], [have_gcrypt=no])
1363 AS_IF([[test "x$have_gcrypt" = "xyes"]],
1364 [
1362 SAVE_CPPFLAGS="$CPPFLAGS" 1365 SAVE_CPPFLAGS="$CPPFLAGS"
1363 SAVE_CFLAGS="$CFLAGS" 1366 SAVE_CFLAGS="$CFLAGS"
1364 SAVE_LDFLAGS="$LDFLAGS"
1365 SAVE_LIBS="$LIBS" 1367 SAVE_LIBS="$LIBS"
1366 # Try to use libgcrypt search path 1368 SAVE_LDFLAGS="$LDFLAGS"
1367 # as libgcrypt flags will be used
1368 # anyway for HTTPs builds
1369 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS" 1369 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
1370 # LIBGCRYPT_CFLAGS can be actually a CPPFLAGS, so check them both
1370 CPPFLAGS="$CPPFLAGS $LIBGCRYPT_CFLAGS" 1371 CPPFLAGS="$CPPFLAGS $LIBGCRYPT_CFLAGS"
1372 AC_CHECK_HEADERS([gcrypt.h], [], [have_gcrypt=no], [AC_INCLUDES_DEFAULT])
1373 # Check for GnuTLS with gcrypt flags
1371 LDFLAGS="$LDFLAGS $LIBGCRYPT_LIBS" 1374 LDFLAGS="$LDFLAGS $LIBGCRYPT_LIBS"
1372 AC_CHECK_HEADERS([gnutls/gnutls.h], 1375 AC_CHECK_HEADERS([gnutls/gnutls.h],
1373 [AC_CHECK_LIB([gnutls], [gnutls_priority_set], 1376 [AC_CHECK_LIB([gnutls], [gnutls_priority_set],
@@ -1383,44 +1386,129 @@ AS_IF([test "x$with_gnutls" != "xno" && test "x$have_gnutls" != "xyes"],
1383 CFLAGS="$SAVE_CFLAGS" 1386 CFLAGS="$SAVE_CFLAGS"
1384 LDFLAGS="$SAVE_LDFLAGS" 1387 LDFLAGS="$SAVE_LDFLAGS"
1385 LIBS="$SAVE_LIBS" 1388 LIBS="$SAVE_LIBS"
1386 ]) 1389 ]
1387 ]) 1390 )
1388 1391 ]
1392)
1389AS_IF([test "x$have_gnutls" != "xyes" && test "x$with_gnutls" = "xyes"], [AC_MSG_ERROR([[can't find usable libgnutls]])]) 1393AS_IF([test "x$have_gnutls" != "xyes" && test "x$with_gnutls" = "xyes"], [AC_MSG_ERROR([[can't find usable libgnutls]])])
1390
1391AC_SUBST([GNUTLS_CPPFLAGS])
1392AC_SUBST([GNUTLS_CFLAGS])
1393AC_SUBST([GNUTLS_LDFLAGS])
1394AC_SUBST([GNUTLS_LIBS])
1395
1396# 1394#
1397# End of large unindented block 1395# End of large unindented block
1398# 1396#
1399 AS_IF([test "x$have_gnutls" = "xyes" && test "x$have_gcrypt" = "xyes"], [ 1397
1398 AS_IF([test "x$have_gnutls" = "xyes"],
1399 [
1400 SAVE_CPPFLAGS="$CPPFLAGS"
1401 SAVE_CFLAGS="$CFLAGS"
1402 SAVE_LDFLAGS="$LDFLAGS"
1403 SAVE_LIBS="$LIBS"
1404 CPPFLAGS="$GNUTLS_CFLAGS $CPPFLAGS"
1405 CFLAGS="$GNUTLS_CFLAGS $CFLAGS"
1406 LDFLAGS="$GNUTLS_LIBS $LDFLAGS"
1407 LIBS="$LIBS $GNUTLS_LIBS"
1408 AC_CACHE_CHECK([[whether GnuTLS require libgcrypt initialisaion]], [mhd_cv_grypt_required],
1409 [
1410 AC_COMPILE_IFELSE(
1411 [
1412 AC_LANG_PROGRAM(
1413 [
1414#include <gnutls/gnutls.h>
1415 ],
1416 [
1417#if !defined(GNUTLS_VERSION_NUMBER) || GNUTLS_VERSION_NUMBER+0 <= 0x020c14
1418#error Old versions of GnuTLS require libgcript initialisaion
1419choke me now
1420#endif
1421 ]
1422 )
1423 ],
1424 [[mhd_cv_grypt_required='no']], [[mhd_cv_grypt_required='yes']]
1425 )
1426 ]
1427 )
1428 CPPFLAGS="$SAVE_CPPFLAGS"
1429 CFLAGS="$SAVE_CFLAGS"
1430 LDFLAGS="$SAVE_LDFLAGS"
1431 LIBS="$SAVE_LIBS"
1432 ]
1433 )
1434
1435 AS_IF([[test "x$mhd_cv_grypt_required" = "xyes" && test "x$have_gcrypt" = "xunknown"]],
1436 [
1437 AM_PATH_LIBGCRYPT([1.2.2], [have_gcrypt=yes], [have_gcrypt=no])
1438 AS_IF([[test "x$have_gcrypt" = "xyes"]],
1439 [
1440 SAVE_CPPFLAGS="$CPPFLAGS"
1441 SAVE_CFLAGS="$CFLAGS"
1442 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
1443 # LIBGCRYPT_CFLAGS can be actually a CPPFLAGS, so check them both
1444 CPPFLAGS="$CPPFLAGS $LIBGCRYPT_CFLAGS"
1445 AC_CHECK_HEADERS([gcrypt.h], [], [have_gcrypt=no], [AC_INCLUDES_DEFAULT])
1446 # Check for GnuTLS with gcrypt flags
1447 CPPFLAGS="$SAVE_CPPFLAGS"
1448 CFLAGS="$SAVE_CFLAGS"
1449 ]
1450 )
1451 ]
1452 )
1453 AC_SUBST([GNUTLS_CPPFLAGS])
1454 AC_SUBST([GNUTLS_CFLAGS])
1455 AC_SUBST([GNUTLS_LDFLAGS])
1456 AC_SUBST([GNUTLS_LIBS])
1457
1458 AS_UNSET([[crypt_missing]])
1459 AS_IF([[test "x$have_gnutls" = "xyes"]],
1460 [
1461 AS_IF([[test "x$mhd_cv_grypt_required" = "xyes" && test "x$have_gcrypt" != "xyes"]],
1462 [
1463 crypt_missing="required libgcrypt"
1464 AS_IF([[test "x$enable_https" = "xyes" ]], [AC_MSG_ERROR([[HTTPS support cannot be enabled without $crypt_missing.]])])
1465 enable_https=no
1466 MSG_HTTPS="no (lacking $crypt_missing)"
1467 ],
1468 [
1400 AC_DEFINE([[HTTPS_SUPPORT]],[[1]],[Define to 1 if libmicrohttpd is compiled with HTTPS support.]) 1469 AC_DEFINE([[HTTPS_SUPPORT]],[[1]],[Define to 1 if libmicrohttpd is compiled with HTTPS support.])
1401 enable_https=yes 1470 enable_https=yes
1402 MSG_HTTPS="yes (using libgnutls and libgcrypt)" 1471 AS_IF([[test "x$mhd_cv_grypt_required" = "xyes"]],
1403 MHD_LIB_CPPFLAGS="$MHD_LIB_CPPFLAGS $LIBGCRYPT_CFLAGS $GNUTLS_CPPFLAGS" 1472 [
1404 MHD_LIB_CFLAGS="$MHD_LIB_CFLAGS $LIBGCRYPT_CFLAGS $GNUTLS_CFLAGS" 1473 MSG_HTTPS="yes (using libgnutls and libgcrypt)"
1405 MHD_LIB_LDFLAGS="$MHD_LIB_LDFLAGS $GNUTLS_LDFLAGS" 1474 MHD_LIB_CPPFLAGS="$MHD_LIB_CPPFLAGS $LIBGCRYPT_CFLAGS $GNUTLS_CPPFLAGS"
1406 MHD_LIBDEPS="$GNUTLS_LIBS $LIBGCRYPT_LIBS $MHD_LIBDEPS" 1475 MHD_LIB_CFLAGS="$MHD_LIB_CFLAGS $LIBGCRYPT_CFLAGS $GNUTLS_CFLAGS"
1476 MHD_LIB_LDFLAGS="$MHD_LIB_LDFLAGS $GNUTLS_LDFLAGS"
1477 MHD_LIBDEPS="$GNUTLS_LIBS $LIBGCRYPT_LIBS $MHD_LIBDEPS"
1478 AC_DEFINE([[MHD_HTTPS_REQUIRE_GRYPT]], [[1]], [Define to `1' if HTTPS require initialisation of libgcrypt])
1479 ],
1480 [[
1481 MSG_HTTPS="yes (using libgnutls)"
1482 MHD_LIB_CPPFLAGS="$MHD_LIB_CPPFLAGS $GNUTLS_CPPFLAGS"
1483 MHD_LIB_CFLAGS="$MHD_LIB_CFLAGS $GNUTLS_CFLAGS"
1484 MHD_LIB_LDFLAGS="$MHD_LIB_LDFLAGS $GNUTLS_LDFLAGS"
1485 MHD_LIBDEPS="$GNUTLS_LIBS $MHD_LIBDEPS"
1486 ]]
1487 )
1407 AS_IF([[ test "x$have_gnutls_pkgcfg" = "xyes" ]], 1488 AS_IF([[ test "x$have_gnutls_pkgcfg" = "xyes" ]],
1408 [ # remove GnuTLS from private libs in .pc file as it defined in Requires.private 1489 [ # remove GnuTLS from private libs in .pc file as it defined in Requires.private
1409 MHD_REQ_PRIVATE='gnutls' 1490 MHD_REQ_PRIVATE='gnutls'
1410 MHD_LIBDEPS_PKGCFG="$LIBGCRYPT_LIBS $MHD_LIBDEPS_PKGCFG" 1491 AS_IF([[test "x$mhd_cv_grypt_required" = "xyes"]],
1492 [[MHD_LIBDEPS_PKGCFG="$LIBGCRYPT_LIBS $MHD_LIBDEPS_PKGCFG"]]
1493 )
1411 ], 1494 ],
1412 [ 1495 [
1413 MHD_REQ_PRIVATE='' 1496 MHD_REQ_PRIVATE=''
1414 MHD_LIBDEPS_PKGCFG="$GNUTLS_LIBS $LIBGCRYPT_LIBS $MHD_LIBDEPS_PKGCFG" 1497 AS_IF([[test "x$mhd_cv_grypt_required" = "xyes"]],
1498 [[MHD_LIBDEPS_PKGCFG="$LIBGCRYPT_LIBS $MHD_LIBDEPS_PKGCFG"]]
1499 )
1500 MHD_LIBDEPS_PKGCFG="$GNUTLS_LIBS $MHD_LIBDEPS_PKGCFG"
1415 ]) 1501 ])
1416 ], [ 1502 ]
1417 AS_IF([test "x$have_gnutls" = "xyes"], [crypt_missing="libgcrypt"], 1503 )
1418 [test "x$have_gcrypt" = "xyes"], [crypt_missing="libgnutls"], 1504 ],
1419 [crypt_missing="libgcrypt and libgnutls"]) 1505 [
1420 AS_IF([[test "x$enable_https" = "xyes" ]], [AC_MSG_ERROR([[HTTPS support cannot be enabled without $crypt_missing.]])]) 1506 crypt_missing="libgnutls"
1421 enable_https=no 1507 AS_IF([[test "x$enable_https" = "xyes" ]], [AC_MSG_ERROR([[HTTPS support cannot be enabled without $crypt_missing.]])])
1422 MSG_HTTPS="no (lacking $crypt_missing)" 1508 enable_https=no
1423 ]) 1509 MSG_HTTPS="no (lacking $crypt_missing)"
1510 ]
1511 )
1424else 1512else
1425 MSG_HTTPS="no (disabled)" 1513 MSG_HTTPS="no (disabled)"
1426fi 1514fi
@@ -1430,6 +1518,7 @@ AC_MSG_RESULT([$MSG_HTTPS])
1430AM_CONDITIONAL([HAVE_GNUTLS], [[test "x$have_gnutls" = "xyes"]]) 1518AM_CONDITIONAL([HAVE_GNUTLS], [[test "x$have_gnutls" = "xyes"]])
1431AM_CONDITIONAL([HAVE_GNUTLS_SNI], [[test "x$have_gnutls_sni" = "xyes"]]) 1519AM_CONDITIONAL([HAVE_GNUTLS_SNI], [[test "x$have_gnutls_sni" = "xyes"]])
1432AM_CONDITIONAL([ENABLE_HTTPS], [test "x$enable_https" = "xyes"]) 1520AM_CONDITIONAL([ENABLE_HTTPS], [test "x$enable_https" = "xyes"])
1521AM_CONDITIONAL([HTTPS_REQUIRE_GRYPT], [[test "x$enable_https" = "xyes" && test "x$mhd_cv_grypt_required" = "xyes"]])
1433 1522
1434# optional: HTTP Basic Auth support. Enabled by default 1523# optional: HTTP Basic Auth support. Enabled by default
1435AC_MSG_CHECKING([[whether to support HTTP basic authentication]]) 1524AC_MSG_CHECKING([[whether to support HTTP basic authentication]])