CC Jason who added those make targets. On Wed, 24 Jun 2026 at 10:57, Alexandre Oliva <[email protected]> wrote: > > > libstdc++-v3 in gcc-15 gained uses of a make function that was added > in GNU make 3.81, but ppc-vx6 is GNU make 3.80, so calling the > function returns an empty string, and the build fails. > > gcc/doc/install.texi states GCC requires make 3.80 to build, so > rewrite those bits to avoid the new function.
GNU Make 3.81 was 20 years old in April so this is depressing. > > Install locations don't need abspath because they're already supposed > to be absolute, since installation can't work with relative paths and > DESTDIR is supposed to be prependable. > > $? may gain the srcdir VPATH, which would complicate dropping abspath, > so iterate over the two filenames. > > Regstrapped on x86_64-linux-gnu. Also tested with ppc-vx6's make for > i686-linux-gnu with gcc-15. Ok to install? OK for trunk, 16 and 15. > > > for libstdc++-v3/ChangeLog > > * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite > without abspath make function. > (stamp-modules-bits): Likewise. > * src/c++23/Makefile.in: Rebuilt. > --- > libstdc++-v3/src/c++23/Makefile.am | 8 +++++--- > libstdc++-v3/src/c++23/Makefile.in | 8 +++++--- > 2 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/libstdc++-v3/src/c++23/Makefile.am > b/libstdc++-v3/src/c++23/Makefile.am > index 5b2812abd2288..a1acf3eb5b4aa 100644 > --- a/libstdc++-v3/src/c++23/Makefile.am > +++ b/libstdc++-v3/src/c++23/Makefile.am > @@ -37,8 +37,8 @@ includebits_DATA = std.cc std.compat.cc > # The manifest to be installed uses the relative path between install dirs. > libstdc++.modules.json: libstdc++.modules.json.in > relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \ > - $(abspath $(toolexeclibdir)) \ > - $(abspath $(includebitsdir))) && \ > + $(toolexeclibdir) \ > + $(includebitsdir)) && \ > sed "s,@MODPATH@,$$relpath," $< > $@ > > # The uninstalled manifest uses the relative path to builddir. > @@ -57,7 +57,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in > # Also put the interface units in the build-includes bits directory. > stamp-modules-bits: $(includebits_DATA) > @-mkdir -p $(top_builddir)/include/bits > - -cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . > 2>/dev/null > + -for f in $(includebits_DATA); do \ > + $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \ > + done 2>/dev/null > @$(STAMP) $@ > > all-local: stamp-module-manifest stamp-modules-bits > diff --git a/libstdc++-v3/src/c++23/Makefile.in > b/libstdc++-v3/src/c++23/Makefile.in > index 75da9c008ab60..c1407d250b1d9 100644 > --- a/libstdc++-v3/src/c++23/Makefile.in > +++ b/libstdc++-v3/src/c++23/Makefile.in > @@ -845,8 +845,8 @@ uninstall-am: uninstall-includebitsDATA > uninstall-toolexeclibDATA > # The manifest to be installed uses the relative path between install dirs. > libstdc++.modules.json: libstdc++.modules.json.in > relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \ > - $(abspath $(toolexeclibdir)) \ > - $(abspath $(includebitsdir))) && \ > + $(toolexeclibdir) \ > + $(includebitsdir)) && \ > sed "s,@MODPATH@,$$relpath," $< > $@ > > # The uninstalled manifest uses the relative path to builddir. > @@ -865,7 +865,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in > # Also put the interface units in the build-includes bits directory. > stamp-modules-bits: $(includebits_DATA) > @-mkdir -p $(top_builddir)/include/bits > - -cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . > 2>/dev/null > + -for f in $(includebits_DATA); do \ > + $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \ > + done 2>/dev/null > @$(STAMP) $@ > > all-local: stamp-module-manifest stamp-modules-bits > > -- > Alexandre Oliva, happy hacker https://blog.lx.oliva.nom.br/ > Free Software Activist FSFLA co-founder GNU Toolchain Engineer > More tolerance and less prejudice are key for inclusion and diversity. > Excluding neuro-others for not behaving ""normal"" is *not* inclusive! >
