diff mbox

xlib_libpthread-stubs: needs -pthread when linking statically

Message ID 1361109023-21403-1-git-send-email-arnout@mind.be
State Superseded
Headers show

Commit Message

Arnout Vandecappelle Feb. 17, 2013, 1:50 p.m. UTC
From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>

Fixes http://autobuild.buildroot.net/results/392512cb348123d76962df02e38675a80eae41b1

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
My gcc manual only documents the -pthread option for some architectures,
but it seems to work for x86, sh and arm as well.
---
 package/x11r7/xlib_libpthread-stubs/xlib_libpthread-stubs.mk |    4 ++++
 1 file changed, 4 insertions(+)

Comments

Thomas Petazzoni Feb. 17, 2013, 5:38 p.m. UTC | #1
Dear Arnout Vandecappelle (Essensium/Mind),

On Sun, 17 Feb 2013 14:50:22 +0100, Arnout Vandecappelle
(Essensium/Mind) wrote:
> From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
> 
> Fixes http://autobuild.buildroot.net/results/392512cb348123d76962df02e38675a80eae41b1
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> ---
> My gcc manual only documents the -pthread option for some architectures,
> but it seems to work for x86, sh and arm as well.

Thanks. However, I'd like to see if an upstream fix would not be more
appropriate for this. If you look at the build log, it shows:

checking for pthread_self... no
checking for pthread_mutex_init... no
checking for pthread_mutex_destroy... no
checking for pthread_mutex_lock... no
checking for pthread_mutex_unlock... no
checking for pthread_cond_init... no
checking for pthread_cond_destroy... no
checking for pthread_condattr_init... no
checking for pthread_condattr_destroy... no
checking for pthread_cond_wait... no
checking for pthread_cond_timedwait... no
checking for pthread_cond_signal... no
checking for pthread_cond_broadcast... no
checking for pthread_equal... no
checking for pthread_exit... no

It is really those tests that are wrong I'd say. They should have
detected that the C library provides the pthread functions.

The AC_CHECK_FUNCS test in configure.ac checks those functions, but
does not specify that those functions should be tested by linking
against -lpthread. Wouldn't an upstreamable configure.ac patch be more
appropriate here?

Thanks,

Thomas
Arnout Vandecappelle Feb. 17, 2013, 8:44 p.m. UTC | #2
On 17/02/13 18:38, Thomas Petazzoni wrote:
> Dear Arnout Vandecappelle (Essensium/Mind),
>
> On Sun, 17 Feb 2013 14:50:22 +0100, Arnout Vandecappelle
> (Essensium/Mind) wrote:
>> From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
>>
>> Fixes http://autobuild.buildroot.net/results/392512cb348123d76962df02e38675a80eae41b1
>>
>> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
>> ---
>> My gcc manual only documents the -pthread option for some architectures,
>> but it seems to work for x86, sh and arm as well.
>
> Thanks. However, I'd like to see if an upstream fix would not be more
> appropriate for this. If you look at the build log, it shows:
>
> checking for pthread_self... no
> checking for pthread_mutex_init... no
> checking for pthread_mutex_destroy... no
> checking for pthread_mutex_lock... no
> checking for pthread_mutex_unlock... no
> checking for pthread_cond_init... no
> checking for pthread_cond_destroy... no
> checking for pthread_condattr_init... no
> checking for pthread_condattr_destroy... no
> checking for pthread_cond_wait... no
> checking for pthread_cond_timedwait... no
> checking for pthread_cond_signal... no
> checking for pthread_cond_broadcast... no
> checking for pthread_equal... no
> checking for pthread_exit... no
>
> It is really those tests that are wrong I'd say. They should have
> detected that the C library provides the pthread functions.
>
> The AC_CHECK_FUNCS test in configure.ac checks those functions, but
> does not specify that those functions should be tested by linking
> against -lpthread. Wouldn't an upstreamable configure.ac patch be more
> appropriate here?

  Linking against -lpthread isn't enough, apparently.

  Many packages use the ACX_PTHREAD macro [1]. That is probably a 
possibility.

  Regards,
  Arnout

[1] http://ac-archive.sourceforge.net/ac-archive/acx_pthread.html
diff mbox

Patch

diff --git a/package/x11r7/xlib_libpthread-stubs/xlib_libpthread-stubs.mk b/package/x11r7/xlib_libpthread-stubs/xlib_libpthread-stubs.mk
index 909253c..40d9a0b 100644
--- a/package/x11r7/xlib_libpthread-stubs/xlib_libpthread-stubs.mk
+++ b/package/x11r7/xlib_libpthread-stubs/xlib_libpthread-stubs.mk
@@ -9,6 +9,10 @@  XLIB_LIBPTHREAD_STUBS_SITE = http://xcb.freedesktop.org/dist/
 
 XLIB_LIBPTHREAD_STUBS_INSTALL_STAGING = YES
 
+ifeq ($(BR2_PREFER_STATIC_LIB),y)
+XLIB_LIBPTHREAD_STUBS_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -pthread"
+endif
+
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))