~ubuntu-branches/ubuntu/karmic/asterisk/karmic-proposed

« back to all changes in this revision

Viewing changes to autoconf/acx_pthread.m4

  • Committer: Bazaar Package Importer
  • Author(s): Faidon Liambotis, Faidon Liambotis, Tzafrir Cohen
  • Date: 2009-07-28 03:42:54 UTC
  • mfrom: (8.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090728034254-ip2jeh7h3s45fqre
Tags: 1:1.6.2.0~dfsg~beta3-1
[ Faidon Liambotis ]
* New upstream release.
  - Drop patches astvarrundir, pubkey_jnctn; merged upstream (finally!).
  - Adapt patch safe_asterisk-nobg.
* Switch to downloads.asterisk.org instead of downloads.digium.com.
* Add depends on libxml2-dev for the new XML documentation.
* Remove Conflicts/Replaces with asterisk-classic, asterisk-bristuff,
  asterisk-chan-capi (<< 1.1.1-1~), since those are pre-lenny.
* Revert upstream's r190830 that ported app_osplookup to OSP Toolkit 3.5;
  the API is not backwards compatible and Debian still has 3.4.2.
* Accommodate for the rename of libcap2-dev to libcap-dev (Closes: #532971).
* Add dependency to libspandsp to build the fax applications.
* Update Standards-Version to 3.8.2, no changes needed.
* Remove init script's "zaptel-fix" action; there's no zaptel anymore and
  was also lintian-buggy in its current form.
* Don't include /var/run/asterisk in the package, it is created at boot-time
  by the init script (thanks lintian).
* Remove asterisk-progdocs: it is of very limited use but a) is enormous in
  size and b) takes too long to build.
* Re-enable and port to 1.6 the h323 segfault patch, apparently it's still
  needed.
* Fix asterisk's Makefiles so that the openh323/libpt dependencies are added
  to chan_h323.so instead of the main asterisk binary.
