From: Chris Bieneman Date: Mon, 8 Jul 2019 18:29:29 +0000 (+0000) Subject: Fix issues building libraries as more than one type with Xcode X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b513268c3813c989b34307dc626bae3994ab5110;p=llvm Fix issues building libraries as more than one type with Xcode Summary: CMake+Xcode doesn't seem to handle targets that only have object sources. This patch works around that limitation by adding a dummy soruce file to any library target that is generated by llvm_add_library when object libraries are generated. Object libraries are generated whenever llvm_add_library is passed more than one library type, which is now the default case for clang static libraries (which generate STATIC and OBJECT libraries). Reviewers: zturner, compnerd, joanlluch Reviewed By: joanlluch Subscribers: joanlluch, xbolva00, mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64300 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365365 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 041c847fd1a..1b5a6b9de98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,12 @@ if ((CMAKE_GENERATOR MATCHES "Visual Studio") AND (CMAKE_GENERATOR_TOOLSET STREQ "host compiler, pass -Thost=x64 on the CMake command line.") endif() +if (CMAKE_GENERATOR STREQUAL "Xcode" AND NOT CMAKE_OSX_ARCHITECTURES) + # Some CMake features like object libraries get confused if you don't + # explicitly specify an architecture setting with the Xcode generator. + set(CMAKE_OSX_ARCHITECTURES "x86_64") +endif() + project(LLVM VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH} LANGUAGES C CXX ASM) diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index fc69cdfa430..d2ba017e3dd 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -433,7 +433,12 @@ function(llvm_add_library name) ${ALL_FILES} ) llvm_update_compile_flags(${obj_name}) - set(ALL_FILES "$") + if(CMAKE_GENERATOR STREQUAL "Xcode") + set(DUMMY_FILE ${CMAKE_CURRENT_BINARY_DIR}/Dummy.c) + file(WRITE ${DUMMY_FILE} "// This file intentionally empty\n") + set_property(SOURCE ${DUMMY_FILE} APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-empty-translation-unit") + endif() + set(ALL_FILES "$" ${DUMMY_FILE}) # Do add_dependencies(obj) later due to CMake issue 14747. list(APPEND objlibs ${obj_name})