diff options
| author | Jordan Rose <jordan_rose@apple.com> | 2019-10-04 18:17:58 +0000 |
|---|---|---|
| committer | Jordan Rose <jordan_rose@apple.com> | 2019-10-04 18:17:58 +0000 |
| commit | 5fd467feb813e9999efe3558da434cb038213582 (patch) | |
| tree | 8699daf39639e46a1e94386947af82ce8c05a625 | |
| parent | f6bedd81cca5c1a60ef5faa5a5e9cb3d5737ffdd (diff) | |
| download | bcm5719-llvm-5fd467feb813e9999efe3558da434cb038213582.tar.gz bcm5719-llvm-5fd467feb813e9999efe3558da434cb038213582.zip | |
[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
llvm-svn: 373769
| -rw-r--r-- | clang/cmake/modules/AddClang.cmake | 8 | ||||
| -rw-r--r-- | clang/tools/clang-shlib/CMakeLists.txt | 8 |
2 files changed, 13 insertions, 3 deletions
diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake index cbd618e18af..5a1b5cd03b5 100644 --- a/clang/cmake/modules/AddClang.cmake +++ b/clang/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/clang/tools/clang-shlib/CMakeLists.txt b/clang/tools/clang-shlib/CMakeLists.txt index 4e9e8c1fa3b..a0fc8f6bfbd 100644 --- a/clang/tools/clang-shlib/CMakeLists.txt +++ b/clang/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 $<TARGET_OBJECTS:obj.${lib}>) + 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 $<TARGET_OBJECTS:obj.${lib}>) + endif() list(APPEND _DEPS $<TARGET_PROPERTY:${lib},INTERFACE_LINK_LIBRARIES>) list(APPEND _DEPS $<TARGET_PROPERTY:${lib},LINK_LIBRARIES>) endforeach () |

