libmicrohttpd

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

commit 5fd6ea3071fe0330d23f231441290fd5ee44d14c
parent 3ab4375160fb18979fe67950f863313fa65a424f
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Tue, 31 May 2022 16:44:17 +0300

MHD_FIND_ADD_CC_{C,LD}FLAG_IFELSE: added new autoconf macros

Diffstat:
Mm4/mhd_find_add_cc_cflag.m4 | 39+++++++++++++++++++++++++++------------
Am4/mhd_find_add_cc_cflag_ifelse.m4 | 45+++++++++++++++++++++++++++++++++++++++++++++
Mm4/mhd_find_add_cc_ldflag.m4 | 6+++---
Am4/mhd_find_add_cc_ldflag_ifelse.m4 | 44++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 119 insertions(+), 15 deletions(-)

diff --git a/m4/mhd_find_add_cc_cflag.m4 b/m4/mhd_find_add_cc_cflag.m4 @@ -33,38 +33,53 @@ # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 1 +#serial 2 AC_DEFUN([MHD_FIND_ADD_CC_CFLAG],[dnl -_MHD_FIND_ADD_CC_XFLAG([[CFLAGS]],$@)]) +_MHD_FIND_ADD_CC_XFLAG([[CFLAGS]],[],[],$@)]) # SYNOPSIS # # _MHD_FIND_ADD_CC_XFLAG([CFLAGS|LDFLAGS], +# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], # [VARIABLE-TO-EXTEND], # [FLAG1-TO-TEST], [FLAG2-TO-TEST], ...) # AC_DEFUN([_MHD_FIND_ADD_CC_XFLAG],[dnl AC_PREREQ([2.64])dnl for m4_ifnblank AC_LANG_ASSERT([C])dnl - m4_if(m4_eval([$# >= 3]), [0], [m4_fatal([$0: Macro must have at least three parameters])])dnl - m4_ifblank([$3],[m4_fatal([$0: Third macro argument must not be empty])])dnl + m4_if(m4_eval([$# >= 5]), [0], [m4_fatal([$0: Macro must have at least five parameters])])dnl + m4_ifblank([$5],[m4_fatal([$0: Fifth macro argument must not be empty])])dnl + m4_ifnblank([$2$3],[m4_newline([m4_n([AS_UNSET([mhd_cc_found_flag])])])])dnl m4_bmatch(_mhd_norm_expd([$1]), [^\(CFLAGS\|LDFLAGS\)$],[],dnl - [m4_fatal([$0: First macro argument must be either 'CFLAGS' or 'LDFLAGS; ']_mhd_norm_expd([$5])[' is not supported])])dnl - m4_ifnblank([$2],[_MHD_FIND_ADD_CC_XFLAG_BODY($@)],dnl - [_MHD_FIND_ADD_CC_XFLAG_BODY([$1],[$1],m4_shift2($@))])dnl + [m4_fatal([$0: First macro argument must be either 'CFLAGS' or 'LDFLAGS; ']_mhd_norm_expd([$1])[' is not supported])])dnl + m4_ifnblank([$4],[_MHD_FIND_ADD_CC_XFLAG_BODY(m4_ifnblank([$2$3],[mhd_cc_found_flag]),[$1],[$4],m4_shiftn([4],$@))],dnl + [_MHD_FIND_ADD_CC_XFLAG_BODY(m4_ifnblank([$2$3],[mhd_cc_found_flag]),[$1],[$1],m4_shiftn([4],$@))])dnl + m4_ifnblank([$2$3],[ + AS_IF([test -n "${mhd_cc_found_flag}"],[$2],[$3]) + AS_UNSET([mhd_cc_found_flag]) + ])dnl + ])dnl ]) +# SYNOPSIS +# +# _MHD_FIND_ADD_CC_XFLAG_BODY([VAR-TO-SET], +# [CFLAGS|LDFLAGS], +# [VARIABLE-TO-EXTEND], +# [FLAG1-TO-TEST], [FLAG2-TO-TEST], ...) +# m4_define([_MHD_FIND_ADD_CC_XFLAG_BODY],[dnl m4_version_prereq([2.64])dnl for m4_ifnblank m4_if([$#],[0],[m4_fatal([$0: no parameters])])dnl -m4_bmatch(_mhd_norm_expd([$1]),[^\(CFLAGS\|LDFLAGS\)$],[],dnl -[m4_fatal([$0: First macro argument must be either 'CFLAGS' or 'LDFLAGS; ']_mhd_norm_expd([$5])[' is not supported])])dnl +m4_bmatch(_mhd_norm_expd([$2]),[^\(CFLAGS\|LDFLAGS\)$],[],dnl +[m4_fatal([$0: Second macro argument must be either 'CFLAGS' or 'LDFLAGS; ']_mhd_norm_expd([$2])[' is not supported])])dnl m4_if([$#],[1],[m4_fatal([$0: not enough parameters])])dnl m4_if([$#],[2],[m4_fatal([$0: not enough parameters])])dnl -m4_if([$#],[3],[m4_ifnblank([$3],[_MHD_CHECK_ADD_CC_XFLAG([$3],[$2],[],[],[$1])])], -[m4_ifnblank([$3],[_MHD_CHECK_ADD_CC_XFLAG([$3],[$2],[],[$0([$1],[$2],m4_shift3($@))],[$1])], -[$0([$1],[$2],m4_shift3($@))])])dnl +m4_if([$#],[3],[m4_fatal([$0: not enough parameters])])dnl +m4_if([$#],[4],[m4_ifnblank([$4],[_MHD_CHECK_ADD_CC_XFLAG([$4],[$3],m4_ifnblank([$1],[$1="_mhd_norm_expd([$4])"]),[],[$2])])], +[m4_ifnblank([$4],[_MHD_CHECK_ADD_CC_XFLAG([$4],[$3],m4_ifnblank([$1],[$1="_mhd_norm_expd([$4])"]),[$0([$1],[$2],[$3],m4_shiftn([4],$@))],[$2])], +[$0([$1],[$2],[$3],m4_shiftn([4],$@))])])dnl ]) diff --git a/m4/mhd_find_add_cc_cflag_ifelse.m4 b/m4/mhd_find_add_cc_cflag_ifelse.m4 @@ -0,0 +1,45 @@ +# SYNOPSIS +# +# MHD_FIND_ADD_CC_CFLAG_IFELSE([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +# [VARIABLE-TO-EXTEND], +# [FLAG1-TO-TEST], [FLAG2-TO-TEST], ...) +# +# DESCRIPTION +# +# This macro checks whether the specific compiler flags are supported. +# The flags are checked one-by-one. The checking is stopped when the first +# supported flag found. +# The checks are performing by appending FLAGx-TO-TEST to the value of +# VARIABLE-TO-EXTEND (CFLAGS if not specified), then prepending result to +# CFLAGS (unless VARIABLE-TO-EXTEND is CFLAGS), and then performing compile +# and link test. If test succeed without warnings, then the flag is added to +# VARIABLE-TO-EXTEND and next flags are not checked. If compile-link cycle +# cannot be performed without warning with all tested flags, no flag is +# added to the VARIABLE-TO-EXTEND. +# If any suitable flag is found, ACTION-IF-FOUND is executed otherwise +# ACTION-IF-NOT-FOUND is executed. Found flag (if any) is available as +# value of shell variable $mhd_cc_found_flag during action execution. +# +# Example usage: +# +# MHD_FIND_ADD_CC_CFLAG_IFELSE([AC_MSG_NOTICE([Enabled debug information])], +# [], +# [additional_CFLAGS], +# [-ggdb3], [-g3], [-ggdb], [-g]) +# +# Note: Unlike others MHD_CHECK_*CC_CFLAG* macro, this macro uses another +# order of parameters. +# +# LICENSE +# +# Copyright (c) 2022 Karlson2k (Evgeny Grin) <k2k@narod.ru> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([MHD_FIND_ADD_CC_CFLAG_IFELSE],[dnl +_MHD_FIND_ADD_CC_XFLAG([[CFLAGS]],$@)]) diff --git a/m4/mhd_find_add_cc_ldflag.m4 b/m4/mhd_find_add_cc_ldflag.m4 @@ -19,7 +19,7 @@ # Example usage: # # MHD_CHECK_CC_LDFLAG([additional_LDFLAGS], -# [-Wl,--strip-all], [-Wl,--strip-debug]) +# [-Wl,--strip-all], [-Wl,--strip-debug]) # # Note: Unlike others MHD_CHECK_*CC_LDFLAG* macro, this macro uses another # order of parameters. @@ -33,7 +33,7 @@ # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 1 +#serial 2 AC_DEFUN([MHD_FIND_ADD_CC_LDFLAG],[dnl -_MHD_FIND_ADD_CC_XFLAG([[LDFLAGS]],$@)]) +_MHD_FIND_ADD_CC_XFLAG([[LDFLAGS]],[],[],$@)]) diff --git a/m4/mhd_find_add_cc_ldflag_ifelse.m4 b/m4/mhd_find_add_cc_ldflag_ifelse.m4 @@ -0,0 +1,44 @@ +# SYNOPSIS +# +# MHD_FIND_ADD_CC_LDFLAG_IFELSE([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +# [VARIABLE-TO-EXTEND], +# [FLAG1-TO-TEST], [FLAG2-TO-TEST], ...) +# +# DESCRIPTION +# +# This macro checks whether the specific compiler flags are supported. +# The flags are checked one-by-one. The checking is stopped when the first +# supported flag found. +# The checks are performing by appending FLAGx-TO-TEST to the value of +# VARIABLE-TO-EXTEND (LDFLAGS if not specified), then prepending result to +# LDFLAGS (unless VARIABLE-TO-EXTEND is LDFLAGS), and then performing compile +# and link test. If test succeed without warnings, then the flag is added to +# VARIABLE-TO-EXTEND and next flags are not checked. If compile-link cycle +# cannot be performed without warning with all tested flags, no flag is +# added to the VARIABLE-TO-EXTEND. +# If any suitable flag is found, ACTION-IF-FOUND is executed otherwise +# ACTION-IF-NOT-FOUND is executed. Found flag (if any) is available as +# value of shell variable $mhd_cc_found_flag during action execution. +# +# Example usage: +# +# MHD_CHECK_CC_LDFLAG([],[AC_MSG_WARN([Stripping is not supported]), +# [additional_LDFLAGS], +# [-Wl,--strip-all], [-Wl,--strip-debug]) +# +# Note: Unlike others MHD_CHECK_*CC_LDFLAG* macro, this macro uses another +# order of parameters. +# +# LICENSE +# +# Copyright (c) 2022 Karlson2k (Evgeny Grin) <k2k@narod.ru> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([MHD_FIND_ADD_CC_LDFLAG_IFELSE],[dnl +_MHD_FIND_ADD_CC_XFLAG([[LDFLAGS]],$@)])