Hello,

* Ian Lance Taylor wrote on Wed, Jul 20, 2011 at 08:06:51PM CEST:
> Rainer Orth <r...@cebitec.uni-bielefeld.de> writes:
> 
> > diff --git a/gcc/configure.ac b/gcc/configure.ac
> > --- a/gcc/configure.ac
> > +++ b/gcc/configure.ac
> > @@ -1041,7 +1041,16 @@ case "${host}" in
> >  esac
> >  AC_FUNC_FORK
> >  
> > +# FIXME: g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a
> > +# different iconv() prototype.
> > +if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
> > +AC_LANG_PUSH([C++])
> > +fi
> >  AM_ICONV
> > +if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
> > +AC_LANG_POP([C++])
> > +fi
> 
> I believe that this kind of conditional use of AC_LANG_PUSH/AC_LANG_POP
> does not work correctly.  The autoconf macros don't play well with the
> shell conditionals.  We're going to need a different approach.  (That
> problem is why I didn't do this long ago--I had a similar patch for a
> while, but I had to take it out.)

I think something like this should work:

AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
  [AC_LANG_PUSH([C++])
   AM_ICONV
   AC_LANG_POP([C++])],
  [AM_ICONV])

Rationale for using AS_IF rather than plain 'if' is that any macros
required by AM_ICONV will get pulled out to before the AS_IF.  If they
also need to be run with C++ enabled, then we need to wrap the second
argument of AS_IF into a separate macro.  Untested, but please complain
if it doesn't work.

Thanks,
Ralf

Reply via email to