cvsserver: Determinize output to combat Perl 5.18 hash randomization
[gitweb.git] / Makefile
index 56424b48b0b6c801ee74780718eab3014a3aeaa5..fd635acb2e4f05672e899129ae483ee421a59e2d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -241,11 +241,16 @@ all::
 # apostrophes to be ASCII so that cut&pasting examples to the shell
 # will work.
 #
+# Define PERL_PATH to the path of your Perl binary (usually /usr/bin/perl).
+#
 # Define NO_PERL_MAKEMAKER if you cannot use Makefiles generated by perl's
 # MakeMaker (e.g. using ActiveState under Cygwin).
 #
 # Define NO_PERL if you do not want Perl scripts or libraries at all.
 #
+# Define PYTHON_PATH to the path of your Python binary (often /usr/bin/python
+# but /usr/bin/python2.7 on some platforms).
+#
 # Define NO_PYTHON if you do not want Python scripts or libraries at all.
 #
 # Define NO_TCLTK if you do not want Tcl/Tk GUI.
@@ -281,6 +286,10 @@ all::
 #
 # Define NO_REGEX if you have no or inferior regex support in your C library.
 #
+# Define CYGWIN_V15_WIN32API if you are using Cygwin v1.7.x but are not
+# using the current w32api packages. The recommended approach, however,
+# is to update your installation if compilation errors occur.
+#
 # Define HAVE_DEV_TTY if your system can open /dev/tty to interact with the
 # user.
 #
@@ -334,19 +343,6 @@ GIT-VERSION-FILE: FORCE
        @$(SHELL_PATH) ./GIT-VERSION-GEN
 -include GIT-VERSION-FILE
 
-uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
-uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not')
-uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
-uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
-uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
-uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
-
-ifdef MSVC
-       # avoid the MingW and Cygwin configuration sections
-       uname_S := Windows
-       uname_O := Windows
-endif
-
 # CFLAGS and LDFLAGS are for the users to override from the command line.
 
 CFLAGS = -g -O2 -Wall
@@ -532,6 +528,7 @@ TEST_PROGRAMS_NEED_X += test-sigchain
 TEST_PROGRAMS_NEED_X += test-string-list
 TEST_PROGRAMS_NEED_X += test-subprocess
 TEST_PROGRAMS_NEED_X += test-svn-fe
+TEST_PROGRAMS_NEED_X += test-wildmatch
 
 TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))
 
@@ -657,7 +654,7 @@ LIB_H += list-objects.h
 LIB_H += ll-merge.h
 LIB_H += log-tree.h
 LIB_H += mailmap.h
-LIB_H += merge-file.h
+LIB_H += merge-blobs.h
 LIB_H += merge-recursive.h
 LIB_H += mergesort.h
 LIB_H += notes-cache.h
@@ -704,6 +701,7 @@ LIB_H += userdiff.h
 LIB_H += utf8.h
 LIB_H += varint.h
 LIB_H += walker.h
+LIB_H += wildmatch.h
 LIB_H += wt-status.h
 LIB_H += xdiff-interface.h
 LIB_H += xdiff/xdiff.h
@@ -773,7 +771,7 @@ LIB_OBJS += log-tree.o
 LIB_OBJS += mailmap.o
 LIB_OBJS += match-trees.o
 LIB_OBJS += merge.o
-LIB_OBJS += merge-file.o
+LIB_OBJS += merge-blobs.o
 LIB_OBJS += merge-recursive.o
 LIB_OBJS += mergesort.o
 LIB_OBJS += name-hash.o
@@ -838,6 +836,7 @@ LIB_OBJS += utf8.o
 LIB_OBJS += varint.o
 LIB_OBJS += version.o
 LIB_OBJS += walker.o
+LIB_OBJS += wildmatch.o
 LIB_OBJS += wrapper.o
 LIB_OBJS += write_or_die.o
 LIB_OBJS += ws.o
@@ -945,535 +944,7 @@ EXTLIBS =
 
 GIT_USER_AGENT = git/$(GIT_VERSION)
 
