dev-scheme/guile rely on csqrt() which is not provided in any version/configuration of uClibc.
The source code of uClibc source code contains test and the functions definition inside .h files but is implementation free.
So when emerging, you end up with
./.libs/libguile.so: undefined reference to `csqrt'
collect2: error: ld returned 1 exit status
make: *** [guile] Erreur 1
dependencies include autogen on which depend gnutls which is used by many packages
Update from configure in guile :
configure.in line 834
# glibc 2.3.6 (circa 2006) and various prior versions had a bug where
# csqrt(-i) returned a negative real part, when it should be positive
# for the principal root.
if test "$ac_cv_type_complex_double" = yes; then
AC_CACHE_CHECK([whether csqrt is usable],
/* "volatile" is meant to prevent gcc from calculating the sqrt as a
constant, we want to test libc. */
volatile complex double z = - _Complex_I;
z = csqrt (z);
if (creal (z) > 0.0)
return 0; /* good */
return 1; /* bad */
[guile_cv_use_csqrt="no, glibc 2.3 bug"],
[guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])])
It seems the configure script tries to compile and run a program for testing the support. But in the case of cross compiling configure assume csqrt is supported by default.
You might say this is upstream but autogen depends on guile shared libraries and gnutls depends on the shared libraries of autogen. This is not compile time. It really breaks many packages.