123456789101112131415161718192021222324252627282930313233343536 |
- Fix thread detection with uClibc in timer_time.m4
- The timer_time.m4 gl_TIMER_TIME function determines which libraries
- need to be linked to get access to the timer function, generally -lrt
- for Linux systems. On platforms where threads are used, librt
- typically uses thread functions from libpthread.
- However, the test to determine whether the platform has thread or not
- is incorrect: it assumes that if the C library is uClibc, then threads
- are not available. This is actually not true: uClibc has configurable
- thread support, and when thread support is available, librt calls
- libpthread functions.
- This is important when static linking is used, because otherwise only
- -lrt is used at link time, which fails because librt calls undefined
- thread functions. Both -lrt and -lpthread must be passed.
- This problem is fixed by making the uClibc thread detection a bit
- smarter, thanks to the usage of the __HAS_NO_THREADS__ macro defined
- in <bits/uClibc_config.h>, which itself is included by <features.h>.
- Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
- Index: b/m4/timer_time.m4
- ===================================================================
- --- a/m4/timer_time.m4
- +++ b/m4/timer_time.m4
- @@ -28,7 +28,7 @@
- #include <features.h>
- #ifdef __GNU_LIBRARY__
- #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || (__GLIBC__ > 2)) \
- - && !defined __UCLIBC__
- + && !(__UCLIBC__ && __HAS_NO_THREADS__)
- Thread emulation available
- #endif
- #endif
|