From: Jordan Rose Date: Fri, 4 Oct 2019 18:17:58 +0000 (+0000) Subject: [CMake] Clang: Don't use object libraries with Xcode X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f90bb31d28b576641ed53a66d16fcd602ed4668f;p=clang [CMake] Clang: Don't use object libraries with Xcode Undoes some of the effects of r360946 when using the Xcode CMake generator---it doesn't handle object libraries correctly at all. Attempts to still honor BUILD_SHARED_LIBS for Xcode, but I didn't actually test it. Should have no effect on non-Xcode generators. https://reviews.llvm.org/D68430 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@373769 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake index cbd618e18a..5a1b5cd03b 100644 --- a/cmake/modules/AddClang.cmake +++ b/cmake/modules/AddClang.cmake @@ -86,9 +86,13 @@ macro(add_clang_library name) # llvm_add_library ignores BUILD_SHARED_LIBS if STATIC is explicitly set, # so we need to handle it here. if(BUILD_SHARED_LIBS) - set(LIBTYPE SHARED OBJECT) + set(LIBTYPE SHARED) else() - set(LIBTYPE STATIC OBJECT) + set(LIBTYPE STATIC) + endif() + if(NOT XCODE) + # The Xcode generator doesn't handle object libraries correctly. + list(APPEND LIBTYPE OBJECT) endif() set_property(GLOBAL APPEND PROPERTY CLANG_STATIC_LIBS ${name}) endif() diff --git a/tools/clang-shlib/CMakeLists.txt b/tools/clang-shlib/CMakeLists.txt index 4e9e8c1fa3..a0fc8f6bfb 100644 --- a/tools/clang-shlib/CMakeLists.txt +++ b/tools/clang-shlib/CMakeLists.txt @@ -6,7 +6,13 @@ endif() get_property(clang_libs GLOBAL PROPERTY CLANG_STATIC_LIBS) foreach (lib ${clang_libs}) - list(APPEND _OBJECTS $) + if(XCODE) + # Xcode doesn't support object libraries, so we have to trick it into + # linking the static libraries instead. + list(APPEND _DEPS "-force_load" ${lib}) + else() + list(APPEND _OBJECTS $) + endif() list(APPEND _DEPS $) list(APPEND _DEPS $) endforeach ()