]> granicus.if.org Git - postgresql/blobdiff - configure.in
Adjust our timezone library to use pg_time_t (typedef'd as int64) in
[postgresql] / configure.in
index 1606a54871a82e6ddfd7709c07b2ed0ccbda82a6..437b5127e65b2eeee6ecb51c6a07e920115b6363 100644 (file)
@@ -1,5 +1,5 @@
-\dnl Process this file with autoconf to produce a configure script.
-dnl $Header: /cvsroot/pgsql/configure.in,v 1.291 2003/09/27 15:32:47 momjian Exp $
+dnl Process this file with autoconf to produce a configure script.
+dnl $PostgreSQL: pgsql/configure.in,v 1.360 2004/05/28 20:52:42 momjian Exp $
 dnl
 dnl Developers, please strive to achieve this order:
 dnl
@@ -16,15 +16,8 @@ dnl
 dnl Read the Autoconf manual for details.
 dnl
 m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
-dnl
-dnl The GNU folks apparently haven't heard that some people don't use
-dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir".
-m4_define([info], [doc])
-m4_define([infodir], [docdir])
-AC_INIT([PostgreSQL], [7.4beta3], [pgsql-bugs@postgresql.org])
-m4_undefine([infodir])
-m4_undefine([info])
-AC_SUBST(docdir)
+
+AC_INIT([PostgreSQL], [7.5devel], [pgsql-bugs@postgresql.org])
 
 AC_PREREQ(2.53)
 AC_COPYRIGHT([Copyright 2003 PostgreSQL Global Development Group])
@@ -63,7 +56,7 @@ case $host_os in
     dgux*) template=dgux ;;
  freebsd*) template=freebsd ;;
     hpux*) template=hpux ;;
-    irix*) template=irix5 ;;
+    irix*) template=irix ;;
    linux*) template=linux ;;
    mingw*) template=win32 ;;
   netbsd*) template=netbsd ;;
@@ -104,21 +97,11 @@ AC_MSG_RESULT([$template])
 PORTNAME=$template
 AC_SUBST(PORTNAME)
 
-# Pick right test-and-set (TAS) code.  Most platforms have inline
-# assembler code in src/include/storage/s_lock.h, so we just use
-# a dummy file here.
-case $host in
-  hppa*-*-hpux*)        need_tas=yes; tas_file=hpux_hppa.s ;;
-  sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;;
-  i?86-*-solaris*)   need_tas=yes; tas_file=solaris_i386.s ;;
-  *)                need_tas=no;  tas_file=dummy.s ;;
-esac
-AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}])
-
-if test "$need_tas" = yes ; then
-  TAS=tas.o
-fi
-AC_SUBST(TAS)
+# Initialize default assumption that we do not need separate assembly code
+# for TAS (test-and-set).  This can be overridden by the template file
+# when it's executed.
+need_tas=no
+tas_file=dummy.s
 
 
 
@@ -126,6 +109,17 @@ AC_SUBST(TAS)
 ## Command line options
 ##
 
+#
+# Installation directory for documentation
+#
+PGAC_ARG(with, docdir, [  --with-docdir=DIR       install the documentation in DIR [[PREFIX/doc]]
+  --without-docdir        do not install the documentation],
+         [AC_MSG_ERROR([option --with-docdir requires an argument])],
+         [docdir=],
+         [docdir=$withval],
+         [docdir='${prefix}/doc'])
+AC_SUBST(docdir)
+
 
 #
 # Add non-standard directories to the include path
@@ -203,7 +197,7 @@ AC_SUBST(enable_rpath)
 # Spinlocks
 #
 PGAC_ARG_BOOL(enable, spinlocks, yes,
-              [  --disable-spinlocks     do not use Spinlocks])
+              [  --disable-spinlocks     do not use spinlocks])
 
 #
 # --enable-debug adds -g to compiler flags
@@ -229,24 +223,45 @@ esac
 
 AC_PROG_CC([$pgac_cc_list])
 
