From: tboegi@web•de
To: tboegi@web•de, git@vger•kernel.org, l.s.r@web•de
Subject: [PATCH v3 2/2] utf8.c: Enable workaround for iconv under macOS 14/15
Date: Mon, 12 Jan 2026 17:25:53 +0100 [thread overview]
Message-ID: <20260112162553.774051-1-tboegi@web.de> (raw)
In-Reply-To: <xmqqwm1no29m.fsf@gitster.g>
From: Torsten Bögershausen <tboegi@web•de>
The previous commit introduced a workaround in utf8.c to deal
with broken iconv implementations.
It is enabled when a MacOS version is used that has a buggy
iconv library and there is no external library provided
(and linked against) from neither MacPorts nor Homebrew nor Fink.
For Homebrew, MacPorts and Fink we check if libiconv exist.
Introduce 2 new macros: HAS_GOOD_LIBICONV and NEEDS_GOOD_LIBICONV.
For Homebrew HAS_GOOD_LIBICONV is set when the libiconv directory
exist.
MacPorts can be installed with or without libiconv, so check if
libiconv.dylib exists (which is a softlink)
Fink compiles and installs libiconv by default.
Note that a fresh installation of Fink now defaults to /opt/sw.
Older versions used /sw as default, so leave the check and setting
of BASIC_CFLAGS and BASIC_LDFLAGS as is.
For the new default check for the existance of /opt/sw as well.
Add a check for /opt/sw/lib/libiconv.dylib which sets HAS_GOOD_LIBICONV
Signed-off-by: Torsten Bögershausen <tboegi@web•de>
---
Makefile | 16 ++++++++++++++++
config.mak.uname | 1 +
2 files changed, 17 insertions(+)
diff --git a/Makefile b/Makefile
index b7eba509c6..8aa489f3b6 100644
--- a/Makefile
+++ b/Makefile
@@ -1687,11 +1687,21 @@ ifeq ($(uname_S),Darwin)
BASIC_CFLAGS += -I/sw/include
BASIC_LDFLAGS += -L/sw/lib
endif
+ ifeq ($(shell test -d /opt/sw/lib && echo y),y)
+ BASIC_CFLAGS += -I/opt/sw/include
+ BASIC_LDFLAGS += -L/opt/sw/lib
+ ifeq ($(shell test -e /opt/sw/lib/libiconv.dylib && echo y),y)
+ HAS_GOOD_LIBICONV = Yes
+ endif
+ endif
endif
ifndef NO_DARWIN_PORTS
ifeq ($(shell test -d /opt/local/lib && echo y),y)
BASIC_CFLAGS += -I/opt/local/include
BASIC_LDFLAGS += -L/opt/local/lib
+ ifeq ($(shell test -e /opt/local/lib/libiconv.dylib && echo y),y)
+ HAS_GOOD_LIBICONV = Yes
+ endif
endif
endif
ifndef NO_APPLE_COMMON_CRYPTO
@@ -1714,6 +1724,7 @@ endif
ifdef USE_HOMEBREW_LIBICONV
ifeq ($(shell test -d $(HOMEBREW_PREFIX)/opt/libiconv && echo y),y)
ICONVDIR ?= $(HOMEBREW_PREFIX)/opt/libiconv
+ HAS_GOOD_LIBICONV = Yes
endif
endif
endif
@@ -1859,6 +1870,11 @@ ifndef NO_ICONV
endif
EXTLIBS += $(ICONV_LINK) -liconv
endif
+ ifdef NEEDS_GOOD_LIBICONV
+ ifndef HAS_GOOD_LIBICONV
+ BASIC_CFLAGS += -DICONV_RESTART_RESET
+ endif
+ endif
endif
ifdef ICONV_OMITS_BOM
BASIC_CFLAGS += -DICONV_OMITS_BOM
diff --git a/config.mak.uname b/config.mak.uname
index 38b35af366..3c35ae33a3 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -157,6 +157,7 @@ ifeq ($(uname_S),Darwin)
endif
ifeq ($(shell test "$(DARWIN_MAJOR_VERSION)" -ge 24 && echo 1),1)
USE_HOMEBREW_LIBICONV = UnfortunatelyYes
+ NEEDS_GOOD_LIBICONV = UnfortunatelyYes
endif
# The builtin FSMonitor on MacOS builds upon Simple-IPC. Both require
--
2.50.0.rc0.46.g7014b55638.dirty
prev parent reply other threads:[~2026-01-12 16:26 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-11 19:51 [PATCH v2 1/2] utf8.c: Prepare workaround for iconv under macOS 14/15 tboegi
2026-01-12 4:58 ` Junio C Hamano
2026-01-12 16:25 ` [PATCH v3 0/2] Workaround " tboegi
2026-01-12 16:25 ` [PATCH v3 1/2] utf8.c: Prepare workaround " tboegi
2026-01-12 16:25 ` tboegi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260112162553.774051-1-tboegi@web.de \
--to=tboegi@web$(echo .)de \
--cc=git@vger$(echo .)kernel.org \
--cc=l.s.r@web$(echo .)de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox