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} ;; *)