+unset CFLAGS
+
 #
 # Read the template
 #
 . "$srcdir/src/template/$template" || exit
 
-# adjust CFLAGS per template
+# CFLAGS are selected so:
+# If the user specifies something in the environment, that is used.
+# else:  If the template file set something, that is used.
+# else:  If the compiler is GCC, then we use -O2.
+# else:  If the compiler is something else, then we use -0.
+
 if test "$ac_env_CFLAGS_set" = set; then
   CFLAGS=$ac_env_CFLAGS_value
+elif test "${CFLAGS+set}" = set; then
+  : # (keep what template set)
+elif test "$GCC" = yes; then
+  CFLAGS="-O2"
+else
+  # if the user selected debug mode, don't use -O
+  if test "$enable_debug" != yes; then
+    CFLAGS="-O"
+  fi
 fi
+
+# Need to specify -fno-strict-aliasing too in case it's gcc 3.3 or later.
+PGAC_PROG_CC_NO_STRICT_ALIASING
+
+# supply -g if --enable-debug
 if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
   CFLAGS="$CFLAGS -g"
 fi
+
 AC_MSG_NOTICE([using CFLAGS=$CFLAGS])
 
 # We already have this in Makefile.win32, but configure needs it too
-if test "$PORTNAME" = "win32"
-then
-       CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32"
+if test "$PORTNAME" = "win32"; then
+  CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32 -DEXEC_BACKEND"
 fi
 
 # Check if the compiler still works with the template settings
@@ -256,7 +271,7 @@ AC_TRY_LINK([], [return 0;],
   [AC_MSG_RESULT(no)
    AC_MSG_ERROR([cannot proceed])])
 
-# Defend against gcc -ffastmath
+# Defend against gcc -ffast-math
 if test "$GCC" = yes; then
 AC_TRY_COMPILE([], [@%:@ifdef __FAST_MATH__
 choke me
@@ -277,6 +292,20 @@ AC_DEFINE_UNQUOTED(PG_VERSION_STR,
                    [A string containing the version number, platform, and C compiler])
 
 
+#
+# Set up TAS assembly code if needed; the template file has now had its
+# chance to request this.
+#
+AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}])
+
+if test "$need_tas" = yes ; then
+  TAS=tas.o
+else
+  TAS=""
+fi
+AC_SUBST(TAS)
+
+
 #
 # Automatic dependency tracking
 #
@@ -330,7 +359,7 @@ IFS=$ac_save_IFS
 #
 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([USE_THREADS], 1,
+              [AC_DEFINE([ENABLE_THREAD_SAFETY], 1,
                          [Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)])])
 AC_MSG_RESULT([$enable_thread_safety])
 AC_SUBST(enable_thread_safety)
