blob: 5557ae1d18455d462bc73d97c3ee166e93c204ce [file] [log] [blame]
commit db27867dfc95257faf5baa40436370df67647847
Author: Manoj Gupta <manojgupta@google.com>
Date: Sat Nov 6 19:14:42 2021 -0700
[compiler-rt] Produce the right arch suffix for arm baremetal
D98452 introduced a mismatch between clang expectations for
builtin name for baremetal targets on arm. Fix it by
adding a case for baremetal. This now matches the output of
"clang -target armv7m-none-eabi -print-libgcc-file-name \
-rtlib=compiler-rt"
Reviewed By: mstorsjo
Differential Revision: https://reviews.llvm.org/D113357
diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
index 76e015368f5d..6a594f92c246 100644
--- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake
+++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
@@ -130,11 +130,14 @@ macro(set_output_name output name arch)
else()
set(triple "${TARGET_TRIPLE}")
endif()
- # When using arch-suffixed runtime library names, clang only looks for
- # libraries named "arm" or "armhf", see getArchNameForCompilerRTLib in
- # clang. Therefore, try to inspect both the arch name and the triple
- # if it seems like we're building an armhf target.
- if ("${arch}" MATCHES "hf$" OR "${triple}" MATCHES "hf$")
+ # Except for baremetal, when using arch-suffixed runtime library names,
+ # clang only looks for libraries named "arm" or "armhf", see
+ # getArchNameForCompilerRTLib in clang. Therefore, try to inspect both
+ # the arch name and the triple if it seems like we're building an armhf
+ # target.
+ if (COMPILER_RT_BAREMETAL_BUILD)
+ set(${output} "${name}-${arch}${COMPILER_RT_OS_SUFFIX}")
+ elseif ("${arch}" MATCHES "hf$" OR "${triple}" MATCHES "hf$")
set(${output} "${name}-armhf${COMPILER_RT_OS_SUFFIX}")
else()
set(${output} "${name}-arm${COMPILER_RT_OS_SUFFIX}")