On Sun, 2009-09-20 at 19:32 -0400, Philip Lowman wrote: > On Sun, Sep 20, 2009 at 3:02 PM, Hendrik Sattler > <p...@hendrik-sattler.de> wrote: > Am Sonntag 20 September 2009 17:16:19 schrieb Philip Lowman: > > > Hello, > > > > I've merged (optional) Pthreads-win32 support into a > FindThreads.cmake > > attached in the tracker and added some documentation on how > to use it. > > Since FindThreads isn't my module I wanted to throw this up > on the mailing > > list for feedback. > > > > http://www.cmake.org/Bug/view.php?id=6399 > > > > > > Also, in regard to a previous mailing list thread about > FindThreads... > > > > I'm not sure which platform the block "Check if compiler > accepts -pthread" > > is executed on. The documentation I attached to the code > advises calling > > "target_link_libraries(target ${CMAKE_THREAD_LIBS_INIT})". > After grokking > > the code a bit further I'm now guessing this "-pthread" > argument is > > technically accepted by the linker and not needed by the > compiler, but it > > would be nice to know this for sure to ensure the > documentation is correct. > > > gcc says: > -pthread > Adds support for multithreading with the pthreads > library. This > option sets flags for both the preprocessor and > linker. > > So it may work to only use it during linking but this may > cause subtle failure > on some platforms. > > When writing FindThreads.cmake, it would be better to really > rewrite it and > use the common naming standards for cmake modules. > > I'm hesitant to rewrite anything that works, especially if it works on > platforms I don't have access too. :) > > Include & library variables probably could be added if it can be done > in a safe way with the compile checks already in place. > > Not sure on -pthread, we've never added it to our gcc command lines > before. Looking at the man page, it's only a compile flag under > IA-64, RS-6000, PPC, and SPARC. Would recommending people add it to > their compiler flags and only rely on the output of > ${CMAKE_THREAD_LIBS_INIT} for linking be the right thing to do? > > > -- > Philip Lowman
Hmm, don't know if the documentation is correct. I tested this on Linux x86_64 (gcc 4.3) and on an old i686 (gcc 3.2). On both systems, when I diff the output of 'gcc -E -dM' and 'gcc -E -dM -pthread' I get '#define _REENTRANT 1'. So, -pthread clearly defines an extra preprocessor variable. Marcel Loose _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake