On Wed, 19 Jan 2022 at 15:00, Jonathan Wakely wrote:
>
> Tested x86_64-linux, pushed to trunk.
>
>
> This makes it possible to combine --enable-libstdcxx-debug with
> --enable-libstdcxx-backtrace, by adding a rule to src/Makefile to copy
> the backtrace-supported.h header into the src/debug/libbacktrace
> directory.
>
> Add libbacktrace path to testsuite flags so the tests can link without
> having the library installed.
>
> Also fix some warnings when running automake for the libbacktrace
> makefile.
>
> Use a per-library CPPFLAGS variable to fix:
>
> src/libbacktrace/Makefile.am:38: warning: AM_CPPFLAGS multiply defined in 
> condition TRUE ...
> fragment.am:43: ... 'AM_CPPFLAGS' previously defined here
> src/libbacktrace/Makefile.am:32:   'fragment.am' included from here
>
> Create symlinks to the libbacktrace sources to fix:
>
> src/libbacktrace/Makefile.am:55: warning: source file 
> '../../../libbacktrace/atomic.c' is in a subdirectory,
> src/libbacktrace/Makefile.am:55: but option 'subdir-objects' is disabled
>
> libstdc++-v3/ChangeLog:
>
>         * scripts/testsuite_flags.in: Add src/libbacktrace/.libs to
>         linker search paths.
>         * src/Makefile.am: Fix src/debug/libbacktrace build.
>         * src/Makefile.in: Regenerate.
>         * src/libbacktrace/Makefile.am: Use per-library CPPFLAGS
>         variable. Use symlinks for the source files.
>         * src/libbacktrace/Makefile.in: Regenerate.
> ---
>  libstdc++-v3/scripts/testsuite_flags.in   |   3 +-
>  libstdc++-v3/src/Makefile.am              |  12 +-
>  libstdc++-v3/src/Makefile.in              |   9 +-
>  libstdc++-v3/src/libbacktrace/Makefile.am |  56 ++++++----
>  libstdc++-v3/src/libbacktrace/Makefile.in | 128 +++++++++++++---------
>  5 files changed, 132 insertions(+), 76 deletions(-)
>
> diff --git a/libstdc++-v3/scripts/testsuite_flags.in 
> b/libstdc++-v3/scripts/testsuite_flags.in
> index cf7f0f7411e..40dd3d3465e 100755
> --- a/libstdc++-v3/scripts/testsuite_flags.in
> +++ b/libstdc++-v3/scripts/testsuite_flags.in
> @@ -78,7 +78,8 @@ case ${query} in
>        ;;
>      --cxxldflags)
>        SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@
> -                      -L${BUILD_DIR}/src/filesystem/.libs"
> +                      -L${BUILD_DIR}/src/filesystem/.libs
> +                      -L${BUILD_DIR}/src/libbacktrace/.libs"
>        echo ${SECTIONLDFLAGS}
>        ;;
>      *)

This part broke nearly every test on macOS, because the linker warns
about unknown paths.

The src/filesystem/.libs dir only exists for
--enable-libstdcxx-filesystem-ts (which is enabled by default on
macOS) and src/libbacktrace/.libs only exists for
--enable-libstdcxx-backtrace (which is disabled by default on all
targets). The src/filesystem/.libs part has been there for years, so
must have been a latent problem on macOS.

Fixed by this patch, tested powerpc64le-linux and pushed to trunk.
commit 5929f253fcdbf24fd47706dd11aafdeac5e9ecb6
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Jan 20 11:15:27 2022

    libstdc++: Only add valid -L paths to testsuite linker options
    
    The MacOS linker warns about -L arguments that don't exist, which causes
    all tests to fail for the defauly configuration (because libbacktrace
    isn't built).
    
    libstdc++-v3/ChangeLog:
    
            * scripts/testsuite_flags.in: Only add src/filesystem/.libs and
            src/libbacktrace/.libs to LDFLAGS if those directories exist.

diff --git a/libstdc++-v3/scripts/testsuite_flags.in 
b/libstdc++-v3/scripts/testsuite_flags.in
index 40dd3d3465e..18748f0f9ce 100755
--- a/libstdc++-v3/scripts/testsuite_flags.in
+++ b/libstdc++-v3/scripts/testsuite_flags.in
@@ -77,9 +77,15 @@ case ${query} in
       echo ${PCHFLAGS}
       ;;
     --cxxldflags)
-      SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@
-                      -L${BUILD_DIR}/src/filesystem/.libs
-                      -L${BUILD_DIR}/src/libbacktrace/.libs"
+      FS_LDFLAGS=
+      BT_LDFLAGS=
+      if [ -d ${BUILD_DIR}/src/filesystem/.libs ]; then
+        FS_LDFLAGS=-L${BUILD_DIR}/src/filesystem/.libs
+      fi
+      if [ -d ${BUILD_DIR}/src/libbacktrace/.libs ]; then
+        BT_LDFLAGS=-L${BUILD_DIR}/src/libbacktrace/.libs
+      fi
+      SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@ $FS_LDFLAGS $BT_LDFLAGS"
       echo ${SECTIONLDFLAGS}
       ;;
     *)

Reply via email to