So I was fixing my MingW environment to test and fix that issue with the functions missing. In doing so, I came across the error previously discussed that gettimeofday() is now suddently defined in the latest versions of mingw, but wasn't before.
So I figured I'd have to fix that. Attached is a patch for configure to check this. I'd like comments from someone who knows autoconf better than me on: 1) does it look ok? 2) is it ok to put checks for win32-only this way? It does work on my mingw build, and with the new version of mingw the functions aren't missing so I can actualliy build CVS HEAD to working state with that one. Which just means I'll have to write another autoconf test for the missing functions ni older mingw, but I'd like to get comments on this one first. //Magnus
Index: configure =================================================================== RCS file: /cvsroot/pgsql/configure,v retrieving revision 1.565 diff -c -r1.565 configure *** configure 27 Oct 2007 00:22:42 -0000 1.565 --- configure 29 Oct 2007 08:41:55 -0000 *************** *** 16962,16975 **** # Win32 support if test "$PORTNAME" = "win32"; then ! case $LIBOBJS in ! "gettimeofday.$ac_objext" | \ ! *" gettimeofday.$ac_objext" | \ ! "gettimeofday.$ac_objext "* | \ ! *" gettimeofday.$ac_objext "* ) ;; ! *) LIBOBJS="$LIBOBJS gettimeofday.$ac_objext" ;; esac case $LIBOBJS in "kill.$ac_objext" | \ *" kill.$ac_objext" | \ --- 16962,17079 ---- # Win32 support if test "$PORTNAME" = "win32"; then ! ! for ac_func in gettimeofday ! do ! as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ! echo "$as_me:$LINENO: checking for $ac_func" >&5 ! echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_var+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! /* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. ! For example, HP-UX 11i <limits.h> declares gettimeofday. */ ! #define $ac_func innocuous_$ac_func ! ! /* System header to define __stub macros and hopefully few prototypes, ! which can conflict with char $ac_func (); below. ! Prefer <limits.h> to <assert.h> if __STDC__ is defined, since ! <limits.h> exists even on freestanding compilers. */ ! ! #ifdef __STDC__ ! # include <limits.h> ! #else ! # include <assert.h> ! #endif ! ! #undef $ac_func ! ! /* Override any gcc2 internal prototype to avoid an error. */ ! #ifdef __cplusplus ! extern "C" ! { ! #endif ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func (); ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! char (*f) () = $ac_func; ! #endif ! #ifdef __cplusplus ! } ! #endif ! ! int ! main () ! { ! return f != $ac_func; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>conftest.er1 ! ac_status=$? ! grep -v '^ *+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! eval "$as_ac_var=yes" ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! eval "$as_ac_var=no" ! fi ! rm -f conftest.err conftest.$ac_objext \ ! conftest$ac_exeext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ! if test `eval echo '${'$as_ac_var'}'` = yes; then ! cat >>confdefs.h <<_ACEOF ! #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ! _ACEOF ! ! else ! case $LIBOBJS in ! "$ac_func.$ac_objext" | \ ! *" $ac_func.$ac_objext" | \ ! "$ac_func.$ac_objext "* | \ ! *" $ac_func.$ac_objext "* ) ;; ! *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; esac + fi + done + + case $LIBOBJS in "kill.$ac_objext" | \ *" kill.$ac_objext" | \ Index: configure.in =================================================================== RCS file: /cvsroot/pgsql/configure.in,v retrieving revision 1.531 diff -c -r1.531 configure.in *** configure.in 27 Oct 2007 00:22:42 -0000 1.531 --- configure.in 29 Oct 2007 08:41:55 -0000 *************** *** 1110,1116 **** # Win32 support if test "$PORTNAME" = "win32"; then ! AC_LIBOBJ(gettimeofday) AC_LIBOBJ(kill) AC_LIBOBJ(open) AC_LIBOBJ(rand) --- 1110,1116 ---- # Win32 support if test "$PORTNAME" = "win32"; then ! AC_REPLACE_FUNCS(gettimeofday) AC_LIBOBJ(kill) AC_LIBOBJ(open) AC_LIBOBJ(rand) Index: src/include/pg_config.h.in =================================================================== RCS file: /cvsroot/pgsql/src/include/pg_config.h.in,v retrieving revision 1.124 diff -c -r1.124 pg_config.h.in *** src/include/pg_config.h.in 23 Oct 2007 21:38:16 -0000 1.124 --- src/include/pg_config.h.in 29 Oct 2007 08:41:55 -0000 *************** *** 175,180 **** --- 175,183 ---- /* Define to 1 if you have the `getrusage' function. */ #undef HAVE_GETRUSAGE + /* Define to 1 if you have the `gettimeofday' function. */ + #undef HAVE_GETTIMEOFDAY + /* Define to 1 if you have the <gssapi/gssapi.h> header file. */ #undef HAVE_GSSAPI_GSSAPI_H Index: src/include/port.h =================================================================== RCS file: /cvsroot/pgsql/src/include/port.h,v retrieving revision 1.113 diff -c -r1.113 port.h *** src/include/port.h 28 Sep 2007 22:25:49 -0000 1.113 --- src/include/port.h 29 Oct 2007 08:41:55 -0000 *************** *** 296,303 **** --- 296,306 ---- extern long lrand48(void); extern void srand48(long seed); + /* New versions of MingW have gettimeofday, old mingw and msvc don't */ + #ifndef HAVE_GETTIMEOFDAY /* Last parameter not used */ extern int gettimeofday(struct timeval * tp, struct timezone * tzp); + #endif #else /* !WIN32 */ /* Index: src/include/port/win32.h =================================================================== RCS file: /cvsroot/pgsql/src/include/port/win32.h,v retrieving revision 1.77 diff -c -r1.77 win32.h *** src/include/port/win32.h 26 Oct 2007 21:50:10 -0000 1.77 --- src/include/port/win32.h 29 Oct 2007 08:41:55 -0000 *************** *** 166,177 **** #define SIGUSR1 30 #define SIGUSR2 31 #endif ! struct timezone { int tz_minuteswest; /* Minutes west of GMT. */ int tz_dsttime; /* Nonzero if DST is ever in effect. */ }; /* for setitimer in backend/port/win32/timer.c */ #define ITIMER_REAL 0 --- 166,180 ---- #define SIGUSR1 30 #define SIGUSR2 31 #endif ! /* new versions of mingw have gettimeofday() and also declare ! * struct timezone to support it. */ ! #ifndef HAVE_GETTIMEOFDAY struct timezone { int tz_minuteswest; /* Minutes west of GMT. */ int tz_dsttime; /* Nonzero if DST is ever in effect. */ }; + #endif /* for setitimer in backend/port/win32/timer.c */ #define ITIMER_REAL 0
---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match