[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] my take on threading options

From: Scott James Remnant
Subject: [PATCH] my take on threading options
Date: Sun, 09 Nov 2003 22:51:29 +0000

Here's my take on the various attempts over the years to support
-pthread and the other similar options, although vaguely based in spirit
on other patches written by others -- this implementation is completely

The various options are accepted in link mode and added to $deplibs,
then later kept in $deplibs for linking libraries and for programs added
to compile_deplibs and finalize_deplibs.

This means that for BOTH programs and shared libraries, -pthread and
friends will be honoured on the command line, rather than being
rejected.  The previous patch submitted to this list stopped it working
for programs! :(

It also means that if -pthread and friends are found in dependency_libs,
rather than producing the very strange "cannot find the library `'"
error message it'll honour it.

On the other hand, it deliberately doesn't place a -pthread found on the
command line into dependency_libs when writing the .la file, that way it
won't break anything else.

Have you ever, ever felt like this?
Had strange things happen?  Are you going round the twist?

diff -ruNp libtool-CVS~/ChangeLog libtool-CVS/ChangeLog
--- libtool-CVS~/ChangeLog      2003-10-30 14:40:11.000000000 +0000
+++ libtool-CVS/ChangeLog       2003-11-09 19:27:39.000000000 +0000
@@ -0,0 +1,7 @@
+2003-11-09  Scott James Remnant  <address@hidden>
+       * Add -pthread and similar to $deplibs ($compile_deplibs
+       and $finalize_deplibs for programs) when found on the command line
+       or in a .la file's dependency_libs (but don't place them there) so
+       they are honoured when linking both programs and libraries.
diff -ruNp libtool-CVS~/ libtool-CVS/
--- libtool-CVS~/      2003-10-20 14:36:10.000000000 +0100
+++ libtool-CVS/       2003-11-09 19:28:06.000000000 +0000
@@ -1325,6 +1325,11 @@ EOF
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+       deplibs="$deplibs $arg"
+       continue
+        ;;
       # gcc -m* arguments should be passed to the linker via $compiler_flags
       # in order to pass architecture information to the linker
       # (e.g. 32 vs 64-bit).  This may also be accomplished via -Wl,-mfoo
@@ -1845,6 +1850,15 @@ EOF
        case $deplib in
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+         fi
+         continue
+         ;;
          if test "$linkmode" != lib && test "$linkmode" != prog; then
            $echo "$modename: warning: \`-l' is ignored for archives/objects" 
diff -ruNp libtool-CVS~/NEWS libtool-CVS/NEWS
--- libtool-CVS~/NEWS   2003-10-21 16:03:54.000000000 +0100
+++ libtool-CVS/NEWS    2003-11-09 19:30:31.000000000 +0000
@@ -8,6 +8,7 @@ New in 1.5b: 2003-??-??; CVS version 1.5
   calls itself for relinking etc.
 * -no-suppress in compile mode shows compiler output for both PIC and non-PIC
   object compilation.
+* `-pthread' and similar options are honoured when linking shared libraries.
 * Shared objects (.lo) are no longer created when `-static' is passed in
   compile mode.
 * New compile mode option `-shared' prevents creation of static objects (.o).

Attachment: signature.asc
Description: This is a digitally signed message part

reply via email to

[Prev in Thread] Current Thread [Next in Thread]