libmicrohttpd2

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

commit eb200338a0fc1d1a23147bf3633c776cca700019
parent 08a76b6bd65390c60c370941c2ce3450ba00e06b
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date:   Tue,  7 Oct 2025 21:20:43 +0200

configure: added check for enums with fixed base type

Diffstat:
Mconfigure.ac | 32++++++++++++++++++++++++++++++++
Msrc/incl_priv/mhd_sys_options.h | 11+++++++++++
2 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -1277,6 +1277,38 @@ AC_CACHE_CHECK([whether $CC supports trailing comma in enum],[mhd_cv_enum_traili AS_VAR_IF([mhd_cv_enum_trailing_comma],["yes"],[], [AC_DEFINE([MHD_ENUMS_NEED_TRAILING_VALUE],[1],[Define to '1' if your compiler does not support enum with trailing comma])] ) +AC_CACHE_CHECK([whether $CC supports enum fixed underlying type],[mhd_cv_enum_base_type], + [ + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[enum TestEnum : unsigned char {ENM_VAL_A, ENM_VAL_B};]])], + [mhd_cv_enum_base_type="yes"], + [ + mhd_cv_enum_base_type="no" + mhd_cv_enum_base_type_warnless="no" + ] + ) + ] +) +AS_VAR_IF([mhd_cv_enum_base_type],["yes"], + [ + AC_DEFINE([HAVE_ENUM_BASE_TYPE],[1],[Define to '1' if your compiler supports enum with fixed underlying type]) + AC_CACHE_CHECK([whether enum fixed underlying type works without warnings],[mhd_cv_enum_base_type_warnless], + [ + SAVE_c_werror_flag="$ac_c_werror_flag" + ac_c_werror_flag="yes" + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[enum TestEnum : unsigned char {ENM_VAL_A, ENM_VAL_B};]])], + [mhd_cv_enum_base_type_warnless="yes"], + [mhd_cv_enum_base_type_warnless="no"] + ) + ac_c_werror_flag="$SAVE_c_werror_flag" + ] + ) + AS_VAR_IF([mhd_cv_enum_base_type_warnless],["yes"], + [AC_DEFINE([HAVE_ENUM_BASE_TYPE_WARNLESS],[1],[Define to '1' if your compiler supports enum with fixed underlying type without warnings])] + ) + ] +) AS_VAR_SET_IF([ac_cv_c_restrict],[], diff --git a/src/incl_priv/mhd_sys_options.h b/src/incl_priv/mhd_sys_options.h @@ -368,6 +368,16 @@ # define MHD_FIXED_FLAGS_ENUM_MHD_APP_SET_ MHD_FLAGS_ENUM_ /* enum can be extended in next MHD versions */ #endif +// TODO: support warnings mute +#ifdef HAVE_ENUM_BASE_TYPE_WARNLESS +# define mhd_USE_ENUM_BASE_T 1 +#endif +#ifdef mhd_USE_ENUM_BASE_T +# define mhd_ENUM_BASE_T(fixed_type) : fixed_type +#else +# define mhd_ENUM_BASE_T(fixed_type) /* empty */ +#endif + /** * Automatic string with the name of the current function */ @@ -643,6 +653,7 @@ # define HAVE_STDBOOL_H 1 # endif # endif +# define mhd_ENUM_BASE_T(base) /* nothing */ # if ((__STDC_VERSION__ + 0) >= 202311) # define alignof _Alignof # endif