On Thu, 25 Jun 2026, 08:25 Jakub Jelinek, <[email protected]> wrote: > On Wed, Jun 24, 2026 at 06:56:57AM -0300, Alexandre Oliva 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. > > > > 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?
> > > > > 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. > > This change broke various module tests (and got backported even to 15 :( ). > I'm using objdir as a subdirectory of the gcc tree, so ../configure ... > > > @@ -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 > > Before this change, the > /home/jakub/src/gcc/obj38/x86_64-pc-linux-gnu/libstdc++-v3/include/bits > std.cc symlink used to point to > /home/jakub/src/gcc/obj38/x86_64-pc-linux-gnu/libstdc++-v3/src/c++23/std.cc > Now it points to > > /home/jakub/src/gcc/obj40/x86_64-pc-linux-g~-v3/../../../libstdc++-v3/src/c++23/std.cc > which doesn't exist, the source directory only has std.cc.in file from > which > the std.cc file is generated in the build directory. > > The following patch fixes it by using abs_builddir instead of abs_srcdir. > > Fixes up > -FAIL: g++.dg/modules/compile-std1.C -std=c++29 (test for excess errors) > -FAIL: g++.dg/modules/compile-std1.C -std=c++29 module-cmi std > (gcm.cache/std.gcm) > -FAIL: g++.dg/modules/compile-std1.C -std=c++29 module-cmi std.compat > (gcm.cache/std.compat.gcm) > -FAIL: g++.dg/plugin/std-module-exports-c++20.C > -fplugin=./std_module_exports_plugin.so (test for excess errors) > -FAIL: g++.dg/plugin/std-module-exports-c++23.C > -fplugin=./std_module_exports_plugin.so (test for excess errors) > -FAIL: g++.dg/plugin/std-module-exports-c++26.C > -fplugin=./std_module_exports_plugin.so (test for excess errors) > > Ok for trunk/release branches? > OK for all > 2026-06-25 Jakub Jelinek <[email protected]> > > * src/c++23/Makefile.am (stamp-modules-bits): Use abs_builddir > instead > of abs_srcdir. > * src/c++23/Makefile.in: Regenerate. > > --- libstdc++-v3/src/c++23/Makefile.am.jj 2026-06-25 > 00:10:29.319324548 +0200 > +++ libstdc++-v3/src/c++23/Makefile.am 2026-06-25 09:09:35.276266154 +0200 > @@ -58,7 +58,7 @@ std.compat.cc: std.compat.cc.in std-clib > stamp-modules-bits: $(includebits_DATA) > @-mkdir -p $(top_builddir)/include/bits > -for f in $(includebits_DATA); do \ > - $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \ > + $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \ > done 2>/dev/null > @$(STAMP) $@ > > --- libstdc++-v3/src/c++23/Makefile.in.jj 2026-06-25 > 00:10:29.319324548 +0200 > +++ libstdc++-v3/src/c++23/Makefile.in 2026-06-25 09:09:59.614642142 +0200 > @@ -866,7 +866,7 @@ std.compat.cc: std.compat.cc.in std-clib > stamp-modules-bits: $(includebits_DATA) > @-mkdir -p $(top_builddir)/include/bits > -for f in $(includebits_DATA); do \ > - $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \ > + $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \ > done 2>/dev/null > @$(STAMP) $@ > > > Jakub > >
