From: Petr Hosek Date: Thu, 31 Jan 2019 03:38:43 +0000 (+0000) Subject: [CMake][compiler-rt] Enable statically linking unwinder and c++abi X-Git-Tag: llvmorg-10-init~13192 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e2c021d8b78cbc4e3288484db7f87d191a20c84d;p=platform%2Fupstream%2Fllvm.git [CMake][compiler-rt] Enable statically linking unwinder and c++abi Rather than guessing whether to use static or shared version of unwinder and c++abi when using linking against the in-tree versions, provide a CMake option to control this. Differential Revision: https://reviews.llvm.org/D57492 llvm-svn: 352723 --- diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt index aa360a3..bc0233c 100644 --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -215,6 +215,24 @@ else() set(SANITIZER_CXX_ABI_SYSTEM 1) endif() +set(DEFAULT_SANITIZER_USE_STATIC_LLVM_UNWINDER OFF) +if (FUCHSIA) + set(DEFAULT_SANITIZER_USE_STATIC_LLVM_UNWINDER ON) +elseif (DEFINED LIBUNWIND_ENABLE_SHARED AND NOT LIBUNWIND_ENABLE_SHARED) + set(DEFAULT_SANITIZER_USE_STATIC_LLVM_UNWINDER ON) +endif() + +option(SANITIZER_USE_STATIC_LLVM_UNWINDER + "Use static LLVM unwinder." ${DEFAULT_SANITIZER_USE_STATIC_LLVM_UNWINDER}) + +set(DEFAULT_SANITIZER_USE_STATIC_CXX_ABI OFF) +if (DEFINED LIBCXXABI_ENABLE_SHARED AND NOT LIBCXXABI_ENABLE_SHARED) + set(DEFAULT_SANITIZER_USE_STATIC_CXX_ABI ON) +endif() + +option(SANITIZER_USE_STATIC_CXX_ABI + "Use static libc++abi." ${DEFAULT_SANITIZER_USE_STATIC_CXX_ABI}) + set(DEFAULT_COMPILER_RT_USE_BUILTINS_LIBRARY OFF) if (FUCHSIA) set(DEFAULT_COMPILER_RT_USE_BUILTINS_LIBRARY ON) @@ -393,15 +411,16 @@ endif() if (SANITIZER_CXX_ABI_LIBNAME STREQUAL "libc++") if (SANITIZER_CXX_ABI_INTREE) - if (NOT LIBCXXABI_ENABLE_STATIC_UNWINDER AND (TARGET unwind_shared OR HAVE_LIBUNWIND)) - list(APPEND SANITIZER_CXX_ABI_LIBRARY unwind_shared) - elseif (LIBCXXABI_ENABLE_STATIC_UNWINDER AND (TARGET unwind_static OR HAVE_LIBUNWIND)) + if (SANITIZER_USE_STATIC_LLVM_UNWINDER AND (TARGET unwind_static OR HAVE_LIBUNWIND)) list(APPEND SANITIZER_CXX_ABI_LIBRARY unwind_static) + elseif (TARGET unwind_shared OR HAVE_LIBUNWIND) + list(APPEND SANITIZER_CXX_ABI_LIBRARY unwind_shared) endif() - if (NOT LIBCXX_ENABLE_STATIC_ABI_LIBRARY AND (TARGET cxxabi_shared OR HAVE_LIBCXXABI)) - list(APPEND SANITIZER_CXX_ABI_LIBRARY cxxabi_shared) - elseif (LIBCXX_ENABLE_STATIC_ABI_LIBRARY AND (TARGET cxxabi_static OR HAVE_LIBCXXABI)) + + if (SANITIZER_USE_STATIC_CXX_ABI AND (TARGET cxxabi_static OR HAVE_LIBCXXABI)) list(APPEND SANITIZER_CXX_ABI_LIBRARY cxxabi_static) + elseif (TARGET cxxabi_shared OR HAVE_LIBCXXABI) + list(APPEND SANITIZER_CXX_ABI_LIBRARY cxxabi_shared) endif() else() append_list_if(COMPILER_RT_HAS_LIBCXX c++ SANITIZER_CXX_ABI_LIBRARY)