# 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')

ifneq ($(findstring MINGW,$(uname_S)),)
	uname_S := MINGW
endif

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.
ifeq (,$(SKIP_VCPKG))
compat/vcbuild/VCPKG-DEFS: compat/vcbuild/vcpkg_install.bat
	@"$<"
include compat/vcbuild/VCPKG-DEFS
endif
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_SYNC_FILE_RANGE = YesPlease
	HAVE_GETDELIM = YesPlease
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
	BASIC_CFLAGS += -DHAVE_SYSINFO
	PROCFS_EXECUTABLE_PATH = /proc/self/exe
	HAVE_PLATFORM_PROCINFO = YesPlease
	COMPAT_OBJS += compat/linux/procinfo.o
	# centos7/rhel7 provides gcc 4.8.5 and zlib 1.2.7.
	ifneq ($(findstring .el7.,$(uname_R)),)
		BASIC_CFLAGS += -std=c99
	endif
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
	ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -ge 20 && echo 1),1)
		OPEN_RETURNS_EINTR = UnfortunatelyYes
	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
	CSPRNG_METHOD = arc4random
	USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS = YesPlease

	# Workaround for `gettext` being keg-only and not even being linked via
	# `brew link --force gettext`, should be obsolete as of
	# https://github.com/Homebrew/homebrew-core/pull/53489
	ifeq ($(shell test -d /usr/local/opt/gettext/ && echo y),y)
		BASIC_CFLAGS += -I/usr/local/include -I/usr/local/opt/gettext/include
		BASIC_LDFLAGS += -L/usr/local/lib -L/usr/local/opt/gettext/lib
		ifeq ($(shell test -x /usr/local/opt/gettext/bin/msgfmt && echo y),y)
			MSGFMT = /usr/local/opt/gettext/bin/msgfmt
		endif
	# On newer ARM-based machines the default installation path has changed to
	# /opt/homebrew. Include it in our search paths so that the user does not
	# have to configure this manually.
	#
	# Note that we do not employ the same workaround as above where we manually
	# add gettext. The issue was fixed more than three years ago by now, and at
	# that point there haven't been any ARM-based Macs yet.
	else ifeq ($(shell test -d /opt/homebrew/ && echo y),y)
		BASIC_CFLAGS += -I/opt/homebrew/include
		BASIC_LDFLAGS += -L/opt/homebrew/lib
		ifeq ($(shell test -x /opt/homebrew/bin/msgfmt && echo y),y)
			MSGFMT = /opt/homebrew/bin/msgfmt
		endif
	endif

	# The builtin FSMonitor on MacOS builds upon Simple-IPC.  Both require
	# Unix domain sockets and PThreads.
	ifndef NO_PTHREADS
	ifndef NO_UNIX_SOCKETS
	FSMONITOR_DAEMON_BACKEND = darwin
	FSMONITOR_OS_SETTINGS = darwin
	endif
	endif

	BASIC_LDFLAGS += -framework CoreServices
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
	HAVE_BSD_SYSCTL = YesPlease
	HAVE_BSD_KERN_PROC_SYSCTL = YesPlease
	CSPRNG_METHOD = arc4random
	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
	CSPRNG_METHOD = arc4random
	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
	CSPRNG_METHOD = arc4random
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
	CSPRNG_METHOD = arc4random
	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
	FREAD_READS_DIRECTORIES = UnfortunatelyYes
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_SETENV = YesPlease
	NO_STRCASESTR = YesPlease
	NO_STRLCPY = YesPlease
	NO_MEMMEM = YesPlease
	NEEDS_LIBICONV = YesPlease
	NO_STRTOUMAX = YesPlease
	NO_MKDTEMP = YesPlease
	NO_INTTYPES_H = YesPlease
	CSPRNG_METHOD = rtlgenrandom
	# VS2015 with UCRT claims that snprintf and friends are C99 compliant,
	# so we don't need this:
	#
	#   SNPRINTF_RETURNS_BOGUS = YesPlease

	# The builtin FSMonitor requires Named Pipes and Threads on Windows.
	# These are always available, so we do not have to conditionally
	# support it.
	FSMONITOR_DAEMON_BACKEND = win32
	FSMONITOR_OS_SETTINGS = win32

	NO_SVN_TESTS = YesPlease
	RUNTIME_PREFIX = YesPlease
	HAVE_WPGMPTR = YesWeDo
	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
	USE_WIN32_IPC = 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
