This configure.ac file, when processed with autoconf-2.60, gives a
warning that has no justification.

============================== configure.ac ==============================
AC_INIT
AC_CONFIG_SRCDIR(configure.ac)

AC_PROG_CC
AC_PROG_INSTALL

AC_DEFUN([gl_RELOCATABLE],
[
  AC_REQUIRE([AC_PROG_INSTALL])
  AC_BEFORE([AC_PROG_INSTALL],[gl_RELOCATABLE])
  INSTALL_PROGRAM=my_install
])

gl_RELOCATABLE

gl_RELOCATABLE

AC_OUTPUT
==========================================================================

$ autoconf --version | head -1
autoconf (GNU Autoconf) 2.60
$ autoconf
configure.ac:16: warning: gl_RELOCATABLE was called before AC_PROG_INSTALL
configure.ac:12: gl_RELOCATABLE is expanded from...
configure.ac:16: the top level

According to the autoconf documentation, section "Suggested Ordering",
AC_BEFORE([AC_PROG_INSTALL],[gl_RELOCATABLE])
should have the effect to "warn the user if a call to gl_RELOCATABLE
has already occurred when AC_PROG_INSTALL is called". But AC_PROG_INSTALL
is only called once, in line 5; the following two references (via
AC_REQUIRE) to this macro ought to be no-ops, since AC_PROG_INSTALL
has already been expanded in line 5.

You might wonder what I'm trying to achieve. Isn't the
AC_REQUIRE([AC_PROG_INSTALL]) enough to ensure that AC_PROG_INSTALL
comes before gl_RELOCATABLE, not after it? No. What I want to get warned
about is this situation:

   AC_PROG_INSTALL
   gl_RELOCATABLE
   AC_PROG_INSTALL

becauce AC_PROG_INSTALL might overwrite the INSTALL_PROGRAM variable that
gl_RELOCATABLE has taken care to set. (Currently AC_PROG_INSTALL doesn't
do so, due to the way this macro is written, but this is an undocumented
detail that I don't want to rely upon. It actually is documented to
erase previous settings of INSTALL and INSTALL_PROGRAM, but fortunately
it doesn't do so.)

Bruno


Reply via email to