* Fix astgenkey to respect system's umask. Thanks Jonas Smedegaard.
  (Closes: #531730) 
* Create /var/log/asterisk/* directories if non-existent, for /var/log on
  tmpfs scenarios. Thanks martin f krafft! (Closes: #524015)
* Use the lsb-base standard way of gathering and reporting status in the
  init script. Thanks Dustin Kirkland and Ubuntu! (Closes: #506453)
* Fix debian/rules so that configure isn't called twice during a build.
* Install Zaptel-to-DAHDI.txt, explains the migration procedure from Zaptel
  to DAHDI and is therefore useful when upgrading from lenny.

[ Tzafrir Cohen ]
* New upstream release.
  - Fixes that bashism in safe_asterisk (Closes: #530047) (not dashism).
  - Dropped patch astcanary_startup: merged upstream.
* Patch makefile_appdocs_dtd: fix location of DTD installation.
* Register the HTML docs with doc-base as well.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
2
dnl
 
3
dnl @summary figure out how to build C programs using POSIX threads
 
4
dnl
 
5
dnl This macro figures out how to build C programs using POSIX threads.
 
6
dnl It sets the PTHREAD_LIBS output variable to the threads library and
 
7
dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
 
8
dnl C compiler flags that are needed. (The user can also force certain
 
9
dnl compiler flags/libs to be tested by setting these environment
 
10
dnl variables.)
 
11
dnl
 
12
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
 
13
dnl multi-threaded programs (defaults to the value of CC otherwise).
 
14
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
 
15
dnl
 
16
dnl NOTE: You are assumed to not only compile your program with these
 
17
dnl flags, but also link it with them as well. e.g. you should link
 
18
dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
 
19
dnl $LIBS
 
20
dnl
 
21
dnl If you are only building threads programs, you may wish to use
 
22
dnl these variables in your default LIBS, CFLAGS, and CC:
 
23
dnl
 
24
dnl        LIBS="$PTHREAD_LIBS $LIBS"
 
25
dnl        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
26
dnl        CC="$PTHREAD_CC"
 
27
dnl
 
28
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
 
29
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
 
30
dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
 
31
dnl
 
32
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
 
33
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
 
34
dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
 
35
dnl default action will define HAVE_PTHREAD.
 
36
dnl
 
37
dnl Please let the authors know if this macro fails on any platform, or
 
38
dnl if you have any other suggestions or comments. This macro was based
 
39
dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
 
40
dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
 
41
dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
 
42
dnl We are also grateful for the helpful feedback of numerous users.
 
43
dnl
 
44
dnl @category InstalledPackages
 
45
dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
 
46
dnl @version 2006-05-29
 
47
dnl @license GPLWithACException
 
48
 
 
49
AC_DEFUN([ACX_PTHREAD],
 
50
[
 
51
AC_REQUIRE([AC_CANONICAL_HOST])
 
52
AC_LANG_SAVE
 
53
AC_LANG_C
 
54
acx_pthread_ok=no
 
55
 
 
56
# We used to check for pthread.h first, but this fails if pthread.h
 
57
# requires special compiler flags (e.g. on True64 or Sequent).
 
58
# It gets checked for in the link test anyway.
 
59
 
 
60
# First of all, check if the user has set any of the PTHREAD_LIBS,
 
61
# etcetera environment variables, and if threads linking works using
 
62
# them:
 
63
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
 
64
        save_CFLAGS="$CFLAGS"
 
65
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
66
        save_LIBS="$LIBS"
 
67
        LIBS="$PTHREAD_LIBS $LIBS"
 
68
        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
 
69
        AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
 
70
        AC_MSG_RESULT($acx_pthread_ok)
 
71
        if test x"$acx_pthread_ok" = xno; then
 
72
                PTHREAD_LIBS=""
 
73
                PTHREAD_CFLAGS=""
 
74
        fi
 
75
        LIBS="$save_LIBS"
 
76
        CFLAGS="$save_CFLAGS"
 
77
fi
 
78
 
 
79
# We must check for the threads library under a number of different
 
80
# names; the ordering is very important because some systems
 
81
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
 
82
# libraries is broken (non-POSIX).
 
83
 
 
84
# Create a list of thread flags to try.  Items starting with a "-" are
 
85
# C compiler flags, and other items are library names, except for "none"
 
86
# which indicates that we try without any flags at all, and "pthread-config"
 
87
# which is a program returning the flags for the Pth emulation library.
 
88
 
 
89
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
 
90
 
 
91
# The ordering *is* (sometimes) important.  Some notes on the
 
92
# individual items follow:
 
93
 
 
94
# pthreads: AIX (must check this before -lpthread)
 
95
# none: in case threads are in libc; should be tried before -Kthread and
 
96
#       other compiler flags to prevent continual compiler warnings
 
97
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
 
98
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
 
99
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
 
100
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
 
101
# -pthreads: Solaris/gcc
 
102
# -mthreads: Mingw32/gcc, Lynx/gcc
 
103
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
 
104
#      doesn't hurt to check since this sometimes defines pthreads too;
 
105
#      also defines -D_REENTRANT)
 
106
#      ... -mt is also the pthreads flag for HP/aCC
 
107
# pthread: Linux, etcetera
 
108
# --thread-safe: KAI C++
 
109
# pthread-config: use pthread-config program (for GNU Pth library)
 
110
 
 
111
case "${host_cpu}-${host_os}" in
 
112
        *solaris*)
 
113
 
 
114
        # On Solaris (at least, for some versions), libc contains stubbed
 
115
        # (non-functional) versions of the pthreads routines, so link-based
 
116
        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
 
117
        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
 
118
        # a function called by this macro, so we could check for that, but
 
119
        # who knows whether they'll stub that too in a future libc.)  So,
 
120
        # we'll just look for -pthreads and -lpthread first:
 
121
 
 
122
        acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
 
123
        ;;
 
124
esac
 
125
 
 
126
if test x"$acx_pthread_ok" = xno; then
 
127
for flag in $acx_pthread_flags; do
 
128
 
 
129
        case $flag in
 
130
                none)
 
131
                AC_MSG_CHECKING([whether pthreads work without any flags])
 
132
                ;;
 
133
 
 
134
                -*)
 
135
                AC_MSG_CHECKING([whether pthreads work with $flag])
 
136
                PTHREAD_CFLAGS="$flag"
 
137
                ;;
 
138
 
 
139
                pthread-config)
 
140
                AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
 
141
                if test x"$acx_pthread_config" = xno; then continue; fi
 
142
                PTHREAD_CFLAGS="`pthread-config --cflags`"
 
143
                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
 
144
                ;;
 
145
 
 
146
                *)
 
147
                AC_MSG_CHECKING([for the pthreads library -l$flag])
 
148
                PTHREAD_LIBS="-l$flag"
 
149
                ;;
 
150
        esac
 
151
 
 
152
        save_LIBS="$LIBS"
 
153
        save_CFLAGS="$CFLAGS"
 
154
        LIBS="$PTHREAD_LIBS $LIBS"
 
155
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
156
 
 
157
        # Check for various functions.  We must include pthread.h,
 
158
        # since some functions may be macros.  (On the Sequent, we
 
159
        # need a special flag -Kthread to make this header compile.)
 
160
        # We check for pthread_join because it is in -lpthread on IRIX
 
161
        # while pthread_create is in libc.  We check for pthread_attr_init
 
162
        # due to DEC craziness with -lpthreads.  We check for
 
163
        # pthread_cleanup_push because it is one of the few pthread
 
164
        # functions on Solaris that doesn't have a non-functional libc stub.
 
165
        # We try pthread_create on general principles.
 
166
        AC_TRY_LINK([#include <pthread.h>],
 
167
                    [pthread_t th; pthread_join(th, 0);
 
168
                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
 
169
                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
 
170
                    [acx_pthread_ok=yes])
 
171
 
 
172
        LIBS="$save_LIBS"
 
173
        CFLAGS="$save_CFLAGS"
 
174
 
 
175
        AC_MSG_RESULT($acx_pthread_ok)
 
176
        if test "x$acx_pthread_ok" = xyes; then
 
177
                break;
 
178
        fi
 
179
 
 
180
        PTHREAD_LIBS=""
 
181
        PTHREAD_CFLAGS=""
 
182
done
 
183
fi
 
184
 
 
185
# Various other checks:
 
186
if test "x$acx_pthread_ok" = xyes; then
 
187
        save_LIBS="$LIBS"
 
188
        LIBS="$PTHREAD_LIBS $LIBS"
 
189
        save_CFLAGS="$CFLAGS"
 
190
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
191
 
 
192
        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
 
193
        AC_MSG_CHECKING([for joinable pthread attribute])
 
194
        attr_name=unknown
 
195
        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
 
196
            AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
 
197
                        [attr_name=$attr; break])
 
198
        done
 
199
        AC_MSG_RESULT($attr_name)
 
200
        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
 
201
            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
 
202
                               [Define to necessary symbol if this constant
 
203
                                uses a non-standard name on your system.])
 
204
        fi
 
205
 
 
206
        AC_MSG_CHECKING([if more special flags are required for pthreads])
 
207
        flag=no
 
208
        case "${host_cpu}-${host_os}" in
 
209
            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
 
210
            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
 
211
        esac
 
212
        AC_MSG_RESULT(${flag})
 
213
        if test "x$flag" != xno; then
 
214
            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
 
215
        fi
 
216
 
 
217
        LIBS="$save_LIBS"
 
218
        CFLAGS="$save_CFLAGS"
 
219
 
 
220
        # More AIX lossage: must compile with xlc_r or cc_r
 
221
        if test x"$GCC" != xyes; then
 
222
          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
 
223
        else
 
224
          PTHREAD_CC=$CC
 
225
        fi
 
226
else
 
227
        PTHREAD_CC="$CC"
 
228
fi
 
229
 
 
230
AC_SUBST(PTHREAD_LIBS)
 
231
AC_SUBST(PTHREAD_CFLAGS)
 
232
AC_SUBST(PTHREAD_CC)
 
233
 
 
234
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
 
235
if test x"$acx_pthread_ok" = xyes; then
 
236
        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
 
237
        :
 
238
else
 
239
        acx_pthread_ok=no
 
240
        $2
 
241
fi
 
242
AC_LANG_RESTORE
 
243
])dnl ACX_PTHREAD