summaryrefslogtreecommitdiff
path: root/Modules/CMakeFindBinUtils.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-03-28 17:28:44 -0400
committerBrad King <brad.king@kitware.com>2023-03-30 07:14:07 -0400
commitac2562afb3fda621854f4c3a470e36f10cf507b3 (patch)
tree24cd798259a802ddd9aa1925ff09ff5ae7efe2f3 /Modules/CMakeFindBinUtils.cmake
parentf4b8176447699ba82c2bf7baf2d609d0d6e3259b (diff)
downloadcmake-ac2562afb3fda621854f4c3a470e36f10cf507b3.tar.gz
BinUtils: Avoid llvm-strip on Apple platforms
Since commit cf82300a63 (BinUtils: Clarify search logic and make it more consistent, 2021-05-27, v3.21.0-rc1~119^2~2) we prefer `llvm-strip` over `strip` when using Clang. However, `llvm-strip` seems to produce unusable binaries in cases involving chained fixups. Prefer Apple's `strip` over `llvm-strip` on `APPLE` platforms. We still need to consider `llvm-strip` as a fallback as explained for `llvm-ar` by commit fee36b7a78 (BinUtils: Restore llvm-ar fallback on Apple platforms, 2022-03-15, v3.23.0-rc4~12^2). Issue: #24601
Diffstat (limited to 'Modules/CMakeFindBinUtils.cmake')
-rw-r--r--Modules/CMakeFindBinUtils.cmake10
1 files changed, 9 insertions, 1 deletions
diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake
index 190117c70a..10e8ff347f 100644
--- a/Modules/CMakeFindBinUtils.cmake
+++ b/Modules/CMakeFindBinUtils.cmake
@@ -186,7 +186,15 @@ else()
list(PREPEND _CMAKE_RANLIB_NAMES "llvm-ranlib")
if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}" VERSION_GREATER_EQUAL 11)
# llvm-strip versions prior to 11 require additional flags we do not yet add.
- list(PREPEND _CMAKE_STRIP_NAMES "llvm-strip")
+ if(APPLE)
+ # llvm-strip does not seem to support chained fixup format correctly.
+ # FIXME(#23333): We still need to consider 'llvm-strip' as a fallback
+ # because the 'APPLE' definition may be based on the host in this context,
+ # and a cross-compiling toolchain may not have 'strip'.
+ list(APPEND _CMAKE_STRIP_NAMES "llvm-strip")
+ else()
+ list(PREPEND _CMAKE_STRIP_NAMES "llvm-strip")
+ endif()
endif()
list(PREPEND _CMAKE_NM_NAMES "llvm-nm")
if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}" VERSION_GREATER_EQUAL 9)