eclass/toolchain.eclass: disable libstdcxx-time for bare metal
authorSergei Trofimovich <slyfox@gentoo.org>
Sun, 29 Apr 2018 15:26:25 +0000 (16:26 +0100)
committerSergei Trofimovich <slyfox@gentoo.org>
Sun, 29 Apr 2018 15:31:31 +0000 (16:31 +0100)
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@wsoptics.de
Reported-by: Thomas Schneider
Bug: https://bugs.gentoo.org/411681
Bug: https://bugs.gentoo.org/589672
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
eclass/toolchain.eclass

index df76dc4feb8c9cee75382b618a184c0fc8d8cd16..c942a112c7556743a1a9d575f9cf360e91893408 100644 (file)
@@ -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;;