This macro figures out how to build C programs using POSIX threads. It sets the PTHREAD_LIBS output variable to the threads library and linker flags, and the PTHREAD_CFLAGS output variable to any special C compiler flags that are needed. (The user can also force certain compiler flags/libs to be tested by setting these environment variables.)
Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is needed for multi-threaded programs (defaults to the value of CC respectively CXX otherwise). (This is necessary on e.g. AIX to use the special cc_r/CC_r compiler alias.)
NOTE: You are assumed to not only compile your program with these flags, but also to link with them as well. For example, you might link with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
If you are only building threaded programs, you may wish to use these variables in your default LIBS, CFLAGS, and CC:
LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" CXX="$PTHREAD_CXX"
In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the PTHREAD_PRIO_INHERIT symbol is defined when compiling with PTHREAD_CFLAGS.
ACTION-IF-FOUND is a list of shell commands to run if a threads library is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is not found. If ACTION-IF-FOUND is not specified, the default action will define HAVE_PTHREAD.
Please let the authors know if this macro fails on any platform, or if you have any other suggestions or comments. This macro was based on work by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help from M. Frigo), as well as ac_pthread and hb_pthread macros posted by Alejandro Forero Cuervo to the autoconf macro repository. We are also grateful for the helpful feedback of numerous users.
Updated for Autoconf 2.68 by Daniel Richard G.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
As a special exception, the respective Autoconf Macro’s copyright owner gives unlimited permission to copy, distribute and modify the configure scripts that are the output of Autoconf when processing the Macro. You need not follow the terms of the GNU General Public License when using or distributing such scripts, even though portions of the text of the Macro appear in them. The GNU General Public License (GPL) does govern all other use of the material that constitutes the Autoconf Macro.
This special exception to the GPL applies to versions of the Autoconf Macro released by the Autoconf Archive. When you make and distribute a modified version of the Autoconf Macro, you may extend this special exception to the GPL to apply to your modified version as well.