[PATCH v3 2/2] macOS: use iconv from Homebrew if present
- From
René Scharfe <l.s.r@web.de>
- Date
- Dec 16, 2025, 18:53 UTC
- Message-ID
- <3c85cab3-1e05-4d61-82b0-79659b03d282@web.de>
- In-Reply-To
- <53690064-1c98-40e9-8b9a-7ba6bee63703@web.de>
The library function iconv(3) supplied with macOS versions 15.7.2 (Sequoia) and 26.1 (Tahoe) is unreliable when doing conversions from ISO-2022-JP to UTF-8 in multiple steps; t3900 reports this breakage:
not ok 17 - ISO-2022-JP should be shown in UTF-8 now not ok 25 - ISO-2022-JP should be shown in UTF-8 now not ok 38 - commit --fixup into ISO-2022-JP from UTF-8
As a workaround, use libiconv from Homebrew, if available. Search it in its default locations: /opt/homebrew for Apple Silicon and /usr/local for macOS Intel, with the former taking precedence. Respect ICONVDIR if already set by the user, though.
Helped-by: Koji Nakamaru <koji.nakamaru@gree.net> Signed-off-by: René Scharfe <l.s.r@web.de> --- Makefile | 8 ++++++++ config.mak.uname | 1 + 2 files changed, 9 insertions(+)
diff --git a/Makefile b/Makefile index a97e9e4d7d..307dac3c03 100644 --- a/Makefile +++ b/Makefile @@ -112,6 +112,9 @@ include shared.mak # Define USE_HOMEBREW_MSGFMT to use the msgfmt command installed by # Homebrew to compile message catalogs during build, if present. # +# 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 # and do not want to use Apple's CommonCrypto library. This allows you # to provide your own OpenSSL library, for example from MacPorts. @@ -1717,6 +1720,11 @@ ifeq ($(shell test -x $(HOMEBREW_PREFIX)/opt/gettext/msgfmt && echo y),y) MSGFMT = $(HOMEBREW_PREFIX)/opt/gettext/msgfmt endif 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 diff --git a/config.mak.uname b/config.mak.uname index 54e3a26649..e2e93e9dc5 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -156,6 +156,7 @@ ifeq ($(uname_S),Darwin) endif USE_HOMEBREW_GETTEXT = YesPlease USE_HOMEBREW_MSGFMT = YesPlease + USE_HOMEBREW_LIBICONV = YesPlease # The builtin FSMonitor on MacOS builds upon Simple-IPC. Both require # Unix domain sockets and PThreads.
-- 2.52.0