@@ -343,26 +372,10 @@ PGAC_ARG_BOOL(with, tcl, no, [  --with-tcl              build Tcl and Tk interfa
 AC_MSG_RESULT([$with_tcl])
 AC_SUBST([with_tcl])
 
-# If Tcl is enabled (above) then Tk is also, unless the user disables it using --without-tk
-AC_MSG_CHECKING([whether to build with Tk])
-if test "$with_tcl" = yes; then
-  PGAC_ARG_BOOL(with, tk, yes, [  --without-tk            do not build Tk interfaces if Tcl is enabled])
-else
-  with_tk=no
-fi
-AC_MSG_RESULT([$with_tk])
-AC_SUBST([with_tk])
-
-
 # We see if the path to the Tcl/Tk configuration scripts is specified.
 # This will override the use of tclsh to find the paths to search.
 
-PGAC_ARG_REQ(with, tclconfig, [  --with-tclconfig=DIR    tclConfig.sh and tkConfig.sh are in DIR])
-
-# We see if the path to the Tk configuration scripts is specified.
-# This will override the use of tclsh to find the paths to search.
-
-PGAC_ARG_REQ(with, tkconfig,  [  --with-tkconfig=DIR     tkConfig.sh is in DIR])
+PGAC_ARG_REQ(with, tclconfig, [  --with-tclconfig=DIR    tclConfig.sh is in DIR])
 
 #
 # Optionally build Perl modules (PL/Perl)
@@ -380,55 +393,16 @@ PGAC_ARG_BOOL(with, python, no, [  --with-python           build Python modules
 AC_MSG_RESULT([$with_python])
 AC_SUBST(with_python)
 
-#
-# Optionally build the Java/JDBC tools
-#
-AC_MSG_CHECKING([whether to build Java/JDBC tools])
-PGAC_ARG_BOOL(with, java, no, [  --with-java             build JDBC interface and Java tools],
-[AC_MSG_RESULT(yes)
-PGAC_PATH_ANT
-if test -z "$ANT"; then
-  AC_MSG_ERROR([Ant is required to build Java components
-If you have Ant already installed, see config.log for details on the failure.])
-fi
-if "$ANT" -version | sed q | egrep -v ' 1\.[[5-9]]| [[2-9]]\.' >/dev/null ; then
-  AC_MSG_ERROR([Ant version >= 1.5 is required to build Java components])
-fi],
-[AC_MSG_RESULT(no)])
-AC_SUBST(with_java)
-
-dnl A note on the Kerberos and OpenSSL options:
-dnl
-dnl The user can give an argument to the option in order the specify
-dnl the base path of the respective installation (what he specified
-dnl perhaps as --prefix). If no argument is given ($withval is "yes")
-dnl then we take the path where the package installs by default. This
-dnl way the user doesn't have to use redundant --with-includes and
-dnl --with-libraries options, but he can still use them if the layout
-dnl is non-standard.
-
 #
 # Kerberos 4
 #
 AC_MSG_CHECKING([whether to build with Kerberos 4 support])
-PGAC_ARG_OPTARG(with, krb4, [[  --with-krb4[=DIR]       build with Kerberos 4 support [/usr/athena]]],
-                [krb4_prefix=/usr/athena],
-                [krb4_prefix=$withval],
+PGAC_ARG_BOOL(with, krb4, no, [  --with-krb4             build with Kerberos 4 support],
 [
-  AC_MSG_RESULT(yes)
   AC_DEFINE(KRB4, 1, [Define to build with Kerberos 4 support. (--with-krb4)])
-
-  if test -d "$krb4_prefix/include"; then
-    INCLUDES="$INCLUDES -I$krb4_prefix/include"
-  fi
-  if test -d "$krb4_prefix/lib"; then
-    LIBDIRS="$LIBDIRS -L$krb4_prefix/lib"
-  fi
-
   krb_srvtab="/etc/srvtab"
-],
-[AC_MSG_RESULT(no)])
-
+])
+AC_MSG_RESULT([$with_krb4])
 AC_SUBST(with_krb4)
 
 
@@ -436,24 +410,12 @@ AC_SUBST(with_krb4)
 # Kerberos 5
 #
 AC_MSG_CHECKING([whether to build with Kerberos 5 support])
-PGAC_ARG_OPTARG(with, krb5, [[  --with-krb5[=DIR]       build with Kerberos 5 support [/usr/athena]]],
-              [krb5_prefix=/usr/athena],
-              [krb5_prefix=$withval],
+PGAC_ARG_BOOL(with, krb5, no, [  --with-krb5             build with Kerberos 5 support],
 [
-  AC_MSG_RESULT([yes])
   AC_DEFINE(KRB5, 1, [Define to build with Kerberos 5 support. (--with-krb5)])
-
-  if test -d "$krb5_prefix/include"; then
-    INCLUDES="$INCLUDES -I$krb5_prefix/include"
-  fi
-  if test -d "$krb5_prefix/lib"; then
-    LIBDIRS="$LIBDIRS -L$krb5_prefix/lib"
-  fi
-
   krb_srvtab="FILE:\$(sysconfdir)/krb5.keytab"
-],
-[AC_MSG_RESULT(no)])
-
+])
+AC_MSG_RESULT([$with_krb5])
 AC_SUBST(with_krb5)
 
 
@@ -469,7 +431,7 @@ AC_SUBST(krb_srvtab)
 # Kerberos configuration parameters
 #
 PGAC_ARG_REQ(with, krb-srvnam,
-             [  --with-krb-srvnam=NAME  name of the service principal in Kerberos [postgres]],
+             [  --with-krb-srvnam=NAME  name of the service principal in Kerberos [[postgres]]],
              [],
              [with_krb_srvnam="postgres"])
 AC_DEFINE_UNQUOTED([PG_KRB_SRVNAM], ["$with_krb_srvnam"],
@@ -501,22 +463,10 @@ AC_SUBST(with_rendezvous)
 #
 # OpenSSL
 #
-PGAC_ARG_OPTARG(with, openssl,
-                [[  --with-openssl[=DIR]    build with OpenSSL support [/usr/local/ssl]]],
-                [openssl_prefix=/usr/local/ssl],
-                [openssl_prefix=$withval],
-[
-  AC_MSG_RESULT([building with OpenSSL support])
-  AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support. (--with-openssl)])
-
-  if test -d "${openssl_prefix}/include" ; then
-    INCLUDES="$INCLUDES -I${openssl_prefix}/include"
-  fi
-  if test -d "${openssl_prefix}/lib" ; then
-    LIBDIRS="$LIBDIRS -L${openssl_prefix}/lib"
-  fi
-])
-
+AC_MSG_CHECKING([whether to build with OpenSSL support])
+PGAC_ARG_BOOL(with, openssl, no, [  --with-openssl          build with OpenSSL support],
+              [AC_DEFINE([USE_SSL], 1, [Define to build with (Open)SSL support. (--with-openssl)])])
+AC_MSG_RESULT([$with_openssl])
 AC_SUBST(with_openssl)
 
 
@@ -593,8 +543,8 @@ 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.])
+*** If you are going to modify the grammar files or build from CVS, the installed
+*** version of Bison is too old.  Bison version 1.875 or later is required.])
   fi
 fi
 