-#
-# Platform specific tweaks
-#
-
-# We choose to avoid "if .. else if .. else .. endif endif"
-# because maintaining the nesting to match is a pain.  If
-# we had "elif" things would have been much nicer...
-
-ifeq ($(uname_M),x86_64)
-       XDL_FAST_HASH = YesPlease
-endif
-ifeq ($(uname_S),OSF1)
-       # Need this for u_short definitions et al
-       BASIC_CFLAGS += -D_OSF_SOURCE
-       SOCKLEN_T = int
-       NO_STRTOULL = YesPlease
-       NO_NSEC = YesPlease
-endif
-ifeq ($(uname_S),Linux)
-       NO_STRLCPY = YesPlease
-       NO_MKSTEMPS = YesPlease
-       HAVE_PATHS_H = YesPlease
-       LIBC_CONTAINS_LIBINTL = YesPlease
-       HAVE_DEV_TTY = YesPlease
-endif
-ifeq ($(uname_S),GNU/kFreeBSD)
-       NO_STRLCPY = YesPlease
-       NO_MKSTEMPS = YesPlease
-       HAVE_PATHS_H = YesPlease
-       DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
-       LIBC_CONTAINS_LIBINTL = YesPlease
-endif
-ifeq ($(uname_S),UnixWare)
-       CC = cc
-       NEEDS_SOCKET = YesPlease
-       NEEDS_NSL = YesPlease
-       NEEDS_SSL_WITH_CRYPTO = YesPlease
-       NEEDS_LIBICONV = YesPlease
-       SHELL_PATH = /usr/local/bin/bash
-       NO_IPV6 = YesPlease
-       NO_HSTRERROR = YesPlease
-       NO_MKSTEMPS = YesPlease
-       BASIC_CFLAGS += -Kthread
-       BASIC_CFLAGS += -I/usr/local/include
-       BASIC_LDFLAGS += -L/usr/local/lib
-       INSTALL = ginstall
-       TAR = gtar
-       NO_STRCASESTR = YesPlease
-       NO_MEMMEM = YesPlease
-endif
-ifeq ($(uname_S),SCO_SV)
-       ifeq ($(uname_R),3.2)
-               CFLAGS = -O2
-       endif
-       ifeq ($(uname_R),5)
-               CC = cc
-               BASIC_CFLAGS += -Kthread
-       endif
-       NEEDS_SOCKET = YesPlease
-       NEEDS_NSL = YesPlease
-       NEEDS_SSL_WITH_CRYPTO = YesPlease
-       NEEDS_LIBICONV = YesPlease
-       SHELL_PATH = /usr/bin/bash
-       NO_IPV6 = YesPlease
-       NO_HSTRERROR = YesPlease
-       NO_MKSTEMPS = YesPlease
-       BASIC_CFLAGS += -I/usr/local/include
-       BASIC_LDFLAGS += -L/usr/local/lib
-       NO_STRCASESTR = YesPlease
-       NO_MEMMEM = YesPlease
-       INSTALL = ginstall
-       TAR = gtar
-endif
-ifeq ($(uname_S),Darwin)
-       NEEDS_CRYPTO_WITH_SSL = YesPlease
-       NEEDS_SSL_WITH_CRYPTO = YesPlease
-       NEEDS_LIBICONV = YesPlease
-       ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2)
-               OLD_ICONV = UnfortunatelyYes
-       endif
-       ifeq ($(shell expr "$(uname_R)" : '[15]\.'),2)
-               NO_STRLCPY = YesPlease
-       endif
-       NO_MEMMEM = YesPlease
-       USE_ST_TIMESPEC = YesPlease
-       HAVE_DEV_TTY = YesPlease
-       COMPAT_OBJS += compat/precompose_utf8.o
-       BASIC_CFLAGS += -DPRECOMPOSE_UNICODE
-endif
-ifeq ($(uname_S),SunOS)
-       NEEDS_SOCKET = YesPlease
-       NEEDS_NSL = YesPlease
-       SHELL_PATH = /bin/bash
-       SANE_TOOL_PATH = /usr/xpg6/bin:/usr/xpg4/bin
-       NO_STRCASESTR = YesPlease
-       NO_MEMMEM = YesPlease
-       NO_MKDTEMP = YesPlease
-       NO_MKSTEMPS = YesPlease
-       NO_REGEX = YesPlease
-       NO_FNMATCH_CASEFOLD = YesPlease
-       NO_MSGFMT_EXTENDED_OPTIONS = YesPlease
-       HAVE_DEV_TTY = YesPlease
-       ifeq ($(uname_R),5.6)
-               SOCKLEN_T = int
-               NO_HSTRERROR = YesPlease
-               NO_IPV6 = YesPlease
-               NO_SOCKADDR_STORAGE = YesPlease
-               NO_UNSETENV = YesPlease
-               NO_SETENV = YesPlease
-               NO_STRLCPY = YesPlease
-               NO_STRTOUMAX = YesPlease
-               GIT_TEST_CMP = cmp
-       endif
-       ifeq ($(uname_R),5.7)
-               NEEDS_RESOLV = YesPlease
-               NO_IPV6 = YesPlease
-               NO_SOCKADDR_STORAGE = YesPlease
-               NO_UNSETENV = YesPlease
-               NO_SETENV = YesPlease
-               NO_STRLCPY = YesPlease
-               NO_STRTOUMAX = YesPlease
-               GIT_TEST_CMP = cmp
-       endif
-       ifeq ($(uname_R),5.8)
-               NO_UNSETENV = YesPlease
-               NO_SETENV = YesPlease
-               NO_STRTOUMAX = YesPlease
-               GIT_TEST_CMP = cmp
-       endif
-       ifeq ($(uname_R),5.9)
-               NO_UNSETENV = YesPlease
-               NO_SETENV = YesPlease
-               NO_STRTOUMAX = YesPlease
-               GIT_TEST_CMP = cmp
-       endif
-       INSTALL = /usr/ucb/install
-       TAR = gtar
-       BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__ -DHAVE_ALLOCA_H
-endif
-ifeq ($(uname_O),Cygwin)
-       ifeq ($(shell expr "$(uname_R)" : '1\.[1-6]\.'),4)
-               NO_D_TYPE_IN_DIRENT = YesPlease
-               NO_D_INO_IN_DIRENT = YesPlease
-               NO_STRCASESTR = YesPlease
-               NO_MEMMEM = YesPlease
-               NO_MKSTEMPS = YesPlease
-               NO_SYMLINK_HEAD = YesPlease
-               NO_IPV6 = YesPlease
-               OLD_ICONV = UnfortunatelyYes
-               CYGWIN_V15_WIN32API = YesPlease
-       endif
-       NO_THREAD_SAFE_PREAD = YesPlease
-       NEEDS_LIBICONV = YesPlease
-       NO_FAST_WORKING_DIRECTORY = UnfortunatelyYes
-       NO_TRUSTABLE_FILEMODE = UnfortunatelyYes
-       NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
-       # There are conflicting reports about this.
-       # On some boxes NO_MMAP is needed, and not so elsewhere.
-       # Try commenting this out if you suspect MMAP is more efficient
-       NO_MMAP = YesPlease
-       X = .exe
-       COMPAT_OBJS += compat/cygwin.o
-       UNRELIABLE_FSTAT = UnfortunatelyYes
-       SPARSE_FLAGS = -isystem /usr/include/w32api -Wno-one-bit-signed-bitfield
-endif
-ifeq ($(uname_S),FreeBSD)
-       NEEDS_LIBICONV = YesPlease
-       OLD_ICONV = YesPlease
-       NO_MEMMEM = YesPlease
-       BASIC_CFLAGS += -I/usr/local/include
-       BASIC_LDFLAGS += -L/usr/local/lib
-       DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
-       USE_ST_TIMESPEC = YesPlease
-       ifeq ($(shell expr "$(uname_R)" : '4\.'),2)
-               PTHREAD_LIBS = -pthread
-               NO_UINTMAX_T = YesPlease
-               NO_STRTOUMAX = YesPlease
-       endif
-       PYTHON_PATH = /usr/local/bin/python
-       HAVE_PATHS_H = YesPlease
-endif
-ifeq ($(uname_S),OpenBSD)
-       NO_STRCASESTR = YesPlease
-       NO_MEMMEM = YesPlease
-       USE_ST_TIMESPEC = YesPlease
-       NEEDS_LIBICONV = YesPlease
-       BASIC_CFLAGS += -I/usr/local/include
-       BASIC_LDFLAGS += -L/usr/local/lib
-       HAVE_PATHS_H = YesPlease
-endif
-ifeq ($(uname_S),NetBSD)
-       ifeq ($(shell expr "$(uname_R)" : '[01]\.'),2)
-               NEEDS_LIBICONV = YesPlease
-       endif
-       BASIC_CFLAGS += -I/usr/pkg/include
-       BASIC_LDFLAGS += -L/usr/pkg/lib $(CC_LD_DYNPATH)/usr/pkg/lib
-       USE_ST_TIMESPEC = YesPlease
-       NO_MKSTEMPS = YesPlease
-       HAVE_PATHS_H = YesPlease
-endif
-ifeq ($(uname_S),AIX)
-       DEFAULT_PAGER = more
-       NO_STRCASESTR = YesPlease
-       NO_MEMMEM = YesPlease
-       NO_MKDTEMP = YesPlease
-       NO_MKSTEMPS = YesPlease
-       NO_STRLCPY = YesPlease
-       NO_NSEC = YesPlease
-       FREAD_READS_DIRECTORIES = UnfortunatelyYes
-       INTERNAL_QSORT = UnfortunatelyYes
-       NEEDS_LIBICONV = YesPlease
-       BASIC_CFLAGS += -D_LARGE_FILES
-       ifeq ($(shell expr "$(uname_V)" : '[1234]'),1)
-               NO_PTHREADS = YesPlease
-       else
-               PTHREAD_LIBS = -lpthread
-       endif
-       ifeq ($(shell expr "$(uname_V).$(uname_R)" : '5\.1'),3)
-               INLINE = ''
-       endif
-       GIT_TEST_CMP = cmp
-endif
-ifeq ($(uname_S),GNU)
-       # GNU/Hurd
-       NO_STRLCPY = YesPlease
-       NO_MKSTEMPS = YesPlease
-       HAVE_PATHS_H = YesPlease
-       LIBC_CONTAINS_LIBINTL = YesPlease
-endif
-ifeq ($(uname_S),IRIX)
-       NO_SETENV = YesPlease
-       NO_UNSETENV = YesPlease
-       NO_STRCASESTR = YesPlease
-       NO_MEMMEM = YesPlease
-       NO_MKSTEMPS = YesPlease
-       NO_MKDTEMP = YesPlease
-       # When compiled with the MIPSpro 7.4.4m compiler, and without pthreads
-       # (i.e. NO_PTHREADS is set), and _with_ MMAP (i.e. NO_MMAP is not set),
-       # git dies with a segmentation fault when trying to access the first
-       # entry of a reflog.  The conservative choice is made to always set
-       # NO_MMAP.  If you suspect that your compiler is not affected by this
-       # issue, comment out the NO_MMAP statement.
-       NO_MMAP = YesPlease
-       NO_REGEX = YesPlease
-       NO_FNMATCH_CASEFOLD = YesPlease
-       SNPRINTF_RETURNS_BOGUS = YesPlease
-       SHELL_PATH = /usr/gnu/bin/bash
-       NEEDS_LIBGEN = YesPlease
-endif
-ifeq ($(uname_S),IRIX64)
-       NO_SETENV = YesPlease
-       NO_UNSETENV = YesPlease
-       NO_STRCASESTR = YesPlease
-       NO_MEMMEM = YesPlease
-       NO_MKSTEMPS = YesPlease
-       NO_MKDTEMP = YesPlease
-       # When compiled with the MIPSpro 7.4.4m compiler, and without pthreads
-       # (i.e. NO_PTHREADS is set), and _with_ MMAP (i.e. NO_MMAP is not set),
-       # git dies with a segmentation fault when trying to access the first
-       # entry of a reflog.  The conservative choice is made to always set
-       # NO_MMAP.  If you suspect that your compiler is not affected by this
-       # issue, comment out the NO_MMAP statement.
-       NO_MMAP = YesPlease
-       NO_REGEX = YesPlease
-       NO_FNMATCH_CASEFOLD = YesPlease
-       SNPRINTF_RETURNS_BOGUS = YesPlease
-       SHELL_PATH = /usr/gnu/bin/bash
-       NEEDS_LIBGEN = YesPlease
-endif
-ifeq ($(uname_S),HP-UX)
-       INLINE = __inline
-       NO_IPV6 = YesPlease
-       NO_SETENV = YesPlease
-       NO_STRCASESTR = YesPlease
-       NO_MEMMEM = YesPlease
-       NO_MKSTEMPS = YesPlease
-       NO_STRLCPY = YesPlease
-       NO_MKDTEMP = YesPlease
-       NO_UNSETENV = YesPlease
-       NO_HSTRERROR = YesPlease
-       NO_SYS_SELECT_H = YesPlease
-       NO_FNMATCH_CASEFOLD = YesPlease
-       SNPRINTF_RETURNS_BOGUS = YesPlease
-       NO_NSEC = YesPlease
-       ifeq ($(uname_R),B.11.00)
-               NO_INET_NTOP = YesPlease
-               NO_INET_PTON = YesPlease
-       endif
-       ifeq ($(uname_R),B.10.20)
-               # Override HP-UX 11.x setting:
-               INLINE =
-               SOCKLEN_T = size_t
-               NO_PREAD = YesPlease
-               NO_INET_NTOP = YesPlease
-               NO_INET_PTON = YesPlease
-       endif
-       GIT_TEST_CMP = cmp
-endif
-ifeq ($(uname_S),Windows)
-       GIT_VERSION := $(GIT_VERSION).MSVC
-       pathsep = ;
-       NO_PREAD = YesPlease
-       NEEDS_CRYPTO_WITH_SSL = YesPlease
-       NO_LIBGEN_H = YesPlease
-       NO_POLL = YesPlease
-       NO_SYMLINK_HEAD = YesPlease
-       NO_IPV6 = YesPlease
-       NO_UNIX_SOCKETS = YesPlease
-       NO_SETENV = YesPlease
-       NO_UNSETENV = YesPlease
-       NO_STRCASESTR = YesPlease
-       NO_STRLCPY = YesPlease
-       NO_STRTOK_R = YesPlease
-       NO_FNMATCH = YesPlease
-       NO_MEMMEM = YesPlease
-       # NEEDS_LIBICONV = YesPlease
-       NO_ICONV = YesPlease
-       NO_STRTOUMAX = YesPlease
-       NO_STRTOULL = YesPlease
-       NO_MKDTEMP = YesPlease
-       NO_MKSTEMPS = YesPlease
-       SNPRINTF_RETURNS_BOGUS = YesPlease
-       NO_SVN_TESTS = YesPlease
-       NO_PERL_MAKEMAKER = YesPlease
-       RUNTIME_PREFIX = YesPlease
-       NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
-       NO_NSEC = YesPlease
-       USE_WIN32_MMAP = YesPlease
-       # USE_NED_ALLOCATOR = YesPlease
-       UNRELIABLE_FSTAT = UnfortunatelyYes
-       OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
-       NO_REGEX = YesPlease
-       NO_CURL = YesPlease
-       NO_PYTHON = YesPlease
-       BLK_SHA1 = YesPlease
-       NO_POSIX_GOODIES = UnfortunatelyYes
-       NATIVE_CRLF = YesPlease
-       DEFAULT_HELP_FORMAT = html
-
-       CC = compat/vcbuild/scripts/clink.pl
-       AR = compat/vcbuild/scripts/lib.pl
-       CFLAGS =
-       BASIC_CFLAGS = -nologo -I. -I../zlib -Icompat/vcbuild -Icompat/vcbuild/include -DWIN32 -D_CONSOLE -DHAVE_STRING_H -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE
-       COMPAT_OBJS = compat/msvc.o compat/winansi.o \
-               compat/win32/pthread.o compat/win32/syslog.o \
-               compat/win32/dirent.o
-       COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"
-       BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib
-       EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib
-       PTHREAD_LIBS =
-       lib =
-ifndef DEBUG
-       BASIC_CFLAGS += -GL -Os -MT
-       BASIC_LDFLAGS += -LTCG
-       AR += -LTCG
-else
-       BASIC_CFLAGS += -Zi -MTd
-endif
-       X = .exe
-endif
-ifeq ($(uname_S),Interix)
-       NO_INITGROUPS = YesPlease
-       NO_IPV6 = YesPlease
-       NO_MEMMEM = YesPlease
-       NO_MKDTEMP = YesPlease
-       NO_STRTOUMAX = YesPlease
-       NO_NSEC = YesPlease
-       NO_MKSTEMPS = YesPlease
-       ifeq ($(uname_R),3.5)
-               NO_INET_NTOP = YesPlease
-               NO_INET_PTON = YesPlease
-               NO_SOCKADDR_STORAGE = YesPlease
-               NO_FNMATCH_CASEFOLD = YesPlease
-       endif
-       ifeq ($(uname_R),5.2)
-               NO_INET_NTOP = YesPlease
-               NO_INET_PTON = YesPlease
-               NO_SOCKADDR_STORAGE = YesPlease
-               NO_FNMATCH_CASEFOLD = YesPlease
-       endif
-endif
-ifeq ($(uname_S),Minix)
-       NO_IPV6 = YesPlease
-       NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
-       NO_NSEC = YesPlease
-       NEEDS_LIBGEN =
-       NEEDS_CRYPTO_WITH_SSL = YesPlease
-       NEEDS_IDN_WITH_CURL = YesPlease
-       NEEDS_SSL_WITH_CURL = YesPlease
-       NEEDS_RESOLV =
-       NO_HSTRERROR = YesPlease
-       NO_MMAP = YesPlease
-       NO_CURL =
-       NO_EXPAT =
-endif
-ifeq ($(uname_S),NONSTOP_KERNEL)
-       # Needs some C99 features, "inline" is just one of them.
-       # INLINE='' would just replace one set of warnings with another and
-       # still not compile in c89 mode, due to non-const array initializations.
-       CC = cc -c99
-       # Disable all optimization, seems to result in bad code, with -O or -O2
-       # or even -O1 (default), /usr/local/libexec/git-core/git-pack-objects
-       # abends on "git push". Needs more investigation.
-       CFLAGS = -g -O0
-       # We'd want it to be here.
-       prefix = /usr/local
-       # Our's are in ${prefix}/bin (perl might also be in /usr/bin/perl).
-       PERL_PATH = ${prefix}/bin/perl
-       PYTHON_PATH = ${prefix}/bin/python
-
-       # As detected by './configure'.
-       # Missdetected, hence commented out, see below.
-       #NO_CURL = YesPlease
-       # Added manually, see above.
-       NEEDS_SSL_WITH_CURL = YesPlease
-       HAVE_LIBCHARSET_H = YesPlease
-       HAVE_STRINGS_H = YesPlease
-       NEEDS_LIBICONV = YesPlease
-       NEEDS_LIBINTL_BEFORE_LIBICONV = YesPlease
-       NO_SYS_SELECT_H = UnfortunatelyYes
-       NO_D_TYPE_IN_DIRENT = YesPlease
-       NO_HSTRERROR = YesPlease
-       NO_STRCASESTR = YesPlease
-       NO_FNMATCH_CASEFOLD = YesPlease
-       NO_MEMMEM = YesPlease
-       NO_STRLCPY = YesPlease
-       NO_SETENV = YesPlease
-       NO_UNSETENV = YesPlease
-       NO_MKDTEMP = YesPlease
-       NO_MKSTEMPS = YesPlease
-       # Currently libiconv-1.9.1.
-       OLD_ICONV = UnfortunatelyYes
-       NO_REGEX = YesPlease
-       NO_PTHREADS = UnfortunatelyYes
-
-       # Not detected (nor checked for) by './configure'.
-       # We don't have SA_RESTART on NonStop, unfortunalety.
-       COMPAT_CFLAGS += -DSA_RESTART=0
-       # Apparently needed in compat/fnmatch/fnmatch.c.
-       COMPAT_CFLAGS += -DHAVE_STRING_H=1
-       NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
-       NO_NSEC = YesPlease
-       NO_PREAD = YesPlease
-       NO_MMAP = YesPlease
-       NO_POLL = YesPlease
-       NO_INTPTR_T = UnfortunatelyYes
-       # Bug report 10-120822-4477 submitted to HP NonStop development.
-       MKDIR_WO_TRAILING_SLASH = YesPlease
-       # RFE 10-120912-4693 submitted to HP NonStop development.
-       NO_SETITIMER = UnfortunatelyYes
-       SANE_TOOL_PATH = /usr/coreutils/bin:/usr/local/bin
-       SHELL_PATH = /usr/local/bin/bash
-       # as of H06.25/J06.14, we might better use this
-       #SHELL_PATH = /usr/coreutils/bin/bash
-endif
-ifneq (,$(findstring MINGW,$(uname_S)))
-       pathsep = ;
-       NO_PREAD = YesPlease
-       NEEDS_CRYPTO_WITH_SSL = YesPlease
-       NO_LIBGEN_H = YesPlease
-       NO_POLL = YesPlease
-       NO_SYMLINK_HEAD = YesPlease
-       NO_UNIX_SOCKETS = YesPlease
-       NO_SETENV = YesPlease
-       NO_UNSETENV = YesPlease
-       NO_STRCASESTR = YesPlease
-       NO_STRLCPY = YesPlease
-       NO_STRTOK_R = YesPlease
-       NO_FNMATCH = YesPlease
-       NO_MEMMEM = YesPlease
-       NEEDS_LIBICONV = YesPlease
-       OLD_ICONV = YesPlease
-       NO_STRTOUMAX = YesPlease
-       NO_MKDTEMP = YesPlease
-       NO_MKSTEMPS = YesPlease
-       NO_SVN_TESTS = YesPlease
-       NO_PERL_MAKEMAKER = YesPlease
-       RUNTIME_PREFIX = YesPlease
-       NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
-       NO_NSEC = YesPlease
-       USE_WIN32_MMAP = YesPlease
-       USE_NED_ALLOCATOR = YesPlease
-       UNRELIABLE_FSTAT = UnfortunatelyYes
-       OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
-       NO_REGEX = YesPlease
-       NO_PYTHON = YesPlease
-       BLK_SHA1 = YesPlease
-       ETAGS_TARGET = ETAGS
-       NO_INET_PTON = YesPlease
-       NO_INET_NTOP = YesPlease
-       NO_POSIX_GOODIES = UnfortunatelyYes
-       COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/win32
-       COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
-       COMPAT_OBJS += compat/mingw.o compat/winansi.o \
-               compat/win32/pthread.o compat/win32/syslog.o \
-               compat/win32/dirent.o
-       EXTLIBS += -lws2_32
-       PTHREAD_LIBS =
-       X = .exe
-       SPARSE_FLAGS = -Wno-one-bit-signed-bitfield
-ifneq (,$(wildcard ../THIS_IS_MSYSGIT))
-       htmldir = doc/git/html/
-       prefix =
-       INSTALL = /bin/install
-       EXTLIBS += /mingw/lib/libz.a
-       NO_R_TO_GCC_LINKER = YesPlease
-       INTERNAL_QSORT = YesPlease
-       HAVE_LIBCHARSET_H = YesPlease
-else
-       NO_CURL = YesPlease
-endif
-endif
-ifeq ($(uname_S),QNX)
-       COMPAT_CFLAGS += -DSA_RESTART=0
-       HAVE_STRINGS_H = YesPlease
-       NEEDS_SOCKET = YesPlease
-       NO_FNMATCH_CASEFOLD = YesPlease
-       NO_GETPAGESIZE = YesPlease
-       NO_ICONV = YesPlease
-       NO_MEMMEM = YesPlease
-       NO_MKDTEMP = YesPlease
-       NO_MKSTEMPS = YesPlease
-       NO_NSEC = YesPlease
-       NO_PTHREADS = YesPlease
-       NO_R_TO_GCC_LINKER = YesPlease
-       NO_STRCASESTR = YesPlease
-       NO_STRLCPY = YesPlease
-endif
-
+include config.mak.uname
 -include config.mak.autogen
 -include config.mak
 
@@ -2313,8 +1784,14 @@ configure: configure.ac GIT-VERSION-FILE
        $(RM) $<+
 
 ifdef AUTOCONFIGURED
-config.status: configure
-       $(QUIET_GEN)if test -f config.status; then \
+# We avoid depending on 'configure' here, because it gets rebuilt
+# every time GIT-VERSION-FILE is modified, only to update the embedded
+# version number string, which config.status does not care about.  We
+# do want to recheck when the platform/environment detection logic
+# changes, hence this depends on configure.ac.
+config.status: configure.ac
+       $(QUIET_GEN)$(MAKE) configure && \
+       if test -f config.status; then \
          ./config.status --recheck; \
        else \
          ./configure; \