# Platform specific Makefile tweaks based on uname detection

# Define NO_SAFESEH if you need MSVC/Visual Studio to ignore the lack of
# Microsoft's Safe Exception Handling in libraries (such as zlib).
# Typically required for VS2013+/32-bit compilation on Vista+ versions.

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

	# Generate and include makefile variables that point to the
	# currently installed set of MSVC command line tools.
compat/vcbuild/MSVC-DEFS-GEN: compat/vcbuild/find_vs_env.bat
	@"$<" | tr '\\' / >"$@"
include compat/vcbuild/MSVC-DEFS-GEN

	# See if vcpkg and the vcpkg-build versions of the third-party
	# libraries that we use are installed.  We include the result
	# to get $(vcpkg_*) variables defined for the Makefile.
compat/vcbuild/VCPKG-DEFS: compat/vcbuild/vcpkg_install.bat
	@"$<"
include compat/vcbuild/VCPKG-DEFS
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_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)
	HAVE_ALLOCA_H = YesPlease
	NO_STRLCPY = YesPlease
	HAVE_PATHS_H = YesPlease
	LIBC_CONTAINS_LIBINTL = YesPlease
	HAVE_DEV_TTY = YesPlease
	HAVE_CLOCK_GETTIME = YesPlease
	HAVE_CLOCK_MONOTONIC = YesPlease
	# -lrt is needed for clock_gettime on glibc <= 2.16
	NEEDS_LIBRT = YesPlease
	HAVE_GETDELIM = YesPlease
	SANE_TEXT_GREP=-a
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
	BASIC_CFLAGS += -DHAVE_SYSINFO
	PROCFS_EXECUTABLE_PATH = /proc/self/exe
endif
ifeq ($(uname_S),GNU/kFreeBSD)
	HAVE_ALLOCA_H = YesPlease
	NO_STRLCPY = YesPlease
	HAVE_PATHS_H = YesPlease
	DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
	LIBC_CONTAINS_LIBINTL = YesPlease
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
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
	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
	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
	# Note: $(uname_R) gives us the underlying Darwin version.
	# - MacOS 10.0.* and MacOS 10.1.0 = Darwin 1.*
	# - MacOS 10.x.* = Darwin (x+4).* for (1 <= x)
	# i.e. "begins with [15678] and a dot" means "10.4.* or older".
	ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2)
		OLD_ICONV = UnfortunatelyYes
		NO_APPLE_COMMON_CRYPTO = YesPlease
	endif
	ifeq ($(shell expr "$(uname_R)" : '[15]\.'),2)
		NO_STRLCPY = YesPlease
	endif
	ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -ge 11 && echo 1),1)
		HAVE_GETDELIM = YesPlease
	endif
	NO_MEMMEM = YesPlease
	USE_ST_TIMESPEC = YesPlease
	HAVE_DEV_TTY = YesPlease
	COMPAT_OBJS += compat/precompose_utf8.o
	BASIC_CFLAGS += -DPRECOMPOSE_UNICODE
	BASIC_CFLAGS += -DPROTECT_HFS_DEFAULT=1
	HAVE_BSD_SYSCTL = YesPlease
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
	HAVE_NS_GET_EXECUTABLE_PATH = YesPlease
	BASIC_CFLAGS += -I/usr/local/include
	BASIC_LDFLAGS += -L/usr/local/lib
endif
ifeq ($(uname_S),SunOS)
	NEEDS_SOCKET = YesPlease
	NEEDS_NSL = YesPlease
	SHELL_PATH = /bin/bash
	SANE_TOOL_PATH = /usr/xpg6/bin:/usr/xpg4/bin
	HAVE_ALLOCA_H = YesPlease
	NO_STRCASESTR = YesPlease
	NO_MEMMEM = YesPlease
	NO_MKDTEMP = YesPlease
	NO_REGEX = 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__
