configure improvements
[m6w6/ext-psi] / m4 / psi_macro.m4
index 439098fabe4b0ec57a71532c18f1eaa6738822c4..0bae220459423111f84c2679b704c67e651cf3c4 100644 (file)
@@ -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)
 ])