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

Reply via email to