summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.cxx
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@gmail.com>2021-08-07 15:07:55 (GMT)
committerCristian Adam <cristian.adam@gmail.com>2021-09-13 15:12:11 (GMT)
commitbbcdac4e5d53de12013c6af6395b28e4816f7823 (patch)
tree1d18f8ca2efc885fac477e2ce832bb161fdddd1d /Source/cmLocalGenerator.cxx
parentcc94429c61fcdff73ff78430692ff12ed1fff29b (diff)
downloadCMake-bbcdac4e5d53de12013c6af6395b28e4816f7823.zip
CMake-bbcdac4e5d53de12013c6af6395b28e4816f7823.tar.gz
CMake-bbcdac4e5d53de12013c6af6395b28e4816f7823.tar.bz2
PCH: Fix all-language precompile header support in Xcode
Fixes: #22384
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r--Source/cmLocalGenerator.cxx15
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 028952a..016653b 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -2512,6 +2512,16 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target)
static const std::array<std::string, 4> langs = { { "C", "CXX", "OBJC",
"OBJCXX" } };
+ bool haveAnyPch = false;
+ if (this->GetGlobalGenerator()->IsXcode()) {
+ for (const std::string& lang : langs) {
+ const std::string pchHeader = target->GetPchHeader(config, lang, "");
+ if (!pchHeader.empty()) {
+ haveAnyPch = true;
+ }
+ }
+ }
+
for (const std::string& lang : langs) {
auto langSources = std::count_if(
sources.begin(), sources.end(), [lang](cmSourceFile* sf) {
@@ -2552,6 +2562,11 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target)
const std::string pchHeader = target->GetPchHeader(config, lang, arch);
if (pchSource.empty() || pchHeader.empty()) {
+ if (this->GetGlobalGenerator()->IsXcode() && haveAnyPch) {
+ for (auto* sf : sources) {
+ sf->SetProperty("SKIP_PRECOMPILE_HEADERS", "ON");
+ }
+ }
continue;
}