Skip to content

Commit 8b03733

Browse files
committedMay 22, 2018
[CMake] Support builtins as Clang default rtlib in compiler-rt
Use compiler-rt builtins when selected as default Clang rtlib and avoid explicitly passing -rtlib= flag to avoid the "argument unused during compilation" warning. This is a partial alternative to D47094 that does not rely on compiler runtime checks. Differential Revision: https://reviews.llvm.org/D47115 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@333037 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent fb98f10 commit 8b03733

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed
 

‎CMakeLists.txt

+13-5
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,19 @@ else()
152152
set(SANITIZER_CXX_ABI_SYSTEM 1)
153153
endif()
154154

155-
option(SANITIZER_USE_COMPILER_RT "Use compiler-rt builtins instead of libgcc" OFF)
155+
set(COMPILER_RT_RUNTIME "default" CACHE STRING
156+
"Compiler runtime to use.")
157+
158+
if (COMPILER_RT_RUNTIME STREQUAL "default")
159+
if (CLANG_DEFAULT_RTLIB STREQUAL "compiler-rt")
160+
set(COMPILER_RT_RUNTIME_LIBRARY "builtins")
161+
elseif (FUCHSIA)
162+
set(COMPILER_RT_RUNTIME_LIBRARY "builtins")
163+
endif()
164+
else()
165+
set(COMPILER_RT_RUNTIME_LIBRARY "${COMPILER_RT_RUNTIME}")
166+
endif()
156167

157-
include(HandleCompilerRT)
158168
include(config-ix)
159169

160170
#================================
@@ -303,9 +313,7 @@ append_list_if(COMPILER_RT_HAS_WD4800_FLAG /wd4800 SANITIZER_COMMON_CFLAGS)
303313
# Set common link flags.
304314
append_list_if(COMPILER_RT_HAS_NODEFAULTLIBS_FLAG -nodefaultlibs SANITIZER_COMMON_LINK_FLAGS)
305315

306-
if (SANITIZER_USE_COMPILER_RT)
307-
list(APPEND SANITIZER_COMMON_LINK_FLAGS -rtlib=compiler-rt)
308-
find_compiler_rt_library(builtins COMPILER_RT_BUILTINS_LIBRARY)
316+
if (COMPILER_RT_RUNTIME_LIBRARY STREQUAL "builtins")
309317
list(APPEND SANITIZER_COMMON_LINK_LIBS ${COMPILER_RT_BUILTINS_LIBRARY})
310318
else()
311319
if (ANDROID)

‎cmake/config-ix.cmake

+5-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ function(check_linker_flag flag out_var)
1313
endfunction()
1414

1515
check_library_exists(c fopen "" COMPILER_RT_HAS_LIBC)
16-
if (NOT SANITIZER_USE_COMPILER_RT)
16+
if (COMPILER_RT_RUNTIME_LIBRARY STREQUAL "builtins")
17+
include(HandleCompilerRT)
18+
find_compiler_rt_library(builtins COMPILER_RT_BUILTINS_LIBRARY)
19+
else()
1720
if (ANDROID)
1821
check_library_exists(gcc __gcc_personality_v0 "" COMPILER_RT_HAS_GCC_LIB)
1922
else()
@@ -27,9 +30,7 @@ if (COMPILER_RT_HAS_NODEFAULTLIBS_FLAG)
2730
if (COMPILER_RT_HAS_LIBC)
2831
list(APPEND CMAKE_REQUIRED_LIBRARIES c)
2932
endif ()
30-
if (SANITIZER_USE_COMPILER_RT)
31-
list(APPEND CMAKE_REQUIRED_FLAGS -rtlib=compiler-rt)
32-
find_compiler_rt_library(builtins COMPILER_RT_BUILTINS_LIBRARY)
33+
if (COMPILER_RT_RUNTIME_LIBRARY STREQUAL "builtins")
3334
list(APPEND CMAKE_REQUIRED_LIBRARIES "${COMPILER_RT_BUILTINS_LIBRARY}")
3435
elseif (COMPILER_RT_HAS_GCC_S_LIB)
3536
list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s)

0 commit comments

Comments
 (0)