On Tue, 11 Nov 2025 at 16:36, Jason Merrill <[email protected]> wrote:
>
> Forgot to CC libstdc++ on this one.
>
> For information, I'm also attaching the "further change" that I've been
> using for testing; I'm not proposing that change at this time.
>
> -------- Forwarded Message --------
> Subject: [PATCH RFA] libstdc++: build modules for testsuite
> Date: Tue, 11 Nov 2025 21:57:38 +0530
> From: Jason Merrill <[email protected]>
> To: [email protected]
>
> Tested x86_64-pc-linux-gnu, OK for trunk?
OK
>
> -- 8< --
>
> To run library tests with modules we need to compile them; this patch makes
> us build a header unit for bits/stdc++.h and module interface units for std
> and std.compat, if v3_std_list includes "modules". So this doesn't happen
> by default without a further change.
>
> libstdc++-v3/ChangeLog:
>
> * testsuite/lib/libstdc++.exp (v3-build_support): Build
> gcms for bits/stdc++.h, std, and std.compat.
> ---
> libstdc++-v3/testsuite/lib/libstdc++.exp | 33 ++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
>
> diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp
> b/libstdc++-v3/testsuite/lib/libstdc++.exp
> index 15b052d941b..62aa53d251c 100644
> --- a/libstdc++-v3/testsuite/lib/libstdc++.exp
> +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
> @@ -746,6 +746,7 @@ proc v3_target_compile_as_c { source dest type
> options } {
> proc v3-build_support { } {
> global env
> global srcdir
> + global blddir
> global v3-wchar_t
> global v3-threads
> global v3-symver
> @@ -755,6 +756,7 @@ proc v3-build_support { } {
> set v3-wchar_t 0
> set v3-threads 0
> set v3-symver 0
> + set v3-modules 0
> set libtest_objs ""
> set config_src "config.cc"
> @@ -794,6 +796,37 @@ proc v3-build_support { } {
> }
> }
> + global v3_std_list
> + global v3_modules_std
> + if { "modules" in $v3_std_list } {
> + verbose -log "modules testing requested"
> + set v3-modules 1
> + }
> +
> + # Rebuild module std iff needed, i.e. if we don't have an object for
> + # libtestc++ or import fails.
> + if { ${v3-modules} == 1 } {
> + set std_file "$blddir/include/bits/std.cc"
> + set std_compat_file "$blddir/include/bits/std.compat.cc"
> +
> + if { ([v3_target_compile bits/stdc++.h /dev/null object \
> + [list "additional_flags=-std=gnu++$v3_modules_std
> -fmodules -g -w
> -fsearch-include-path"]]
> + != "") } {
> + error "could not compile bits/stdc++.h"
> + }
> + if { ([v3_target_compile $std_file std.o object \
> + [list "additional_flags=-std=gnu++$v3_modules_std
> -fmodules -g -w"]]
> + != "") } {
> + error "could not compile std.cc"
> + }
> + if { ([v3_target_compile $std_compat_file std.compat.o object \
> + [list "additional_flags=-std=gnu++$v3_modules_std
> -fmodules -g -w"]]
> + != "") } {
> + error "could not compile std.compat.cc"
> + }
> + append libtest_objs "std.o std.compat.o "
> + }
> +
> # Build the support objects.
> set source_files [list testsuite_abi.cc testsuite_allocator.cc \
> testsuite_character.cc testsuite_hooks.cc \
>
> base-commit: 52a24bcecd388ab6e7d4e6500809fc761f6e7ca5
> --
> 2.51.0