Makefile: hoist uname autodetection to config.mak.uname
authorJeff King <peff@peff.net>
Thu, 3 Jan 2013 21:05:41 +0000 (16:05 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 3 Jan 2013 22:15:17 +0000 (14:15 -0800)
Our Makefile first sets up some sane per-platform defaults
by looking at "uname", then modifies that according to the
results of autoconf (if any), then modifies that according
to the user's wishes in config.mak.

For sub-Makefiles like Documentation/Makefile, the latter
two are available, but the uname defaults are available only
to the main Makefile. This hasn't been a problem so far,
because the sub-Makefiles do not rely on any of those
automatic settings to do their work.

This patch puts the uname magic into its own file so it can
be reused in other Makefiles, opening up the possibility of
new knobs.

Note that we leave one reference to uname in the top-level
Makefile: if we are on Darwin, we must check the NO_FINK and
NO_DARWIN_PORTS settings. But because we are combining uname
settings with user-options, we must do so after all of the
config is loaded. This is acceptable, as the resulting
conditionals are about setting variables specific to the
top-level Makefile (and if that ever changes, we can hoist
them into a separate post-config include, too).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
config.mak.uname [new file with mode: 0644]
index 186f127301dcbe8ddef72f9b9bf7f6a44917bc1d..4bcbd9d7cfac249389bdb29b01f8ffe7f81f80fe 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -334,19 +334,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
@@ -945,535 +932,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
 
diff --git a/config.mak.uname b/config.mak.uname
new file mode 100644 (file)
index 0000000..bea34f0
--- /dev/null
@@ -0,0 +1,539 @@
+# Platform specific Makefile tweaks based on uname detection
+
+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
+
+# 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