@@ -720,7 +670,7 @@ fi
 ##
 
 dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES
-AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h poll.h pwd.h sys/ipc.h sys/poll.h sys/pstat.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/un.h termios.h utime.h kernel/OS.h kernel/image.h SupportDefs.h])
+AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h poll.h pwd.h sys/ipc.h sys/poll.h sys/pstat.h sys/select.h sys/sem.h sys/socket.h sys/shm.h sys/un.h termios.h utime.h wchar.h wctype.h kernel/OS.h kernel/image.h SupportDefs.h])
 
 # At least on IRIX, cpp test for netinet/tcp.h will fail unless
 # netinet/in.h is included first.
@@ -845,7 +795,7 @@ PGAC_FUNC_GETTIMEOFDAY_1ARG
 # 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 symlink sysconf utime utimes waitpid])
+AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getpeereid memmove poll pstat setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs])
 
 AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
 
@@ -908,7 +858,7 @@ else
   AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
 fi
 
-AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strcasecmp strdup strerror strtol strtoul])
+AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom strdup strerror strtol strtoul unsetenv])
 
 # 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
@@ -937,11 +887,18 @@ case $host_os in solaris*)
 AC_LIBOBJ(qsort) ;;
 esac
 
-# Win32 can't to rename or unlink on an open file
+# Win32 support
 case $host_os in mingw*)
-AC_LIBOBJ(dirmod)
 AC_LIBOBJ(copydir)
-AC_LIBOBJ(gettimeofday) ;;
+AC_LIBOBJ(gettimeofday)
+AC_LIBOBJ(kill)
+AC_LIBOBJ(open)
+AC_LIBOBJ(rand) ;;
+esac
+
+# Win32 can't do rename or unlink on an open file
+case $host_os in mingw*|cygwin*)
+AC_LIBOBJ(dirmod) ;;
 esac
 
 if test "$with_readline" = yes; then
