changeset 10217:e2d27ec15b00

New macro gl_DISABLE_THREADS.
author Bruno Haible <bruno@clisp.org>
date Wed, 18 Jun 2008 02:31:53 +0200
parents 5af483b0ae69
children 76d5751f4471
files ChangeLog m4/lock.m4
diffstat 2 files changed, 36 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-06-17  Bruno Haible  <bruno@clisp.org>
+
+	New macro gl_DISABLE_THREADS.
+	* m4/lock.m4 (gl_LOCK_EARLY_BODY): Use value gl_use_threads_default
+	if the user did not pass --enable-threads or --disable-threads option.
+	(gl_DISABLE_THREADS): New macro.
+	Reported by Eric Blake <ebb9@byu.net>.
+
 2008-06-17  Bruno Haible  <bruno@clisp.org>
 
 	* lib/tls.h (gl_tls_key_init): Evaluate the destructor argument also
--- a/m4/lock.m4
+++ b/m4/lock.m4
@@ -1,11 +1,13 @@
-# lock.m4 serial 7 (gettext-0.17)
-dnl Copyright (C) 2005-2007 Free Software Foundation, Inc.
+# lock.m4 serial 8 (gettext-0.18)
+dnl Copyright (C) 2005-2008 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
+dnl gl_LOCK
+dnl -------
 dnl Tests for a multithreading library to be used.
 dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
 dnl USE_PTH_THREADS, USE_WIN32_THREADS
@@ -42,17 +44,22 @@
     [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
     [AC_REQUIRE([AC_GNU_SOURCE])])
   dnl Check for multithreading.
+  m4_divert_text([DEFAULTS], [gl_use_threads_default=])
   AC_ARG_ENABLE(threads,
 AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
 AC_HELP_STRING([--disable-threads], [build without multithread safety]),
     [gl_use_threads=$enableval],
-    [case "$host_os" in
-       dnl Disable multithreading by default on OSF/1, because it interferes
-       dnl with fork()/exec(): When msgexec is linked with -lpthread, its child
-       dnl process gets an endless segmentation fault inside execvp().
-       osf*) gl_use_threads=no ;;
-       *)    gl_use_threads=yes ;;
-     esac
+    [if test -n "$gl_use_threads_default"; then
+       gl_use_threads="$gl_use_threads_default"
+     else
+       case "$host_os" in
+         dnl Disable multithreading by default on OSF/1, because it interferes
+         dnl with fork()/exec(): When msgexec is linked with -lpthread, its
+         dnl child process gets an endless segmentation fault inside execvp().
+         osf*) gl_use_threads=no ;;
+         *)    gl_use_threads=yes ;;
+       esac
+     fi
     ])
   if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
     # For using <pthread.h>:
@@ -262,6 +269,18 @@
   AC_REQUIRE([AC_C_INLINE])
 ])
 
+
+dnl gl_DISABLE_THREADS
+dnl ------------------
+dnl Sets the gl_LOCK default so that threads are not used by default.
+dnl The user can still override it at installation time, by using the
+dnl configure option '--enable-threads'.
+
+AC_DEFUN([gl_DISABLE_THREADS], [
+  m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
+])
+
+
 dnl Survey of platforms:
 dnl
 dnl Platform          Available   Compiler    Supports   test-lock