[PATCH] D64300: Fix issues building libraries as more than one type with Xcode
Chris Bieneman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 7 14:17:33 PDT 2019
beanz created this revision.
beanz added reviewers: zturner, compnerd.
Herald added a subscriber: mgorny.
Herald added a project: LLVM.
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).
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D64300
Files:
llvm/CMakeLists.txt
llvm/cmake/modules/AddLLVM.cmake
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -433,7 +433,12 @@
${ALL_FILES}
)
llvm_update_compile_flags(${obj_name})
- set(ALL_FILES "$<TARGET_OBJECTS:${obj_name}>")
+ 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 "$<TARGET_OBJECTS:${obj_name}>" ${DUMMY_FILE})
# Do add_dependencies(obj) later due to CMake issue 14747.
list(APPEND objlibs ${obj_name})
Index: llvm/CMakeLists.txt
===================================================================
--- llvm/CMakeLists.txt
+++ llvm/CMakeLists.txt
@@ -40,6 +40,12 @@
"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 speciy 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)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64300.208301.patch
Type: text/x-patch
Size: 1428 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190707/6c1b9ba2/attachment.bin>
More information about the llvm-commits
mailing list