X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=m4%2Fpsi_macro.m4;h=0bae220459423111f84c2679b704c67e651cf3c4;hb=5abcb8724ac7046d62203ea643e9ce69f63a6a8a;hp=439098fabe4b0ec57a71532c18f1eaa6738822c4;hpb=b4508f6b917660970f887894a6aaed6c220a2c72;p=m6w6%2Fext-psi diff --git a/m4/psi_macro.m4 b/m4/psi_macro.m4 index 439098f..0bae220 100644 --- a/m4/psi_macro.m4 +++ b/m4/psi_macro.m4 @@ -2,22 +2,33 @@ dnl PSI_MACRO(macro, decl args, action-if-true) AC_DEFUN(PSI_MACRO, [ AC_CHECK_DECL(PSI_VAR_NAME($1)$2, [ $3 - macro_type=PSI_VAR_TYPE($1) - macro_name=PSI_VAR_NAME($1) - ifelse([$2], [], [ - macro_decl="()" - macro_call="" - ], [ - macro_decl="$2" - macro_call="(m4_map_args_sep([PSI_VAR_NAME(], [)], [, ], m4_bregexp($2, [(\(.*\))], [\1])))" - ]) + macro_type="PSI_VAR_TYPE($1)" + macro_name="PSI_VAR_NAME($1)" + m4_case([$2], + [(void)], [ + macro_decl="(void)" + macro_call="()" + ], + [()], [ + macro_decl="()" + macro_call="()" + ], + [], [ + macro_decl="()" + macro_call="" + ], + [ + macro_decl="$2" + macro_call="(m4_map_args_sep([PSI_VAR_NAME(], [)], [, ], m4_bregexp($2, [(\(.*\))], [\1])))" + ] + ) ifelse(PSI_VAR_TYPE($1), [void], [ macro_body="$macro_name$macro_call;" ], [ macro_body="return $macro_name$macro_call;" ]) psi_macro="$macro_type psi_macro_$macro_name$macro_decl { $macro_body }" - PSI_MACROS="$PSI_MACROS $psi_macro" + cat >>$PSI_MACROS <<<"$psi_macro" PSI_REDIR($macro_name, psi_macro_$macro_name) ], [], PSI_INCLUDES) ])