From db27867dfc95257faf5baa40436370df67647847 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Sat, 6 Nov 2021 19:14:42 -0700 Subject: [PATCH] [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 --- compiler-rt/cmake/Modules/AddCompilerRT.cmake | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake index 76e015368f5db..6a594f92c246d 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}")