Skip to content

Commit 95a1047

Browse files
committed
[builtins] Only include LSE if available
These fail to build with MSVC, resulting in eventual link failures as the `outline_atomic_*.S.obj` are all missing.
1 parent c45216d commit 95a1047

File tree

1 file changed

+32
-30
lines changed

1 file changed

+32
-30
lines changed

compiler-rt/lib/builtins/CMakeLists.txt

+32-30
Original file line numberDiff line numberDiff line change
@@ -588,37 +588,39 @@ if (COMPILER_RT_HAS_AARCH64_SME)
588588
endif()
589589
endif()
590590

591-
# Generate outline atomics helpers from lse.S base
592-
set(OA_HELPERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/outline_atomic_helpers.dir")
593-
file(MAKE_DIRECTORY "${OA_HELPERS_DIR}")
594-
595-
if(CMAKE_HOST_UNIX)
596-
set(COMPILER_RT_LINK_OR_COPY create_symlink)
597-
else()
598-
set(COMPILER_RT_LINK_OR_COPY copy)
599-
endif()
591+
if(NOT "${CMAKE_ASM_COMPILER_ID}" MATCHES "MSVC")
592+
# Generate outline atomics helpers from lse.S base
593+
set(OA_HELPERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/outline_atomic_helpers.dir")
594+
file(MAKE_DIRECTORY "${OA_HELPERS_DIR}")
600595

601-
foreach(pat cas swp ldadd ldclr ldeor ldset)
602-
foreach(size 1 2 4 8 16)
603-
foreach(model 1 2 3 4 5)
604-
if(pat STREQUAL "cas" OR NOT size STREQUAL "16")
605-
set(source_asm "${CMAKE_CURRENT_SOURCE_DIR}/aarch64/lse.S")
606-
set(helper_asm "${OA_HELPERS_DIR}/outline_atomic_${pat}${size}_${model}.S")
607-
add_custom_command(
608-
OUTPUT "${helper_asm}"
609-
COMMAND ${CMAKE_COMMAND} -E ${COMPILER_RT_LINK_OR_COPY} "${source_asm}" "${helper_asm}"
610-
DEPENDS "${source_asm}"
611-
)
612-
set_source_files_properties("${helper_asm}"
613-
PROPERTIES
614-
COMPILE_DEFINITIONS "L_${pat};SIZE=${size};MODEL=${model}"
615-
INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}"
616-
)
617-
list(APPEND aarch64_SOURCES "${helper_asm}")
618-
endif()
619-
endforeach(model)
620-
endforeach(size)
621-
endforeach(pat)
596+
if(CMAKE_HOST_UNIX)
597+
set(COMPILER_RT_LINK_OR_COPY create_symlink)
598+
else()
599+
set(COMPILER_RT_LINK_OR_COPY copy)
600+
endif()
601+
602+
foreach(pat cas swp ldadd ldclr ldeor ldset)
603+
foreach(size 1 2 4 8 16)
604+
foreach(model 1 2 3 4 5)
605+
if(pat STREQUAL "cas" OR NOT size STREQUAL "16")
606+
set(source_asm "${CMAKE_CURRENT_SOURCE_DIR}/aarch64/lse.S")
607+
set(helper_asm "${OA_HELPERS_DIR}/outline_atomic_${pat}${size}_${model}.S")
608+
add_custom_command(
609+
OUTPUT "${helper_asm}"
610+
COMMAND ${CMAKE_COMMAND} -E ${COMPILER_RT_LINK_OR_COPY} "${source_asm}" "${helper_asm}"
611+
DEPENDS "${source_asm}"
612+
)
613+
set_source_files_properties("${helper_asm}"
614+
PROPERTIES
615+
COMPILE_DEFINITIONS "L_${pat};SIZE=${size};MODEL=${model}"
616+
INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}"
617+
)
618+
list(APPEND aarch64_SOURCES "${helper_asm}")
619+
endif()
620+
endforeach(model)
621+
endforeach(size)
622+
endforeach(pat)
623+
endif()
622624

623625
if (MINGW)
624626
set(aarch64_SOURCES

0 commit comments

Comments
 (0)