aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2007-02-08 20:46:19 +0000
committerChristian Grothoff <christian@grothoff.org>2007-02-08 20:46:19 +0000
commite6547f7d23ec87ac244e18ce3c65922eb74ee445 (patch)
treeb75c7d6e83a4dbb76335ca130952ee8a6568abad
parent84ddc15a76bea41cfe2f3aabd01262297d5beca2 (diff)
downloadgnunet-gtk-e6547f7d23ec87ac244e18ce3c65922eb74ee445.tar.gz
gnunet-gtk-e6547f7d23ec87ac244e18ce3c65922eb74ee445.zip
gettext update
-rw-r--r--m4/intl.m4259
-rw-r--r--m4/intldir.m419
-rw-r--r--m4/lock.m4311
-rw-r--r--m4/visibility.m452
4 files changed, 641 insertions, 0 deletions
diff --git a/m4/intl.m4 b/m4/intl.m4
new file mode 100644
index 00000000..dcefb118
--- /dev/null
+++ b/m4/intl.m4
@@ -0,0 +1,259 @@
1# intl.m4 serial 3 (gettext-0.16)
2dnl Copyright (C) 1995-2006 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6dnl
7dnl This file can can be used in projects which are not available under
8dnl the GNU General Public License or the GNU Library General Public
9dnl License but which still want to provide support for the GNU gettext
10dnl functionality.
11dnl Please note that the actual code of the GNU gettext library is covered
12dnl by the GNU Library General Public License, and the rest of the GNU
13dnl gettext package package is covered by the GNU General Public License.
14dnl They are *not* in the public domain.
15
16dnl Authors:
17dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
18dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006.
19
20AC_PREREQ(2.52)
21
22dnl Checks for all prerequisites of the intl subdirectory,
23dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
24dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
25AC_DEFUN([AM_INTL_SUBDIR],
26[
27 AC_REQUIRE([AC_PROG_INSTALL])dnl
28 AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
29 AC_REQUIRE([AC_PROG_CC])dnl
30 AC_REQUIRE([AC_CANONICAL_HOST])dnl
31 AC_REQUIRE([gt_GLIBC2])dnl
32 AC_REQUIRE([AC_PROG_RANLIB])dnl
33 AC_REQUIRE([gl_VISIBILITY])dnl
34 AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
35 AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
36 AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl
37 AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
38 AC_REQUIRE([gt_TYPE_WINT_T])dnl
39 AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
40 AC_REQUIRE([gt_TYPE_INTMAX_T])
41 AC_REQUIRE([gt_PRINTF_POSIX])
42 AC_REQUIRE([gl_GLIBC21])dnl
43 AC_REQUIRE([gl_XSIZE])dnl
44 AC_REQUIRE([gt_INTL_MACOSX])dnl
45
46 AC_CHECK_TYPE([ptrdiff_t], ,
47 [AC_DEFINE([ptrdiff_t], [long],
48 [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
49 ])
50 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
51 AC_CHECK_FUNCS([asprintf fwprintf putenv setenv setlocale snprintf wcslen])
52
53 dnl Use the _snprintf function only if it is declared (because on NetBSD it
54 dnl is defined as a weak alias of snprintf; we prefer to use the latter).
55 gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
56 gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
57
58 dnl Use the *_unlocked functions only if they are declared.
59 dnl (because some of them were defined without being declared in Solaris
60 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
61 dnl on Solaris 2.5.1 to run on Solaris 2.6).
62 dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
63 gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
64
65 case $gt_cv_func_printf_posix in
66 *yes) HAVE_POSIX_PRINTF=1 ;;
67 *) HAVE_POSIX_PRINTF=0 ;;
68 esac
69 AC_SUBST([HAVE_POSIX_PRINTF])
70 if test "$ac_cv_func_asprintf" = yes; then
71 HAVE_ASPRINTF=1
72 else
73 HAVE_ASPRINTF=0
74 fi
75 AC_SUBST([HAVE_ASPRINTF])
76 if test "$ac_cv_func_snprintf" = yes; then
77 HAVE_SNPRINTF=1
78 else
79 HAVE_SNPRINTF=0
80 fi
81 AC_SUBST([HAVE_SNPRINTF])
82 if test "$ac_cv_func_wprintf" = yes; then
83 HAVE_WPRINTF=1
84 else
85 HAVE_WPRINTF=0
86 fi
87 AC_SUBST([HAVE_WPRINTF])
88
89 AM_LANGINFO_CODESET
90 gt_LC_MESSAGES
91
92 dnl Compilation on mingw and Cygwin needs special Makefile rules, because
93 dnl 1. when we install a shared library, we must arrange to export
94 dnl auxiliary pointer variables for every exported variable,
95 dnl 2. when we install a shared library and a static library simultaneously,
96 dnl the include file specifies __declspec(dllimport) and therefore we
97 dnl must arrange to define the auxiliary pointer variables for the
98 dnl exported variables _also_ in the static library.
99 if test "$enable_shared" = yes; then
100 case "$host_os" in
101 cygwin*) is_woe32dll=yes ;;
102 *) is_woe32dll=no ;;
103 esac
104 else
105 is_woe32dll=no
106 fi
107 WOE32DLL=$is_woe32dll
108 AC_SUBST([WOE32DLL])
109
110 dnl Rename some macros and functions used for locking.
111 AH_BOTTOM([
112#define __libc_lock_t gl_lock_t
113#define __libc_lock_define gl_lock_define
114#define __libc_lock_define_initialized gl_lock_define_initialized
115#define __libc_lock_init gl_lock_init
116#define __libc_lock_lock gl_lock_lock
117#define __libc_lock_unlock gl_lock_unlock
118#define __libc_lock_recursive_t gl_recursive_lock_t
119#define __libc_lock_define_recursive gl_recursive_lock_define
120#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
121#define __libc_lock_init_recursive gl_recursive_lock_init
122#define __libc_lock_lock_recursive gl_recursive_lock_lock
123#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
124#define glthread_in_use libintl_thread_in_use
125#define glthread_lock_init libintl_lock_init
126#define glthread_lock_lock libintl_lock_lock
127#define glthread_lock_unlock libintl_lock_unlock
128#define glthread_lock_destroy libintl_lock_destroy
129#define glthread_rwlock_init libintl_rwlock_init
130#define glthread_rwlock_rdlock libintl_rwlock_rdlock
131#define glthread_rwlock_wrlock libintl_rwlock_wrlock
132#define glthread_rwlock_unlock libintl_rwlock_unlock
133#define glthread_rwlock_destroy libintl_rwlock_destroy
134#define glthread_recursive_lock_init libintl_recursive_lock_init
135#define glthread_recursive_lock_lock libintl_recursive_lock_lock
136#define glthread_recursive_lock_unlock libintl_recursive_lock_unlock
137#define glthread_recursive_lock_destroy libintl_recursive_lock_destroy
138#define glthread_once libintl_once
139#define glthread_once_call libintl_once_call
140#define glthread_once_singlethreaded libintl_once_singlethreaded
141])
142])
143
144
145dnl Checks for the core files of the intl subdirectory:
146dnl dcigettext.c
147dnl eval-plural.h
148dnl explodename.c
149dnl finddomain.c
150dnl gettextP.h
151dnl gmo.h
152dnl hash-string.h hash-string.c
153dnl l10nflist.c
154dnl libgnuintl.h.in (except the *printf stuff)
155dnl loadinfo.h
156dnl loadmsgcat.c
157dnl localealias.c
158dnl log.c
159dnl plural-exp.h plural-exp.c
160dnl plural.y
161dnl Used by libglocale.
162AC_DEFUN([gt_INTL_SUBDIR_CORE],
163[
164 AC_REQUIRE([AC_C_INLINE])dnl
165 AC_REQUIRE([AC_TYPE_SIZE_T])dnl
166 AC_REQUIRE([gl_AC_HEADER_STDINT_H])
167 AC_REQUIRE([AC_FUNC_ALLOCA])dnl
168 AC_REQUIRE([AC_FUNC_MMAP])dnl
169 AC_REQUIRE([gt_INTDIV0])dnl
170 AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
171 AC_REQUIRE([gt_INTTYPES_PRI])dnl
172 AC_REQUIRE([gl_LOCK])dnl
173
174 AC_TRY_LINK(
175 [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
176 [],
177 [AC_DEFINE([HAVE_BUILTIN_EXPECT], 1,
178 [Define to 1 if the compiler understands __builtin_expect.])])
179
180 AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
181 AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
182 stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \
183 argz_next __fsetlocking])
184
185 dnl Use the *_unlocked functions only if they are declared.
186 dnl (because some of them were defined without being declared in Solaris
187 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
188 dnl on Solaris 2.5.1 to run on Solaris 2.6).
189 dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
190 gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>])
191 gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>])
192
193 AM_ICONV
194
195 dnl glibc >= 2.4 has a NL_LOCALE_NAME macro when _GNU_SOURCE is defined,
196 dnl and a _NL_LOCALE_NAME macro always.
197 AC_CACHE_CHECK([for NL_LOCALE_NAME macro], gt_cv_nl_locale_name,
198 [AC_TRY_LINK([#include <langinfo.h>
199#include <locale.h>],
200 [char* cs = nl_langinfo(_NL_LOCALE_NAME(LC_MESSAGES));],
201 gt_cv_nl_locale_name=yes,
202 gt_cv_nl_locale_name=no)
203 ])
204 if test $gt_cv_nl_locale_name = yes; then
205 AC_DEFINE(HAVE_NL_LOCALE_NAME, 1,
206 [Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if _GNU_SOURCE is defined.])
207 fi
208
209 dnl intl/plural.c is generated from intl/plural.y. It requires bison,
210 dnl because plural.y uses bison specific features. It requires at least
211 dnl bison-1.26 because earlier versions generate a plural.c that doesn't
212 dnl compile.
213 dnl bison is only needed for the maintainer (who touches plural.y). But in
214 dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
215 dnl the rule in general Makefile. Now, some people carelessly touch the
216 dnl files or have a broken "make" program, hence the plural.c rule will
217 dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
218 dnl present or too old.
219 AC_CHECK_PROGS([INTLBISON], [bison])
220 if test -z "$INTLBISON"; then
221 ac_verc_fail=yes
222 else
223 dnl Found it, now check the version.
224 AC_MSG_CHECKING([version of bison])
225changequote(<<,>>)dnl
226 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
227 case $ac_prog_version in
228 '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
229 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
230changequote([,])dnl
231 ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
232 *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
233 esac
234 AC_MSG_RESULT([$ac_prog_version])
235 fi
236 if test $ac_verc_fail = yes; then
237 INTLBISON=:
238 fi
239])
240
241
242dnl gt_CHECK_DECL(FUNC, INCLUDES)
243dnl Check whether a function is declared.
244AC_DEFUN([gt_CHECK_DECL],
245[
246 AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1,
247 [AC_TRY_COMPILE([$2], [
248#ifndef $1
249 char *p = (char *) $1;
250#endif
251], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
252 if test $ac_cv_have_decl_$1 = yes; then
253 gt_value=1
254 else
255 gt_value=0
256 fi
257 AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
258 [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
259])
diff --git a/m4/intldir.m4 b/m4/intldir.m4
new file mode 100644
index 00000000..7a28843f
--- /dev/null
+++ b/m4/intldir.m4
@@ -0,0 +1,19 @@
1# intldir.m4 serial 1 (gettext-0.16)
2dnl Copyright (C) 2006 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6dnl
7dnl This file can can be used in projects which are not available under
8dnl the GNU General Public License or the GNU Library General Public
9dnl License but which still want to provide support for the GNU gettext
10dnl functionality.
11dnl Please note that the actual code of the GNU gettext library is covered
12dnl by the GNU Library General Public License, and the rest of the GNU
13dnl gettext package package is covered by the GNU General Public License.
14dnl They are *not* in the public domain.
15
16AC_PREREQ(2.52)
17
18dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
19AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])
diff --git a/m4/lock.m4 b/m4/lock.m4
new file mode 100644
index 00000000..0224f2ff
--- /dev/null
+++ b/m4/lock.m4
@@ -0,0 +1,311 @@
1# lock.m4 serial 6 (gettext-0.16)
2dnl Copyright (C) 2005-2006 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7dnl From Bruno Haible.
8
9dnl Tests for a multithreading library to be used.
10dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
11dnl USE_PTH_THREADS, USE_WIN32_THREADS
12dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
13dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
14dnl libtool).
15dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
16dnl programs that really need multithread functionality. The difference
17dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
18dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
19dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
20dnl multithread-safe programs.
21
22AC_DEFUN([gl_LOCK_EARLY],
23[
24 AC_REQUIRE([gl_LOCK_EARLY_BODY])
25])
26
27dnl The guts of gl_LOCK_EARLY. Needs to be expanded only once.
28
29AC_DEFUN([gl_LOCK_EARLY_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,
41AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
42AC_HELP_STRING([--disable-threads], [build without multithread safety]),
43 [gl_use_threads=$enableval],
44 [case "$host_os" in
45 dnl Disable multithreading by default on OSF/1, because it interferes
46 dnl with fork()/exec(): When msgexec is linked with -lpthread, its child
47 dnl process gets an endless segmentation fault inside execvp().
48 osf*) gl_use_threads=no ;;
49 *) gl_use_threads=yes ;;
50 esac
51 ])
52 if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
53 # For using <pthread.h>:
54 case "$host_os" in
55 osf*)
56 # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
57 # groks <pthread.h>. cc also understands the flag -pthread, but
58 # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
59 # 2. putting a flag into CPPFLAGS that has an effect on the linker
60 # causes the AC_TRY_LINK test below to succeed unexpectedly,
61 # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
62 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
63 ;;
64 esac
65 # Some systems optimize for single-threaded programs by default, and
66 # need special flags to disable these optimizations. For example, the
67 # definition of 'errno' in <errno.h>.
68 case "$host_os" in
69 aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
70 solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
71 esac
72 fi
73])
74
75dnl The guts of gl_LOCK. Needs to be expanded only once.
76
77AC_DEFUN([gl_LOCK_BODY],
78[
79 AC_REQUIRE([gl_LOCK_EARLY_BODY])
80 gl_threads_api=none
81 LIBTHREAD=
82 LTLIBTHREAD=
83 LIBMULTITHREAD=
84 LTLIBMULTITHREAD=
85 if test "$gl_use_threads" != no; then
86 dnl Check whether the compiler and linker support weak declarations.
87 AC_MSG_CHECKING([whether imported symbols can be declared weak])
88 gl_have_weak=no
89 AC_TRY_LINK([extern void xyzzy ();
90#pragma weak xyzzy], [xyzzy();], [gl_have_weak=yes])
91 AC_MSG_RESULT([$gl_have_weak])
92 if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
93 # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
94 # it groks <pthread.h>. It's added above, in gl_LOCK_EARLY_BODY.
95 AC_CHECK_HEADER(pthread.h, gl_have_pthread_h=yes, gl_have_pthread_h=no)
96 if test "$gl_have_pthread_h" = yes; then
97 # Other possible tests:
98 # -lpthreads (FSU threads, PCthreads)
99 # -lgthreads
100 gl_have_pthread=
101 # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
102 # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
103 # the second one only in libpthread, and lock.c needs it.
104 AC_TRY_LINK([#include <pthread.h>],
105 [pthread_mutex_lock((pthread_mutex_t*)0);
106 pthread_mutexattr_init((pthread_mutexattr_t*)0);],
107 [gl_have_pthread=yes])
108 # Test for libpthread by looking for pthread_kill. (Not pthread_self,
109 # since it is defined as a macro on OSF/1.)
110 if test -n "$gl_have_pthread"; then
111 # The program links fine without libpthread. But it may actually
112 # need to link with libpthread in order to create multiple threads.
113 AC_CHECK_LIB(pthread, pthread_kill,
114 [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
115 # On Solaris and HP-UX, most pthread functions exist also in libc.
116 # Therefore pthread_in_use() needs to actually try to create a
117 # thread: pthread_create from libc will fail, whereas
118 # pthread_create will actually create a thread.
119 case "$host_os" in
120 solaris* | hpux*)
121 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], 1,
122 [Define if the pthread_in_use() detection is hard.])
123 esac
124 ])
125 else
126 # Some library is needed. Try libpthread and libc_r.
127 AC_CHECK_LIB(pthread, pthread_kill,
128 [gl_have_pthread=yes
129 LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
130 LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
131 if test -z "$gl_have_pthread"; then
132 # For FreeBSD 4.
133 AC_CHECK_LIB(c_r, pthread_kill,
134 [gl_have_pthread=yes
135 LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
136 LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
137 fi
138 fi
139 if test -n "$gl_have_pthread"; then
140 gl_threads_api=posix
141 AC_DEFINE([USE_POSIX_THREADS], 1,
142 [Define if the POSIX multithreading library can be used.])
143 if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
144 if test $gl_have_weak = yes; then
145 AC_DEFINE([USE_POSIX_THREADS_WEAK], 1,
146 [Define if references to the POSIX multithreading library should be made weak.])
147 LIBTHREAD=
148 LTLIBTHREAD=
149 fi
150 fi
151 # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
152 # pthread_rwlock_* functions.
153 AC_CHECK_TYPE([pthread_rwlock_t],
154 [AC_DEFINE([HAVE_PTHREAD_RWLOCK], 1,
155 [Define if the POSIX multithreading library has read/write locks.])],
156 [],
157 [#include <pthread.h>])
158 # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
159 AC_TRY_COMPILE([#include <pthread.h>],
160 [#if __FreeBSD__ == 4
161error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
162#else
163int x = (int)PTHREAD_MUTEX_RECURSIVE;
164return !x;
165#endif],
166 [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], 1,
167 [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
168 fi
169 fi
170 fi
171 if test -z "$gl_have_pthread"; then
172 if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
173 gl_have_solaristhread=
174 gl_save_LIBS="$LIBS"
175 LIBS="$LIBS -lthread"
176 AC_TRY_LINK([#include <thread.h>
177#include <synch.h>],
178 [thr_self();],
179 [gl_have_solaristhread=yes])
180 LIBS="$gl_save_LIBS"
181 if test -n "$gl_have_solaristhread"; then
182 gl_threads_api=solaris
183 LIBTHREAD=-lthread
184 LTLIBTHREAD=-lthread
185 LIBMULTITHREAD="$LIBTHREAD"
186 LTLIBMULTITHREAD="$LTLIBTHREAD"
187 AC_DEFINE([USE_SOLARIS_THREADS], 1,
188 [Define if the old Solaris multithreading library can be used.])
189 if test $gl_have_weak = yes; then
190 AC_DEFINE([USE_SOLARIS_THREADS_WEAK], 1,
191 [Define if references to the old Solaris multithreading library should be made weak.])
192 LIBTHREAD=
193 LTLIBTHREAD=
194 fi
195 fi
196 fi
197 fi
198 if test "$gl_use_threads" = pth; then
199 gl_save_CPPFLAGS="$CPPFLAGS"
200 AC_LIB_LINKFLAGS(pth)
201 gl_have_pth=
202 gl_save_LIBS="$LIBS"
203 LIBS="$LIBS -lpth"
204 AC_TRY_LINK([#include <pth.h>], [pth_self();], gl_have_pth=yes)
205 LIBS="$gl_save_LIBS"
206 if test -n "$gl_have_pth"; then
207 gl_threads_api=pth
208 LIBTHREAD="$LIBPTH"
209 LTLIBTHREAD="$LTLIBPTH"
210 LIBMULTITHREAD="$LIBTHREAD"
211 LTLIBMULTITHREAD="$LTLIBTHREAD"
212 AC_DEFINE([USE_PTH_THREADS], 1,
213 [Define if the GNU Pth multithreading library can be used.])
214 if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
215 if test $gl_have_weak = yes; then
216 AC_DEFINE([USE_PTH_THREADS_WEAK], 1,
217 [Define if references to the GNU Pth multithreading library should be made weak.])
218 LIBTHREAD=
219 LTLIBTHREAD=
220 fi
221 fi
222 else
223 CPPFLAGS="$gl_save_CPPFLAGS"
224 fi
225 fi
226 if test -z "$gl_have_pthread"; then
227 if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
228 if { case "$host_os" in
229 mingw*) true;;
230 *) false;;
231 esac
232 }; then
233 gl_threads_api=win32
234 AC_DEFINE([USE_WIN32_THREADS], 1,
235 [Define if the Win32 multithreading API can be used.])
236 fi
237 fi
238 fi
239 fi
240 AC_MSG_CHECKING([for multithread API to use])
241 AC_MSG_RESULT([$gl_threads_api])
242 AC_SUBST(LIBTHREAD)
243 AC_SUBST(LTLIBTHREAD)
244 AC_SUBST(LIBMULTITHREAD)
245 AC_SUBST(LTLIBMULTITHREAD)
246])
247
248AC_DEFUN([gl_LOCK],
249[
250 AC_REQUIRE([gl_LOCK_EARLY])
251 AC_REQUIRE([gl_LOCK_BODY])
252 gl_PREREQ_LOCK
253])
254
255# Prerequisites of lib/lock.c.
256AC_DEFUN([gl_PREREQ_LOCK], [
257 AC_REQUIRE([AC_C_INLINE])
258])
259
260dnl Survey of platforms:
261dnl
262dnl Platform Available Compiler Supports test-lock
263dnl flavours option weak result
264dnl --------------- --------- --------- -------- ---------
265dnl Linux 2.4/glibc posix -lpthread Y OK
266dnl
267dnl GNU Hurd/glibc posix
268dnl
269dnl FreeBSD 5.3 posix -lc_r Y
270dnl posix -lkse ? Y
271dnl posix -lpthread ? Y
272dnl posix -lthr Y
273dnl
274dnl FreeBSD 5.2 posix -lc_r Y
275dnl posix -lkse Y
276dnl posix -lthr Y
277dnl
278dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
279dnl
280dnl NetBSD 1.6 --
281dnl
282dnl OpenBSD 3.4 posix -lpthread Y OK
283dnl
284dnl MacOS X 10.[123] posix -lpthread Y OK
285dnl
286dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
287dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
288dnl
289dnl HP-UX 11 posix -lpthread N (cc) OK
290dnl Y (gcc)
291dnl
292dnl IRIX 6.5 posix -lpthread Y 0.5
293dnl
294dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
295dnl
296dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
297dnl -lpthread (gcc) Y
298dnl
299dnl Cygwin posix -lpthread Y OK
300dnl
301dnl Any of the above pth -lpth 0.0
302dnl
303dnl Mingw win32 N OK
304dnl
305dnl BeOS 5 --
306dnl
307dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
308dnl turned off:
309dnl OK if all three tests terminate OK,
310dnl 0.5 if the first test terminates OK but the second one loops endlessly,
311dnl 0.0 if the first test already loops endlessly.
diff --git a/m4/visibility.m4 b/m4/visibility.m4
new file mode 100644
index 00000000..2ff6330a
--- /dev/null
+++ b/m4/visibility.m4
@@ -0,0 +1,52 @@
1# visibility.m4 serial 1 (gettext-0.15)
2dnl Copyright (C) 2005 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7dnl From Bruno Haible.
8
9dnl Tests whether the compiler supports the command-line option
10dnl -fvisibility=hidden and the function and variable attributes
11dnl __attribute__((__visibility__("hidden"))) and
12dnl __attribute__((__visibility__("default"))).
13dnl Does *not* test for __visibility__("protected") - which has tricky
14dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
15dnl MacOS X.
16dnl Does *not* test for __visibility__("internal") - which has processor
17dnl dependent semantics.
18dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
19dnl "really only recommended for legacy code".
20dnl Set the variable CFLAG_VISIBILITY.
21dnl Defines and sets the variable HAVE_VISIBILITY.
22
23AC_DEFUN([gl_VISIBILITY],
24[
25 AC_REQUIRE([AC_PROG_CC])
26 CFLAG_VISIBILITY=
27 HAVE_VISIBILITY=0
28 if test -n "$GCC"; then
29 AC_MSG_CHECKING([for simple visibility declarations])
30 AC_CACHE_VAL(gl_cv_cc_visibility, [
31 gl_save_CFLAGS="$CFLAGS"
32 CFLAGS="$CFLAGS -fvisibility=hidden"
33 AC_TRY_COMPILE(
34 [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
35 extern __attribute__((__visibility__("default"))) int exportedvar;
36 extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
37 extern __attribute__((__visibility__("default"))) int exportedfunc (void);],
38 [],
39 gl_cv_cc_visibility=yes,
40 gl_cv_cc_visibility=no)
41 CFLAGS="$gl_save_CFLAGS"])
42 AC_MSG_RESULT([$gl_cv_cc_visibility])
43 if test $gl_cv_cc_visibility = yes; then
44 CFLAG_VISIBILITY="-fvisibility=hidden"
45 HAVE_VISIBILITY=1
46 fi
47 fi
48 AC_SUBST([CFLAG_VISIBILITY])
49 AC_SUBST([HAVE_VISIBILITY])
50 AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
51 [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
52])