Re: [PATCH] libstdc++: Use AS_IF in configure.ac
On Wed, 7 Jun 2023 at 16:19, Andreas Schwab wrote: > On Jun 07 2023, Jonathan Wakely via Gcc-patches wrote: > > > Let's just revert it then. The manual says we should use AS_IF, but what > we > > had previously was working well enough. I'll figure out what happened > here > > later. > > I think AS_IF is doing its job here: moving the expansion of > AC_REQUIRE'd macros out of the bodies. But many of those expansions > actually need to remain under the $GLIBCXX_IS_NATIVE conditional, so it > is not appropriate at this place. > > Ah yes, that makes sense. Thanks.
Re: [PATCH] libstdc++: Use AS_IF in configure.ac
On Jun 07 2023, Jonathan Wakely via Gcc-patches wrote: > Let's just revert it then. The manual says we should use AS_IF, but what we > had previously was working well enough. I'll figure out what happened here > later. I think AS_IF is doing its job here: moving the expansion of AC_REQUIRE'd macros out of the bodies. But many of those expansions actually need to remain under the $GLIBCXX_IS_NATIVE conditional, so it is not appropriate at this place. -- Andreas Schwab, SUSE Labs, sch...@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."
Re: [PATCH] libstdc++: Use AS_IF in configure.ac
On Wed, 7 Jun 2023 at 15:54, Jonathan Wakely wrote: > > > On Wed, 7 Jun 2023 at 15:42, Hans-Peter Nilsson wrote: > >> > Date: Tue, 6 Jun 2023 16:30:12 +0100 >> > From: Jonathan Wakely via Gcc-patches >> >> > On Thu, 1 Jun 2023 at 16:59, Jonathan Wakely via Libstdc++ < >> > libstd...@gcc.gnu.org> wrote: >> > >> > > Tested x86_64-linux. I'd appreciate a second set of eyeballs on this >> > > before I push it. >> > > >> > >> > Pushed to trunk now. >> >> ...as r14-1581-g97a5e8a2a48d16, after which (apparently) >> *all* linking libstdc++ tests for cris-elf (a "newlib >> target") get (for example): >> >> FAIL: 17_intro/freestanding.cc (test for excess errors) >> Excess errors: >> /x/cris-elf/pre/cris-elf/bin/ld: cannot find -liconv: No such file or >> directory >> >> (deduced from libstdc++.log and the commits in the range >> ce2188e4320c..585c660f041c where 4144 regressions in >> libstdc++ were introduced for cris-elf) >> > > Gah. I tested building cris-elf but didn't run any tests. > > I *thought* I compared the configure results before and after the patch > too, but I guess I missed something, or it didn't show up where I looked. > > > >> From the generated configure and a brief RTFM for AS_IF, it >> looks almost like AS_IF was "miscompiled" and behaving >> literally AS_IF (!) in that the condition TEST1 (here >> [$GLIBCXX_IS_NATIVE] seems to be emitted *after* the >> RUN-IF-TRUE1 clause (the next 31 lines). Not obvious what >> went wrong. I even tried regenerating configure. HTH. >> >> > Let's just revert it then. The manual says we should use AS_IF, but what > we had previously was working well enough. I'll figure out what happened > here later. > Reverted as r14-1607-g000f8b9a6a0ec7
Re: [PATCH] libstdc++: Use AS_IF in configure.ac
On Wed, 7 Jun 2023 at 15:42, Hans-Peter Nilsson wrote: > > Date: Tue, 6 Jun 2023 16:30:12 +0100 > > From: Jonathan Wakely via Gcc-patches > > > On Thu, 1 Jun 2023 at 16:59, Jonathan Wakely via Libstdc++ < > > libstd...@gcc.gnu.org> wrote: > > > > > Tested x86_64-linux. I'd appreciate a second set of eyeballs on this > > > before I push it. > > > > > > > Pushed to trunk now. > > ...as r14-1581-g97a5e8a2a48d16, after which (apparently) > *all* linking libstdc++ tests for cris-elf (a "newlib > target") get (for example): > > FAIL: 17_intro/freestanding.cc (test for excess errors) > Excess errors: > /x/cris-elf/pre/cris-elf/bin/ld: cannot find -liconv: No such file or > directory > > (deduced from libstdc++.log and the commits in the range > ce2188e4320c..585c660f041c where 4144 regressions in > libstdc++ were introduced for cris-elf) > Gah. I tested building cris-elf but didn't run any tests. I *thought* I compared the configure results before and after the patch too, but I guess I missed something, or it didn't show up where I looked. > From the generated configure and a brief RTFM for AS_IF, it > looks almost like AS_IF was "miscompiled" and behaving > literally AS_IF (!) in that the condition TEST1 (here > [$GLIBCXX_IS_NATIVE] seems to be emitted *after* the > RUN-IF-TRUE1 clause (the next 31 lines). Not obvious what > went wrong. I even tried regenerating configure. HTH. > > Let's just revert it then. The manual says we should use AS_IF, but what we had previously was working well enough. I'll figure out what happened here later.
Re: [PATCH] libstdc++: Use AS_IF in configure.ac
> Date: Tue, 6 Jun 2023 16:30:12 +0100 > From: Jonathan Wakely via Gcc-patches > On Thu, 1 Jun 2023 at 16:59, Jonathan Wakely via Libstdc++ < > libstd...@gcc.gnu.org> wrote: > > > Tested x86_64-linux. I'd appreciate a second set of eyeballs on this > > before I push it. > > > > Pushed to trunk now. ...as r14-1581-g97a5e8a2a48d16, after which (apparently) *all* linking libstdc++ tests for cris-elf (a "newlib target") get (for example): FAIL: 17_intro/freestanding.cc (test for excess errors) Excess errors: /x/cris-elf/pre/cris-elf/bin/ld: cannot find -liconv: No such file or directory (deduced from libstdc++.log and the commits in the range ce2188e4320c..585c660f041c where 4144 regressions in libstdc++ were introduced for cris-elf) >From the generated configure and a brief RTFM for AS_IF, it looks almost like AS_IF was "miscompiled" and behaving literally AS_IF (!) in that the condition TEST1 (here [$GLIBCXX_IS_NATIVE] seems to be emitted *after* the RUN-IF-TRUE1 clause (the next 31 lines). Not obvious what went wrong. I even tried regenerating configure. HTH. brgds, H-P
Re: [PATCH] libstdc++: Use AS_IF in configure.ac
On Thu, 1 Jun 2023 at 16:59, Jonathan Wakely via Libstdc++ < libstd...@gcc.gnu.org> wrote: > Tested x86_64-linux. I'd appreciate a second set of eyeballs on this > before I push it. > Pushed to trunk now. > > -- >8 -- > > This ensures that anything that depends on AC_REQUIRE is hoisted out of > the conditional block. > > The always-false test x"long_double_math_on_this_cpu" = x"yes" condition > is not altered by this commit, only changed to use the AS_IF syntax. > > libstdc++-v3/ChangeLog: > > * configure.ac: Use AS_IF. > * configure: Regenerate. > --- > libstdc++-v3/configure| 1148 +++-- > libstdc++-v3/configure.ac | 20 +- > 2 files changed, 590 insertions(+), 578 deletions(-) > > diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac > index 0abe54e7b9a..f3bcf7affdd 100644 > --- a/libstdc++-v3/configure.ac > +++ b/libstdc++-v3/configure.ac > @@ -266,7 +266,7 @@ AC_CHECK_HEADERS([linux/random.h], [], [], > AC_CHECK_HEADERS([xlocale.h]) > > # Only do link tests if native. Else, hardcode. > -if $GLIBCXX_IS_NATIVE; then > +AS_IF([$GLIBCXX_IS_NATIVE],[ > ># We can do more elaborate tests that assume a working linker. >CANADIAN=no > @@ -298,7 +298,7 @@ if $GLIBCXX_IS_NATIVE; then ># For iconv support. >AM_ICONV > > -else > +],[ > ># This lets us hard-code the functionality we know we'll have in the > cross ># target environment. "Let" is a sugar-coated word placed on an > especially > @@ -330,7 +330,7 @@ else > ># First, test for "known" system libraries. We may be using newlib even ># on a hosted environment. > - if test "x${with_newlib}" = "xyes"; then > + AS_IF([test "x${with_newlib}" = "xyes"],[ > os_include_dir="os/newlib" > AC_DEFINE(HAVE_HYPOT) > > @@ -386,14 +386,14 @@ else > AC_DEFINE(HAVE_USLEEP) > ;; > esac > - elif test "x$with_headers" != "xno"; then > + ],[test "x$with_headers" != "xno" ],[ > GLIBCXX_CROSSCONFIG > - fi > + ]) > ># At some point, we should differentiate between architectures ># like x86, which have long double versions, and alpha/powerpc/etc., ># which don't. For the time being, punt. > - if test x"long_double_math_on_this_cpu" = x"yes"; then > + AS_IF([test x"long_double_math_on_this_cpu" = x"yes"],[ > AC_DEFINE(HAVE_ACOSL) > AC_DEFINE(HAVE_ASINL) > AC_DEFINE(HAVE_ATAN2L) > @@ -417,8 +417,8 @@ else > AC_DEFINE(HAVE_SQRTL) > AC_DEFINE(HAVE_TANL) > AC_DEFINE(HAVE_TANHL) > - fi > -fi > + ]) > +]) > > # Check for _Unwind_GetIPInfo. > GCC_CHECK_UNWIND_GETIPINFO > @@ -449,7 +449,7 @@ case "$target" in > #error no need for long double compatibility > #endif >], [ac_ldbl_compat=yes], [ac_ldbl_compat=no]) > - if test "$ac_ldbl_compat" = yes; then > + AS_IF([test "$ac_ldbl_compat" = yes],[ > AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1, > [Define if compatibility should be provided for > -mlong-double-64.]) > > > port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver" > @@ -485,7 +485,7 @@ case "$target" in > fi > ;; > esac > - fi > + ]) > esac > AC_SUBST(LONG_DOUBLE_COMPAT_FLAGS) > AC_SUBST(LONG_DOUBLE_128_FLAGS) > -- > 2.40.1 > >