Commit 06e3ec7a authored by Bruce Momjian's avatar Bruce Momjian

Implement compiler #error if spinlock code not found, add configure flag

to bypass the error, --without-spinlocks.
parent 69a46e9c
...@@ -869,6 +869,7 @@ Optional Packages: ...@@ -869,6 +869,7 @@ Optional Packages:
--with-rendezvous build with Rendezvous support --with-rendezvous build with Rendezvous support
--with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl] --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]
--without-readline do not use Readline --without-readline do not use Readline
--without-spinlocks do not use Spinlocks
--without-zlib do not use Zlib --without-zlib do not use Zlib
--with-gnu-ld assume the C compiler uses GNU ld default=no --with-gnu-ld assume the C compiler uses GNU ld default=no
...@@ -3493,6 +3494,36 @@ else ...@@ -3493,6 +3494,36 @@ else
fi; fi;
#
# Spinlocks
#
# Check whether --with-spinlocks or --without-spinlocks was given.
if test "${with_spinlocks+set}" = set; then
withval="$with_spinlocks"
case $withval in
yes)
:
;;
no)
:
;;
*)
{ { echo "$as_me:$LINENO: error: no argument expected for --with-spinlocks option" >&5
echo "$as_me: error: no argument expected for --with-spinlocks option" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
else
with_spinlocks=yes
fi;
# #
# Zlib # Zlib
# #
...@@ -3523,7 +3554,6 @@ else ...@@ -3523,7 +3554,6 @@ else
fi; fi;
# #
# Elf # Elf
# #
...@@ -6062,6 +6092,19 @@ fi ...@@ -6062,6 +6092,19 @@ fi
fi fi
if test "$with_spinlocks" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_SPINLOCKS 1
_ACEOF
else
{ echo "$as_me:$LINENO: WARNING:
*** Not using spinlocks will cause poor performance." >&5
echo "$as_me: WARNING:
*** Not using spinlocks will cause poor performance." >&2;}
fi
if test "$with_krb4" = yes ; then if test "$with_krb4" = yes ; then
echo "$as_me:$LINENO: checking for des_encrypt in -ldes" >&5 echo "$as_me:$LINENO: checking for des_encrypt in -ldes" >&5
......
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
dnl $Header: /cvsroot/pgsql/configure.in,v 1.286 2003/09/07 16:38:05 momjian Exp $ dnl $Header: /cvsroot/pgsql/configure.in,v 1.287 2003/09/12 16:10:26 momjian Exp $
dnl dnl
dnl Developers, please strive to achieve this order: dnl Developers, please strive to achieve this order:
dnl dnl
...@@ -521,13 +521,18 @@ AC_SUBST(with_openssl) ...@@ -521,13 +521,18 @@ AC_SUBST(with_openssl)
PGAC_ARG_BOOL(with, readline, yes, PGAC_ARG_BOOL(with, readline, yes,
[ --without-readline do not use Readline]) [ --without-readline do not use Readline])
#
# Spinlocks
#
PGAC_ARG_BOOL(with, spinlocks, yes,
[ --without-spinlocks do not use Spinlocks])
# #
# Zlib # Zlib
# #
PGAC_ARG_BOOL(with, zlib, yes, PGAC_ARG_BOOL(with, zlib, yes,
[ --without-zlib do not use Zlib]) [ --without-zlib do not use Zlib])
# #
# Elf # Elf
# #
...@@ -678,6 +683,13 @@ failure. It is possible the compiler isn't looking in the proper directory. ...@@ -678,6 +683,13 @@ failure. It is possible the compiler isn't looking in the proper directory.
Use --without-zlib to disable zlib support.])]) Use --without-zlib to disable zlib support.])])
fi fi
if test "$with_spinlocks" = yes; then
AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.])
else
AC_MSG_WARN([
*** Not using spinlocks will cause poor performance.])
fi
if test "$with_krb4" = yes ; then if test "$with_krb4" = yes ; then
AC_CHECK_LIB(des, des_encrypt, [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])]) AC_CHECK_LIB(des, des_encrypt, [], [AC_MSG_ERROR([library 'des' is required for Kerberos 4])])
AC_CHECK_LIB(krb, krb_sendauth, [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])]) AC_CHECK_LIB(krb, krb_sendauth, [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])])
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.141 2003/09/11 21:42:20 momjian Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.142 2003/09/12 16:10:26 momjian Exp $ -->
<chapter id="installation"> <chapter id="installation">
<title><![%standalone-include[<productname>PostgreSQL</>]]> <title><![%standalone-include[<productname>PostgreSQL</>]]>
...@@ -899,6 +899,18 @@ JAVACMD=$JAVA_HOME/bin/java ...@@ -899,6 +899,18 @@ JAVACMD=$JAVA_HOME/bin/java
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>--without-spinlocks</option></term>
<listitem>
<para>
Allows source builds to succeed without CPU spinlock support.
Lack of spinlock support will produce poor performance.
This option is to be used only by platforms without
spinlock support.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>--enable-thread-safety</option></term> <term><option>--enable-thread-safety</option></term>
<listitem> <listitem>
......
...@@ -357,6 +357,9 @@ ...@@ -357,6 +357,9 @@
/* Define to 1 if you have the `snprintf' function. */ /* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF #undef HAVE_SNPRINTF
/* Define to 1 if you have spinlocks. */
#undef HAVE_SPINLOCKS
/* Define to 1 if you have the `srandom' function. */ /* Define to 1 if you have the `srandom' function. */
#undef HAVE_SRANDOM #undef HAVE_SRANDOM
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Id: s_lock.h,v 1.112 2003/08/04 02:40:15 momjian Exp $ * $Id: s_lock.h,v 1.113 2003/09/12 16:10:27 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -537,7 +537,11 @@ extern slock_t wc_tas(volatile slock_t *lock); ...@@ -537,7 +537,11 @@ extern slock_t wc_tas(volatile slock_t *lock);
#else /* !HAS_TEST_AND_SET */ #else /* HAS_TEST_AND_SET */
#ifdef HAVE_SPINLOCKS
#error This platform does not support native spinlocks. To continue the compile, rerun configure using --without-spinlocks. However, performance will be poor. Please report this to pgsql-bugs@postgresql.org.
#endif
/* /*
* Fake spinlock implementation using semaphores --- slow and prone * Fake spinlock implementation using semaphores --- slow and prone
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment