[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] 01/05: configure: improved check for asserts
From: |
gnunet |
Subject: |
[libmicrohttpd] 01/05: configure: improved check for asserts |
Date: |
Sun, 06 Nov 2022 13:10:09 +0100 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit b040c27828bc4aec02a3271a5686516b958e6b55
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Mon Oct 31 12:49:18 2022 +0300
configure: improved check for asserts
---
configure.ac | 205 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 176 insertions(+), 29 deletions(-)
diff --git a/configure.ac b/configure.ac
index 536a4d66..94ddfd5c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -226,7 +226,7 @@ choke me now
AS_CASE([${enable_build_type}],[*-compact],
[
enable_compact_code="yes"
- compact_code_MSG="enabled by build type ${enable_build_type}"
+ compact_code_MSG="enabled by
--enable-build-type=${enable_build_type}"
AC_DEFINE([MHD_FAVOR_SMALL_CODE],[1])
]
)
@@ -3640,44 +3640,191 @@ AS_VAR_IF([use_heavy_tests], ["yes"],
AC_MSG_RESULT([$CPU_COUNT])
-AC_MSG_CHECKING([[whether to enable debug asserts]])
AC_ARG_ENABLE([[asserts]],
[AS_HELP_STRING([[--enable-asserts]],
[enable test build with debug asserts])],
[],
- [AS_CASE([${enable_build_type}],[debug|debugger],
- [enable_asserts='yes'],[enable_asserts='no'])]
+ [enable_asserts='auto']
+)
+AS_UNSET([use_asserts_MSG])
+AC_CACHE_CHECK([[whether NDEBUG macro is defined]], [mhd_cv_macro_ndebug_def],
+ [
+ AC_LINK_IFELSE(
+ [
+ AC_LANG_SOURCE([[
+#ifndef NDEBUG
+#error NDEBUG is NOT defined
+chome me now
+#endif
+
+int main(void)
+{
+ return 0;
+}
+ ]]
+ )
+ ],
+ [[mhd_cv_macro_ndebug_def='yes']],
+ [[mhd_cv_macro_ndebug_def='no']]
+ )
+ ]
+)
+AS_VAR_IF([enable_asserts],["yes"],
+ [
+ AS_VAR_IF([mhd_cv_macro_ndebug_def],["yes"],
+ [
+ AC_MSG_FAILURE([Parameter --enable-asserts is specified, but NDEBUG
macro is defined as well])
+ ]
+ )
+ use_asserts_MSG="yes, enabled by configure parameter"
+ ]
+)
+AC_CACHE_CHECK([[whether _DEBUG macro is defined]], [mhd_cv_macro__debug_def],
+ [
+ AC_LINK_IFELSE(
+ [
+ AC_LANG_SOURCE([[
+#ifndef _DEBUG
+#error _DEBUG is NOT defined
+chome me now
+#endif
+
+int main(void)
+{
+ return 0;
+}
+ ]]
+ )
+ ],
+ [[mhd_cv_macro__debug_def='yes']],
+ [[mhd_cv_macro__debug_def='no']]
+ )
+ ]
+)
+AS_VAR_IF([enable_asserts],["no"],
+ [
+ AS_VAR_IF([mhd_cv_macro__debug_def],["yes"],
+ [
+ AC_MSG_FAILURE([Parameter --disable-asserts is specified, but _DEBUG
macro is defined as well])
+ ]
+ )
+ use_asserts_MSG="no, set by configure parameter"
+ ]
+)
+AS_IF([test "x${mhd_cv_macro_ndebug_def}" = "xyes" && test
"x${mhd_cv_macro__debug_def}" = "xyes"],
+ [AC_MSG_FAILURE([Both NDEBUG and _DEBUG macros are defined])]
+)
+AS_VAR_IF([enable_asserts],["auto"],
+ [
+ AS_VAR_IF([mhd_cv_macro_ndebug_def],["yes"],
+ [
+ enable_asserts="no"
+ use_asserts_MSG="no, set by NDEBUG preprocessor macro"
+ ]
+ )
+ ]
+)
+AS_VAR_IF([enable_asserts],["auto"],
+ [
+ AS_VAR_IF([mhd_cv_macro__debug_def],["yes"],
+ [
+ enable_asserts="yes"
+ use_asserts_MSG="yes, enabled by _DEBUG preprocessor macro"
+ ]
+ )
+ ]
+)
+AS_VAR_IF([enable_asserts],["auto"],
+ [
+ AC_CACHE_CHECK([[whether DEBUG macro is defined]],
[mhd_cv_macro_debug_def],
+ [
+ AC_LINK_IFELSE(
+ [
+ AC_LANG_SOURCE([[
+#ifndef DEBUG
+#error DEBUG is NOT defined
+chome me now
+#endif
+
+int main(void)
+{
+ return 0;
+}
+ ]]
+ )
+ ],
+ [[mhd_cv_macro_debug_def='yes']],
+ [[mhd_cv_macro_debug_def='no']]
+ )
+ ]
+ )
+ AS_VAR_IF([mhd_cv_macro_debug_def],["yes"],
+ [
+ enable_asserts="yes"
+ use_asserts_MSG="yes, enabled by DEBUG preprocessor macro"
+ ]
+ )
+ ]
+)
+AC_MSG_CHECKING([[whether to enable debug asserts]])
+AS_VAR_IF([enable_asserts],["auto"],
+ [
+ AS_CASE([${enable_build_type}],
+ [debug|debugger],
+ [
+ enable_asserts="yes"
+ use_asserts_MSG="yes, enabled by
--enable-bulid-type=${enable_build_type}"
+ ],
+ [
+ enable_asserts="no"
+ use_asserts_MSG="no"
+ ]
+ )
+ ]
)
AS_CASE([[$enable_asserts]], [[yes]], [[:]], [[no]], [[:]],
[[enable_asserts='no']])
-AC_MSG_RESULT([[$enable_asserts]])
+AC_MSG_RESULT([[${use_asserts_MSG=no}]])
AS_VAR_IF([[enable_asserts]], [["yes"]],
[
- MHD_PREPEND_FLAG_TO_VAR([CPPFLAGS_ac],[-D_DEBUG=1])
- CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}"
- [mhd_assert_test_prg="#include <assert.h>
- int pos_val(void) {return 5;}
- int neg_val(void) {return -5;}
- int main(void)
- { int pos_var = pos_val(), neg_var = neg_val();
- assert(neg_var > pos_var); /* Must trigger assert. */
- (void)pos_var; (void)neg_var;
- return 0; }
- "]
- AC_CACHE_CHECK([[whether system assert() is available]],
[mhd_cv_sys_assert_avail],
- [
- AC_LINK_IFELSE([AC_LANG_SOURCE([[$mhd_assert_test_prg]])],
- [[mhd_cv_sys_assert_avail='yes']],
- [[mhd_cv_sys_assert_avail='no']])
- ]
- )
- AS_VAR_IF([[mhd_cv_sys_assert_avail]], [["no"]], [],
- [AC_DEFINE([[HAVE_ASSERT]], [[1]], [Define if you have usable assert()
and assert.h])])
- AS_UNSET([mhd_assert_test_prg])
+ AS_VAR_IF([[mhd_cv_macro__debug_def]], [["yes"]], [:],
+ [
+ MHD_PREPEND_FLAG_TO_VAR([CPPFLAGS_ac],[-D_DEBUG=1])
+ CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}"
+ ]
+ )
+ AC_CACHE_CHECK([[whether system assert() is available]],
[mhd_cv_sys_assert_avail],
+ [
+ AC_LINK_IFELSE(
+ [
+ AC_LANG_SOURCE([[
+#include <assert.h>
+
+static int pos_val(void) {return 5;}
+static int neg_val(void) {return -5;}
+int main(void)
+{
+ int pos_var = pos_val(), neg_var = neg_val();
+ assert(neg_var > pos_var); /* Must trigger assert. */
+ return pos_var + neg_var;
+}
+ ]])
+ ],
+ [[mhd_cv_sys_assert_avail='yes']],
+ [[mhd_cv_sys_assert_avail='no']]
+ )
+ ]
+ )
+ AS_VAR_IF([[mhd_cv_sys_assert_avail]], [["no"]], [],
+ [AC_DEFINE([[HAVE_ASSERT]], [[1]], [Define if you have usable assert()
and assert.h])])
],
[
- MHD_PREPEND_FLAG_TO_VAR([CPPFLAGS_ac],[-DNDEBUG=1])
- CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}"
+ AS_VAR_IF([[mhd_cv_macro_ndebug_def]], [["yes"]], [:],
+ [
+ MHD_PREPEND_FLAG_TO_VAR([CPPFLAGS_ac],[-DNDEBUG=1])
+ CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}"
+ ]
+ )
]
)
@@ -4340,7 +4487,7 @@ AC_MSG_NOTICE([GNU libmicrohttpd ${PACKAGE_VERSION}
Configuration Summary:
HTTPS support: ${MSG_HTTPS}
Compact code: ${enable_compact_code} (${compact_code_MSG})
Use thread names: ${enable_thread_names}
- Use debug asserts: ${enable_asserts}
+ Use debug asserts: ${use_asserts_MSG=no}
Use sanitizers: ${enabled_sanitizers:=no}
Build docs: ${enable_doc}
Build examples: ${enable_examples}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.