Hi, here's a diff to fix cmake to make it correctly detect -pthread (atm it tries -lpthread & is happy with it), in order to have cmake-using ports correctly link with -pthread, by forcing CMAKE_USE_PTHREADS_INIT.
it went in a bulk build run by jasper@ without fallouts... so i'm asking for comments and oks here. Ah, and before someone asks, no i'm not working on cmake 2.6, and won't :) Landry
Index: Makefile =================================================================== RCS file: /cvs/ports/devel/cmake/Makefile,v retrieving revision 1.16 diff -u -r1.16 Makefile --- Makefile 14 Mar 2009 18:59:36 -0000 1.16 +++ Makefile 4 Sep 2009 08:50:20 -0000 @@ -4,7 +4,7 @@ CATEGORIES= devel COMMENT= portable build system DISTNAME= cmake-2.4.8 -PKGNAME= ${DISTNAME}p1 +PKGNAME= ${DISTNAME}p2 MASTER_SITES= ${HOMEPAGE}files/v2.4/ MAINTAINER= Marc Espie <es...@openbsd.org> Index: patches/patch-Modules_FindThreads_cmake =================================================================== RCS file: patches/patch-Modules_FindThreads_cmake diff -N patches/patch-Modules_FindThreads_cmake --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Modules_FindThreads_cmake 4 Sep 2009 08:50:20 -0000 @@ -0,0 +1,68 @@ +$OpenBSD$ +don't test for -lpthread, so it fallbacks to -pthread +--- Modules/FindThreads.cmake.orig Mon Jan 21 19:59:51 2008 ++++ Modules/FindThreads.cmake Fri Sep 4 10:30:59 2009 +@@ -24,60 +24,9 @@ ELSE(CMAKE_HAVE_SPROC_H) + IF(CMAKE_HAVE_PTHREAD_H) + # We have pthread.h + # Let's check for the library now. +- SET(CMAKE_HAVE_THREADS_LIBRARY) +- IF(NOT THREADS_HAVE_PTHREAD_ARG) +- # Do we have -lpthreads +- CHECK_LIBRARY_EXISTS(pthreads pthread_create "" CMAKE_HAVE_PTHREADS_CREATE) +- IF(CMAKE_HAVE_PTHREADS_CREATE) +- SET(CMAKE_THREAD_LIBS_INIT "-lpthreads") +- SET(CMAKE_HAVE_THREADS_LIBRARY 1) +- ENDIF(CMAKE_HAVE_PTHREADS_CREATE) +- # Ok, how about -lpthread +- CHECK_LIBRARY_EXISTS(pthread pthread_create "" CMAKE_HAVE_PTHREAD_CREATE) +- IF(CMAKE_HAVE_PTHREAD_CREATE) +- SET(CMAKE_THREAD_LIBS_INIT "-lpthread") +- SET(CMAKE_HAVE_THREADS_LIBRARY 1) +- ENDIF(CMAKE_HAVE_PTHREAD_CREATE) +- IF(CMAKE_SYSTEM MATCHES "SunOS.*") +- # On sun also check for -lthread +- CHECK_LIBRARY_EXISTS(thread thr_create "" CMAKE_HAVE_THR_CREATE) +- IF(CMAKE_HAVE_THR_CREATE) +- SET(CMAKE_THREAD_LIBS_INIT "-lthread") +- SET(CMAKE_HAVE_THREADS_LIBRARY 1) +- ENDIF(CMAKE_HAVE_THR_CREATE) +- ENDIF(CMAKE_SYSTEM MATCHES "SunOS.*") +- ENDIF(NOT THREADS_HAVE_PTHREAD_ARG) +- +- IF(NOT CMAKE_HAVE_THREADS_LIBRARY) +- # If we did not found -lpthread, -lpthread, or -lthread, look for -pthread +- IF("THREADS_HAVE_PTHREAD_ARG" MATCHES "^THREADS_HAVE_PTHREAD_ARG") +- MESSAGE(STATUS "Check if compiler accepts -pthread") +- TRY_RUN(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG +- ${CMAKE_BINARY_DIR} +- ${CMAKE_ROOT}/Modules/CheckForPthreads.c +- CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread +- OUTPUT_VARIABLE OUTPUT) +- IF(THREADS_HAVE_PTHREAD_ARG) +- IF(THREADS_PTHREAD_ARG MATCHES "^2$") +- MESSAGE(STATUS "Check if compiler accepts -pthread - yes") +- ELSE(THREADS_PTHREAD_ARG MATCHES "^2$") +- MESSAGE(STATUS "Check if compiler accepts -pthread - no") +- FILE(APPEND +- ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log +- "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n") +- ENDIF(THREADS_PTHREAD_ARG MATCHES "^2$") +- ELSE(THREADS_HAVE_PTHREAD_ARG) +- MESSAGE(STATUS "Check if compiler accepts -pthread - no") +- FILE(APPEND +- ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log +- "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n") +- ENDIF(THREADS_HAVE_PTHREAD_ARG) +- ENDIF("THREADS_HAVE_PTHREAD_ARG" MATCHES "^THREADS_HAVE_PTHREAD_ARG") +- IF(THREADS_HAVE_PTHREAD_ARG) +- SET(CMAKE_THREAD_LIBS_INIT "-pthread") +- ELSE(THREADS_HAVE_PTHREAD_ARG) +- ENDIF(THREADS_HAVE_PTHREAD_ARG) +- ENDIF(NOT CMAKE_HAVE_THREADS_LIBRARY) ++ SET(CMAKE_HAVE_PTHREAD_CREATE 1) ++ SET(CMAKE_HAVE_THREADS_LIBRARY 1) ++ SET(CMAKE_THREAD_LIBS_INIT "-pthread") + ENDIF(CMAKE_HAVE_PTHREAD_H) + ENDIF(CMAKE_HAVE_SPROC_H) +