Patchwork xlib_libpthread-stubs: needs -pthread when linking statically

login
register
mail settings
Submitter Arnout Vandecappelle
Date Feb. 17, 2013, 1:50 p.m.
Message ID <1361109023-21403-1-git-send-email-arnout@mind.be>
Download mbox | patch
Permalink /patch/221062/
State Superseded
Headers show

Comments

Arnout Vandecappelle - Feb. 17, 2013, 1:50 p.m.
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(+)
Thomas Petazzoni - Feb. 17, 2013, 5:38 p.m.
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.
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

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))