From 8f1aaf28c13094f21a835a5b0fe47f7813179126 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Tue, 8 Aug 2006 13:44:25 -0400 Subject: ENH: make sure RuleVariable struct is initialized correctly, also make sure custom command targets do not crash cmake --- Source/cmLocalGenerator.cxx | 41 +++++++++++++++++++++++++++-------------- Source/cmLocalGenerator.h | 15 +-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 8447cb9..a251ee2 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -617,7 +617,11 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) vars.LinkLibraries = linkLibs.c_str(); vars.Flags = flags.c_str(); vars.LinkFlags = linkFlags.c_str(); - + + std::string langFlags; + this->AddLanguageFlags(langFlags, llang, 0); + vars.LanguageCompileFlags = langFlags.c_str(); + cmCustomCommandLines commandLines; std::vector rules; rules.push_back(this->Makefile->GetRequiredDefinition(createRule.c_str())); @@ -812,30 +816,39 @@ cmLocalGenerator::ExpandRuleVariable(std::string const& variable, return targetQuoted; } } - if(variable == "LANGUAGE_COMPILE_FLAGS") + if(replaceValues.LanguageCompileFlags) { - return replaceValues.LanguageCompileFlags; + if(variable == "LANGUAGE_COMPILE_FLAGS") + { + return replaceValues.LanguageCompileFlags; + } } - if(variable == "TARGET") + if(replaceValues.Target) { - return replaceValues.Target; + if(variable == "TARGET") + { + return replaceValues.Target; + } } if(variable == "TARGET_IMPLIB") { return this->TargetImplib; } - if(variable == "TARGET_BASE") + if(replaceValues.Target) { - // Strip the last extension off the target name. - std::string targetBase = replaceValues.Target; - std::string::size_type pos = targetBase.rfind("."); - if(pos != targetBase.npos) + if(variable == "TARGET_BASE") { + // Strip the last extension off the target name. + std::string targetBase = replaceValues.Target; + std::string::size_type pos = targetBase.rfind("."); + if(pos != targetBase.npos) + { return targetBase.substr(0, pos); - } - else - { - return targetBase; + } + else + { + return targetBase; + } } } } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 03df6cb..6a49375 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -181,20 +181,7 @@ public: { RuleVariables() { - this->Language= 0; - this->Objects= 0; - this->Target= 0; - this->LinkLibraries= 0; - this->Source= 0; - this->AssemblySource = 0; - this->PreprocessedSource = 0; - this->Object= 0; - this->ObjectDir= 0; - this->Flags= 0; - this->ObjectsQuoted= 0; - this->TargetSOName= 0; - this->TargetInstallNameDir = 0; - this->LinkFlags= 0; + memset(this, 0, sizeof(*this)); } const char* TargetPDB; const char* Language; -- cgit v0.12