On macOS, using a default configure (without --with-libintl-prefix) causes
link errors due to missing frameworks used by localename-unsafe:

    $ ./configure
    ...

    $ grep -w -e LIBINTL -e USE_NLS config.status
    S["USE_NLS"]="no"
    S["LIBINTL"]=""

    $ make src/du V=1
    gcc  -Wno-format-extra-args
-Wno-implicit-const-int-float-conversion
-Wno-tautological-constant-out-of-range-compare -g -O2   -o src/du
src/du.o src/show-date.o src/libver.a lib/libcoreutils.a
lib/libcoreutils.a
    ld: warning: ignoring duplicate libraries: 'lib/libcoreutils.a'
    Undefined symbols for architecture arm64:
      "_CFGetTypeID", referenced from:
          _gl_locale_name_default in
libcoreutils.a[183](libcoreutils_a-localename-unsafe.o)
      "_CFPreferencesCopyAppValue", referenced from:
          _gl_locale_name_default in
libcoreutils.a[183](libcoreutils_a-localename-unsafe.o)
      "_CFStringGetCString", referenced from:
          _gl_locale_name_default in
libcoreutils.a[183](libcoreutils_a-localename-unsafe.o)
      "_CFStringGetTypeID", referenced from:
          _gl_locale_name_default in
libcoreutils.a[183](libcoreutils_a-localename-unsafe.o)
      "___CFConstantStringClassReference", referenced from:
           in libcoreutils.a[183](libcoreutils_a-localename-unsafe.o)
      "_kCFPreferencesCurrentApplication", referenced from:
          _gl_locale_name_default in
libcoreutils.a[183](libcoreutils_a-localename-unsafe.o)
    ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to
see invocation)
    make: *** [src/du] Error 1

OTOH, when USE_NLS is "yes", linking is fine because then $LIBINTL contains
$INTL_MACOSX_LIBS, and LDADD in src/local.mk always includes $(LIBINTL).

The attached patch might be too complicated or the wrong approach but
addresses the issue for me.

Attachment: 0001-build-fix-macOS-build-without-libintl.patch
Description: Binary data

Reply via email to