From 59acfd4a09df1c141dac7845eed008af8970fce7 Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Mon, 24 May 2021 23:00:04 -0400 Subject: [PATCH] bpo-43109: Fix --with-lto configure option on macOS (GH-26341) Allow --with-lto configure option to work with Apple-supplied Xcode or Command Line Tools which do not provide llvm-ar. --- .../next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst | 2 ++ configure | 9 ++++++--- configure.ac | 9 ++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 Misc/NEWS.d/next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst diff --git a/Misc/NEWS.d/next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst b/Misc/NEWS.d/next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst new file mode 100644 index 00000000000..bb4d24fa955 --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst @@ -0,0 +1,2 @@ +Allow --with-lto configure option to work with Apple-supplied Xcode or +Command Line Tools. diff --git a/configure b/configure index e1d450131fe..1756d25d16f 100755 --- a/configure +++ b/configure @@ -6711,10 +6711,11 @@ fi fi if test "$ac_sys_system" = "Darwin" -a "${LLVM_AR_FOUND}" = "not-found" then - found_llvm_ar=`/usr/bin/xcrun -find llvm-ar 2>/dev/null` + # The Apple-supplied ar in Xcode or the Command Line Tools is apparently sufficient + found_llvm_ar=`/usr/bin/xcrun -find ar 2>/dev/null` if test -n "${found_llvm_ar}" then - LLVM_AR='/usr/bin/xcrun llvm-ar' + LLVM_AR='/usr/bin/xcrun ar' LLVM_AR_FOUND=found { $as_echo "$as_me:${as_lineno-$LINENO}: llvm-ar found via xcrun: ${LLVM_AR}" >&5 $as_echo "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;} @@ -6732,6 +6733,7 @@ $as_echo "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;} Darwin*) # Any changes made here should be reflected in the GCC+Darwin case below LTOFLAGS="-flto -Wl,-export_dynamic" + LTOCFLAGS="-flto" ;; *) LTOFLAGS="-flto" @@ -6742,6 +6744,7 @@ $as_echo "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;} case $ac_sys_system in Darwin*) LTOFLAGS="-flto -Wl,-export_dynamic" + LTOCFLAGS="-flto" ;; *) LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none" @@ -6757,7 +6760,7 @@ $as_echo "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;} LTOFLAGS="$LTOFLAGS -g" fi - CFLAGS_NODIST="$CFLAGS_NODIST $LTOFLAGS" + CFLAGS_NODIST="$CFLAGS_NODIST ${LTOCFLAGS-$LTOFLAGS}" LDFLAGS_NODIST="$LDFLAGS_NODIST $LTOFLAGS" fi diff --git a/configure.ac b/configure.ac index 553f8ad3b52..2f792aa60ee 100644 --- a/configure.ac +++ b/configure.ac @@ -1385,10 +1385,11 @@ if test "$Py_LTO" = 'true' ; then fi if test "$ac_sys_system" = "Darwin" -a "${LLVM_AR_FOUND}" = "not-found" then - found_llvm_ar=`/usr/bin/xcrun -find llvm-ar 2>/dev/null` + # The Apple-supplied ar in Xcode or the Command Line Tools is apparently sufficient + found_llvm_ar=`/usr/bin/xcrun -find ar 2>/dev/null` if test -n "${found_llvm_ar}" then - LLVM_AR='/usr/bin/xcrun llvm-ar' + LLVM_AR='/usr/bin/xcrun ar' LLVM_AR_FOUND=found AC_MSG_NOTICE([llvm-ar found via xcrun: ${LLVM_AR}]) fi @@ -1405,6 +1406,7 @@ if test "$Py_LTO" = 'true' ; then Darwin*) # Any changes made here should be reflected in the GCC+Darwin case below LTOFLAGS="-flto -Wl,-export_dynamic" + LTOCFLAGS="-flto" ;; *) LTOFLAGS="-flto" @@ -1415,6 +1417,7 @@ if test "$Py_LTO" = 'true' ; then case $ac_sys_system in Darwin*) LTOFLAGS="-flto -Wl,-export_dynamic" + LTOCFLAGS="-flto" ;; *) LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none" @@ -1430,7 +1433,7 @@ if test "$Py_LTO" = 'true' ; then LTOFLAGS="$LTOFLAGS -g" fi - CFLAGS_NODIST="$CFLAGS_NODIST $LTOFLAGS" + CFLAGS_NODIST="$CFLAGS_NODIST ${LTOCFLAGS-$LTOFLAGS}" LDFLAGS_NODIST="$LDFLAGS_NODIST $LTOFLAGS" fi