endif
ifeq ($(uname_O),Cygwin)
	ifeq ($(shell expr "$(uname_R)" : '1\.[1-6]\.'),4)
		NO_D_TYPE_IN_DIRENT = YesPlease
		NO_STRCASESTR = YesPlease
		NO_MEMMEM = YesPlease
		NO_SYMLINK_HEAD = YesPlease
		NO_IPV6 = YesPlease
		OLD_ICONV = UnfortunatelyYes
		# 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
	else
		NO_REGEX = UnfortunatelyYes
	endif
	HAVE_ALLOCA_H = YesPlease
	NEEDS_LIBICONV = YesPlease
	NO_FAST_WORKING_DIRECTORY = UnfortunatelyYes
	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
	X = .exe
	UNRELIABLE_FSTAT = UnfortunatelyYes
	OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
	MMAP_PREVENTS_DELETE = UnfortunatelyYes
	COMPAT_OBJS += compat/win32/path-utils.o
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
endif
ifeq ($(uname_S),FreeBSD)
	NEEDS_LIBICONV = YesPlease
	# Versions up to 10.1 require OLD_ICONV; 10.2 and beyond don't.
	# A typical version string looks like "10.2-RELEASE".
	ifeq ($(shell expr "$(uname_R)" : '[1-9]\.'),2)
		OLD_ICONV = YesPlease
	endif
	ifeq ($(firstword $(subst -, ,$(uname_R))),10.0)
		OLD_ICONV = YesPlease
	endif
	ifeq ($(firstword $(subst -, ,$(uname_R))),10.1)
		OLD_ICONV = YesPlease
	endif
	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
	PERL_PATH = /usr/local/bin/perl
	HAVE_PATHS_H = YesPlease
	GMTIME_UNRELIABLE_ERRORS = UnfortunatelyYes
	HAVE_BSD_SYSCTL = YesPlease
	HAVE_BSD_KERN_PROC_SYSCTL = YesPlease
	PAGER_ENV = LESS=FRX LV=-c MORE=FRX
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
	FILENO_IS_A_MACRO = UnfortunatelyYes
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
	HAVE_BSD_SYSCTL = YesPlease
	HAVE_BSD_KERN_PROC_SYSCTL = YesPlease
	PROCFS_EXECUTABLE_PATH = /proc/curproc/file
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
	FILENO_IS_A_MACRO = UnfortunatelyYes
endif
ifeq ($(uname_S),MirBSD)
	NO_STRCASESTR = YesPlease
	NO_MEMMEM = YesPlease
	USE_ST_TIMESPEC = YesPlease
	NEEDS_LIBICONV = YesPlease
	HAVE_PATHS_H = YesPlease
	HAVE_BSD_SYSCTL = 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
	HAVE_PATHS_H = YesPlease
	HAVE_BSD_SYSCTL = YesPlease
	HAVE_BSD_KERN_PROC_SYSCTL = YesPlease
	PROCFS_EXECUTABLE_PATH = /proc/curproc/exe
endif
ifeq ($(uname_S),AIX)
	DEFAULT_PAGER = more
	NO_STRCASESTR = YesPlease
	NO_MEMMEM = YesPlease
	NO_MKDTEMP = YesPlease
	NO_STRLCPY = YesPlease
	NO_NSEC = YesPlease
	NO_REGEX = NeedsStartEnd
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
	INTERNAL_QSORT = UnfortunatelyYes
	NEEDS_LIBICONV = YesPlease
	BASIC_CFLAGS += -D_LARGE_FILES
	FILENO_IS_A_MACRO = UnfortunatelyYes
	NEED_ACCESS_ROOT_HANDLER = UnfortunatelyYes
	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
	HAVE_ALLOCA_H = YesPlease
	NO_STRLCPY = 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_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
	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_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
	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_STRLCPY = YesPlease
	NO_MKDTEMP = YesPlease
	NO_UNSETENV = YesPlease
	NO_HSTRERROR = YesPlease
	NO_SYS_SELECT_H = 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 = ;
	# Assume that this is built in Git for Windows' SDK
	ifeq (MINGW32,$(MSYSTEM))
		prefix = /mingw32
	else
		prefix = /mingw64
	endif
	# Prepend MSVC 64-bit tool-chain to PATH.
	#
	# A regular Git Bash *does not* have cl.exe in its $PATH. As there is a
	# link.exe next to, and required by, cl.exe, we have to prepend this
	# onto the existing $PATH.
	#
	SANE_TOOL_PATH ?= $(msvc_bin_dir_msys)
	HAVE_ALLOCA_H = YesPlease
	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_STRCASESTR = YesPlease
	NO_STRLCPY = YesPlease
	NO_MEMMEM = YesPlease
	NEEDS_LIBICONV = YesPlease
	NO_STRTOUMAX = YesPlease
	NO_MKDTEMP = YesPlease
	NO_INTTYPES_H = YesPlease
	# VS2015 with UCRT claims that snprintf and friends are C99 compliant,
	# so we don't need this:
	#
	#   SNPRINTF_RETURNS_BOGUS = YesPlease
	NO_SVN_TESTS = YesPlease
	RUNTIME_PREFIX = YesPlease
	HAVE_WPGMPTR = YesWeDo
	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
	USE_WIN32_MMAP = YesPlease
	MMAP_PREVENTS_DELETE = UnfortunatelyYes
	# USE_NED_ALLOCATOR = YesPlease
	UNRELIABLE_FSTAT = UnfortunatelyYes
	OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
	NO_REGEX = YesPlease
	NO_GETTEXT = YesPlease
	NO_PYTHON = YesPlease
	ETAGS_TARGET = ETAGS
	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. -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/path-utils.o \
		compat/win32/pthread.o compat/win32/syslog.o \
		compat/win32/trace2_win32_process_info.o \
		compat/win32/dirent.o
	COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DDETECT_MSYS_TTY -DNOGDI -DHAVE_STRING_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"
	BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -ENTRY:wmainCRTStartup -SUBSYSTEM:CONSOLE
	# invalidcontinue.obj allows Git's source code to close the same file
	# handle twice, or to access the osfhandle of an already-closed stdout
	# See https://msdn.microsoft.com/en-us/library/ms235330.aspx
	EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib invalidcontinue.obj kernel32.lib ntdll.lib
	PTHREAD_LIBS =
	lib =
	BASIC_CFLAGS += $(vcpkg_inc) $(sdk_includes) $(msvc_includes)
