autoconf-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: may Automake rely on _AC_SUBST_VARS?


From: Ralf Wildenhues
Subject: Re: may Automake rely on _AC_SUBST_VARS?
Date: Tue, 7 Apr 2009 20:41:20 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

Hi Eric,

* Eric Blake wrote on Tue, Apr 07, 2009 at 02:23:01PM CEST:
> According to Ralf Wildenhues on 4/6/2009 11:28 PM:
> > 
> > In other occasions, it is often clear which macro introduces a variable.
> > For example, here it's _AC_COMPILER_EXEEXT, but that one is define'd
> > only, not defun'ed, so we cannot easily tuck an AC_PROVIDE_IFELSE onto
> > its rear.  And I would like to not add this AM_CONDITIONAL code after
> > all of the AC_PROG_{CC,...} macros.
> 
> Why not?  A macro name can be provided without using AC_DEFUN (or
> m4_defun); rather, it is AC_DEFUN that makes self-providing an automatic
> event.  I see nothing that would prevent automake from doing:
> 
> m4_define([_AC_COMPILER_EXEEXT],
> m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
> 
> m4_provide_if([_AM_COMPILER_EXEEXT],
>   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])

I assume that you mean that the m4_define part should happen before
AC_PROG_CC and the m4_provide_if part afterwards?  How would you ensure
the former?

Although uncommon, the current Automake code allows the user to use
AC_PROG_CC before using AM_INIT_AUTOMAKE.  I don't see how the above
sequence can work in that case.

> which means you have effectively hooked the expansion of
> _AC_COMPILER_EXEEXT to set a flag that you can later query, without having
> to look inside _AC_SUBST_VARS, regardless of its implementation.

If it works then yes, that sounds easier.  Can Automake rely on the
existence of the _AC_COMPILER_EXEEXT macro then, and that it's this
macro which is called whenever EXEEXT may be needed?

Thanks,
Ralf

2009-04-07  Ralf Wildenhues  <address@hidden>

        Automake relies on the undocumented `_AC_COMPILER_EXEEXT' macro.
        * lib/autoconf/lang.m4 (_AC_COMPILER_EXEEXT): Document that
        Automake relies on this macro.

diff --git a/lib/autoconf/lang.m4 b/lib/autoconf/lang.m4
index 8bbe494..bcd037b 100644
--- a/lib/autoconf/lang.m4
+++ b/lib/autoconf/lang.m4
@@ -626,6 +626,9 @@ AC_MSG_RESULT([$ac_cv_exeext])
 #
 # Must be run before _AC_COMPILER_OBJEXT because _AC_COMPILER_EXEEXT_DEFAULT
 # checks whether the compiler works.
+#
+# Do not rename this macro; Automake decides whether EXEEXT is used
+# by checking whether `_AC_COMPILER_EXEEXT' has been expanded.
 m4_define([_AC_COMPILER_EXEEXT],
 [AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
 ac_clean_files_save=$ac_clean_files




reply via email to

[Prev in Thread] Current Thread [Next in Thread]