mirror of
https://github.com/git/git.git
synced 2026-01-11 05:13:13 +09:00
Merge branch 'rs/macos-iconv-workaround'
Workaround the "iconv" shipped as part of macOS, which is broken handling stateful ISO/IEC 2022 encoded strings. * rs/macos-iconv-workaround: macOS: use iconv from Homebrew if needed and present macOS: make Homebrew use configurable
This commit is contained in:
commit
b39aad0b0d
26
Makefile
26
Makefile
@ -101,6 +101,15 @@ include shared.mak
|
|||||||
# specify your own (or DarwinPort's) include directories and
|
# specify your own (or DarwinPort's) include directories and
|
||||||
# library directories by defining CFLAGS and LDFLAGS appropriately.
|
# library directories by defining CFLAGS and LDFLAGS appropriately.
|
||||||
#
|
#
|
||||||
|
# Define NO_HOMEBREW if you don't want to use gettext, libiconv and
|
||||||
|
# msgfmt installed by Homebrew.
|
||||||
|
#
|
||||||
|
# Define HOMEBREW_PREFIX if you have Homebrew installed in a non-default
|
||||||
|
# location on macOS or on Linux and want to use it.
|
||||||
|
#
|
||||||
|
# Define USE_HOMEBREW_LIBICONV to link against libiconv installed by
|
||||||
|
# Homebrew, if present.
|
||||||
|
#
|
||||||
# Define NO_APPLE_COMMON_CRYPTO if you are building on Darwin/Mac OS X
|
# Define NO_APPLE_COMMON_CRYPTO if you are building on Darwin/Mac OS X
|
||||||
# and do not want to use Apple's CommonCrypto library. This allows you
|
# and do not want to use Apple's CommonCrypto library. This allows you
|
||||||
# to provide your own OpenSSL library, for example from MacPorts.
|
# to provide your own OpenSSL library, for example from MacPorts.
|
||||||
@ -1693,6 +1702,23 @@ ifeq ($(uname_S),Darwin)
|
|||||||
PTHREAD_LIBS =
|
PTHREAD_LIBS =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifndef NO_HOMEBREW
|
||||||
|
ifdef HOMEBREW_PREFIX
|
||||||
|
ifeq ($(shell test -d $(HOMEBREW_PREFIX)/opt/gettext && echo y),y)
|
||||||
|
BASIC_CFLAGS += -I$(HOMEBREW_PREFIX)/opt/gettext/include
|
||||||
|
BASIC_LDFLAGS += -L$(HOMEBREW_PREFIX)/opt/gettext/lib
|
||||||
|
endif
|
||||||
|
ifeq ($(shell test -x $(HOMEBREW_PREFIX)/opt/gettext/msgfmt && echo y),y)
|
||||||
|
MSGFMT = $(HOMEBREW_PREFIX)/opt/gettext/msgfmt
|
||||||
|
endif
|
||||||
|
ifdef USE_HOMEBREW_LIBICONV
|
||||||
|
ifeq ($(shell test -d $(HOMEBREW_PREFIX)/opt/libiconv && echo y),y)
|
||||||
|
ICONVDIR ?= $(HOMEBREW_PREFIX)/opt/libiconv
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef NO_LIBGEN_H
|
ifdef NO_LIBGEN_H
|
||||||
COMPAT_CFLAGS += -DNO_LIBGEN_H
|
COMPAT_CFLAGS += -DNO_LIBGEN_H
|
||||||
COMPAT_OBJS += compat/basename.o
|
COMPAT_OBJS += compat/basename.o
|
||||||
|
|||||||
@ -124,6 +124,7 @@ ifeq ($(uname_S),Darwin)
|
|||||||
# - MacOS 10.0.* and MacOS 10.1.0 = Darwin 1.*
|
# - MacOS 10.0.* and MacOS 10.1.0 = Darwin 1.*
|
||||||
# - MacOS 10.x.* = Darwin (x+4).* for (1 <= x)
|
# - MacOS 10.x.* = Darwin (x+4).* for (1 <= x)
|
||||||
# i.e. "begins with [15678] and a dot" means "10.4.* or older".
|
# i.e. "begins with [15678] and a dot" means "10.4.* or older".
|
||||||
|
DARWIN_MAJOR_VERSION = $(shell expr "$(uname_R)" : '\([0-9]*\)\.')
|
||||||
ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2)
|
ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2)
|
||||||
OLD_ICONV = UnfortunatelyYes
|
OLD_ICONV = UnfortunatelyYes
|
||||||
NO_APPLE_COMMON_CRYPTO = YesPlease
|
NO_APPLE_COMMON_CRYPTO = YesPlease
|
||||||
@ -149,28 +150,13 @@ ifeq ($(uname_S),Darwin)
|
|||||||
CSPRNG_METHOD = arc4random
|
CSPRNG_METHOD = arc4random
|
||||||
USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS = YesPlease
|
USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS = YesPlease
|
||||||
|
|
||||||
# Workaround for `gettext` being keg-only and not even being linked via
|
ifeq ($(uname_M),arm64)
|
||||||
# `brew link --force gettext`, should be obsolete as of
|
HOMEBREW_PREFIX = /opt/homebrew
|
||||||
# https://github.com/Homebrew/homebrew-core/pull/53489
|
else
|
||||||
ifeq ($(shell test -d /usr/local/opt/gettext/ && echo y),y)
|
HOMEBREW_PREFIX = /usr/local
|
||||||
BASIC_CFLAGS += -I/usr/local/include -I/usr/local/opt/gettext/include
|
endif
|
||||||
BASIC_LDFLAGS += -L/usr/local/lib -L/usr/local/opt/gettext/lib
|
ifeq ($(shell test "$(DARWIN_MAJOR_VERSION)" -ge 24 && echo 1),1)
|
||||||
ifeq ($(shell test -x /usr/local/opt/gettext/bin/msgfmt && echo y),y)
|
USE_HOMEBREW_LIBICONV = UnfortunatelyYes
|
||||||
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
|
endif
|
||||||
|
|
||||||
# The builtin FSMonitor on MacOS builds upon Simple-IPC. Both require
|
# The builtin FSMonitor on MacOS builds upon Simple-IPC. Both require
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user