| 1 | | dnl Available from the GNU Autoconf Macro Archive at: |
| 2 | | dnl http://www.gnu.org/software/ac-archive/htmldoc/acx_pthread.html |
| 3 | | dnl |
| | 1 | # =========================================================================== |
| | 2 | # http://autoconf-archive.cryp.to/acx_pthread.html |
| | 3 | # =========================================================================== |
| | 4 | # |
| | 5 | # SYNOPSIS |
| | 6 | # |
| | 7 | # ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) |
| | 8 | # |
| | 9 | # DESCRIPTION |
| | 10 | # |
| | 11 | # This macro figures out how to build C programs using POSIX threads. It |
| | 12 | # sets the PTHREAD_LIBS output variable to the threads library and linker |
| | 13 | # flags, and the PTHREAD_CFLAGS output variable to any special C compiler |
| | 14 | # flags that are needed. (The user can also force certain compiler |
| | 15 | # flags/libs to be tested by setting these environment variables.) |
| | 16 | # |
| | 17 | # Also sets PTHREAD_CC to any special C compiler that is needed for |
| | 18 | # multi-threaded programs (defaults to the value of CC otherwise). (This |
| | 19 | # is necessary on AIX to use the special cc_r compiler alias.) |
| | 20 | # |
| | 21 | # NOTE: You are assumed to not only compile your program with these flags, |
| | 22 | # but also link it with them as well. e.g. you should link with |
| | 23 | # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS |
| | 24 | # |
| | 25 | # If you are only building threads programs, you may wish to use these |
| | 26 | # variables in your default LIBS, CFLAGS, and CC: |
| | 27 | # |
| | 28 | # LIBS="$PTHREAD_LIBS $LIBS" |
| | 29 | # CFLAGS="$CFLAGS $PTHREAD_CFLAGS" |
| | 30 | # CC="$PTHREAD_CC" |
| | 31 | # |
| | 32 | # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant |
| | 33 | # has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name |
| | 34 | # (e.g. PTHREAD_CREATE_UNDETACHED on AIX). |
| | 35 | # |
| | 36 | # ACTION-IF-FOUND is a list of shell commands to run if a threads library |
| | 37 | # is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it |
| | 38 | # is not found. If ACTION-IF-FOUND is not specified, the default action |
| | 39 | # will define HAVE_PTHREAD. |
| | 40 | # |
| | 41 | # Please let the authors know if this macro fails on any platform, or if |
| | 42 | # you have any other suggestions or comments. This macro was based on work |
| | 43 | # by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help |
| | 44 | # from M. Frigo), as well as ac_pthread and hb_pthread macros posted by |
| | 45 | # Alejandro Forero Cuervo to the autoconf macro repository. We are also |
| | 46 | # grateful for the helpful feedback of numerous users. |
| | 47 | # |
| | 48 | # LAST MODIFICATION |
| | 49 | # |
| | 50 | # 2008-04-12 |
| | 51 | # |
| | 52 | # COPYLEFT |
| | 53 | # |
| | 54 | # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu> |
| | 55 | # |
| | 56 | # This program is free software: you can redistribute it and/or modify it |
| | 57 | # under the terms of the GNU General Public License as published by the |
| | 58 | # Free Software Foundation, either version 3 of the License, or (at your |
| | 59 | # option) any later version. |
| | 60 | # |
| | 61 | # This program is distributed in the hope that it will be useful, but |
| | 62 | # WITHOUT ANY WARRANTY; without even the implied warranty of |
| | 63 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
| | 64 | # Public License for more details. |
| | 65 | # |
| | 66 | # You should have received a copy of the GNU General Public License along |
| | 67 | # with this program. If not, see <http://www.gnu.org/licenses/>. |
| | 68 | # |
| | 69 | # As a special exception, the respective Autoconf Macro's copyright owner |
| | 70 | # gives unlimited permission to copy, distribute and modify the configure |
| | 71 | # scripts that are the output of Autoconf when processing the Macro. You |
| | 72 | # need not follow the terms of the GNU General Public License when using |
| | 73 | # or distributing such scripts, even though portions of the text of the |
| | 74 | # Macro appear in them. The GNU General Public License (GPL) does govern |
| | 75 | # all other use of the material that constitutes the Autoconf Macro. |
| | 76 | # |
| | 77 | # This special exception to the GPL applies to versions of the Autoconf |
| | 78 | # Macro released by the Autoconf Macro Archive. When you make and |
| | 79 | # distribute a modified version of the Autoconf Macro, you may extend this |
| | 80 | # special exception to the GPL to apply to your modified version as well. |
| | 81 | |
| 136 | | # Detect AIX lossage: threads are created detached by default |
| 137 | | # and the JOINABLE attribute has a nonstandard name (UNDETACHED). |
| 138 | | AC_MSG_CHECKING([for joinable pthread attribute]) |
| 139 | | AC_TRY_LINK([#include <pthread.h>], |
| 140 | | [int attr=PTHREAD_CREATE_JOINABLE;], |
| 141 | | ok=PTHREAD_CREATE_JOINABLE, ok=unknown) |
| 142 | | if test x"$ok" = xunknown; then |
| 143 | | AC_TRY_LINK([#include <pthread.h>], |
| 144 | | [int attr=PTHREAD_CREATE_UNDETACHED;], |
| 145 | | ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) |
| 146 | | fi |
| 147 | | if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then |
| 148 | | AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, |
| 149 | | [Define to the necessary symbol if this constant |
| 150 | | uses a non-standard name on your system.]) |
| 151 | | fi |
| 152 | | AC_MSG_RESULT(${ok}) |
| 153 | | if test x"$ok" = xunknown; then |
| 154 | | AC_MSG_WARN([we do not know how to create joinable pthreads]) |
| | 224 | # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. |
| | 225 | AC_MSG_CHECKING([for joinable pthread attribute]) |
| | 226 | attr_name=unknown |
| | 227 | for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do |
| | 228 | AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;], |
| | 229 | [attr_name=$attr; break]) |
| | 230 | done |
| | 231 | AC_MSG_RESULT($attr_name) |
| | 232 | if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then |
| | 233 | AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, |
| | 234 | [Define to necessary symbol if this constant |
| | 235 | uses a non-standard name on your system.]) |