From 732f2fda8263a0cfa964474c8601005195107ef1 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sat, 10 Jul 2004 01:24:29 +0000 Subject: [PATCH] Add --enable-thread-safety-force to force a thread compile even if the OS thread tests fail. --- configure | 76 +++++++++++++++++++++++++++++++++++++++++++++------- configure.in | 32 +++++++++++++++++----- 2 files changed, 91 insertions(+), 17 deletions(-) diff --git a/configure b/configure index bbc28a5e41..c7623adb89 100755 --- a/configure +++ b/configure @@ -846,6 +846,7 @@ Optional Features: --enable-depend turn on automatic dependency tracking --enable-cassert enable assertion checks (for debugging) --enable-thread-safety make client libraries thread-safe + --enable-thread-safety-force force thread-safety in spite of thread test failure --disable-largefile omit support for large files Optional Packages: @@ -2937,11 +2938,7 @@ if test "${enable_thread_safety+set}" = set; then case $enableval in yes) - -cat >>confdefs.h <<\_ACEOF -#define ENABLE_THREAD_SAFETY 1 -_ACEOF - + : ;; no) : @@ -2958,6 +2955,40 @@ else fi; + + +# Check whether --enable-thread-safety-force or --disable-thread-safety-force was given. +if test "${enable_thread_safety_force+set}" = set; then + enableval="$enable_thread_safety_force" + + case $enableval in + yes) + : + ;; + no) + : + ;; + *) + { { echo "$as_me:$LINENO: error: no argument expected for --enable-thread-safety-force option" >&5 +echo "$as_me: error: no argument expected for --enable-thread-safety-force option" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + +else + enable_thread_safety_force=no + +fi; + +if test "$enable_thread_safety" = yes -o + test "$enable_thread_safety_force" = yes; then + enable_thread_safety="yes" # for 'force' + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_THREAD_SAFETY 1 +_ACEOF + +fi echo "$as_me:$LINENO: result: $enable_thread_safety" >&5 echo "${ECHO_T}$enable_thread_safety" >&6 @@ -17941,7 +17972,20 @@ done # We have to run the thread test near the end so we have all our symbols # defined. Cross compiling throws a warning. # -if test "$enable_thread_safety" = yes; then +if test "$enable_thread_safety_force" = yes; then + { echo "$as_me:$LINENO: WARNING: +*** Skipping thread test program. --enable-thread-safety-force was used. +*** Run the program in src/tools/thread on the your machine and add +proper locking function calls to your applications to guarantee thread +safety. +" >&5 +echo "$as_me: WARNING: +*** Skipping thread test program. --enable-thread-safety-force was used. +*** Run the program in src/tools/thread on the your machine and add +proper locking function calls to your applications to guarantee thread +safety. +" >&2;} +elif test "$enable_thread_safety" = yes; then echo "$as_me:$LINENO: checking thread safety of required library functions" >&5 echo $ECHO_N "checking thread safety of required library functions... $ECHO_C" >&6 @@ -17954,11 +17998,11 @@ if test "$cross_compiling" = yes; then echo "${ECHO_T}maybe" >&6 { echo "$as_me:$LINENO: WARNING: *** Skipping thread test program because of cross-compile build. -*** Run the program in src/tools/thread on the target matchine. +*** Run the program in src/tools/thread on the target machine. " >&5 echo "$as_me: WARNING: *** Skipping thread test program because of cross-compile build. -*** Run the program in src/tools/thread on the target matchine. +*** Run the program in src/tools/thread on the target machine. " >&2;} else cat >conftest.$ac_ext <<_ACEOF @@ -17988,10 +18032,22 @@ echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 { { echo "$as_me:$LINENO: error: *** Thread test program failed. Your platform is not thread-safe. -*** Check the file 'config.log'for the exact reason." >&5 +*** Check the file 'config.log'for the exact reason. +*** +*** You can use the configure option --enable-thread-safety-force +*** to force threads to be enabled. However, you must then run +*** the program in src/tools/thread and add locking function calls +*** to your applications to guarantee thread safety. +" >&5 echo "$as_me: error: *** Thread test program failed. Your platform is not thread-safe. -*** Check the file 'config.log'for the exact reason." >&2;} +*** Check the file 'config.log'for the exact reason. +*** +*** You can use the configure option --enable-thread-safety-force +*** to force threads to be enabled. However, you must then run +*** the program in src/tools/thread and add locking function calls +*** to your applications to guarantee thread safety. +" >&2;} { (exit 1); exit 1; }; } fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext diff --git a/configure.in b/configure.in index 32379becc2..bfb6dd0635 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $PostgreSQL: pgsql/configure.in,v 1.365 2004/06/24 18:55:18 tgl Exp $ +dnl $PostgreSQL: pgsql/configure.in,v 1.366 2004/07/10 01:24:29 momjian Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -358,9 +358,14 @@ IFS=$ac_save_IFS # Enable thread-safe client libraries # AC_MSG_CHECKING([allow thread-safe client libraries]) -PGAC_ARG_BOOL(enable, thread-safety, no, [ --enable-thread-safety make client libraries thread-safe], - [AC_DEFINE([ENABLE_THREAD_SAFETY], 1, - [Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)])]) +PGAC_ARG_BOOL(enable, thread-safety, no, [ --enable-thread-safety make client libraries thread-safe]) +PGAC_ARG_BOOL(enable, thread-safety-force, no, [ --enable-thread-safety-force force thread-safety in spite of thread test failure]) +if test "$enable_thread_safety" = yes -o + test "$enable_thread_safety_force" = yes; then + enable_thread_safety="yes" # for 'force' + AC_DEFINE([ENABLE_THREAD_SAFETY], 1, + [Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)]) +fi AC_MSG_RESULT([$enable_thread_safety]) AC_SUBST(enable_thread_safety) @@ -1184,7 +1189,14 @@ AC_CHECK_PROGS(SGMLSPL, sgmlspl) # We have to run the thread test near the end so we have all our symbols # defined. Cross compiling throws a warning. # -if test "$enable_thread_safety" = yes; then +if test "$enable_thread_safety_force" = yes; then + AC_MSG_WARN([ +*** Skipping thread test program. --enable-thread-safety-force was used. +*** Run the program in src/tools/thread on the your machine and add +proper locking function calls to your applications to guarantee thread +safety. +]) +elif test "$enable_thread_safety" = yes; then AC_MSG_CHECKING([thread safety of required library functions]) _CFLAGS="$CFLAGS" @@ -1196,11 +1208,17 @@ AC_TRY_RUN([#include "$srcdir/src/tools/thread/thread_test.c"], [AC_MSG_RESULT(no) AC_MSG_ERROR([ *** Thread test program failed. Your platform is not thread-safe. -*** Check the file 'config.log'for the exact reason.])], +*** Check the file 'config.log'for the exact reason. +*** +*** You can use the configure option --enable-thread-safety-force +*** to force threads to be enabled. However, you must then run +*** the program in src/tools/thread and add locking function calls +*** to your applications to guarantee thread safety. +])], [AC_MSG_RESULT(maybe) AC_MSG_WARN([ *** Skipping thread test program because of cross-compile build. -*** Run the program in src/tools/thread on the target matchine. +*** Run the program in src/tools/thread on the target machine. ])]) CFLAGS="$_CFLAGS" LIBS="$_LIBS" -- 2.40.0