@@ -1000,46 +957,52 @@ AC_FUNC_FSEEKO
 # See the comment at the top of src/port/thread.c for more information.
 #
 if test "$enable_thread_safety" = yes; then
-AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safetys])])
+ACX_PTHREAD    # set thread flags
 
-if test "$SUPPORTS_THREADS" != yes; then
+# Some platforms use these, so just defineed them.  They can't hurt if they
+# are not supported.
+PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS"
+
+
+# At this point, we don't want to muck with the compiler name for threading.
+# Let's see who fails, perhaps AIX.  2004-04-23
+if test "$PTHREAD_CC" != "$CC"; 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 all compile flags, link flags,
-functions, or libraries required for threading support.
-See the comment at the top of src/port/thread.c for more information.
+PostgreSQL does not support platforms that require a special
+compiler binary for thread-safety.
 ])
 fi
-else
-# do not use values from template file
-THREAD_CPPFLAGS=
-THREAD_LIBS=
+
+if test "$THREAD_SUPPORT" = no; then
+AC_MSG_ERROR([
+Cannot enable threads on your platform.
+Your platform is known to not support thread-safe programs.
+For details, compile and run src/bin/pg_thread_test.
+])
 fi
-AC_SUBST(THREAD_CPPFLAGS)
-AC_SUBST(THREAD_LIBS)
 
+AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safety])])
 
-#
-# 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 we don't call AC_CHECK_FUNCS, the
-# functions are marked "not found", which is perfect.
-#
-if test "$enable_thread_safety" = yes -a "$NEED_REENTRANT_FUNCS" = yes ; then
+# Check for *_r functions
 _CFLAGS="$CFLAGS"
 _LIBS="$LIBS"
-CFLAGS="$CFLAGS $THREAD_CPPFLAGS"
-LIBS="$LIBS $THREAD_LIBS"
+CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+LIBS="$LIBS $PTHREAD_LIBS"
 AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
 CFLAGS="$_CFLAGS"
 LIBS="$_LIBS"
+
+PGAC_FUNC_GETPWUID_R_5ARG
+
+else
+# do not use values from template file
+PTHREAD_CFLAGS=
+PTHREAD_LIBS=
 fi
 
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_LIBS)
+
 
 # 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.
@@ -1091,9 +1054,8 @@ fi
 
 # If we found "long int" is 64 bits, assume snprintf handles it.  If
 # we found we need to use "long long int", better check.  We cope with
-# snprintfs that use either %lld, %qd, or %I64d as the format.  If
-# neither works, fall back to our own snprintf emulation (which we
-# know uses %lld).
+# snprintfs that use %lld, %qd, or %I64d as the format.  If none of these
+# work, fall back to our own snprintf emulation (which we know uses %lld).
 
 if test "$HAVE_LONG_LONG_INT_64" = yes ; then
   if test $pgac_need_repl_snprintf = no; then
@@ -1107,15 +1069,21 @@ if test "$HAVE_LONG_LONG_INT_64" = yes ; then
     # Here if we previously decided we needed to use our own snprintf
     LONG_LONG_INT_FORMAT='%lld'
   fi
+  LONG_LONG_UINT_FORMAT=`echo "$LONG_LONG_INT_FORMAT" | sed 's/d$/u/'`
   INT64_FORMAT="\"$LONG_LONG_INT_FORMAT\""
+  UINT64_FORMAT="\"$LONG_LONG_UINT_FORMAT\""
 else
   # Here if we are not using 'long long int' at all
   INT64_FORMAT='"%ld"'
+  UINT64_FORMAT='"%lu"'
 fi
 
 AC_DEFINE_UNQUOTED(INT64_FORMAT, $INT64_FORMAT,
                    [Define to the appropriate snprintf format for 64-bit ints, if any.])
 
