annotate m4/threadlib.m4 @ 14473:acd1454e6a45

New module 'unictype/category-LC'. * lib/unictype.in.h (UC_CATEGORY_MASK_LC): New enumeration value. (UC_CATEGORY_LC): New declaration. (UC_CASED_LETTER): New macro. * lib/gen-uni-tables.c (is_category_LC): New function. (output_categories): Also handle category LC. (UC_CATEGORY_MASK_LC): New enumeration value. (general_category_byname): Also handle category LC. * lib/unictype/categ_LC.c: New file. * lib/unictype/categ_LC.h: New file, automatically generated. * lib/unictype/categ_name.c (uc_general_category_name): Also handle category LC. * lib/unictype/categ_byname.c (uc_general_category_byname): Likewise. * modules/unictype/category-LC: New file. * modules/unictype/category-all (Depends-on): Add unictype/category-LC.
author Bruno Haible <bruno@clisp.org>
date Fri, 25 Mar 2011 20:23:43 +0100
parents 97fc9a21a8fb
children 8250f2777afc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13762
14f73b4573a7 threadlib: Make option --with-libpth-prefix work.
Bruno Haible <bruno@clisp.org>
parents: 13723
diff changeset
1 # threadlib.m4 serial 8 (gettext-0.18.2)
14079
97fc9a21a8fb maint: update almost all copyright ranges to include 2011
Jim Meyering <meyering@redhat.com>
parents: 13762
diff changeset
2 dnl Copyright (C) 2005-2011 Free Software Foundation, Inc.
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
3 dnl This file is free software; the Free Software Foundation
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
4 dnl gives unlimited permission to copy and/or distribute it,
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
5 dnl with or without modifications, as long as this notice is preserved.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
7 dnl From Bruno Haible.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
8
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
9 dnl gl_THREADLIB
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
10 dnl ------------
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
11 dnl Tests for a multithreading library to be used.
13723
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
12 dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
13 dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
14 dnl default is 'no', otherwise it is system dependent. In both cases, the user
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
15 dnl can change the choice through the options --enable-threads=choice or
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
16 dnl --disable-threads.
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17 dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
18 dnl USE_PTH_THREADS, USE_WIN32_THREADS
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19 dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
20 dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
21 dnl libtool).
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
22 dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
23 dnl programs that really need multithread functionality. The difference
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
24 dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
25 dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
26 dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
27 dnl multithread-safe programs.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
28
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
29 AC_DEFUN([gl_THREADLIB_EARLY],
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
30 [
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
31 AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
32 ])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
33
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
34 dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
35
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
36 AC_DEFUN([gl_THREADLIB_EARLY_BODY],
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
37 [
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
38 dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
39 dnl influences the result of the autoconf tests that test for *_unlocked
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
40 dnl declarations, on AIX 5 at least. Therefore it must come early.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
41 AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
42 AC_BEFORE([$0], [gl_ARGP])dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
43
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
44 AC_REQUIRE([AC_CANONICAL_HOST])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
45 dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
46 dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
47 dnl AC_GNU_SOURCE.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
48 m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
49 [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
50 [AC_REQUIRE([AC_GNU_SOURCE])])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
51 dnl Check for multithreading.
13723
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
52 m4_ifdef([gl_THREADLIB_DEFAULT_NO],
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
53 [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])],
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
54 [m4_divert_text([DEFAULTS], [gl_use_threads_default=])])
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
55 AC_ARG_ENABLE([threads],
13723
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
56 AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
f91a023b7b8e threadlib: Allow the package to change the default to 'no'.
Bruno Haible <bruno@clisp.org>
parents: 13579
diff changeset
57 AC_HELP_STRING([--disable-threads], [build without multithread safety])]),
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
58 [gl_use_threads=$enableval],
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
59 [if test -n "$gl_use_threads_default"; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
60 gl_use_threads="$gl_use_threads_default"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
61 else
11829
7086f57021b2 Disable multithread support by default on Cygwin 1.5.x for real.
Bruno Haible <bruno@clisp.org>
parents: 11807
diff changeset
62 changequote(,)dnl
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
63 case "$host_os" in
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
64 dnl Disable multithreading by default on OSF/1, because it interferes
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
65 dnl with fork()/exec(): When msgexec is linked with -lpthread, its
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
66 dnl child process gets an endless segmentation fault inside execvp().
11807
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
67 dnl Disable multithreading by default on Cygwin 1.5.x, because it has
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
68 dnl bugs that lead to endless loops or crashes. See
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
69 dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
70 osf*) gl_use_threads=no ;;
11807
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
71 cygwin*)
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
72 case `uname -r` in
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
73 1.[0-5].*) gl_use_threads=no ;;
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
74 *) gl_use_threads=yes ;;
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
75 esac
0d28b7568243 Disable multithread support by default on Cygwin 1.5.x.
Bruno Haible <bruno@clisp.org>
parents: 11007
diff changeset
76 ;;
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
77 *) gl_use_threads=yes ;;
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
78 esac
11829
7086f57021b2 Disable multithread support by default on Cygwin 1.5.x for real.
Bruno Haible <bruno@clisp.org>
parents: 11807
diff changeset
79 changequote([,])dnl
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
80 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
81 ])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
82 if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
83 # For using <pthread.h>:
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
84 case "$host_os" in
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
85 osf*)
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
86 # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
87 # groks <pthread.h>. cc also understands the flag -pthread, but
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
88 # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
89 # 2. putting a flag into CPPFLAGS that has an effect on the linker
13578
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
90 # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
91 # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
92 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
93 ;;
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
94 esac
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
95 # Some systems optimize for single-threaded programs by default, and
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
96 # need special flags to disable these optimizations. For example, the
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
97 # definition of 'errno' in <errno.h>.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
98 case "$host_os" in
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
99 aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
100 solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
101 esac
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
102 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
103 ])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
104
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
105 dnl The guts of gl_THREADLIB. Needs to be expanded only once.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
106
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
107 AC_DEFUN([gl_THREADLIB_BODY],
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
108 [
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
109 AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
110 gl_threads_api=none
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
111 LIBTHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
112 LTLIBTHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
113 LIBMULTITHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
114 LTLIBMULTITHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
115 if test "$gl_use_threads" != no; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
116 dnl Check whether the compiler and linker support weak declarations.
13178
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
117 AC_CACHE_CHECK([whether imported symbols can be declared weak],
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
118 [gl_cv_have_weak],
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
119 [gl_cv_have_weak=no
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
120 dnl First, test whether the compiler accepts it syntactically.
13578
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
121 AC_LINK_IFELSE(
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
122 [AC_LANG_PROGRAM(
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
123 [[extern void xyzzy ();
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
124 #pragma weak xyzzy]],
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
125 [[xyzzy();]])],
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
126 [gl_cv_have_weak=maybe])
13178
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
127 if test $gl_cv_have_weak = maybe; then
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
128 dnl Second, test whether it actually works. On Cygwin 1.7.2, with
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
129 dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
13579
da9779900713 Modernize AC_TRY_RUN invocations.
Bruno Haible <bruno@clisp.org>
parents: 13578
diff changeset
130 AC_RUN_IFELSE(
da9779900713 Modernize AC_TRY_RUN invocations.
Bruno Haible <bruno@clisp.org>
parents: 13578
diff changeset
131 [AC_LANG_SOURCE([[
13178
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
132 #include <stdio.h>
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
133 #pragma weak fputs
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
134 int main ()
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
135 {
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
136 return (fputs == NULL);
13579
da9779900713 Modernize AC_TRY_RUN invocations.
Bruno Haible <bruno@clisp.org>
parents: 13578
diff changeset
137 }]])],
da9779900713 Modernize AC_TRY_RUN invocations.
Bruno Haible <bruno@clisp.org>
parents: 13578
diff changeset
138 [gl_cv_have_weak=yes],
da9779900713 Modernize AC_TRY_RUN invocations.
Bruno Haible <bruno@clisp.org>
parents: 13578
diff changeset
139 [gl_cv_have_weak=no],
13178
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
140 [dnl When cross-compiling, assume that only ELF platforms support
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
141 dnl weak symbols.
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
142 AC_EGREP_CPP([Extensible Linking Format],
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
143 [#ifdef __ELF__
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
144 Extensible Linking Format
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
145 #endif
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
146 ],
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
147 [gl_cv_have_weak="guessing yes"],
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
148 [gl_cv_have_weak="guessing no"])
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
149 ])
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
150 fi
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
151 ])
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
152 if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
153 # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
154 # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
10979
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
155 AC_CHECK_HEADER([pthread.h],
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
156 [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
157 if test "$gl_have_pthread_h" = yes; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
158 # Other possible tests:
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
159 # -lpthreads (FSU threads, PCthreads)
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
160 # -lgthreads
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
161 gl_have_pthread=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
162 # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
163 # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
164 # the second one only in libpthread, and lock.c needs it.
13578
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
165 AC_LINK_IFELSE(
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
166 [AC_LANG_PROGRAM(
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
167 [[#include <pthread.h>]],
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
168 [[pthread_mutex_lock((pthread_mutex_t*)0);
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
169 pthread_mutexattr_init((pthread_mutexattr_t*)0);]])],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
170 [gl_have_pthread=yes])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
171 # Test for libpthread by looking for pthread_kill. (Not pthread_self,
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
172 # since it is defined as a macro on OSF/1.)
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
173 if test -n "$gl_have_pthread"; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
174 # The program links fine without libpthread. But it may actually
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
175 # need to link with libpthread in order to create multiple threads.
10979
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
176 AC_CHECK_LIB([pthread], [pthread_kill],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
177 [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
178 # On Solaris and HP-UX, most pthread functions exist also in libc.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
179 # Therefore pthread_in_use() needs to actually try to create a
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
180 # thread: pthread_create from libc will fail, whereas
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
181 # pthread_create will actually create a thread.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
182 case "$host_os" in
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
183 solaris* | hpux*)
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
184 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
185 [Define if the pthread_in_use() detection is hard.])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
186 esac
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
187 ])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
188 else
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
189 # Some library is needed. Try libpthread and libc_r.
10979
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
190 AC_CHECK_LIB([pthread], [pthread_kill],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
191 [gl_have_pthread=yes
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
192 LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
193 LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
194 if test -z "$gl_have_pthread"; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
195 # For FreeBSD 4.
10979
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
196 AC_CHECK_LIB([c_r], [pthread_kill],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
197 [gl_have_pthread=yes
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
198 LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
199 LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
200 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
201 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
202 if test -n "$gl_have_pthread"; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
203 gl_threads_api=posix
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
204 AC_DEFINE([USE_POSIX_THREADS], [1],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
205 [Define if the POSIX multithreading library can be used.])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
206 if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
13178
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
207 if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
208 AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
209 [Define if references to the POSIX multithreading library should be made weak.])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
210 LIBTHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
211 LTLIBTHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
212 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
213 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
214 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
215 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
216 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
217 if test -z "$gl_have_pthread"; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
218 if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
219 gl_have_solaristhread=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
220 gl_save_LIBS="$LIBS"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
221 LIBS="$LIBS -lthread"
13578
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
222 AC_LINK_IFELSE(
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
223 [AC_LANG_PROGRAM(
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
224 [[
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
225 #include <thread.h>
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
226 #include <synch.h>
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
227 ]],
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
228 [[thr_self();]])],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
229 [gl_have_solaristhread=yes])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
230 LIBS="$gl_save_LIBS"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
231 if test -n "$gl_have_solaristhread"; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
232 gl_threads_api=solaris
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
233 LIBTHREAD=-lthread
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
234 LTLIBTHREAD=-lthread
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
235 LIBMULTITHREAD="$LIBTHREAD"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
236 LTLIBMULTITHREAD="$LTLIBTHREAD"
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
237 AC_DEFINE([USE_SOLARIS_THREADS], [1],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
238 [Define if the old Solaris multithreading library can be used.])
13178
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
239 if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
240 AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
241 [Define if references to the old Solaris multithreading library should be made weak.])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
242 LIBTHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
243 LTLIBTHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
244 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
245 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
246 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
247 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
248 if test "$gl_use_threads" = pth; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
249 gl_save_CPPFLAGS="$CPPFLAGS"
10979
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
250 AC_LIB_LINKFLAGS([pth])
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
251 gl_have_pth=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
252 gl_save_LIBS="$LIBS"
13762
14f73b4573a7 threadlib: Make option --with-libpth-prefix work.
Bruno Haible <bruno@clisp.org>
parents: 13723
diff changeset
253 LIBS="$LIBS $LIBPTH"
13578
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
254 AC_LINK_IFELSE(
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
255 [AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])],
1e26f884665f Modernize AC_TRY_LINK invocations.
Bruno Haible <bruno@clisp.org>
parents: 13178
diff changeset
256 [gl_have_pth=yes])
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
257 LIBS="$gl_save_LIBS"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
258 if test -n "$gl_have_pth"; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
259 gl_threads_api=pth
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
260 LIBTHREAD="$LIBPTH"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
261 LTLIBTHREAD="$LTLIBPTH"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
262 LIBMULTITHREAD="$LIBTHREAD"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
263 LTLIBMULTITHREAD="$LTLIBTHREAD"
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
264 AC_DEFINE([USE_PTH_THREADS], [1],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
265 [Define if the GNU Pth multithreading library can be used.])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
266 if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
13178
ecc50e8d5ed7 Make the multithread modules work on Cygwin 1.7.2.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
267 if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
268 AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
269 [Define if references to the GNU Pth multithreading library should be made weak.])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
270 LIBTHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
271 LTLIBTHREAD=
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
272 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
273 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
274 else
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
275 CPPFLAGS="$gl_save_CPPFLAGS"
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
276 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
277 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
278 if test -z "$gl_have_pthread"; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
279 if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
280 if { case "$host_os" in
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
281 mingw*) true;;
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
282 *) false;;
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
283 esac
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
284 }; then
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
285 gl_threads_api=win32
11007
f6cba5a556ce many *.m4 files: improve m4 quoting
Jim Meyering <meyering@redhat.com>
parents: 10979
diff changeset
286 AC_DEFINE([USE_WIN32_THREADS], [1],
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
287 [Define if the Win32 multithreading API can be used.])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
288 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
289 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
290 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
291 fi
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
292 AC_MSG_CHECKING([for multithread API to use])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
293 AC_MSG_RESULT([$gl_threads_api])
10979
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
294 AC_SUBST([LIBTHREAD])
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
295 AC_SUBST([LTLIBTHREAD])
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
296 AC_SUBST([LIBMULTITHREAD])
03e819eea554 More systematic m4 argument quoting.
Bruno Haible <bruno@clisp.org>
parents: 10320
diff changeset
297 AC_SUBST([LTLIBMULTITHREAD])
10320
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
298 ])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
299
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
300 AC_DEFUN([gl_THREADLIB],
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
301 [
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
302 AC_REQUIRE([gl_THREADLIB_EARLY])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
303 AC_REQUIRE([gl_THREADLIB_BODY])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
304 ])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
305
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
306
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
307 dnl gl_DISABLE_THREADS
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
308 dnl ------------------
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
309 dnl Sets the gl_THREADLIB default so that threads are not used by default.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
310 dnl The user can still override it at installation time, by using the
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
311 dnl configure option '--enable-threads'.
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
312
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
313 AC_DEFUN([gl_DISABLE_THREADS], [
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
314 m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
315 ])
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
316
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
317
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
318 dnl Survey of platforms:
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
319 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
320 dnl Platform Available Compiler Supports test-lock
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
321 dnl flavours option weak result
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
322 dnl --------------- --------- --------- -------- ---------
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
323 dnl Linux 2.4/glibc posix -lpthread Y OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
324 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
325 dnl GNU Hurd/glibc posix
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
326 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
327 dnl FreeBSD 5.3 posix -lc_r Y
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
328 dnl posix -lkse ? Y
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
329 dnl posix -lpthread ? Y
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
330 dnl posix -lthr Y
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
331 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
332 dnl FreeBSD 5.2 posix -lc_r Y
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
333 dnl posix -lkse Y
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
334 dnl posix -lthr Y
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
335 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
336 dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
337 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
338 dnl NetBSD 1.6 --
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
339 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
340 dnl OpenBSD 3.4 posix -lpthread Y OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
341 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
342 dnl MacOS X 10.[123] posix -lpthread Y OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
343 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
344 dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
345 dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
346 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
347 dnl HP-UX 11 posix -lpthread N (cc) OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
348 dnl Y (gcc)
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
349 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
350 dnl IRIX 6.5 posix -lpthread Y 0.5
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
351 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
352 dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
353 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
354 dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
355 dnl -lpthread (gcc) Y
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
356 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
357 dnl Cygwin posix -lpthread Y OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
358 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
359 dnl Any of the above pth -lpth 0.0
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
360 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
361 dnl Mingw win32 N OK
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
362 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
363 dnl BeOS 5 --
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
364 dnl
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
365 dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
366 dnl turned off:
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
367 dnl OK if all three tests terminate OK,
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
368 dnl 0.5 if the first test terminates OK but the second one loops endlessly,
984531f1792d New module 'threadlib'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
369 dnl 0.0 if the first test already loops endlessly.