Re: [PATCHv3] AC_COMPILE_IFELSE: Evaluate user supplied arguments

Nikolai Merinov <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.patches
Message-ID <[email protected]>
Hi,

This is gentle reminder about the patch

Regards,
Nikolai

Nikolai Merinov <[email protected]> writes:

> Hi,
>
> Do I need to make additional changes to the patch?
>
> Regards,
> Nikolai
>
> On Thu, Mar 14, 2019 at 8:08 PM Nikolai Merinov <[email protected]> wrote:
>
>  Hi,
>
>  During work on a same issue in the libtool code I observed that it's
>  necessary to fix the _AC_DO macro in same manner in order to pass
>  compiler checks with flags like CFLAGS='"-Wall"'.
>
>  An updated version of the patch with changes to both _AC_DO and
>  _AC_DO_STDERR attached.
>
>  Regards,
>  Nikolai
>
>From 614d16f92a75a62652dc8c99e872576d9bfb7399 Mon Sep 17 00:00:00 2001
>From: Nikolai Merinov <[email protected]>
>Date: Thu, 7 Mar 2019 22:33:13 +0500
>Subject: [PATCH] _AC_DO _AC_DO_STDERR: Evaluate argument twice
>
>The `AC_COMPILE_IFELSE', `AC_LINK_IFELSE', `AC_PREPROC_IFELSE' macros
>use the `_AC_DO_STDERR` macro in the following manner:
>
>> ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
>> _AC_DO_STDERR($ac_compile)
>
>In order to have same behavior during a configuration stage and during
>a compilation stage we should evaluate a passed argument twice: in
>second time we'll be able to unquote strings in user-supplied
>variables as it happens during make rules execution.
>
>The `_AC_DO' macro used through the `_AC_DO_VAR' macro in similar
>manner in many places and should work by same rules.
>
>* lib/autoconf/general.m4 (_AC_DO_STDERR): Reuse `_AC_DO_ECHO' trick
>to evaluate arguments twice if compile string have no '\"', '`', or
>'\\' symbols.
>  (_AC_DO): Same changes.
>* tests/compile.at: Add test for CFLAGS evaluation.
>---
> NEWS                    |  5 +++++
> lib/autoconf/general.m4 | 22 ++++++++++++++++++----
> tests/compile.at        | 11 +++++++++++
> 3 files changed, 34 insertions(+), 4 deletions(-)
>
>diff --git a/NEWS b/NEWS
>index efade585..b6d0136a 100644
>--- a/NEWS
>+++ b/NEWS
>@@ -123,6 +123,11 @@ GNU Autoconf NEWS - User visible changes.
>   use with multiple languages, rather than forcing all checks in the
>   language used by the first encounter of the macro.
> 
>+- The _AC_DO_STDERR and _AC_DO macros now evaluate a COMMAND argument
>+  twice. This change consolidate behavior for user-supplied arguments
>+  between the AC_COMPILE_IFELSE and AC_LINK_IFELSE macros and
>+  compilation commands used in makefiles.
>+
> ** Man pages for config.guess and config.sub are no longer provided.
> They were moved to the master source tree for config.guess and config.sub.
> 
>diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
>index e1d82b54..0af61b2a 100644
>--- a/lib/autoconf/general.m4
>+++ b/lib/autoconf/general.m4
>@@ -2448,16 +2448,30 @@ AS_ECHO(["$ac_try_echo"])])
> # Eval COMMAND, save the exit status in ac_status, and log it.
> # For internal use only.
> AC_DEFUN([_AC_DO],
>-[_AC_RUN_LOG([eval "$1"],
>-	     [_AC_DO_ECHO([$1])])])
>+[m4_if([$1], [$ac_do], [], [ac_do="$1"
>+])]dnl
>+[[case "(($ac_do" in
>+  *\"* | *\`* | *\\*) ac_do_command=\$ac_do;;
>+  *) ac_do_command=$ac_do;;
>+esac
>+eval ac_do_command="\"$ac_do_command\""]
>+_AC_RUN_LOG([eval "$ac_do_command"],
>+		   [_AC_DO_ECHO([$ac_do])])])
> 
> 
> # _AC_DO_STDERR(COMMAND)
> # ----------------------
> # Like _AC_RUN_LOG_STDERR, but eval (instead of running) COMMAND.
> AC_DEFUN([_AC_DO_STDERR],
>-[_AC_RUN_LOG_STDERR([eval "$1"],
>-		    [_AC_DO_ECHO([$1])])])
>+[m4_if([$1], [$ac_do_stderr], [], [ac_do_stderr="$1"
>+])]dnl
>+[[case "(($ac_do_stderr" in
>+  *\"* | *\`* | *\\*) ac_do_stderr_command=\$ac_do_stderr;;
>+  *) ac_do_stderr_command=$ac_do_stderr;;
>+esac
>+eval ac_do_stderr_command="\"$ac_do_stderr_command\""]
>+_AC_RUN_LOG_STDERR([eval "$ac_do_stderr_command"],
>+		   [_AC_DO_ECHO([$ac_do_stderr])])])
> 
> 
> # _AC_DO_VAR(VARIABLE)
>diff --git a/tests/compile.at b/tests/compile.at
>index 29374529..9af8cb38 100644
>--- a/tests/compile.at
>+++ b/tests/compile.at
>@@ -301,6 +301,17 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return 2])],
> AT_CHECK_AUTOCONF
> AT_CHECK_CONFIGURE([-q])
> 
>+AT_DATA([configure.ac],
>+[[AC_INIT
>+AC_PROG_CC
>+test x$GCC = xyes && CFLAGS='"-Wall"'
>+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return 0])], [],
>+  [AC_MSG_ERROR([compiling trivial program failed])])
>+]])
>+
>+AT_CHECK_AUTOCONF
>+AT_CHECK_CONFIGURE([-q])
>+
> AT_CLEANUP
> 
> ## --------------- ##
>-- 
>2.21.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.