Revision 865406bc5426d5196935e37a3a5fde9c843c3e96 authored by Philip Oakley on 29 July 2019, 20:08:03 UTC, committed by Junio C Hamano on 29 July 2019, 21:51:42 UTC
Since 4b623d8 (MSVC: link in invalidcontinue.obj for better POSIX
compatibility, 2014-03-29), invalidcontinue.obj is linked in the MSVC
build, but it was not parsed correctly by the buildsystem. Ignore it, as
it is known to Visual Studio and will be handled elsewhere.

Also only substitute filenames ending with .o when generating the
source .c filename, otherwise we would start to expect .cbj files to
generate .obj files (which are not generated by our build)...

In the future there may be source files that produce .obj files
so keep the two issues (.obj files with & without source files)
separate.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Duncan Smart <duncan.smart@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 158471d
Raw File
config.mak.uname
# 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
back to top