~ubuntu-branches/ubuntu/raring/obconf/raring

« back to all changes in this revision

Viewing changes to m4/lock.m4

  • Committer: Package Import Robot
  • Author(s): Luca Falavigna
  • Date: 2011-12-15 23:15:55 UTC
  • mfrom: (4.1.5 precise)
  • Revision ID: package-import@ubuntu.com-20111215231555-xj4oomytat7bjabc
* QA upload.
* New upstream snapshot is built with openbox 3.5 (Closes: #652199).
* Switch to format 3.0 (quilt).
* debian/patches/pt_BR.patch:
  - Brazilian Portuguese translation (Closes: #607492).
* debian/compat:
  - Bump compatibility level to 8.
* debian/control:
  - Set Maintainer to Debian QA Group.
  - Build-depend on dh-autoreconf, drop autotools-dev and automake.
  - Build-depend on libimlib2-dev.
  - Bump Standards-Version to 3.9.2.
  - Remove Vcs-* fields.
  - Add ${misc:Depends} to Depends field.
* debian/copyright:
  - Use versioned link to common-licenses.
* debian/obconf.pod:
  - Fix syntax error appearing with pod2man.
* debian/rules:
  - Switch to dh.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# lock.m4 serial 2 (gettext-0.15)
2
 
dnl Copyright (C) 2005 Free Software Foundation, Inc.
3
 
dnl This file is free software; the Free Software Foundation
4
 
dnl gives unlimited permission to copy and/or distribute it,
5
 
dnl with or without modifications, as long as this notice is preserved.
6
 
 
7
 
dnl From Bruno Haible.
8
 
 
9
 
dnl Tests for a multithreading library to be used.
10
 
dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
11
 
dnl USE_PTH_THREADS, USE_WIN32_THREADS
12
 
dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
13
 
dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
14
 
dnl libtool).
15
 
dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
16
 
dnl programs that really need multithread functionality. The difference
17
 
dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
18
 
dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
19
 
dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
20
 
dnl multithread-safe programs.
21
 
 
22
 
AC_DEFUN([gl_LOCK],
23
 
[
24
 
  AC_REQUIRE([gl_LOCK_BODY])
25
 
])
26
 
 
27
 
dnl The guts of gl_LOCK. Needs to be expanded only once.
28
 
 
29
 
AC_DEFUN([gl_LOCK_BODY],
30
 
[
31
 
  dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
32
 
  dnl influences the result of the autoconf tests that test for *_unlocked
33
 
  dnl declarations, on AIX 5 at least. Therefore it must come early.
34
 
  AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
35
 
  AC_BEFORE([$0], [gl_ARGP])dnl
36
 
 
37
 
  AC_REQUIRE([AC_CANONICAL_HOST])
38
 
  AC_REQUIRE([AC_GNU_SOURCE]) dnl needed for pthread_rwlock_t on glibc systems
39
 
  dnl Check for multithreading.
40
 
  AC_ARG_ENABLE(threads,
41
 
AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
42
 
AC_HELP_STRING([--disable-threads], [build without multithread safety]),
43
 
    gl_use_threads=$enableval, gl_use_threads=yes)
44
 
  gl_threads_api=none
45
 
  LIBTHREAD=
46
 
  LTLIBTHREAD=
47
 
  LIBMULTITHREAD=
48
 
  LTLIBMULTITHREAD=
49
 
  if test "$gl_use_threads" != no; then
50
 
    dnl Check whether the compiler and linker support weak declarations.
51
 
    AC_MSG_CHECKING([whether imported symbols can be declared weak])
52
 
    gl_have_weak=no
53
 
    AC_TRY_LINK([extern void xyzzy ();
54
 
#pragma weak xyzzy], [xyzzy();], [gl_have_weak=yes])
55
 
    AC_MSG_RESULT([$gl_have_weak])
56
 
    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
57
 
      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
58
 
      # it groks <pthread.h>.
59
 
      gl_save_CPPFLAGS="$CPPFLAGS"
60
 
      CPPFLAGS="$CPPFLAGS -D_REENTRANT"
61
 
      AC_CHECK_HEADER(pthread.h, gl_have_pthread_h=yes, gl_have_pthread_h=no)
62
 
      CPPFLAGS="$gl_save_CPPFLAGS"
63
 
      if test "$gl_have_pthread_h" = yes; then
64
 
        # Other possible tests:
65
 
        #   -lpthreads (FSU threads, PCthreads)
66
 
        #   -lgthreads
67
 
        case "$host_os" in
68
 
          osf*)
69
 
            # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
70
 
            # groks <pthread.h>. cc also understands the flag -pthread, but
71
 
            # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
72
 
            # 2. putting a flag into CPPFLAGS that has an effect on the linker
73
 
            # causes the AC_TRY_LINK test below to succeed unexpectedly,
74
 
            # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
75
 
            CPPFLAGS="$CPPFLAGS -D_REENTRANT"
76
 
            ;;
77
 
        esac
78
 
        gl_have_pthread=
79
 
        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
80
 
        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
81
 
        # the second one only in libpthread, and lock.c needs it.
82
 
        AC_TRY_LINK([#include <pthread.h>],
83
 
          [pthread_mutex_lock((pthread_mutex_t*)0);
84
 
           pthread_mutexattr_init((pthread_mutexattr_t*)0);],
85
 
          [gl_have_pthread=yes])
86
 
        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
87
 
        # since it is defined as a macro on OSF/1.)
88
 
        if test -n "$gl_have_pthread"; then
89
 
          # The program links fine without libpthread. But it may actually
90
 
          # need to link with libpthread in order to create multiple threads.
91
 
          AC_CHECK_LIB(pthread, pthread_kill,
92
 
            [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
93
 
             # On Solaris and HP-UX, most pthread functions exist also in libc.
94
 
             # Therefore pthread_in_use() needs to actually try to create a
95
 
             # thread: pthread_create from libc will fail, whereas
96
 
             # pthread_create will actually create a thread.
97
 
             case "$host_os" in
98
 
               solaris* | hpux*)
99
 
                 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], 1,
100
 
                   [Define if the pthread_in_use() detection is hard.])
101
 
             esac
102
 
            ])
103
 
        else
104
 
          # Some library is needed. Try libpthread and libc_r.
105
 
          AC_CHECK_LIB(pthread, pthread_kill,
106
 
            [gl_have_pthread=yes
107
 
             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
108
 
             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
109
 
          if test -z "$gl_have_pthread"; then
110
 
            # For FreeBSD 4.
111
 
            AC_CHECK_LIB(c_r, pthread_kill,
112
 
              [gl_have_pthread=yes
113
 
               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
114
 
               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
115
 
          fi
116
 
        fi
117
 
        if test -n "$gl_have_pthread"; then
118
 
          gl_threads_api=posix
119
 
          AC_DEFINE([USE_POSIX_THREADS], 1,
120
 
            [Define if the POSIX multithreading library can be used.])
121
 
          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
122
 
            if test $gl_have_weak = yes; then
123
 
              AC_DEFINE([USE_POSIX_THREADS_WEAK], 1,
124
 
                [Define if references to the POSIX multithreading library should be made weak.])
125
 
              LIBTHREAD=
126
 
              LTLIBTHREAD=
127
 
            fi
128
 
          fi
129
 
          # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
130
 
          # pthread_rwlock_* functions.
131
 
          AC_CHECK_TYPE([pthread_rwlock_t],
132
 
            [AC_DEFINE([HAVE_PTHREAD_RWLOCK], 1,
133
 
               [Define if the POSIX multithreading library has read/write locks.])],
134
 
            [],
135
 
            [#include <pthread.h>])
136
 
          # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
137
 
          AC_TRY_COMPILE([#include <pthread.h>],
138
 
            [#if __FreeBSD__ == 4
139
 
error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
140
 
#else
141
 
int x = (int)PTHREAD_MUTEX_RECURSIVE;
142
 
#endif],
143
 
            [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], 1,
144
 
               [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
145
 
          # Some systems optimize for single-threaded programs by default, and
146
 
          # need special flags to disable these optimizations. For example, the
147
 
          # definition of 'errno' in <errno.h>.
148
 
          case "$host_os" in
149
 
            aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
150
 
            solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
151
 
          esac
152
 
        fi
153
 
      fi
154
 
    fi
155
 
    if test -z "$gl_have_pthread"; then
156
 
      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
157
 
        gl_have_solaristhread=
158
 
        gl_save_LIBS="$LIBS"
159
 
        LIBS="$LIBS -lthread"
160
 
        AC_TRY_LINK([#include <thread.h>
161
 
#include <synch.h>],
162
 
          [thr_self();],
163
 
          [gl_have_solaristhread=yes])
164
 
        LIBS="$gl_save_LIBS"
165
 
        if test -n "$gl_have_solaristhread"; then
166
 
          gl_threads_api=solaris
167
 
          LIBTHREAD=-lthread
168
 
          LTLIBTHREAD=-lthread
169
 
          LIBMULTITHREAD="$LIBTHREAD"
170
 
          LTLIBMULTITHREAD="$LTLIBTHREAD"
171
 
          AC_DEFINE([USE_SOLARIS_THREADS], 1,
172
 
            [Define if the old Solaris multithreading library can be used.])
173
 
          if test $gl_have_weak = yes; then
174
 
            AC_DEFINE([USE_SOLARIS_THREADS_WEAK], 1,
175
 
              [Define if references to the old Solaris multithreading library should be made weak.])
176
 
            LIBTHREAD=
177
 
            LTLIBTHREAD=
178
 
          fi
179
 
        fi
180
 
      fi
181
 
    fi
182
 
    if test "$gl_use_threads" = pth; then
183
 
      gl_save_CPPFLAGS="$CPPFLAGS"
184
 
      AC_LIB_LINKFLAGS(pth)
185
 
      gl_have_pth=
186
 
      gl_save_LIBS="$LIBS"
187
 
      LIBS="$LIBS -lpth"
188
 
      AC_TRY_LINK([#include <pth.h>], [pth_self();], gl_have_pth=yes)
189
 
      LIBS="$gl_save_LIBS"
190
 
      if test -n "$gl_have_pth"; then
191
 
        gl_threads_api=pth
192
 
        LIBTHREAD="$LIBPTH"
193
 
        LTLIBTHREAD="$LTLIBPTH"
194
 
        LIBMULTITHREAD="$LIBTHREAD"
195
 
        LTLIBMULTITHREAD="$LTLIBTHREAD"
196
 
        AC_DEFINE([USE_PTH_THREADS], 1,
197
 
          [Define if the GNU Pth multithreading library can be used.])
198
 
        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
199
 
          if test $gl_have_weak = yes; then
200
 
            AC_DEFINE([USE_PTH_THREADS_WEAK], 1,
201
 
              [Define if references to the GNU Pth multithreading library should be made weak.])
202
 
            LIBTHREAD=
203
 
            LTLIBTHREAD=
204
 
          fi
205
 
        fi
206
 
      else
207
 
        CPPFLAGS="$gl_save_CPPFLAGS"
208
 
      fi
209
 
    fi
210
 
    if test -z "$gl_have_pthread"; then
211
 
      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
212
 
        if { case "$host_os" in
213
 
               mingw*) true;;
214
 
               *) false;;
215
 
             esac
216
 
           }; then
217
 
          gl_threads_api=win32
218
 
          AC_DEFINE([USE_WIN32_THREADS], 1,
219
 
            [Define if the Win32 multithreading API can be used.])
220
 
        fi
221
 
      fi
222
 
    fi
223
 
  fi
224
 
  AC_MSG_CHECKING([for multithread API to use])
225
 
  AC_MSG_RESULT([$gl_threads_api])
226
 
  AC_SUBST(LIBTHREAD)
227
 
  AC_SUBST(LTLIBTHREAD)
228
 
  AC_SUBST(LIBMULTITHREAD)
229
 
  AC_SUBST(LTLIBMULTITHREAD)
230
 
  gl_PREREQ_LOCK
231
 
])
232
 
 
233
 
# Prerequisites of lib/lock.c.
234
 
AC_DEFUN([gl_PREREQ_LOCK], [
235
 
  AC_REQUIRE([AC_C_INLINE])
236
 
])
237
 
 
238
 
dnl Survey of platforms:
239
 
dnl
240
 
dnl Platform          Available   Compiler    Supports   test-lock
241
 
dnl                   flavours    option      weak       result
242
 
dnl ---------------   ---------   ---------   --------   ---------
243
 
dnl Linux 2.4/glibc   posix       -lpthread       Y      OK
244
 
dnl
245
 
dnl GNU Hurd/glibc    posix
246
 
dnl
247
 
dnl FreeBSD 5.3       posix       -lc_r           Y
248
 
dnl                   posix       -lkse ?         Y
249
 
dnl                   posix       -lpthread ?     Y
250
 
dnl                   posix       -lthr           Y
251
 
dnl
252
 
dnl FreeBSD 5.2       posix       -lc_r           Y
253
 
dnl                   posix       -lkse           Y
254
 
dnl                   posix       -lthr           Y
255
 
dnl
256
 
dnl FreeBSD 4.0,4.10  posix       -lc_r           Y      OK
257
 
dnl
258
 
dnl NetBSD 1.6        --
259
 
dnl
260
 
dnl OpenBSD 3.4       posix       -lpthread       Y      OK
261
 
dnl
262
 
dnl MacOS X 10.[123]  posix       -lpthread       Y      OK
263
 
dnl
264
 
dnl Solaris 7,8,9     posix       -lpthread       Y      Sol 7,8: 0.0; Sol 9: OK
265
 
dnl                   solaris     -lthread        Y      Sol 7,8: 0.0; Sol 9: OK
266
 
dnl
267
 
dnl HP-UX 11          posix       -lpthread       N (cc) OK
268
 
dnl                                               Y (gcc)
269
 
dnl
270
 
dnl IRIX 6.5          posix       -lpthread       Y      0.5
271
 
dnl
272
 
dnl AIX 4.3,5.1       posix       -lpthread       N      AIX 4: 0.5; AIX 5: OK
273
 
dnl
274
 
dnl OSF/1 4.0,5.1     posix       -pthread (cc)   N      OK
275
 
dnl                               -lpthread (gcc) Y
276
 
dnl
277
 
dnl Cygwin            posix       -lpthread       Y      OK
278
 
dnl
279
 
dnl Any of the above  pth         -lpth                  0.0
280
 
dnl
281
 
dnl Mingw             win32                       N      OK
282
 
dnl
283
 
dnl BeOS 5            --
284
 
dnl
285
 
dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
286
 
dnl turned off:
287
 
dnl   OK if all three tests terminate OK,
288
 
dnl   0.5 if the first test terminates OK but the second one loops endlessly,
289
 
dnl   0.0 if the first test already loops endlessly.