libmicrohttpd2

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

commit e48b089a8319e527f35e8bad450ba635b1dd9097
parent 9d210914bf26eaf28dede27a941d350a0ebdb7be
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date:   Fri, 17 Oct 2025 16:37:34 +0200

Added internal macros indicating compiler optimisations

Diffstat:
Mconfigure.ac | 16++++++++++++----
Msrc/incl_priv/mhd_sys_options.h | 22++++++++++++++++------
2 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -337,8 +337,12 @@ AS_CASE([${enable_build_type}],[release|release-*], [/* no includes */])],[/* no includes */]) CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}" CFLAGS="${user_CFLAGS}" - MHD_FIND_ADD_CC_CFLAG([CFLAGS_ac], [-Oz], [-Os], [-xO3], [-O]) - CFLAGS="${CFLAGS_ac} ${user_CFLAGS}" + MHD_FIND_ADD_CC_CFLAG_IFELSE( + [AC_DEFINE([MHD_CC_OPTIMISE_FOR_SIZE],[1],[Define to 1 if compiler optimises binary for size])], + [], + [CFLAGS_ac], [-Oz], [-Os], [-xO3], [-O] + ) + CFLAGS="${CFLAGS_ac} ${user_CFLAGS}" ], [ # All non-compact release types CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}" @@ -348,8 +352,12 @@ AS_CASE([${enable_build_type}],[release|release-*], [/* no includes */])],[/* no includes */]) CPPFLAGS="${CPPFLAGS_ac} ${user_CPPFLAGS}" CFLAGS="${user_CFLAGS}" - MHD_FIND_ADD_CC_CFLAG([CFLAGS_ac], [-O2], [-xO4], [-O]) - CFLAGS="${CFLAGS_ac} ${user_CFLAGS}" + MHD_FIND_ADD_CC_CFLAG_IFELSE( + [AC_DEFINE([MHD_CC_OPTIMISE_FOR_SPEED],[1],[Define to 1 if compiler optimises binary for speed])], + [], + [CFLAGS_ac], [-O2], [-xO4], [-O] + ) + CFLAGS="${CFLAGS_ac} ${user_CFLAGS}" ] ) ] diff --git a/src/incl_priv/mhd_sys_options.h b/src/incl_priv/mhd_sys_options.h @@ -527,6 +527,17 @@ # endif /* DEBUG */ #endif /* !_DEBUG && !NDEBUG */ +#if ! defined(MHD_CC_OPTIMISE_FOR_SIZE) \ + && ! defined(MHD_CC_OPTIMISE_FOR_SPEED) +# if defined(__OPTIMIZE_SIZE__) || defined(__OPTIMISE_SPACE) +# define MHD_CC_OPTIMISE_FOR_SIZE 1 +# elif defined(__OPTIMIZE__) || defined(__OPTIMISE_TIME) +# define MHD_CC_OPTIMISE_FOR_SPEED 1 +# endif /* __OPTIMIZE__ */ +#elif defined(MHD_CC_OPTIMISE_FOR_SIZE) && defined(MHD_CC_OPTIMISE_FOR_SPEED) +#error MHD_CC_OPTIMISE_FOR_SIZE and MHD_CC_OPTIMISE_FOR_SPEED are both defined. +#endif + #if defined(MHD_FAVOR_FAST_CODE) && defined(MHD_FAVOR_SMALL_CODE) #error MHD_FAVOR_FAST_CODE and MHD_FAVOR_SMALL_CODE are both defined. #error Cannot favor speed and size at the same time. @@ -535,12 +546,11 @@ /* Define MHD_FAVOR_FAST_CODE to force fast code path or define MHD_FAVOR_SMALL_CODE to choose compact code path */ #if ! defined(MHD_FAVOR_FAST_CODE) && ! defined(MHD_FAVOR_SMALL_CODE) -/* Try to detect user preferences */ -/* Defined by GCC and many compatible compilers */ -# if defined(__OPTIMIZE_SIZE__) -# define MHD_FAVOR_SMALL_CODE 1 -# elif defined(__OPTIMIZE__) -# define MHD_FAVOR_FAST_CODE 1 +/* Try to guess automatically user preferences */ +# if defined(MHD_CC_OPTIMISE_FOR_SPEED) +# define MHD_FAVOR_FAST_CODE 1 +# elif defined(MHD_CC_OPTIMISE_FOR_SIZE) +# define MHD_FAVOR_SMALL_CODE 1 # endif /* __OPTIMIZE__ */ #endif /* !MHD_FAVOR_FAST_CODE && !MHD_FAVOR_SMALL_CODE */