From: Alexander Richardson Date: Thu, 28 Nov 2024 18:42:47 +0000 (-0800) Subject: [compiler-rt] Fix detecting _Float16 support for secondary targets (#117813) X-Git-Tag: accepted/tizen/base/20241210.211437^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5c2c5652c2e80efe7dfc18769a5775e39f975d4e;p=platform%2Fupstream%2Fllvm.git [compiler-rt] Fix detecting _Float16 support for secondary targets (#117813) It turns out we were not passing -m32 to the check_c_source_compiles() invocation since CMAKE_REQUIRE_FLAGS needs to be string separated list and we were passing a ;-separated CMake list which appears to be parsed by CMake as 'ignore all arguments beyond the first'. Fix this by transforming the list to a command line first. With this change, Clang 17 no longer claims to support _Float16 for i386. (cherry-picked from commit a4c8ef0f401d86040594cc6f01bcdad9392e8ee2) Change-Id: Ic2f851969dc9d641f07288e9eda61aa36999d5e6 --- diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt index e0b2d08c2077..5499a8726207 100644 --- a/compiler-rt/lib/builtins/CMakeLists.txt +++ b/compiler-rt/lib/builtins/CMakeLists.txt @@ -846,9 +846,12 @@ else () if (CAN_TARGET_${arch}) cmake_push_check_state() # TODO: we should probably make most of the checks in builtin-config depend on the target flags. - message(STATUS "Performing additional configure checks with target flags: ${TARGET_${arch}_CFLAGS}") set(BUILTIN_CFLAGS_${arch} ${BUILTIN_CFLAGS}) - list(APPEND CMAKE_REQUIRED_FLAGS ${TARGET_${arch}_CFLAGS} ${BUILTIN_CFLAGS_${arch}}) + # CMAKE_REQUIRED_FLAGS must be a space separated string but unlike TARGET_${arch}_CFLAGS, + # BUILTIN_CFLAGS_${arch} is a CMake list, so we have to join it to create a valid command line. + list(JOIN BUILTIN_CFLAGS " " CMAKE_REQUIRED_FLAGS) + set(CMAKE_REQUIRED_FLAGS "${TARGET_${arch}_CFLAGS} ${BUILTIN_CFLAGS_${arch}}") + message(STATUS "Performing additional configure checks with target flags: ${CMAKE_REQUIRED_FLAGS}") # For ARM archs, exclude any VFP builtins if VFP is not supported if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em|armv8m.main|armv8.1m.main)$") string(REPLACE ";" " " _TARGET_${arch}_CFLAGS "${TARGET_${arch}_CFLAGS}")