From ca899af3e2d5af3d79d345322b300c348065f560 Mon Sep 17 00:00:00 2001 From: Fred Baksik Date: Wed, 15 Jul 2020 15:03:45 -0400 Subject: Toolchain: Handle repeated invocations of CMake with -DCMAKE_C_COMPILER Repeated invocations of `cmake ... -DCMAKE_C_COMPILER=gcc` should not trigger a "You have changed variables" message even though the cache value of CMAKE_C_COMPILER changes from '/path/to/gcc' to 'gcc'. Make repeated invocations of `cmake ... -DCMAKE_C_COMPILER=gcc;-pipe` not trigger the warning by comparing the compiler name portion of the list to the compiler being used. --- Source/cmGlobalGenerator.cxx | 8 ++++++++ Source/cmRulePlaceholderExpander.cxx | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 5c07e31..b227599 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -235,6 +235,14 @@ void cmGlobalGenerator::ResolveLanguageCompiler(const std::string& lang, } cmProp cname = this->GetCMakeInstance()->GetState()->GetInitializedCacheValue(langComp); + + // Split compiler from arguments + std::vector cnameArgVec; + if (cname && !cname->empty()) { + cmExpandList(*cname, cnameArgVec); + cname = &cnameArgVec.front(); + } + std::string changeVars; if (cname && !optional) { std::string cnameString; diff --git a/Source/cmRulePlaceholderExpander.cxx b/Source/cmRulePlaceholderExpander.cxx index 254131b..4ff81c1 100644 --- a/Source/cmRulePlaceholderExpander.cxx +++ b/Source/cmRulePlaceholderExpander.cxx @@ -261,7 +261,7 @@ std::string cmRulePlaceholderExpander::ExpandRuleVariable( this->VariableMappings["CMAKE_" + compIt->second + "_COMPILE_OPTIONS_SYSROOT"]; - // if there is a required first argument to the compiler add it + // if there are required arguments to the compiler add it // to the compiler string if (!compilerArg1.empty()) { ret += " "; -- cgit v0.12