Merge branch 'js/windows-arm64' into jch
Update to arm64 Windows port. * js/windows-arm64: max_tree_depth: lower it for clangarm64 on Windows mingw(arm64): do move the `/etc/git*` location msvc: do handle builds on Windows/ARM64 mingw: do not use nedmalloc on Windows/ARM64 config.mak.uname: add support for clangarm64 bswap.h: add support for built-in bswap functions
commit
0b2dc6452b
|
@ -35,7 +35,19 @@ static inline uint64_t default_bswap64(uint64_t val)
|
|||
#undef bswap32
|
||||
#undef bswap64
|
||||
|
||||
#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
||||
/**
|
||||
* __has_builtin is available since Clang 10 and GCC 10.
|
||||
* Below is a fallback for older compilers.
|
||||
*/
|
||||
#ifndef __has_builtin
|
||||
#define __has_builtin(x) 0
|
||||
#endif
|
||||
|
||||
#if __has_builtin(__builtin_bswap32) && __has_builtin(__builtin_bswap64)
|
||||
#define bswap32(x) __builtin_bswap32((x))
|
||||
#define bswap64(x) __builtin_bswap64((x))
|
||||
|
||||
#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
||||
|
||||
#define bswap32 git_bswap32
|
||||
static inline uint32_t git_bswap32(uint32_t x)
|
||||
|
|
|
@ -439,7 +439,11 @@ ifeq ($(uname_S),Windows)
|
|||
ifeq (MINGW32,$(MSYSTEM))
|
||||
prefix = /mingw32
|
||||
else
|
||||
prefix = /mingw64
|
||||
ifeq (CLANGARM64,$(MSYSTEM))
|
||||
prefix = /clangarm64
|
||||
else
|
||||
prefix = /mingw64
|
||||
endif
|
||||
endif
|
||||
# Prepend MSVC 64-bit tool-chain to PATH.
|
||||
#
|
||||
|
@ -492,7 +496,7 @@ ifeq ($(uname_S),Windows)
|
|||
NO_POSIX_GOODIES = UnfortunatelyYes
|
||||
NATIVE_CRLF = YesPlease
|
||||
DEFAULT_HELP_FORMAT = html
|
||||
ifeq (/mingw64,$(subst 32,64,$(prefix)))
|
||||
ifeq (/mingw64,$(subst 32,64,$(subst clangarm,mingw,$(prefix))))
|
||||
# Move system config into top-level /etc/
|
||||
ETC_GITCONFIG = ../etc/gitconfig
|
||||
ETC_GITATTRIBUTES = ../etc/gitattributes
|
||||
|
@ -731,6 +735,10 @@ ifeq ($(uname_S),MINGW)
|
|||
prefix = /mingw64
|
||||
HOST_CPU = x86_64
|
||||
BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup
|
||||
else ifeq (CLANGARM64,$(MSYSTEM))
|
||||
prefix = /clangarm64
|
||||
HOST_CPU = aarch64
|
||||
BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup
|
||||
else
|
||||
COMPAT_CFLAGS += -D_USE_32BIT_TIME_T
|
||||
BASIC_LDFLAGS += -Wl,--large-address-aware
|
||||
|
@ -745,8 +753,10 @@ ifeq ($(uname_S),MINGW)
|
|||
HAVE_LIBCHARSET_H = YesPlease
|
||||
USE_GETTEXT_SCHEME = fallthrough
|
||||
USE_LIBPCRE = YesPlease
|
||||
USE_NED_ALLOCATOR = YesPlease
|
||||
ifeq (/mingw64,$(subst 32,64,$(prefix)))
|
||||
ifneq (CLANGARM64,$(MSYSTEM))
|
||||
USE_NED_ALLOCATOR = YesPlease
|
||||
endif
|
||||
ifeq (/mingw64,$(subst 32,64,$(subst clangarm,mingw,$(prefix))))
|
||||
# Move system config into top-level /etc/
|
||||
ETC_GITCONFIG = ../etc/gitconfig
|
||||
ETC_GITATTRIBUTES = ../etc/gitattributes
|
||||
|
|
|
@ -81,6 +81,16 @@ int max_allowed_tree_depth =
|
|||
* the stack overflow can occur.
|
||||
*/
|
||||
512;
|
||||
#elif defined(GIT_WINDOWS_NATIVE) && defined(__clang__) && defined(__aarch64__)
|
||||
/*
|
||||
* Similar to Visual C, it seems that on Windows/ARM64 the clang-based
|
||||
* builds have a smaller stack space available. When running out of
|
||||
* that stack space, a `STATUS_STACK_OVERFLOW` is produced. When the
|
||||
* Git command was run from an MSYS2 Bash, this unfortunately results
|
||||
* in an exit code 127. Let's prevent that by lowering the maximal
|
||||
* tree depth; This value seems to be low enough.
|
||||
*/
|
||||
1280;
|
||||
#else
|
||||
2048;
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue