dnl Process this file with autoconf to produce a configure script.
-dnl $Header: /cvsroot/pgsql/configure.in,v 1.242 2003/04/06 22:45:22 petere Exp $
+dnl $Header: /cvsroot/pgsql/configure.in,v 1.267 2003/06/23 23:51:59 momjian Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
hpux*) template=hpux ;;
irix*) template=irix5 ;;
linux*) template=linux ;;
- mingw*) template=win ;;
+ mingw*) template=win32 ;;
netbsd*) template=netbsd ;;
nextstep*) template=nextstep ;;
openbsd*) template=openbsd ;;
done
IFS=$ac_save_IFS
+#
+# Enable libpq to be thread-safe
+#
+AC_MSG_CHECKING([allow threaded libpq])
+PGAC_ARG_BOOL(with, threads, no, [ --with-threads allow libpq and ecpg to be thread-safe],
+ [AC_DEFINE([USE_THREADS], 1, [Define to 1 to build libpq and ecpg to be thread-safe. (--with-threads)])])
+
+AC_MSG_RESULT([$with_threads])
+AC_SUBST(with_threads)
#
# Tcl/Tk
AC_SUBST(with_pam)
+#
+# Rendezvous
+#
+AC_MSG_CHECKING([whether to build with Rendezvous support])
+PGAC_ARG_BOOL(with, rendezvous, no,
+ [ --with-rendezvous build with Rendezvous support],
+ [AC_DEFINE([USE_RENDEZVOUS], 1, [Define to 1 to build with Rendezvous support. (--with-rendezvous)])])
+AC_MSG_RESULT([$with_rendezvous])
+AC_SUBST(with_rendezvous)
+
+
#
# OpenSSL
#
[ --without-zlib do not use Zlib])
+#
+# Elf
+#
# Assume system is ELF if it predefines __ELF__ as 1,
# otherwise believe host_os based default.
fi])
AC_SUBST(ELF_SYS)
-
+#
+# Assignments
+#
CPPFLAGS="$CPPFLAGS $INCLUDES"
LDFLAGS="$LDFLAGS $LIBDIRS"
PGAC_CHECK_STRIP
AC_CHECK_PROGS(YACC, ['bison -y'])
+
+if test "$YACC"; then
+ if $YACC --version | sed q | $AWK '{ if ($4 < 1.875) exit 0; else exit 1;}'; then
+ AC_MSG_WARN([
+*** The installed version of Bison is too old. PostgreSQL needs
+*** Bison version 1.875 or later.])
+ fi
+fi
+
if test -z "$YACC"; then
AC_MSG_WARN([
*** Without Bison you will not be able to build PostgreSQL from CVS or
AC_CHECK_LIB(gen, main)
AC_CHECK_LIB(PW, main)
AC_CHECK_LIB(resolv, main)
+AC_CHECK_LIB(wsock32, main)
AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt])
# QNX:
AC_CHECK_LIB(unix, main)
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(krb, krb_sendauth, [], [AC_MSG_ERROR([library 'krb' is required for Kerberos 4])])
+ AC_REPLACE_FUNCS([gethostname])
fi
if test "$with_krb5" = yes ; then
[AC_MSG_ERROR([header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.])])])
fi
+if test "$with_rendezvous" = yes ; then
+ AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [], [AC_MSG_ERROR([header file <DNSServiceDiscovery/DNSServiceDiscovery.h> is required for Rendezvous])])
+fi
+
##
## Types, structures, compiler characteristics
AC_C_STRINGIZE
PGAC_C_SIGNED
AC_C_VOLATILE
-AC_STRUCT_TIMEZONE
+PGAC_C_FUNCNAME_SUPPORT
+PGAC_STRUCT_TIMEZONE
PGAC_UNION_SEMUN
PGAC_STRUCT_SOCKADDR_UN
+PGAC_STRUCT_SOCKADDR_STORAGE
+PGAC_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
PGAC_STRUCT_ADDRINFO
AC_CHECK_TYPES([struct cmsgcred, struct fcred, struct sockcred], [], [],
[#include <sys/param.h>
+#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ucred.h>])
# SunOS doesn't handle negative byte comparisons properly with +/- return
AC_FUNC_MEMCMP
-AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid memmove poll pstat setproctitle setsid sigprocmask sysconf utime utimes waitpid])
+AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid memmove poll pstat setproctitle setsid sigprocmask symlink sysconf utime utimes waitpid])
AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
fi
-AC_REPLACE_FUNCS([fseeko gethostname getopt_long getrusage inet_aton random srandom strcasecmp strdup strerror strtol strtoul])
+AC_REPLACE_FUNCS([crypt fseeko getopt getopt_long getrusage inet_aton random rint srandom strcasecmp strdup strerror strtol strtoul])
# system's version of getaddrinfo(), if any, may be used only if we found
# a definition for struct addrinfo; see notes in src/include/getaddrinfo.h
esac
# Solaris has a very slow qsort in certain cases, so we replace it.
-case $host_os in
- solaris*) AC_LIBOBJ(qsort) ;;
+case $host_os in solaris*)
+AC_LIBOBJ(qsort) ;;
esac
-# On HPUX 9, rint() is not in regular libm.a but in /lib/pa1.1/libm.a;
-# this hackery with HPUXMATHLIB allows us to cope.
-HPUXMATHLIB=""
-case $host_cpu in
- hppa1.1)
- if test -r /lib/pa1.1/libm.a ; then
- HPUXMATHLIB="-L /lib/pa1.1 -lm"
- fi ;;
+# Win32 can't to rename or unlink on an open file
+case $host_os in mingw*)
+AC_LIBOBJ(dirmod)
+AC_LIBOBJ(copydir)
+AC_LIBOBJ(gettimeofday) ;;
esac
-AC_SUBST(HPUXMATHLIB)
-
-AC_CHECK_FUNCS(rint, [],
- [AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT), , $HPUXMATHLIB)])
-
if test "$with_readline" = yes; then
PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
AC_FUNC_FSEEKO
+#
+# Pthreads
+#
+# For each platform, we need to know about any special compile and link
+# libraries, and whether the normal C function names are thread-safe.
+#
+NEED_REENTRANT_FUNC_NAMES=no
+if test "$with_threads" = yes; then
+AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --with-threads])])
+
+if test "$SUPPORTS_THREADS" != yes; then
+AC_MSG_ERROR([
+Cannot enable threads on your platform.
+Please report your platform threading info to the PostgreSQL mailing lists
+so it can be added to the next release. Report any compile flags, link flags,
+functions, or libraries required for threading support.
+])
+fi
+fi
+AC_SUBST(THREAD_CFLAGS)
+AC_SUBST(THREAD_LIBS)
+
+
+#
+# Check for re-entrant versions of certain functions
+#
+# Include special flags if threads are enabled _and_ if required for
+# threading on this platform. Some platforms have *_r functions but
+# their natively named funcs are threadsafe, and should be used instead.
+#
+# One trick here is that if the don't call AC_CHECK_FUNCS, the
+# functions are marked "not found", which is perfect.
+#
+if test "$NEED_REENTRANT_FUNC_NAMES" = yes ; then
+_CFLAGS="$CFLAGS"
+_LIB="$LIBS"
+CFLAGS="$CFLAGS $TREAD_CFLAGS"
+LIBS="$LIBS $THREAD_LIBS"
+AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
+CFLAGS="$_CFLAGS"
+LIB="$_LIBS"
+fi
+
# This test makes sure that run tests work at all. Sometimes a shared
# library is found by the linker, but the runtime linker can't find it.