commit:     e4da4705a51d46236f3e9a0d2c850455b7d9772c
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 29 15:26:25 2018 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Sun Apr 29 15:31:31 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e4da4705

eclass/toolchain.eclass: disable libstdcxx-time for bare metal

Historically Gentoo unconditionally sets --enable-libstdcxx-time=yes
to avoid --enable-libstdcxx-time=rt on linux targets, bug #411681

Unfortunately this conflicts with arm-none-eabi and other
bare-metal targets that don't provide enough plumbing
to support for POSIX timers.

This change ogerrides our default to --disable-libstdcxx-time
on *-elf and *-eabi targets.

Tested as:
  $ crossdev --stage4 arm-none-eabi

Reported-by: scheer <AT> wsoptics.de
Reported-by: Thomas Schneider
Bug: https://bugs.gentoo.org/411681
Bug: https://bugs.gentoo.org/589672
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 eclass/toolchain.eclass | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index df76dc4feb8..c942a112c75 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -971,7 +971,14 @@ toolchain_src_configure() {
                case ${CTARGET} in
                *-linux)                 needed_libc=no-fucking-clue;;
                *-dietlibc)              needed_libc=dietlibc;;
-               *-elf|*-eabi)    needed_libc=newlib;;
+               *-elf|*-eabi)
+                       needed_libc=newlib
+                       # Bare-metal targets don't have access to 
clock_gettime()
+                       # arm-none-eabi example: bug #589672
+                       # But we explicitly do --enable-libstdcxx-time above.
+                       # Undoing it here.
+                       confgcc+=( --disable-libstdcxx-time )
+                       ;;
                *-freebsd*)              needed_libc=freebsd-lib;;
                *-gnu*)                  needed_libc=glibc;;
                *-klibc)                 needed_libc=klibc;;

Reply via email to