From eeb47fbeb203117111bee8f6690a5f272209d104 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 15 May 2017 11:51:57 -0400 Subject: cmLocalCommonGenerator: Save CMAKE_BUILD_TYPE on construction Copy the value to our `ConfigName` member on construction to ensure it is available even to code paths that run before `Generate`. We once needed to delay this lookup until `Generate` because the local generators were at one time created before `Configure`. Now they are created at generate time which is late enough to expect `CMAKE_BUILD_TYPE` to be available. Without this, `cmGlobalUnixMakefileGenerator3::WriteConvenienceRules` causes use of `ConfigName` before it is populated which breaks use of source files that depend on the `$` generator expression. Fixes: #16889 --- Source/cmLocalCommonGenerator.cxx | 12 ++++-------- Source/cmLocalCommonGenerator.h | 1 - Source/cmLocalNinjaGenerator.cxx | 2 -- Source/cmLocalUnixMakefileGenerator3.cxx | 2 -- 4 files changed, 4 insertions(+), 13 deletions(-) diff --git a/Source/cmLocalCommonGenerator.cxx b/Source/cmLocalCommonGenerator.cxx index d5f9d27..6524db4 100644 --- a/Source/cmLocalCommonGenerator.cxx +++ b/Source/cmLocalCommonGenerator.cxx @@ -16,14 +16,6 @@ cmLocalCommonGenerator::cmLocalCommonGenerator(cmGlobalGenerator* gg, : cmLocalGenerator(gg, mf) , WorkingDirectory(wd) { -} - -cmLocalCommonGenerator::~cmLocalCommonGenerator() -{ -} - -void cmLocalCommonGenerator::SetConfigName() -{ // Store the configuration name that will be generated. if (const char* config = this->Makefile->GetDefinition("CMAKE_BUILD_TYPE")) { // Use the build type given by the user. @@ -34,6 +26,10 @@ void cmLocalCommonGenerator::SetConfigName() } } +cmLocalCommonGenerator::~cmLocalCommonGenerator() +{ +} + std::string cmLocalCommonGenerator::GetTargetFortranFlags( cmGeneratorTarget const* target, std::string const& config) { diff --git a/Source/cmLocalCommonGenerator.h b/Source/cmLocalCommonGenerator.h index 3de29d7..a5afcd8 100644 --- a/Source/cmLocalCommonGenerator.h +++ b/Source/cmLocalCommonGenerator.h @@ -33,7 +33,6 @@ public: protected: std::string WorkingDirectory; - void SetConfigName(); std::string ConfigName; friend class cmCommonTargetGenerator; diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index fd2b803..a8350b3 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -58,8 +58,6 @@ void cmLocalNinjaGenerator::Generate() this->HomeRelativeOutputPath = ""; } - this->SetConfigName(); - this->WriteProcessedMakefile(this->GetBuildFileStream()); #ifdef NINJA_GEN_VERBOSE_FILES this->WriteProcessedMakefile(this->GetRulesFileStream()); diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 5f52786..959178e 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -105,8 +105,6 @@ cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3() void cmLocalUnixMakefileGenerator3::Generate() { - this->SetConfigName(); - // Record whether some options are enabled to avoid checking many // times later. if (!this->GetGlobalGenerator()->GetCMakeInstance()->GetIsInTryCompile()) { -- cgit v0.12