Subject: Re: [PATCH] config.mak.uname: use iconv from Homebrew on macOS

From: René Scharfe <[email-masked]>
Date: Wed, 10 Dec 2025 18:56:35 +0100

On 12/10/25 12:17 PM, Carlo Marcelo Arenas Belón wrote:
> On Tue, Dec 09, 2025 at 08:35:34PM -0800, René Scharfe wrote:
>> 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.
> 
> While I think Homebrew libraries are usually better than the ones that
> come with the system, there are reasons why you would prefer not linking
> with them and therefore forcing Homebrew as a dependency of your binaries.

The patch doesn't force, it just changes the default.  You can overrule
it by setting ICONVDIR explicitly, e.g. this will use the system's
libiconv:

$ make ICONVDIR=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr

> One particularly good reason is that if you are building a fat binary (
> useful if you target recent macOS which still supports x86_64 but don't
> want to distribute different versions per CPU type) then the system
> library (even if broken) might be preferred.

How do you do that?  By calling clang(1) with -arch x86_64 and -arch
arm64 and using lipo(1) on the results?  Is this possible with the
current make files?

> Slightly off topic, but should another patch that adds a `NO_HOMEBREW`
> Makefile flag similar to `NO_FINK` or `NO_APPLE_PORTS` be added to help
> drive this?

Sounds like a it could be useful to someone.

I'm a bit puzzled that they are implemented in a Darwin section of
Makefile.  config.mak.uname would be a better place, no?

René