[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Bug#369396: Regression: problems with macro calling AC_PROG_CC and A
From: |
Ralf Wildenhues |
Subject: |
Re: Bug#369396: Regression: problems with macro calling AC_PROG_CC and AC_C_BIGENDIAN |
Date: |
Mon, 29 May 2006 17:52:53 +0200 |
User-agent: |
Mutt/1.5.11 |
* Ralf Wildenhues wrote on Mon, May 29, 2006 at 05:38:12PM CEST:
> * Mikael Magnusson wrote on Mon, May 29, 2006 at 05:06:13PM CEST:
> >
> > If you call AC_PROG_CC and AC_C_BIGENDIAN in a macro, the checks for
> > unistd.h and some other headers will fail. See attached test case.
OK, this is ugly.
AC_C_BIGENDIAN requires (through some indirect macro chain) both
AC_PROG_CC and AC_LANG_PREPROC(C). Now, since you've explicitly called
AC_PROG_CC before, that requirement is already deemed fulfilled by the
stacking algorithm. The AC_LANG_PREPROC(C) requirement is not yet
fulfilled, so that macro is expanded right before the expansion of
TEST_INIT. Boing: AC_PROG_CC will be expanded after it. :-(
One solution is to write the AC_PROG_CC as a requirement, so that it
will be expanded outside, like this:
AC_DEFUN([TEST_INIT],[
AC_REQUIRE([AC_PROG_CC])
echo test2
AC_C_BIGENDIAN
echo test3
])
echo 2
TEST_INIT
echo 3
AC_CHECK_HEADER([unistd.h], [], [AC_MSG_ERROR([unistd.h not available?])])
AC_OUTPUT
Cheers,
Ralf