+AC_DEFINE_UNQUOTED(UINT64_FORMAT, $UINT64_FORMAT,
+                   [Define to the appropriate snprintf format for unsigned 64-bit ints, if any.])
+
 if test $pgac_need_repl_snprintf = yes; then
   AC_LIBOBJ(snprintf)
 fi
@@ -1198,33 +1166,52 @@ if test "$with_tcl" = yes; then
     AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one
 fi
 
-# Check for Tk configuration script tkConfig.sh
-if test "$with_tk" = yes; then
-    PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
-    PGAC_EVAL_TCLCONFIGSH([$TK_CONFIG_SH], [TK_LIBS,TK_LIB_SPEC,TK_XINCLUDES])
-fi
-
-
 #
 # Check for DocBook and tools
 #
 PGAC_PROG_NSGMLS
 PGAC_PROG_JADE
-PGAC_CHECK_DOCBOOK(3.1)
+PGAC_CHECK_DOCBOOK(4.2)
 PGAC_PATH_DOCBOOK_STYLESHEETS
 PGAC_PATH_COLLATEINDEX
 AC_CHECK_PROGS(SGMLSPL, sgmlspl)
 
+# Thread testing
+
+# 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
+AC_MSG_CHECKING([thread safety of required library functions])
+
+_CFLAGS="$CFLAGS"
+_LIBS="$LIBS"
+CFLAGS="$CFLAGS $PTHREAD_CFLAGS -DIN_CONFIGURE"
+LIBS="$LIBS $PTHREAD_LIBS"
+AC_TRY_RUN([#include "$srcdir/src/tools/thread/thread_test.c"],
+  [AC_MSG_RESULT(yes)],
+  [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.])],
+  [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.
+])])
+CFLAGS="$_CFLAGS"
+LIBS="$_LIBS"
+fi
 
 # prepare build tree if outside source tree
 # Note 1: test -ef might not exist, but it's more reliable than `pwd`.
 # Note 2: /bin/pwd might be better than shell's built-in at getting
 #         a symlink-free name.
-if test "$no_create" != yes; then
-  if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then
-    :
-  else
-    AC_SUBST(vpath_build, yes)
+if ( test "$srcdir" -ef . ) >/dev/null 2>&1 || test "`cd $srcdir && /bin/pwd`" = "`/bin/pwd`"; then
+  vpath_build=no
+else
+  vpath_build=yes
+  if test "$no_create" != yes; then
     _AS_ECHO_N([preparing build tree... ])
     pgac_abs_top_srcdir=`cd "$srcdir" && pwd`
     $SHELL "$ac_aux_dir/prep_buildtree" "$pgac_abs_top_srcdir" "." \
@@ -1232,6 +1219,7 @@ if test "$no_create" != yes; then
     AC_MSG_RESULT(done)
   fi
 fi
+AC_SUBST(vpath_build)
 
 
 AC_CONFIG_FILES([GNUmakefile src/Makefile.global])
@@ -1245,6 +1233,19 @@ AC_CONFIG_LINKS([
   src/Makefile.port:src/makefiles/Makefile.${template}
 ])
 
+case $host_os in mingw*)
+AC_CONFIG_COMMANDS([check_win32_symlinks],[
+# Links sometimes fail undetected on Mingw - 
+# so here we detect it and warn the user
+for FILE in $CONFIG_LINKS
+ do
+       # test -e works for symlinks in the MinGW console
+       test -e `expr "$FILE" : '\(^:*\)'` || AC_MSG_WARN([*** link for $FILE - please fix by hand])
+ done
+])
+       ;;
+esac
+
 AC_CONFIG_HEADERS([src/include/pg_config.h],
 [
 # Update timestamp for pg_config.h (see Makefile.global)
@@ -1252,3 +1253,4 @@ echo >src/include/stamp-h
 ])
 
 AC_OUTPUT
+