Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Sep 2014 11:28:37 +0200
From:      Tijl Coosemans <tijl@FreeBSD.org>
To:        "Jason E. Hale" <jhale@freebsd.org>
Cc:        "svn-ports-head@freebsd.org" <svn-ports-head@freebsd.org>, "svn-ports-all@freebsd.org" <svn-ports-all@freebsd.org>, ports-committers <ports-committers@freebsd.org>
Subject:   Re: svn commit: r368130 - in head/devel/bennugd-core: . files
Message-ID:  <20140914112837.375964ab@kalimero.tijl.coosemans.org>
In-Reply-To: <CAJE75NEGTy0%2BPNT040Cj7rSinq_DBEDYaJbPzbLTiX=zHp_kEQ@mail.gmail.com>
References:  <201409131920.s8DJKNGP095467@svn.freebsd.org> <CAJE75NEGTy0%2BPNT040Cj7rSinq_DBEDYaJbPzbLTiX=zHp_kEQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 14 Sep 2014 04:20:34 -0400 "Jason E. Hale" <jhale@freebsd.org> wrote:
> On Sat, Sep 13, 2014 at 3:20 PM, Tijl Coosemans <tijl@freebsd.org> wrote:
>> Author: tijl
>> Date: Sat Sep 13 19:20:22 2014
>> New Revision: 368130
>> URL: http://svnweb.freebsd.org/changeset/ports/368130
>> QAT: https://qat.redports.org/buildarchive/r368130/
>>
>> Log:
>>   - Convert to USES=libtool
>>   - Remove -lpthread patching
>>
>> Modified: head/devel/bennugd-core/files/patch-configure
>> ==============================================================================
>> --- head/devel/bennugd-core/files/patch-configure       Sat Sep 13 19:03:41 2014        (r368129)
>> +++ head/devel/bennugd-core/files/patch-configure       Sat Sep 13 19:20:22 2014        (r368130)
>> @@ -1,6 +1,6 @@
>>  --- configure.orig     2013-01-06 05:50:56.000000000 +0400
>>  +++ configure  2013-09-12 05:48:18.186226351 +0400
>> -@@ -11277,10 +11277,10 @@
>> +@@ -11277,7 +11277,7 @@
>>           USE_OPENSSL=no
>>             ;;
>>
>> @@ -8,8 +8,4 @@
>>  +    dragonfly* | freebsd*)
>>           INCLUDES="-I/usr/local/include"
>>           COMMON_CFLAGS="-Wall -DTARGET_BSD -DUSE_OPENSSL"
>> --          COMMON_LDFLAGS="-L/usr/local/lib -lpthread"
>> -+          COMMON_LDFLAGS="-L/usr/local/lib -pthread"
>> -         LIBSSL="crypto"
>> -         USE_OPENSSL=yes
>> -           ;;
>> +           COMMON_LDFLAGS="-L/usr/local/lib -lpthread"
>>
> 
> Should we no longer be patching for -lpthread?  Does
> https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/dads-pthread.html
> no longer apply?

If you ask me it doesn't.  The C compiler automatically links in libc
and we used to have two, libc (without threading) and libc_r (with
threading).  The -pthread flag told the compiler which one to use.
Nowadays we have one libc and libpthread provides threading functions.
All -pthread does is tell the compiler to link in libpthread, just like
-lpthread does.  They are the same.

It used to be that this libpthread could only be linked into executables
and not into libraries.  This meant that if an executable depended on a
library that used threading, it had to be linked with libpthread even if
it didn't use threading itself.  This is why several ports still have
LDFLAGS+=-pthread or similar, just because one of the libraries in the
dependency chain used threading.  This is no longer necessary.

There's one thing that is still special about libpthread and that is
that it needs to be loaded into memory before libc because it overrides
some libc symbols.  So if you mention -lc explicitly on the command
line (which you normally don't), -lpthread has to appear in front of it.
And, if an executable dlopen()s a library that uses threading, the
executable needs to be linked with libpthread even if it doesn't use
threading itself.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140914112837.375964ab>