diff options
author | Charles Davis <cdavis5x@gmail.com> | 2018-10-08 18:35:00 +0000 |
---|---|---|
committer | Charles Davis <cdavis5x@gmail.com> | 2018-10-08 18:35:00 +0000 |
commit | 94edd59b16d2084a62699290f9cfdf120d74eedf (patch) | |
tree | 847a97f45a23cbbcdcfa218c74e6c0a31bc2459e | |
parent | ba3cb0549f7402856681e1c0ace0f797178fcfd3 (diff) | |
download | libunwind_llvm-94edd59b16d2084a62699290f9cfdf120d74eedf.tar.gz |
[CMake] Link to compiler-rt if LIBUNWIND_USE_COMPILER_RT is ON.
Summary:
If `-nodefaultlibs` is given, we weren't actually linking to it. This
was true irrespective of passing `-rtlib=compiler-rt` (see previous
patch). Now we explicitly link it to handle that case.
I wonder if we should be linking these libraries only if we're using
`-nodefaultlibs`...
Reviewers: beanz
Subscribers: dberris, mgorny, christof, chrib, cfe-commits
Differential Revision: https://reviews.llvm.org/D51657
git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@343990 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | cmake/config-ix.cmake | 10 | ||||
-rw-r--r-- | src/CMakeLists.txt | 7 |
2 files changed, 14 insertions, 3 deletions
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index f4f9ee8..670c31f 100644 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -7,6 +7,7 @@ check_library_exists(c fopen "" LIBUNWIND_HAS_C_LIB) if (NOT LIBUNWIND_USE_COMPILER_RT) check_library_exists(gcc_s __gcc_personality_v0 "" LIBUNWIND_HAS_GCC_S_LIB) + check_library_exists(gcc __absvdi2 "" LIBUNWIND_HAS_GCC_LIB) endif() # libunwind is built with -nodefaultlibs, so we want all our checks to also @@ -25,8 +26,13 @@ if (LIBUNWIND_HAS_NODEFAULTLIBS_FLAG) if (LIBUNWIND_USE_COMPILER_RT) find_compiler_rt_library(builtins LIBUNWIND_BUILTINS_LIBRARY) list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBUNWIND_BUILTINS_LIBRARY}") - elseif (LIBUNWIND_HAS_GCC_S_LIB) - list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s) + else () + if (LIBUNWIND_HAS_GCC_S_LIB) + list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s) + endif () + if (LIBUNWIND_HAS_GCC_LIB) + list(APPEND CMAKE_REQUIRED_LIBRARIES gcc) + endif () endif () if (MINGW) # Mingw64 requires quite a few "C" runtime libraries in order for basic diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a5e6084..79d0462 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -53,7 +53,12 @@ set(LIBUNWIND_SOURCES # Generate library list. set(libraries) append_if(libraries LIBUNWIND_HAS_C_LIB c) -append_if(libraries LIBUNWIND_HAS_GCC_S_LIB gcc_s) +if (LIBUNWIND_USE_COMPILER_RT) + list(APPEND libraries "${LIBUNWIND_BUILTINS_LIBRARY}") +else() + append_if(libraries LIBUNWIND_HAS_GCC_S_LIB gcc_s) + append_if(libraries LIBUNWIND_HAS_GCC_LIB gcc) +endif() append_if(libraries LIBUNWIND_HAS_DL_LIB dl) if (LIBUNWIND_ENABLE_THREADS) append_if(libraries LIBUNWIND_HAS_PTHREAD_LIB pthread) |