Enable use of the Xcode IDE via cmake. Xcode needs special handling when an executable target contains no C++ sources, but links C++ dependencies. BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76 Change-Id: Ifd4f6208c8f96386194691d45279df1e70a8fc17
diff --git a/CMakeLists.txt b/CMakeLists.txt index 54af54b..c75579c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -900,3 +900,22 @@ $<TARGET_OBJECTS:webm>) endif () endif () + +if (XCODE) + if (CONFIG_LIBYUV OR CONFIG_WEBM_IO) + # The Xcode generator does not obey LINKER_LANGUAGE. Because of the issue + # what looks like a C++ file needs to be in any target that Xcode will link + # when the target contains a C++ dependency. + # Without this Xcode will try to link with the C linker, which always ends + # badly when a dependency actually includes C++. + # Note: LINKER_LANGUAGE is explicitly set to C++ for all targets touched + # here, it really is the Xcode generator's fault, or just a deficiency in + # Xcode itself. + set(XCODE_DUMMY_CXX_FILE "${AOM_CONFIG_DIR}/dummy.cc") + file(WRITE "${XCODE_DUMMY_CXX_FILE}" + "// Xcode needs a C++ file to link, ignore this file.") + foreach (aom_app ${AOM_APP_TARGETS}) + target_sources(${aom_app} PUBLIC "${XCODE_DUMMY_CXX_FILE}") + endforeach () + endif () +endif ()