ifeq (/mingw64,$(subst 32,64,$(prefix)))
	# Move system config into top-level /etc/
	ETC_GITCONFIG = ../etc/gitconfig
	ETC_GITATTRIBUTES = ../etc/gitattributes
endif

	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/flush.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
	# 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

	EXTRA_PROGRAMS += headless-git$X

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
	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
	CSPRNG_METHOD = openssl
	SANE_TOOL_PATH = /usr/coreutils/bin:/usr/local/bin
	SHELL_PATH = /usr/coreutils/bin/bash
endif
ifeq ($(uname_S),OS/390)
	NO_SYS_POLL_H = YesPlease
	NO_STRCASESTR = YesPlease
	NO_REGEX = YesPlease
	NO_MMAP = YesPlease
	NO_NSEC = YesPlease
	NO_STRLCPY = YesPlease
	NO_MEMMEM = YesPlease
	NO_GECOS_IN_PWENT = YesPlease
	HAVE_STRINGS_H = YesPlease
	NEEDS_MODE_TRANSLATION = YesPlease
endif
ifeq ($(uname_S),MINGW)
	ifeq ($(shell expr "$(uname_R)" : '1\.'),2)
		$(error "Building with MSys is no longer supported")
	endif
	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_SETENV = YesPlease
	NO_STRCASESTR = YesPlease
	NO_STRLCPY = YesPlease
	NO_MEMMEM = YesPlease
	NEEDS_LIBICONV = YesPlease
	NO_STRTOUMAX = YesPlease
	NO_MKDTEMP = YesPlease
	NO_SVN_TESTS = YesPlease

	# The builtin FSMonitor requires Named Pipes and Threads on Windows.
	# These are always available, so we do not have to conditionally
	# support it.
	FSMONITOR_DAEMON_BACKEND = win32
	FSMONITOR_OS_SETTINGS = win32

	RUNTIME_PREFIX = YesPlease
	HAVE_WPGMPTR = YesWeDo
	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
	USE_WIN32_IPC = YesPlease
	USE_WIN32_MMAP = YesPlease
	MMAP_PREVENTS_DELETE = UnfortunatelyYes
	UNRELIABLE_FSTAT = UnfortunatelyYes
	OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
	NO_REGEX = YesPlease
	ETAGS_TARGET = ETAGS
	NO_POSIX_GOODIES = UnfortunatelyYes
	DEFAULT_HELP_FORMAT = html
	HAVE_PLATFORM_PROCINFO = YesPlease
	CSPRNG_METHOD = rtlgenrandom
	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/flush.o \
		compat/win32/path-utils.o \
		compat/win32/pthread.o compat/win32/syslog.o \
		compat/win32/dirent.o
	BASIC_CFLAGS += -DWIN32
	EXTLIBS += -lws2_32
	GITLIBS += git.res
	PTHREAD_LIBS =
	RC = windres -O coff
	NATIVE_CRLF = YesPlease
	X = .exe
	# 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
	EXTRA_PROGRAMS += headless-git$X
	INSTALL = /bin/install
	INTERNAL_QSORT = YesPlease
	HAVE_LIBCHARSET_H = YesPlease
	USE_GETTEXT_SCHEME = fallthrough
	USE_LIBPCRE = YesPlease
	USE_NED_ALLOCATOR = YesPlease
	ifeq (/mingw64,$(subst 32,64,$(prefix)))
		# Move system config into top-level /etc/
		ETC_GITCONFIG = ../etc/gitconfig
		ETC_GITATTRIBUTES = ../etc/gitattributes
	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_STRCASESTR = YesPlease
	NO_STRLCPY = YesPlease