ifndef DEBUG
	BASIC_CFLAGS += $(vcpkg_rel_lib)
else
	BASIC_CFLAGS += $(vcpkg_dbg_lib)
endif
	BASIC_CFLAGS += $(sdk_libs) $(msvc_libs)

ifneq ($(USE_MSVC_CRTDBG),)
	# Optionally enable memory leak reporting.
	BASIC_CFLAGS += -DUSE_MSVC_CRTDBG
endif
	BASIC_CFLAGS += -DPROTECT_NTFS_DEFAULT=1
	# Always give "-Zi" to the compiler and "-debug" to linker (even in
	# release mode) to force a PDB to be generated (like RelWithDebInfo).
	BASIC_CFLAGS += -Zi
	BASIC_LDFLAGS += -debug -Zf

ifdef NO_SAFESEH
	LDFLAGS += -SAFESEH:NO
endif

ifndef DEBUG
	BASIC_CFLAGS += -GL -Gy -O2 -Oy- -MD -DNDEBUG
	BASIC_LDFLAGS += -release -LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO /DEBUGTYPE:CV,FIXUP
	AR += -LTCG
else
	BASIC_CFLAGS += -MDd -DDEBUG -D_DEBUG
endif
	X = .exe

compat/msvc.o: compat/msvc.c compat/mingw.c GIT-CFLAGS
endif
ifeq ($(uname_S),Interix)
	NO_INITGROUPS = YesPlease
	NO_IPV6 = YesPlease
	NO_MEMMEM = YesPlease
	NO_MKDTEMP = YesPlease
	NO_STRTOUMAX = YesPlease
	NO_NSEC = YesPlease
	ifeq ($(uname_R),3.5)
		NO_INET_NTOP = YesPlease
		NO_INET_PTON = YesPlease
		NO_SOCKADDR_STORAGE = YesPlease
	endif
	ifeq ($(uname_R),5.2)
		NO_INET_NTOP = YesPlease
		NO_INET_PTON = YesPlease
		NO_SOCKADDR_STORAGE = 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_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
	# Build down-rev compatible objects that don't use our new getopt_long.
	ifeq ($(uname_R).$(uname_V),J06.21)
		CC += -WRVU=J06.20
	endif
	ifeq ($(uname_R).$(uname_V),L17.02)
		CC += -WRVU=L16.05
	endif
	# 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 -Winline
	# We'd want it to be here.
	prefix = /usr/local
	# perl and python must be in /usr/bin on NonStop - supplied by HPE
	# with operating system in that managed directory.
	PERL_PATH = /usr/bin/perl
	PYTHON_PATH = /usr/bin/python
	# The current /usr/coreutils/rm at lowest support level does not work
	# with the git test structure. Long paths as in
	# 'trash directory...' cause rm to terminate prematurely without fully
	# removing the directory at OS releases J06.21 and L17.02.
	# Default to the older rm until those two releases are deprecated.
	RM = /bin/rm -f
	# As detected by './configure'.
	# Missdetected, hence commented out, see below.
	#NO_CURL = YesPlease
	# Added manually, see above.
	NEEDS_SSL_WITH_CURL = YesPlease
	NEEDS_CRYPTO_WITH_SSL = YesPlease
	HAVE_DEV_TTY = 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_GETTEXT = YesPlease
	NO_HSTRERROR = YesPlease
	NO_STRCASESTR = YesPlease
	NO_MEMMEM = YesPlease
	NO_STRLCPY = YesPlease
	NO_SETENV = YesPlease
	NO_UNSETENV = YesPlease
	NO_MKDTEMP = YesPlease
	# Currently libiconv-1.9.1.
	OLD_ICONV = UnfortunatelyYes
	NO_REGEX = NeedsStartEnd
	NO_PTHREADS = UnfortunatelyYes
	FREAD_READS_DIRECTORIES = 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/coreutils/bin/bash
