diff options
-rwxr-xr-x | configure | 17 | ||||
-rw-r--r-- | configure.in | 7 | ||||
-rw-r--r-- | src/backend/postmaster/postmaster.c | 5 |
3 files changed, 27 insertions, 2 deletions
diff --git a/configure b/configure index 55c06f5e4c9..2bc14f1a11a 100755 --- a/configure +++ b/configure @@ -19017,6 +19017,23 @@ esac fi +# mingw has adopted a GNU-centric interpretation of optind/optreset, +# so always use our version on Windows. +if test "$PORTNAME" = "win32"; then + case " $LIBOBJS " in + *" getopt.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getopt.$ac_objext" + ;; +esac + + case " $LIBOBJS " in + *" getopt_long.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getopt_long.$ac_objext" + ;; +esac + +fi + # Win32 support if test "$PORTNAME" = "win32"; then diff --git a/configure.in b/configure.in index 4d7cc3b4ef3..88890243576 100644 --- a/configure.in +++ b/configure.in @@ -1314,6 +1314,13 @@ if test "$PORTNAME" = "solaris"; then AC_LIBOBJ(getopt) fi +# mingw has adopted a GNU-centric interpretation of optind/optreset, +# so always use our version on Windows. +if test "$PORTNAME" = "win32"; then + AC_LIBOBJ(getopt) + AC_LIBOBJ(getopt_long) +fi + # Win32 support if test "$PORTNAME" = "win32"; then AC_REPLACE_FUNCS(gettimeofday) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 463ed819766..04ee6c7954f 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -305,7 +305,8 @@ extern char *optarg; extern int optind, opterr; -#ifdef HAVE_INT_OPTRESET +/* If not HAVE_GETOPT, we are using src/port/getopt.c, which has optreset */ +#if defined(HAVE_INT_OPTRESET) || !defined(HAVE_GETOPT) extern int optreset; /* might not be declared by system headers */ #endif @@ -722,7 +723,7 @@ PostmasterMain(int argc, char *argv[]) * getopt(3) library so that it will work correctly in subprocesses. */ optind = 1; -#ifdef HAVE_INT_OPTRESET +#if defined(HAVE_INT_OPTRESET) || !defined(HAVE_GETOPT) optreset = 1; /* some systems need this too */ #endif |