summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure21
-rw-r--r--configure.in7
-rw-r--r--src/backend/postmaster/postmaster.c5
3 files changed, 31 insertions, 2 deletions
diff --git a/configure b/configure
index e8890b18100..8af662acb90 100755
--- a/configure
+++ b/configure
@@ -15047,6 +15047,27 @@ case $host_os in bsdi*|netbsd*)
ac_cv_func_fseeko=yes
esac
+# 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" | \
+ *" getopt.$ac_objext" | \
+ "getopt.$ac_objext "* | \
+ *" getopt.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS getopt.$ac_objext" ;;
+esac
+
+ case $LIBOBJS in
+ "getopt_long.$ac_objext" | \
+ *" getopt_long.$ac_objext" | \
+ "getopt_long.$ac_objext "* | \
+ *" 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 99f62812492..4d6ad04f75e 100644
--- a/configure.in
+++ b/configure.in
@@ -1019,6 +1019,13 @@ case $host_os in bsdi*|netbsd*)
ac_cv_func_fseeko=yes
esac
+# 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 21ed2eaf669..6148f286636 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -232,7 +232,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;
#endif
@@ -658,7 +659,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