https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103866

--- Comment #12 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>:

https://gcc.gnu.org/g:68c2e9e9234cb301e9e81792cad233a41e797792

commit r12-6409-g68c2e9e9234cb301e9e81792cad233a41e797792
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Jan 6 13:54:53 2022 +0000

    libstdc++: Fix and simplify freestanding configuration [PR103866]

    This fixes the --disable-hosted-libstdcxx build so that it works with
    --without-headers. Currently you need to also use --with-newlib, which
    is confusing for users who aren't actually using newlib.

    The AM_PROG_LIBTOOL checks are currently skipped for --with-newlib and
    --with-avrlibc builds, with this change they are also skipped when using
    --without-headers.  It would be nice if using --disable-hosted-libstdcxx
    automatically skipped those checks, but GLIBCXX_ENABLE_HOSTED comes too
    late to make the AM_PROG_LIBTOOL checks depend on $is_hosted.

    The checks for EOF, SEEK_CUR etc. cause the build to fail if there is no
    <stdio.h> available.  Unlike most headers, which get a HAVE_FOO_H macro,
    <stdio.h> is in autoconf's default includes, so every check tries to
    include it unconditionally. This change skips those checks for
    freestanding builds.

    Similarly, the checks for <stdint.h> types done by GCC_HEADER_STDINT try
    to include <stdio.h> and fail for --without-headers builds. This change
    skips the use of GCC_HEADER_STDINT for freestanding. We can probably
    stop using GCC_HEADER_STDINT entirely, since only one file uses the
    gstdint.h header that is generated, and that could easily be changed to
    use <stdint.h> instead. That can wait for stage 1.

    We also need to skip the GLIBCXX_CROSSCONFIG stage if --without-headers
    was used, since we don't have any of the functions it deals with.

    The end result of the changes above is that it should not be necessary
    for a --disable-hosted-libstdcxx --without-headers build to also use
    --with-newlib.

    Finally, compile libsupc++ with -ffreestanding when --without-headers is
    used, so that <stdint.h> will use <gcc-stdint.h> instead of expecting it
    to come from libc.

    libstdc++-v3/ChangeLog:

            PR libstdc++/103866
            * acinclude.m4 (GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS): Do
            nothing for freestanding builds.
            (GLIBCXX_ENABLE_HOSTED): Define FREESTANDING_FLAGS.
            * configure.ac: Do not use AC_LIBTOOL_DLOPEN when configured
            with --without-headers.  Do not use GCC_HEADER_STDINT for
            freestanding builds.
            * libsupc++/Makefile.am (HOSTED_CXXFLAGS): Use -ffreestanding
            for freestanding builds.
            * configure: Regenerate.
            * Makefile.in: Regenerate.
            * doc/Makefile.in: Regenerate.
            * include/Makefile.in: Regenerate.
            * libsupc++/Makefile.in: Regenerate.
            * po/Makefile.in: Regenerate.
            * python/Makefile.in: Regenerate.
            * src/Makefile.in: Regenerate.
            * src/c++11/Makefile.in: Regenerate.
            * src/c++17/Makefile.in: Regenerate.
            * src/c++20/Makefile.in: Regenerate.
            * src/c++98/Makefile.in: Regenerate.
            * src/filesystem/Makefile.in: Regenerate.
            * testsuite/Makefile.in: Regenerate.

Reply via email to