From cb6423703a3c6bbc833047ded4f92ff59ff138aa Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 16 Oct 2025 13:38:14 -0400 Subject: [PATCH] PrecompileHeaders: downgrade `REUSE_FROM` without a PCH to a warning Prior to f9bc615d (pchreuse: ban PCH reuse from targets which disable PCH, 2025-06-15), using a target without PCH as a `REUSE_FROM` target was not an error. Some projects had been doing this unknowingly. Downgrade the fatal error into a warning so that such projects can at least continue to build. Fixes: #27316 --- Source/cmGeneratorTarget.cxx | 8 ++++---- .../PrecompileHeaders/PchReuseWithoutPch-result.txt | 1 - .../PrecompileHeaders/PchReuseWithoutPch-stderr.txt | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 Tests/RunCMake/PrecompileHeaders/PchReuseWithoutPch-result.txt diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 5759544fa7..c1cf27a0c0 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -2906,10 +2906,10 @@ cmGeneratorTarget const* cmGeneratorTarget::GetPchReuseTarget() const if (generatorTarget) { if (generatorTarget->GetPropertyAsBool("DISABLE_PRECOMPILE_HEADERS")) { this->Makefile->IssueMessage( - MessageType::FATAL_ERROR, + MessageType::WARNING, cmStrCat( "Target \"", *pchReuseFrom, "\" for the \"", this->GetName(), - R"(" target's "PRECOMPILE_HEADERS_REUSE_FROM" property has set "DISABLE_PRECOMPILE_HEADERS".)")); + R"(" target's "PRECOMPILE_HEADERS_REUSE_FROM" property has set "DISABLE_PRECOMPILE_HEADERS"; ignoring.)")); return nullptr; } @@ -2959,10 +2959,10 @@ cmGeneratorTarget* cmGeneratorTarget::GetPchReuseTarget() if (generatorTarget) { if (generatorTarget->GetPropertyAsBool("DISABLE_PRECOMPILE_HEADERS")) { this->Makefile->IssueMessage( - MessageType::FATAL_ERROR, + MessageType::WARNING, cmStrCat( "Target \"", *pchReuseFrom, "\" for the \"", this->GetName(), - R"(" target's "PRECOMPILE_HEADERS_REUSE_FROM" property has set "DISABLE_PRECOMPILE_HEADERS".)")); + R"(" target's "PRECOMPILE_HEADERS_REUSE_FROM" property has set "DISABLE_PRECOMPILE_HEADERS"; ignoring.)")); return nullptr; } diff --git a/Tests/RunCMake/PrecompileHeaders/PchReuseWithoutPch-result.txt b/Tests/RunCMake/PrecompileHeaders/PchReuseWithoutPch-result.txt deleted file mode 100644 index d00491fd7e..0000000000 --- a/Tests/RunCMake/PrecompileHeaders/PchReuseWithoutPch-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/PrecompileHeaders/PchReuseWithoutPch-stderr.txt b/Tests/RunCMake/PrecompileHeaders/PchReuseWithoutPch-stderr.txt index 28c69fb98f..fabc459eed 100644 --- a/Tests/RunCMake/PrecompileHeaders/PchReuseWithoutPch-stderr.txt +++ b/Tests/RunCMake/PrecompileHeaders/PchReuseWithoutPch-stderr.txt @@ -1,4 +1,4 @@ -CMake Error in CMakeLists\.txt: +CMake Warning in CMakeLists\.txt: Target "pch-generator" for the "reuse_from_nopch" target's "PRECOMPILE_HEADERS_REUSE_FROM" property has set - "DISABLE_PRECOMPILE_HEADERS". + "DISABLE_PRECOMPILE_HEADERS"; ignoring.