libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit ad61ffabeb012f342518deb1f711812a68e64cfc
parent 0ea81caa94bd2608f8c2fd4936808ad12b5f10a1
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Wed, 15 Jun 2022 14:00:04 +0300

configure: added parameter '--enable-compact-code'

Diffstat:
Mconfigure.ac | 114+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+), 0 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -138,6 +138,119 @@ CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}" LT_INIT([win32-dll]) LT_LANG([Windows Resource]) +AC_ARG_ENABLE([compact-code], + [AS_HELP_STRING([[--enable-compact-code]], + [enable use of a reduced size version of the code, resulting in smaller ] + [binaries with a slight performance hit [auto]])], + [], [enable_compact_code=auto]) +AS_IF([test "x${enable_compact_code}" = "x"], [enable_compact_code="auto"]) +AH_TEMPLATE([[MHD_FAVOR_SMALL_CODE]], [Define to '1' to use compact code version]) +AH_TEMPLATE([[MHD_FAVOR_FAST_CODE]], [Define to '1' to use fast (and larger) code version]) +AS_UNSET([compact_code_MSG]) +AS_CASE([${enable_compact_code}], [auto], + [ + # Parameter not set. + # Check preprocessor macros + AC_CHECK_DECL([MHD_FAVOR_SMALL_CODE], + [ + enable_compact_code="yes" + compact_code_MSG="enabled by preprocessor macro" + ], + [],[/* no includes */] + ) + AC_CHECK_DECL([MHD_FAVOR_FAST_CODE], + [ + AS_VAR_IF([enable_compact_code],["yes"], + [AC_MSG_ERROR([Both MHD_FAVOR_SMALL_CODE and MHD_FAVOR_FAST_CODE macros are defined])] + ) + enable_compact_code="no" + compact_code_MSG="set by preprocessor macro" + ],[],[/* no includes */] + ) + + AS_VAR_IF([enable_compact_code], ["auto"], + [ + # No preference by preprocessor macros + AC_CACHE_CHECK([whether compiler is configured to optimize for size], + [mhd_cv_cc_optim_size], + [ + AC_COMPILE_IFELSE( + [ + AC_LANG_PROGRAM([[ +#ifndef __OPTIMIZE_SIZE__ +#error Looks like compiler does not optimize for size +choke me now +#endif + ]],[]) + ], + [mhd_cv_cc_optim_size="yes"],[mhd_cv_cc_optim_size="no"] + ) + ] + ) + AS_VAR_IF([mhd_cv_cc_optim_size], ["yes"], + [ + enable_compact_code="yes" + compact_code_MSG="enabled automatically as compiler optimizes for size" + AC_DEFINE([MHD_FAVOR_SMALL_CODE],[1]) + ] + ) + ] + ) + + AS_VAR_IF([enable_compact_code], ["auto"], + [ + # No preference by preprocessor macros and compiler flags + AS_CASE([${enable_build_type}],[*-compact], + [ + enable_compact_code="yes" + compact_code_MSG="enabled by build type ${enable_build_type}" + AC_DEFINE([MHD_FAVOR_SMALL_CODE],[1]) + ] + ) + ] + ) + + AS_VAR_IF([enable_compact_code], ["auto"], + [ + # No preference + enable_compact_code="no" + compact_code_MSG="by default" + AC_DEFINE([MHD_FAVOR_FAST_CODE],[1]) + ] + ) + ], + [yes], + [ + compact_code_MSG="enabled by configure parameter" + AC_CHECK_DECL([MHD_FAVOR_SMALL_CODE], + [], + [AC_DEFINE([MHD_FAVOR_SMALL_CODE],[1])],[/* no includes */] + ) + AC_CHECK_DECL([MHD_FAVOR_FAST_CODE], + [AC_MSG_ERROR([MHD_FAVOR_FAST_CODE macro is defined, --enable-compact-code could not be used]) + ], + [],[/* no includes */] + ) + ], + [no], + [ + compact_code_MSG="disabled by configure parameter" + AC_CHECK_DECL([MHD_FAVOR_FAST_CODE], + [], + [AC_DEFINE([MHD_FAVOR_FAST_CODE],[1])],[/* no includes */] + ) + AC_CHECK_DECL([MHD_FAVOR_SMALL_CODE], + [AC_MSG_ERROR([MHD_FAVOR_SMALL_CODE macro is defined, --disable-compact-code could not be used]) + ], + [],[/* no includes */] + ) + ], + [AC_MSG_ERROR([[Unknown parameter value: --enable-compact-code=${enable_compact_code}]])] +) + +AC_MSG_CHECKING([whether to use a reduced size version of the code]) +AC_MSG_RESULT([${enable_compact_code} (${compact_code_MSG})]) + CFLAGS="${user_CFLAGS}" # Compiler options to always enable (if supported) @@ -3824,6 +3937,7 @@ AC_MSG_NOTICE([GNU libmicrohttpd ${PACKAGE_VERSION} Configuration Summary: HTTPS support: ${MSG_HTTPS} Threading lib: ${USE_THREADS} Use thread names: ${enable_thread_names} + Compact code: ${enable_compact_code} (${compact_code_MSG}) Use debug asserts: ${enable_asserts} Use sanitizers: ${enabled_sanitizers:=no} Messages: ${enable_messages}