endif

vcxproj:
	# Require clean work tree
	git update-index -q --refresh && \
	git diff-files --quiet && \
	git diff-index --cached --quiet HEAD --

	# Make .vcxproj files and add them
	perl contrib/buildsystems/generate -g Vcxproj
	git add -f git.sln {*,*/lib,t/helper/*}/*.vcxproj

	# Generate the LinkOrCopyBuiltins.targets and LinkOrCopyRemoteHttp.targets file
	(echo '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">' && \
	 echo '  <Target Name="CopyBuiltins_AfterBuild" AfterTargets="AfterBuild">' && \
	 for name in $(BUILT_INS);\
	 do \
	   echo '    <Copy SourceFiles="$$(OutDir)\git.exe" DestinationFiles="$$(OutDir)\'"$$name"'" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" />'; \
	 done && \
	 echo '  </Target>' && \
	 echo '</Project>') >git/LinkOrCopyBuiltins.targets
	(echo '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">' && \
	 echo '  <Target Name="CopyBuiltins_AfterBuild" AfterTargets="AfterBuild">' && \
	 for name in $(REMOTE_CURL_ALIASES); \
	 do \
	   echo '    <Copy SourceFiles="$$(OutDir)\'"$(REMOTE_CURL_PRIMARY)"'" DestinationFiles="$$(OutDir)\'"$$name"'" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" />'; \
	 done && \
	 echo '  </Target>' && \
	 echo '</Project>') >git-remote-http/LinkOrCopyRemoteHttp.targets
	git add -f git/LinkOrCopyBuiltins.targets git-remote-http/LinkOrCopyRemoteHttp.targets

	# Add generated headers
	$(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(GENERATED_H)
	git add -f $(GENERATED_H)

	# Add scripts
	rm -f perl/perl.mak
	$(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(SCRIPT_LIB) $(SCRIPTS)
	# Strip out the sane tool path, needed only for building
	sed -i '/^git_broken_path_fix ".*/d' git-sh-setup
	git add -f $(SCRIPT_LIB) $(SCRIPTS)

	# Add Perl module
	$(MAKE) $(LIB_PERL_GEN)
	git add -f perl/build

	# Add bin-wrappers, for testing
	rm -rf bin-wrappers/
	$(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(test_bindir_programs)
	# Ensure that the GIT_EXEC_PATH is a Unix-y one, and that the absolute
	# path of the repository is not hard-coded (GIT_EXEC_PATH will be set
	# by test-lib.sh according to the current setup)
	sed -i -e 's/^\(GIT_EXEC_PATH\)=.*/test -n "$${\1##*:*}" ||\
			\1="$$(cygpath -u "$$\1")"/' \
		-e "s|'$$(pwd)|\"\$$GIT_EXEC_PATH\"'|g" bin-wrappers/*
	# Ensure that test-* helpers find the .dll files copied to top-level
	sed -i 's|^PATH=.*|&:"$$GIT_EXEC_PATH"|' bin-wrappers/test-*
	# We do not want to force hard-linking builtins
	sed -i 's|\(git\)-\([-a-z]*\)\.exe"|\1.exe" \2|g' \
		bin-wrappers/git-{receive-pack,upload-archive}
	git add -f $(test_bindir_programs)
	# remote-ext is a builtin, but invoked as if it were external
	sed 's|receive-pack|remote-ext|g' \
		<bin-wrappers/git-receive-pack >bin-wrappers/git-remote-ext
	git add -f bin-wrappers/git-remote-ext

	# Add templates
	$(MAKE) -C templates
	git add -f templates/boilerplates.made templates/blt/

	# Add the translated messages
	make MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(MOFILES)
	git add -f $(MOFILES)

	# Add build options
	$(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 GIT-BUILD-OPTIONS
	git add -f GIT-BUILD-OPTIONS

	# Commit the whole shebang
	git commit -m "Generate Visual Studio solution" \
		-m "Auto-generated by \`$(MAKE)$(MAKEFLAGS) $@\`"
