libstdc++: Enable most of <chrono> for freestanding
commit1dde83f0ec313166fc91e6784a0ca2e3db46acee
authorJonathan Wakely <jwakely@redhat.com>
Mon, 15 Jan 2024 14:09:21 +0000 (15 14:09 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Sun, 15 Sep 2024 15:15:28 +0000 (15 16:15 +0100)
tree3d6913fad6e908c5448177965f6ce927f13f961c
parentf91fe35aa14bf4d44f2c8394301858b42e12ee45
libstdc++: Enable most of <chrono> for freestanding

This makes durations, time points and calendrical types available for
freestanding. The clocks and time zone utilities are disabled for
freestanding, as they require functions in the hosted lib.

Add support for a new macro _GLIBCXX_NO_FREESTANDING_CHRONO which can be
used to explicitly disable <chrono> for freestanding.

libstdc++-v3/ChangeLog:

* doc/xml/manual/using.xml (_GLIBCXX_NO_FREESTANDING_CHRONO):
Document macro.
* doc/html/*: Regenerate.
* include/bits/chrono.h [_GLIBCXX_NO_FREESTANDING_CHRONO]:
Only include <bits/require_hosted.h> when this macro is defined.
[_GLIBCXX_HOSTED]: Only define clocks for hosted.
* include/bits/version.def (chrono_udls): Remove hosted=yes.
* include/bits/version.h: Regenerate.
* include/std/chrono [_GLIBCXX_HOSTED]: Only define clocks and
time zone utilities for hosted.
* testsuite/std/time/freestanding.cc: New test.
libstdc++-v3/doc/html/manual/using_macros.html
libstdc++-v3/doc/xml/manual/using.xml
libstdc++-v3/include/bits/chrono.h
libstdc++-v3/include/bits/version.def
libstdc++-v3/include/bits/version.h
libstdc++-v3/include/std/chrono
libstdc++-v3/testsuite/std/time/freestanding.cc [new file with mode: 0644]