libtool.m4: Update '-single_module' detection

'-single_module' detection is broken with Xcode 15, where a message to
stderr indicates the flag is deprecated, not unsupported.

* m4/libtool.m4: Check macOS versions to see if '-single_module' flag is
  unnecessary.
This commit is contained in:
Joshua Root 2023-09-28 09:02:11 +03:00 committed by Ileana Dumitrescu
parent dd2c8f9411
commit 82f7f52123
No known key found for this signature in database
GPG Key ID: 6570EA01146F7354
2 changed files with 21 additions and 1 deletions

5
NEWS
View File

@ -2,6 +2,11 @@ NEWS - list of user-visible changes between releases of GNU Libtool
* Noteworthy changes in release ?.? (????-??-??) [?]
** Bug fixes:
- Fix incorrect use of workarounds designed for Darwin versions that
don't have -single_module support.
* Noteworthy changes in release 2.5.3 (2024-09-25) [stable]

17
m4/libtool.m4 vendored
View File

@ -1100,6 +1100,21 @@ _LT_EOF
if test yes = "$lt_cv_apple_cc_single_mod"; then
_lt_dar_single_mod='$single_module'
fi
_lt_dar_needs_single_mod=no
case $host_os in
rhapsody* | darwin1.*)
_lt_dar_needs_single_mod=yes ;;
darwin*)
# When targeting Mac OS X 10.4 (darwin 8) or later,
# -single_module is the default and -multi_module is unsupported.
# The toolchain on macOS 10.14 (darwin 18) and later cannot
# target any OS version that needs -single_module.
case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
10.0,*-darwin[[567]].*|10.[[0-3]],*-darwin[[5-9]].*|10.[[0-3]],*-darwin1[[0-7]].*)
_lt_dar_needs_single_mod=yes ;;
esac
;;
esac
if test yes = "$lt_cv_ld_exported_symbols_list"; then
_lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
else
@ -1145,7 +1160,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
_LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
_LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
m4_if([$1], [CXX],
[ if test yes != "$lt_cv_apple_cc_single_mod"; then
[ if test yes = "$_lt_dar_needs_single_mod" -a yes != "$lt_cv_apple_cc_single_mod"; then
_LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
_LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
fi