endif
ifneq (,$(findstring MINGW,$(uname_S)))
	pathsep = ;
	HAVE_ALLOCA_H = YesPlease
	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_STRCASESTR = YesPlease
	NO_STRLCPY = YesPlease
	NO_MEMMEM = YesPlease
	NEEDS_LIBICONV = YesPlease
	NO_STRTOUMAX = YesPlease
	NO_MKDTEMP = YesPlease
	NO_SVN_TESTS = YesPlease
	RUNTIME_PREFIX = YesPlease
	HAVE_WPGMPTR = YesWeDo
	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
	USE_WIN32_MMAP = YesPlease
	MMAP_PREVENTS_DELETE = UnfortunatelyYes
	USE_NED_ALLOCATOR = YesPlease
	UNRELIABLE_FSTAT = UnfortunatelyYes
	OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
	NO_REGEX = YesPlease
	NO_PYTHON = YesPlease
	ETAGS_TARGET = ETAGS
	NO_POSIX_GOODIES = UnfortunatelyYes
	DEFAULT_HELP_FORMAT = html
	BASIC_LDFLAGS += -municode
	COMPAT_CFLAGS += -DNOGDI -Icompat -Icompat/win32
	COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
	COMPAT_OBJS += compat/mingw.o compat/winansi.o \
		compat/win32/trace2_win32_process_info.o \
		compat/win32/path-utils.o \
		compat/win32/pthread.o compat/win32/syslog.o \
		compat/win32/dirent.o
	BASIC_CFLAGS += -DWIN32 -DPROTECT_NTFS_DEFAULT=1
	EXTLIBS += -lws2_32
	GITLIBS += git.res
	PTHREAD_LIBS =
	RC = windres -O coff
	NATIVE_CRLF = YesPlease
	X = .exe
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
	NO_GETTEXT = YesPlease
	COMPAT_CFLAGS += -D__USE_MINGW_ACCESS
else
	ifneq ($(shell expr "$(uname_R)" : '1\.'),2)
		# MSys2
		prefix = /usr/
		# Enable DEP
		BASIC_LDFLAGS += -Wl,--nxcompat
		# Enable ASLR (unless debugging)
		ifneq (,$(findstring -O,$(filter-out -O0 -Og,$(CFLAGS))))
			BASIC_LDFLAGS += -Wl,--dynamicbase
		endif
		ifeq (MINGW32,$(MSYSTEM))
			prefix = /mingw32
			HOST_CPU = i686
			BASIC_LDFLAGS += -Wl,--pic-executable,-e,_mainCRTStartup
		endif
		ifeq (MINGW64,$(MSYSTEM))
			prefix = /mingw64
			HOST_CPU = x86_64
			BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup
		else
			COMPAT_CFLAGS += -D_USE_32BIT_TIME_T
			BASIC_LDFLAGS += -Wl,--large-address-aware
		endif
		CC = gcc
		COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 -DDETECT_MSYS_TTY \
			-fstack-protector-strong
		EXTLIBS += -lntdll
		INSTALL = /bin/install
		NO_R_TO_GCC_LINKER = YesPlease
		INTERNAL_QSORT = YesPlease
		HAVE_LIBCHARSET_H = YesPlease
		NO_GETTEXT =
		USE_GETTEXT_SCHEME = fallthrough
		USE_LIBPCRE= YesPlease
		NO_LIBPCRE1_JIT = UnfortunatelyYes
		NO_CURL =
		USE_NED_ALLOCATOR = YesPlease
	else
		COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO
		NO_CURL = YesPlease
	endif
endif
endif
ifeq ($(uname_S),QNX)
	COMPAT_CFLAGS += -DSA_RESTART=0
	EXPAT_NEEDS_XMLPARSE_H = YesPlease
	HAVE_STRINGS_H = YesPlease
	NEEDS_SOCKET = YesPlease
	NO_GETPAGESIZE = YesPlease
	NO_ICONV = YesPlease
	NO_MEMMEM = YesPlease
	NO_MKDTEMP = YesPlease
	NO_NSEC = YesPlease
	NO_PTHREADS = YesPlease
	NO_R_TO_GCC_LINKER = YesPlease
	NO_STRCASESTR = YesPlease
	NO_STRLCPY = YesPlease
endif
