From 9440d5776bf48778d452e2d3a48d4e93d7b6f7a7 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:51 +0200 Subject: [PATCH 01/28] Convert: Remove unused overload --- Source/cmOutputConverter.cxx | 21 --------------------- Source/cmOutputConverter.h | 2 -- 2 files changed, 23 deletions(-) diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 411184c7b..47c29282e 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -146,27 +146,6 @@ std::string cmOutputConverter::ConvertDirectorySeparatorsForShell( return result; } -std::string cmOutputConverter::Convert(RelativeRoot remote, - const std::string& local, - OutputFormat output) const -{ - // The relative root must have a path (i.e. not FULL or NONE) - assert(remote != FULL); - assert(remote != NONE); - - const char* remotePath = this->GetRelativeRootPath(remote); - assert(remotePath != CM_NULLPTR); - - if (local.empty()) { - return this->ConvertToOutputFormat(remotePath, output); - } - - std::vector components; - cmSystemTools::SplitPath(local, components); - std::string result = this->ConvertToRelativePath(components, remotePath); - return this->ConvertToOutputFormat(result, output); -} - static bool cmOutputConverterNotAbove(const char* a, const char* b) { return (cmSystemTools::ComparePath(a, b) || diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index 23f2e6268..d3ded2536 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -57,8 +57,6 @@ public: OutputFormat output) const; std::string Convert(const std::string& remote, RelativeRoot local, OutputFormat output = UNCHANGED) const; - std::string Convert(RelativeRoot remote, const std::string& local, - OutputFormat output = UNCHANGED) const; std::string ConvertDirectorySeparatorsForShell( const std::string& source) const; From 0bbdbd95c9515a4714ef1d57a17c7271bc4d1774 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:52 +0200 Subject: [PATCH 02/28] Makefiles: Rename local variable In this context, 'ret' means 'return', but I don't really know what that means. It is not consistent with types and other variables used in the vicinity for these things. --- Source/cmLocalUnixMakefileGenerator3.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 759707727..4ecd0b250 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -2048,10 +2048,10 @@ void cmLocalUnixMakefileGenerator3::CreateCDCommand( std::vector& commands, const char* tgtDir, cmOutputConverter::RelativeRoot relRetDir) { - const char* retDir = this->GetRelativeRootPath(relRetDir); + const char* relDir = this->GetRelativeRootPath(relRetDir); // do we need to cd? - if (!strcmp(tgtDir, retDir)) { + if (!strcmp(tgtDir, relDir)) { return; } From e3ca17e13b8d2aecc6d97ac800d65c6c35378a98 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:52 +0200 Subject: [PATCH 03/28] Makefiles: Use string overload of ConvertToOutputForExisting The string is already determined so, no need to call the overload to determine it again. --- Source/cmLocalUnixMakefileGenerator3.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 4ecd0b250..22937e308 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -2073,7 +2073,7 @@ void cmLocalUnixMakefileGenerator3::CreateCDCommand( // Change back to the starting directory. cmd = cd_cmd; - cmd += this->ConvertToOutputForExisting(relRetDir); + cmd += this->ConvertToOutputForExisting(relDir); commands.push_back(cmd); } else { // On UNIX we must construct a single shell command to change From ad70a236f4368c21c08bcd4ea4d28425176c4e17 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:52 +0200 Subject: [PATCH 04/28] Convert: Remove ConvertToOutputForExisting overload It is no longer used. --- Source/cmOutputConverter.cxx | 13 ------------- Source/cmOutputConverter.h | 5 ----- 2 files changed, 18 deletions(-) diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 47c29282e..5e1babc22 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -46,19 +46,6 @@ std::string cmOutputConverter::ConvertToOutputForExisting( return this->ConvertToOutputFormat(remote, format); } -std::string cmOutputConverter::ConvertToOutputForExisting( - RelativeRoot remote, OutputFormat format) const -{ - // The relative root must have a path (i.e. not FULL or NONE) - assert(remote != FULL); - assert(remote != NONE); - - const char* remotePath = this->GetRelativeRootPath(remote); - assert(remotePath != CM_NULLPTR); - - return this->ConvertToOutputForExisting(remotePath, format); -} - const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) const { switch (relroot) { diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index d3ded2536..9eb184637 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -69,11 +69,6 @@ public: std::string ConvertToOutputForExisting(const std::string& remote, OutputFormat format = SHELL) const; - /** For existing path identified by RelativeRoot convert to output - path and short path if spaces. */ - std::string ConvertToOutputForExisting(RelativeRoot remote, - OutputFormat format = SHELL) const; - void SetLinkScriptShell(bool linkScriptShell); /** From e0fd2d0446101847dd40cfe4cc451667d04ddcd9 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:52 +0200 Subject: [PATCH 05/28] Makefiles: Port CreateCDCommand to string-based API --- Source/cmLocalUnixMakefileGenerator3.cxx | 27 +++++++++---------- Source/cmLocalUnixMakefileGenerator3.h | 3 +-- .../cmMakefileExecutableTargetGenerator.cxx | 4 +-- Source/cmMakefileLibraryTargetGenerator.cxx | 6 ++--- Source/cmMakefileTargetGenerator.cxx | 8 +++--- 5 files changed, 23 insertions(+), 25 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 22937e308..0169b47b8 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -358,7 +358,7 @@ void cmLocalUnixMakefileGenerator3::WriteObjectConvenienceRule( this->GetRecursiveMakeCall(tgtMakefileName.c_str(), targetName)); } this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); // Write the rule to the makefile. std::vector no_depends; @@ -398,7 +398,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefileTargets( commands.push_back( this->GetRecursiveMakeCall(makefile2.c_str(), localName)); this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); this->WriteMakeRule(ruleFileStream, "Convenience name for target.", localName, depends, commands, true); @@ -423,7 +423,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefileTargets( commands.push_back( this->GetRecursiveMakeCall(makefileName.c_str(), makeTargetName)); this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); this->WriteMakeRule(ruleFileStream, "fast build rule for target.", localName, depends, commands, true); @@ -439,7 +439,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefileTargets( commands.push_back( this->GetRecursiveMakeCall(makefile2.c_str(), makeTargetName)); this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); this->WriteMakeRule(ruleFileStream, "Manual pre-install relink rule for target.", localName, depends, commands, true); @@ -793,7 +793,7 @@ void cmLocalUnixMakefileGenerator3::WriteSpecialTargetsBottom( commands.push_back(runRule); if (!this->IsRootMakefile()) { this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); } this->WriteMakeRule( makefileStream, "Special rule to run CMake to check the build system " @@ -1011,7 +1011,8 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( } // Setup the proper working directory for the commands. - this->CreateCDCommand(commands1, dir.c_str(), relative); + std::string relativeDir = this->GetRelativeRootPath(relative); + this->CreateCDCommand(commands1, dir.c_str(), relativeDir); // push back the custom commands commands.insert(commands.end(), commands1.begin(), commands1.end()); @@ -1613,7 +1614,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( commands.push_back( this->GetRecursiveMakeCall(mf2Dir.c_str(), recursiveTarget)); this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); { std::ostringstream progCmd; progCmd << "$(CMAKE_COMMAND) -E cmake_progress_start "; // # 0 @@ -1633,7 +1634,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( commands.push_back( this->GetRecursiveMakeCall(mf2Dir.c_str(), recursiveTarget)); this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); this->WriteMakeRule(ruleFileStream, "The main clean target", "clean", depends, commands, true); commands.clear(); @@ -1659,7 +1660,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( commands.push_back( this->GetRecursiveMakeCall(mf2Dir.c_str(), recursiveTarget)); this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); this->WriteMakeRule(ruleFileStream, "Prepare targets for installation.", "preinstall", depends, commands, true); depends.clear(); @@ -1679,7 +1680,7 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( runRule += " 1"; commands.push_back(runRule); this->CreateCDCommand(commands, this->GetBinaryDirectory(), - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); this->WriteMakeRule(ruleFileStream, "clear depends", "depend", depends, commands, true); } @@ -2046,12 +2047,10 @@ void cmLocalUnixMakefileGenerator3::AddImplicitDepends( void cmLocalUnixMakefileGenerator3::CreateCDCommand( std::vector& commands, const char* tgtDir, - cmOutputConverter::RelativeRoot relRetDir) + std::string const& relDir) { - const char* relDir = this->GetRelativeRootPath(relRetDir); - // do we need to cd? - if (!strcmp(tgtDir, relDir)) { + if (tgtDir == relDir) { return; } diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 42d1d9167..5e1b65102 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -121,8 +121,7 @@ public: // create a command that cds to the start dir then runs the commands void CreateCDCommand(std::vector& commands, - const char* targetDir, - cmOutputConverter::RelativeRoot returnDir); + const char* targetDir, std::string const& relDir); static std::string ConvertToQuotedOutputPath(const char* p, bool useWatcomQuote); diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 6fadc8fb6..daf15870c 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -389,7 +389,7 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) } this->LocalGenerator->CreateCDCommand( commands1, this->Makefile->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); commands.insert(commands.end(), commands1.begin(), commands1.end()); commands1.clear(); @@ -402,7 +402,7 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) commands1.push_back(symlink); this->LocalGenerator->CreateCDCommand( commands1, this->Makefile->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); commands.insert(commands.end(), commands1.begin(), commands1.end()); commands1.clear(); } diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 580343dac..b3cd6a236 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -418,7 +418,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( this->GeneratorTarget, "target"); this->LocalGenerator->CreateCDCommand( commands1, this->Makefile->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); commands.insert(commands.end(), commands1.begin(), commands1.end()); commands1.clear(); } @@ -672,7 +672,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( } this->LocalGenerator->CreateCDCommand( commands1, this->Makefile->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); commands.insert(commands.end(), commands1.begin(), commands1.end()); commands1.clear(); @@ -689,7 +689,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( commands1.push_back(symlink); this->LocalGenerator->CreateCDCommand( commands1, this->Makefile->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); commands.insert(commands.end(), commands1.begin(), commands1.end()); commands1.clear(); } diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 84a15e031..8f14e8c1e 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -649,7 +649,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( // Change the command working directory to the local build tree. this->LocalGenerator->CreateCDCommand( compileCommands, this->LocalGenerator->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); commands.insert(commands.end(), compileCommands.begin(), compileCommands.end()); } @@ -712,7 +712,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( this->LocalGenerator->CreateCDCommand( preprocessCommands, this->LocalGenerator->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); commands.insert(commands.end(), preprocessCommands.begin(), preprocessCommands.end()); } else { @@ -758,7 +758,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( this->LocalGenerator->CreateCDCommand( assemblyCommands, this->LocalGenerator->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); commands.insert(commands.end(), assemblyCommands.begin(), assemblyCommands.end()); } else { @@ -849,7 +849,7 @@ void cmMakefileTargetGenerator::WriteTargetCleanRules() this->GeneratorTarget); this->LocalGenerator->CreateCDCommand( commands, this->LocalGenerator->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + this->LocalGenerator->GetBinaryDirectory()); // Write the rule. this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, CM_NULLPTR, From 6960516b6b053816313d2ff5ee4e9375a84829cb Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:52 +0200 Subject: [PATCH 06/28] Makefiles: Change signature of AppendCustomCommand The RelativeRoot parameter will become non-default. --- Source/cmLocalUnixMakefileGenerator3.cxx | 6 +++--- Source/cmLocalUnixMakefileGenerator3.h | 4 ++-- Source/cmMakefileTargetGenerator.cxx | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 0169b47b8..a2ac38ad6 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -905,14 +905,14 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommands( for (std::vector::const_iterator i = ccs.begin(); i != ccs.end(); ++i) { cmCustomCommandGenerator ccg(*i, this->ConfigName, this); - this->AppendCustomCommand(commands, ccg, target, true, relative); + this->AppendCustomCommand(commands, ccg, target, relative, true); } } void cmLocalUnixMakefileGenerator3::AppendCustomCommand( std::vector& commands, cmCustomCommandGenerator const& ccg, - cmGeneratorTarget* target, bool echo_comment, - cmOutputConverter::RelativeRoot relative, std::ostream* content) + cmGeneratorTarget* target, cmOutputConverter::RelativeRoot relative, + bool echo_comment, std::ostream* content) { // Optionally create a command to display the custom command's // comment text. This is used for pre-build, pre-link, and diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 5e1b65102..ed167b395 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -234,9 +234,9 @@ protected: cmOutputConverter::RelativeRoot relative = cmOutputConverter::HOME_OUTPUT); void AppendCustomCommand( std::vector& commands, cmCustomCommandGenerator const& ccg, - cmGeneratorTarget* target, bool echo_comment = false, + cmGeneratorTarget* target, cmOutputConverter::RelativeRoot relative = cmOutputConverter::HOME_OUTPUT, - std::ostream* content = CM_NULLPTR); + bool echo_comment = false, std::ostream* content = CM_NULLPTR); void AppendCleanCommand(std::vector& commands, const std::vector& files, cmGeneratorTarget* target, diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 8f14e8c1e..0c637a934 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1094,8 +1094,8 @@ void cmMakefileTargetGenerator::GenerateCustomRuleFile( // Now append the actual user-specified commands. std::ostringstream content; this->LocalGenerator->AppendCustomCommand( - commands, ccg, this->GeneratorTarget, false, - cmOutputConverter::HOME_OUTPUT, &content); + commands, ccg, this->GeneratorTarget, cmOutputConverter::HOME_OUTPUT, + false, &content); // Collect the dependencies. std::vector depends; From c341f4679ad00cb65c7660b474ddabd13d0ef498 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:53 +0200 Subject: [PATCH 07/28] Makefiles: Change AppendCustomCommand API to strings Avoid the RelativeRoot enum. Supply the HOME_OUTPUT string at each callsite to make the parameter non-defaulted. --- Source/cmLocalUnixMakefileGenerator3.cxx | 13 ++++++------- Source/cmLocalUnixMakefileGenerator3.h | 19 ++++++++++--------- .../cmMakefileExecutableTargetGenerator.cxx | 6 +++--- Source/cmMakefileLibraryTargetGenerator.cxx | 8 ++++---- Source/cmMakefileTargetGenerator.cxx | 4 ++-- Source/cmMakefileUtilityTargetGenerator.cxx | 4 ++-- 6 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index a2ac38ad6..824d4b89a 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -900,7 +900,7 @@ void cmLocalUnixMakefileGenerator3::AppendCustomDepend( void cmLocalUnixMakefileGenerator3::AppendCustomCommands( std::vector& commands, const std::vector& ccs, - cmGeneratorTarget* target, cmOutputConverter::RelativeRoot relative) + cmGeneratorTarget* target, std::string const& relative) { for (std::vector::const_iterator i = ccs.begin(); i != ccs.end(); ++i) { @@ -911,8 +911,8 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommands( void cmLocalUnixMakefileGenerator3::AppendCustomCommand( std::vector& commands, cmCustomCommandGenerator const& ccg, - cmGeneratorTarget* target, cmOutputConverter::RelativeRoot relative, - bool echo_comment, std::ostream* content) + cmGeneratorTarget* target, std::string const& relative, bool echo_comment, + std::ostream* content) { // Optionally create a command to display the custom command's // comment text. This is used for pre-build, pre-link, and @@ -1011,8 +1011,7 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( } // Setup the proper working directory for the commands. - std::string relativeDir = this->GetRelativeRootPath(relative); - this->CreateCDCommand(commands1, dir.c_str(), relativeDir); + this->CreateCDCommand(commands1, dir.c_str(), relative); // push back the custom commands commands.insert(commands.end(), commands1.begin(), commands1.end()); @@ -1559,9 +1558,9 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( this->AppendCustomDepends(depends, gt->GetPreBuildCommands()); this->AppendCustomDepends(depends, gt->GetPostBuildCommands()); this->AppendCustomCommands(commands, gt->GetPreBuildCommands(), gt, - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); this->AppendCustomCommands(commands, gt->GetPostBuildCommands(), gt, - cmOutputConverter::START_OUTPUT); + this->GetCurrentBinaryDirectory()); std::string targetName = gt->GetName(); this->WriteMakeRule(ruleFileStream, targetString.c_str(), targetName, depends, commands, true); diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index ed167b395..243cc3d65 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -228,15 +228,16 @@ protected: const std::vector& ccs); void AppendCustomDepend(std::vector& depends, cmCustomCommandGenerator const& cc); - void AppendCustomCommands( - std::vector& commands, - const std::vector& ccs, cmGeneratorTarget* target, - cmOutputConverter::RelativeRoot relative = cmOutputConverter::HOME_OUTPUT); - void AppendCustomCommand( - std::vector& commands, cmCustomCommandGenerator const& ccg, - cmGeneratorTarget* target, - cmOutputConverter::RelativeRoot relative = cmOutputConverter::HOME_OUTPUT, - bool echo_comment = false, std::ostream* content = CM_NULLPTR); + void AppendCustomCommands(std::vector& commands, + const std::vector& ccs, + cmGeneratorTarget* target, + std::string const& relative); + void AppendCustomCommand(std::vector& commands, + cmCustomCommandGenerator const& ccg, + cmGeneratorTarget* target, + std::string const& relative, + bool echo_comment = false, + std::ostream* content = CM_NULLPTR); void AppendCleanCommand(std::vector& commands, const std::vector& files, cmGeneratorTarget* target, diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index daf15870c..74bfedc52 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -257,10 +257,10 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) if (!relink) { this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPreBuildCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPreLinkCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); } // Determine whether a link script will be used. @@ -411,7 +411,7 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) if (!relink) { this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPostBuildCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); } // Write the build rule. diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index b3cd6a236..6727bd050 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -112,7 +112,7 @@ void cmMakefileLibraryTargetGenerator::WriteObjectLibraryRules() // Add post-build rules. this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPostBuildCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); // Depend on the object files. this->AppendObjectDepends(depends); @@ -427,10 +427,10 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( if (!relink) { this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPreBuildCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPreLinkCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); } // Determine whether a link script will be used. @@ -698,7 +698,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( if (!relink) { this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPostBuildCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); } // Compute the list of outputs. diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 0c637a934..5bba29cfa 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1094,8 +1094,8 @@ void cmMakefileTargetGenerator::GenerateCustomRuleFile( // Now append the actual user-specified commands. std::ostringstream content; this->LocalGenerator->AppendCustomCommand( - commands, ccg, this->GeneratorTarget, cmOutputConverter::HOME_OUTPUT, - false, &content); + commands, ccg, this->GeneratorTarget, + this->LocalGenerator->GetBinaryDirectory(), false, &content); // Collect the dependencies. std::vector depends; diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index dfad0c4d4..b709545fa 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -75,14 +75,14 @@ void cmMakefileUtilityTargetGenerator::WriteRuleFiles() this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPreBuildCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); // Depend on all custom command outputs for sources this->DriveCustomCommands(depends); this->LocalGenerator->AppendCustomCommands( commands, this->GeneratorTarget->GetPostBuildCommands(), - this->GeneratorTarget); + this->GeneratorTarget, this->LocalGenerator->GetBinaryDirectory()); // Add dependencies on targets that must be built first. this->AppendTargetDepends(depends); From fbd83948675f4b1cb487d59390cfe1689f801fc0 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:53 +0200 Subject: [PATCH 08/28] Convert: Remove obsolete GetRelativeRootPath --- Source/cmOutputConverter.cxx | 17 ----------------- Source/cmOutputConverter.h | 5 ----- 2 files changed, 22 deletions(-) diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 5e1babc22..98872d626 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -46,23 +46,6 @@ std::string cmOutputConverter::ConvertToOutputForExisting( return this->ConvertToOutputFormat(remote, format); } -const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) const -{ - switch (relroot) { - case HOME: - return this->GetState()->GetSourceDirectory(); - case START: - return this->StateSnapshot.GetDirectory().GetCurrentSource(); - case HOME_OUTPUT: - return this->GetState()->GetBinaryDirectory(); - case START_OUTPUT: - return this->StateSnapshot.GetDirectory().GetCurrentBinary(); - default: - break; - } - return CM_NULLPTR; -} - std::string cmOutputConverter::Convert(const std::string& source, RelativeRoot relative, OutputFormat output) const diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index 9eb184637..ff06ab60c 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -60,11 +60,6 @@ public: std::string ConvertDirectorySeparatorsForShell( const std::string& source) const; - /** - * Get path for the specified relative root. - */ - const char* GetRelativeRootPath(RelativeRoot relroot) const; - ///! for existing files convert to output path and short path if spaces std::string ConvertToOutputForExisting(const std::string& remote, OutputFormat format = SHELL) const; From cd351ef2c427284eea0ab494eba5d4f24bc0e050 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:53 +0200 Subject: [PATCH 09/28] Makefiles: Deduplicate variable --- Source/cmLocalUnixMakefileGenerator3.cxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 824d4b89a..f2ef5c81e 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -638,19 +638,20 @@ void cmLocalUnixMakefileGenerator3::WriteMakeVariables( #endif } + std::string cmakeShellCommand = this->ConvertShellCommand( + cmSystemTools::GetCMakeCommand(), cmOutputConverter::FULL); + /* clang-format off */ makefileStream << "# The CMake executable.\n" << "CMAKE_COMMAND = " - << this->ConvertShellCommand(cmSystemTools::GetCMakeCommand(), - cmOutputConverter::FULL) + << cmakeShellCommand << "\n" << "\n"; makefileStream << "# The command to remove a file.\n" << "RM = " - << this->ConvertShellCommand(cmSystemTools::GetCMakeCommand(), - cmOutputConverter::FULL) + << cmakeShellCommand << " -E remove -f\n" << "\n"; makefileStream From 112c87b28afac71617bcbb552ae1f2027bb548b6 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:53 +0200 Subject: [PATCH 10/28] Makefiles: Replace method with Wacom specific API The existing method uses RelativeRoot NONE and FULL values. In principle, those should be segregated interfaces. Mixing NONE and FULL into the RelativeRoot enum is a case of http://thedailywtf.com/articles/What_Is_Truth_0x3f_ --- Source/cmLocalUnixMakefileGenerator3.cxx | 22 ++++++++++++++++------ Source/cmLocalUnixMakefileGenerator3.h | 3 +-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index f2ef5c81e..f026b12b0 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -592,8 +592,8 @@ void cmLocalUnixMakefileGenerator3::WriteMakeRule( } } -std::string cmLocalUnixMakefileGenerator3::ConvertShellCommand( - std::string const& cmd, cmOutputConverter::RelativeRoot root) +std::string cmLocalUnixMakefileGenerator3::MaybeConvertWatcomShellCommand( + std::string const& cmd) { if (this->IsWatcomWMake() && cmSystemTools::FileIsFullPath(cmd.c_str()) && cmd.find_first_of("( )") != cmd.npos) { @@ -606,7 +606,7 @@ std::string cmLocalUnixMakefileGenerator3::ConvertShellCommand( cmOutputConverter::SHELL); } } - return this->Convert(cmd, root, cmOutputConverter::SHELL); + return std::string(); } void cmLocalUnixMakefileGenerator3::WriteMakeVariables( @@ -638,8 +638,13 @@ void cmLocalUnixMakefileGenerator3::WriteMakeVariables( #endif } - std::string cmakeShellCommand = this->ConvertShellCommand( - cmSystemTools::GetCMakeCommand(), cmOutputConverter::FULL); + std::string cmakeShellCommand = + this->MaybeConvertWatcomShellCommand(cmSystemTools::GetCMakeCommand()); + if (cmakeShellCommand.empty()) { + cmakeShellCommand = + this->Convert(cmSystemTools::GetCMakeCommand(), cmOutputConverter::FULL, + cmOutputConverter::SHELL); + } /* clang-format off */ makefileStream @@ -975,7 +980,12 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( std::string launcher = this->MakeLauncher( ccg, target, workingDir.empty() ? cmOutputConverter::START_OUTPUT : cmOutputConverter::NONE); - cmd = launcher + this->ConvertShellCommand(cmd, cmOutputConverter::NONE); + std::string shellCommand = this->MaybeConvertWatcomShellCommand(cmd); + if (shellCommand.empty()) { + shellCommand = this->Convert(cmd, cmOutputConverter::NONE, + cmOutputConverter::SHELL); + } + cmd = launcher + shellCommand; ccg.AppendArguments(c, cmd); if (content) { diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 243cc3d65..ea986076b 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -250,8 +250,7 @@ protected: void CheckMultipleOutputs(bool verbose); private: - std::string ConvertShellCommand(std::string const& cmd, - cmOutputConverter::RelativeRoot root); + std::string MaybeConvertWatcomShellCommand(std::string const& cmd); std::string MakeLauncher(cmCustomCommandGenerator const& ccg, cmGeneratorTarget* target, cmOutputConverter::RelativeRoot relative); From 2722c4dcc55605b7946f3c9bfa4b2fe5ce4161cb Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:53 +0200 Subject: [PATCH 11/28] Makefiles: Remove useless use of Convert Convert with NONE and UNCHANGED is a no-op. --- Source/cmLocalUnixMakefileGenerator3.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index f026b12b0..e1488876d 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -835,8 +835,7 @@ std::string cmLocalUnixMakefileGenerator3::GetRelativeTargetDirectory( { std::string dir = this->HomeRelativeOutputPath; dir += this->GetTargetDirectory(target); - return this->Convert(dir, cmOutputConverter::NONE, - cmOutputConverter::UNCHANGED); + return dir; } void cmLocalUnixMakefileGenerator3::AppendFlags(std::string& flags, From e804d410cd4e391cd81ff3d8981cfba1fae28742 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:54 +0200 Subject: [PATCH 12/28] Makefiles: Invert logic in MakeLauncher Make it easier to inline into the caller. --- Source/cmLocalUnixMakefileGenerator3.cxx | 39 ++++++++++++------------ 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index e1488876d..47b891f30 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1034,28 +1034,27 @@ std::string cmLocalUnixMakefileGenerator3::MakeLauncher( // Short-circuit if there is no launcher. const char* prop = "RULE_LAUNCH_CUSTOM"; const char* val = this->GetRuleLauncher(target, prop); - if (!(val && *val)) { - return ""; - } + if (val && *val) { + // Expand rules in the empty string. It may insert the launcher and + // perform replacements. + RuleVariables vars; + vars.RuleLauncher = prop; + vars.CMTarget = target; + std::string output; + const std::vector& outputs = ccg.GetOutputs(); + if (!outputs.empty()) { + output = this->Convert(outputs[0], relative, cmOutputConverter::SHELL); + } + vars.Output = output.c_str(); - // Expand rules in the empty string. It may insert the launcher and - // perform replacements. - RuleVariables vars; - vars.RuleLauncher = prop; - vars.CMTarget = target; - std::string output; - const std::vector& outputs = ccg.GetOutputs(); - if (!outputs.empty()) { - output = this->Convert(outputs[0], relative, cmOutputConverter::SHELL); + std::string launcher; + this->ExpandRuleVariables(launcher, vars); + if (!launcher.empty()) { + launcher += " "; + } + return launcher; } - vars.Output = output.c_str(); - - std::string launcher; - this->ExpandRuleVariables(launcher, vars); - if (!launcher.empty()) { - launcher += " "; - } - return launcher; + return ""; } void cmLocalUnixMakefileGenerator3::AppendCleanCommand( From ba4ba7c39de82b805652efbb7dc5e1659c53f36b Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:54 +0200 Subject: [PATCH 13/28] Makefiles: Simplify MakeLauncher return value Bonus NRVO. --- Source/cmLocalUnixMakefileGenerator3.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 47b891f30..53c2ff6f8 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1031,6 +1031,7 @@ std::string cmLocalUnixMakefileGenerator3::MakeLauncher( cmCustomCommandGenerator const& ccg, cmGeneratorTarget* target, cmOutputConverter::RelativeRoot relative) { + std::string launcher; // Short-circuit if there is no launcher. const char* prop = "RULE_LAUNCH_CUSTOM"; const char* val = this->GetRuleLauncher(target, prop); @@ -1047,14 +1048,12 @@ std::string cmLocalUnixMakefileGenerator3::MakeLauncher( } vars.Output = output.c_str(); - std::string launcher; this->ExpandRuleVariables(launcher, vars); if (!launcher.empty()) { launcher += " "; } - return launcher; } - return ""; + return launcher; } void cmLocalUnixMakefileGenerator3::AppendCleanCommand( From 51f7dcb0a55874e71e4695f5154548a41c87ad56 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:54 +0200 Subject: [PATCH 14/28] Makefiles: Inline MakeLauncher into only caller --- Source/cmLocalUnixMakefileGenerator3.cxx | 59 +++++++++++------------- Source/cmLocalUnixMakefileGenerator3.h | 3 -- 2 files changed, 27 insertions(+), 35 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 53c2ff6f8..53c9aa12c 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -976,9 +976,33 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( // without the current directory being in the search path. cmd = "./" + cmd; } - std::string launcher = this->MakeLauncher( - ccg, target, workingDir.empty() ? cmOutputConverter::START_OUTPUT - : cmOutputConverter::NONE); + + std::string launcher; + // Short-circuit if there is no launcher. + const char* prop = "RULE_LAUNCH_CUSTOM"; + const char* val = this->GetRuleLauncher(target, prop); + if (val && *val) { + // Expand rules in the empty string. It may insert the launcher and + // perform replacements. + RuleVariables vars; + vars.RuleLauncher = prop; + vars.CMTarget = target; + std::string output; + const std::vector& outputs = ccg.GetOutputs(); + if (!outputs.empty()) { + output = this->Convert(outputs[0], workingDir.empty() + ? cmOutputConverter::START_OUTPUT + : cmOutputConverter::NONE, + cmOutputConverter::SHELL); + } + vars.Output = output.c_str(); + + this->ExpandRuleVariables(launcher, vars); + if (!launcher.empty()) { + launcher += " "; + } + } + std::string shellCommand = this->MaybeConvertWatcomShellCommand(cmd); if (shellCommand.empty()) { shellCommand = this->Convert(cmd, cmOutputConverter::NONE, @@ -1027,35 +1051,6 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( commands.insert(commands.end(), commands1.begin(), commands1.end()); } -std::string cmLocalUnixMakefileGenerator3::MakeLauncher( - cmCustomCommandGenerator const& ccg, cmGeneratorTarget* target, - cmOutputConverter::RelativeRoot relative) -{ - std::string launcher; - // Short-circuit if there is no launcher. - const char* prop = "RULE_LAUNCH_CUSTOM"; - const char* val = this->GetRuleLauncher(target, prop); - if (val && *val) { - // Expand rules in the empty string. It may insert the launcher and - // perform replacements. - RuleVariables vars; - vars.RuleLauncher = prop; - vars.CMTarget = target; - std::string output; - const std::vector& outputs = ccg.GetOutputs(); - if (!outputs.empty()) { - output = this->Convert(outputs[0], relative, cmOutputConverter::SHELL); - } - vars.Output = output.c_str(); - - this->ExpandRuleVariables(launcher, vars); - if (!launcher.empty()) { - launcher += " "; - } - } - return launcher; -} - void cmLocalUnixMakefileGenerator3::AppendCleanCommand( std::vector& commands, const std::vector& files, cmGeneratorTarget* target, const char* filename) diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index ea986076b..3e90055a9 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -251,9 +251,6 @@ protected: private: std::string MaybeConvertWatcomShellCommand(std::string const& cmd); - std::string MakeLauncher(cmCustomCommandGenerator const& ccg, - cmGeneratorTarget* target, - cmOutputConverter::RelativeRoot relative); void ComputeObjectFilenames( std::map& mapping, From ee49f006cf657fa6f1c2d112f44d762441fd5cf1 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:54 +0200 Subject: [PATCH 15/28] Makefiles: Replace ternaries with if()s --- Source/cmLocalNinjaGenerator.cxx | 13 +++++++------ Source/cmLocalUnixMakefileGenerator3.cxx | 12 ++++++++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 46d7e18cf..58c336de6 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -486,12 +486,13 @@ std::string cmLocalNinjaGenerator::MakeCustomLauncher( std::string output; const std::vector& outputs = ccg.GetOutputs(); if (!outputs.empty()) { - cmOutputConverter::RelativeRoot relative_root = - ccg.GetWorkingDirectory().empty() ? cmOutputConverter::START_OUTPUT - : cmOutputConverter::NONE; - - output = - this->Convert(outputs[0], relative_root, cmOutputConverter::SHELL); + if (ccg.GetWorkingDirectory().empty()) { + output = this->Convert(outputs[0], cmOutputConverter::START_OUTPUT, + cmOutputConverter::SHELL); + } else { + output = this->Convert(outputs[0], cmOutputConverter::NONE, + cmOutputConverter::SHELL); + } } vars.Output = output.c_str(); diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 53c9aa12c..917d8d5ba 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -990,10 +990,14 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( std::string output; const std::vector& outputs = ccg.GetOutputs(); if (!outputs.empty()) { - output = this->Convert(outputs[0], workingDir.empty() - ? cmOutputConverter::START_OUTPUT - : cmOutputConverter::NONE, - cmOutputConverter::SHELL); + if (workingDir.empty()) { + output = this->Convert(outputs[0], cmOutputConverter::START_OUTPUT, + cmOutputConverter::SHELL); + + } else { + output = this->Convert(outputs[0], cmOutputConverter::NONE, + cmOutputConverter::SHELL); + } } vars.Output = output.c_str(); From 998d9ee967f6795c71ff23cf16601f7e974b21ba Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:54 +0200 Subject: [PATCH 16/28] VS: Replace variable with an if() --- Source/cmLocalVisualStudioGenerator.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx index bdb1c2b87..ca006b707 100644 --- a/Source/cmLocalVisualStudioGenerator.cxx +++ b/Source/cmLocalVisualStudioGenerator.cxx @@ -127,7 +127,6 @@ std::string cmLocalVisualStudioGenerator::ConstructScript( { bool useLocal = this->CustomCommandUseLocal(); std::string workingDirectory = ccg.GetWorkingDirectory(); - RelativeRoot relativeRoot = workingDirectory.empty() ? START_OUTPUT : NONE; // Avoid leading or trailing newlines. std::string newline = ""; @@ -203,7 +202,11 @@ std::string cmLocalVisualStudioGenerator::ConstructScript( } } - script += this->Convert(cmd.c_str(), relativeRoot, SHELL); + if (workingDirectory.empty()) { + script += this->Convert(cmd.c_str(), START_OUTPUT, SHELL); + } else { + script += this->Convert(cmd.c_str(), NONE, SHELL); + } ccg.AppendArguments(c, script); // After each custom command, check for an error result. From ac46384171c54a0fb9c47c32642fbca4ff1e925b Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:55 +0200 Subject: [PATCH 17/28] Convert: Replace uses of Convert(NONE) These are equivalent to ConvertToOutputFormat. --- Source/cmLocalCommonGenerator.cxx | 3 +- Source/cmLocalGenerator.cxx | 8 ++-- Source/cmLocalNinjaGenerator.cxx | 4 +- Source/cmLocalUnixMakefileGenerator3.cxx | 22 +++++------ Source/cmLocalVisualStudioGenerator.cxx | 2 +- .../cmMakefileExecutableTargetGenerator.cxx | 9 ++--- Source/cmMakefileLibraryTargetGenerator.cxx | 13 +++---- Source/cmMakefileTargetGenerator.cxx | 38 +++++++++---------- Source/cmNinjaNormalTargetGenerator.cxx | 4 +- 9 files changed, 49 insertions(+), 54 deletions(-) diff --git a/Source/cmLocalCommonGenerator.cxx b/Source/cmLocalCommonGenerator.cxx index 5502296dc..138342125 100644 --- a/Source/cmLocalCommonGenerator.cxx +++ b/Source/cmLocalCommonGenerator.cxx @@ -74,8 +74,7 @@ std::string cmLocalCommonGenerator::GetTargetFortranFlags( for (std::vector::const_iterator idi = includes.begin(); idi != includes.end(); ++idi) { std::string flg = modpath_flag; - flg += - this->Convert(*idi, cmOutputConverter::NONE, cmOutputConverter::SHELL); + flg += this->ConvertToOutputFormat(*idi, cmOutputConverter::SHELL); this->AppendFlags(flags, flg); } } diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index d8f6bdf94..20a1e21b3 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1393,7 +1393,7 @@ std::string cmLocalGenerator::ConvertToLinkReference(std::string const& lib, sp += lib.substr(pos); // Convert to an output path. - return this->Convert(sp.c_str(), NONE, format); + return this->ConvertToOutputFormat(sp.c_str(), format); } } } @@ -1489,7 +1489,7 @@ void cmLocalGenerator::OutputLinkLibraries(std::string& linkLibraries, for (std::vector::const_iterator fdi = fwDirs.begin(); fdi != fwDirs.end(); ++fdi) { frameworkPath += fwSearchFlag; - frameworkPath += this->Convert(*fdi, NONE, shellFormat); + frameworkPath += this->ConvertToOutputFormat(*fdi, shellFormat); frameworkPath += " "; } } @@ -1535,7 +1535,7 @@ void cmLocalGenerator::OutputLinkLibraries(std::string& linkLibraries, for (std::vector::iterator ri = runtimeDirs.begin(); ri != runtimeDirs.end(); ++ri) { rpath += cli.GetRuntimeFlag(); - rpath += this->Convert(*ri, NONE, shellFormat); + rpath += this->ConvertToOutputFormat(*ri, shellFormat); rpath += " "; } fout << rpath; @@ -1605,7 +1605,7 @@ void cmLocalGenerator::AddArchitectureFlags(std::string& flags, flags += " "; flags += sysrootFlag; flags += " "; - flags += this->Convert(sysroot, NONE, SHELL); + flags += this->ConvertToOutputFormat(sysroot, SHELL); } if (deploymentTargetFlag && *deploymentTargetFlag && deploymentTarget && diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 58c336de6..8c092e762 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -490,8 +490,8 @@ std::string cmLocalNinjaGenerator::MakeCustomLauncher( output = this->Convert(outputs[0], cmOutputConverter::START_OUTPUT, cmOutputConverter::SHELL); } else { - output = this->Convert(outputs[0], cmOutputConverter::NONE, - cmOutputConverter::SHELL); + output = + this->ConvertToOutputFormat(outputs[0], cmOutputConverter::SHELL); } } vars.Output = output.c_str(); diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 917d8d5ba..2e08417f0 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -602,8 +602,7 @@ std::string cmLocalUnixMakefileGenerator3::MaybeConvertWatcomShellCommand( // lines with shell redirection operators. std::string scmd; if (cmSystemTools::GetShortPath(cmd, scmd)) { - return this->Convert(scmd, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + return this->ConvertToOutputFormat(scmd, cmOutputConverter::SHELL); } } return std::string(); @@ -790,8 +789,8 @@ void cmLocalUnixMakefileGenerator3::WriteSpecialTargetsBottom( std::string runRule = "$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)"; runRule += " --check-build-system "; - runRule += this->Convert(cmakefileName, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + runRule += + this->ConvertToOutputFormat(cmakefileName, cmOutputConverter::SHELL); runRule += " 0"; std::vector no_depends; @@ -995,8 +994,8 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( cmOutputConverter::SHELL); } else { - output = this->Convert(outputs[0], cmOutputConverter::NONE, - cmOutputConverter::SHELL); + output = this->ConvertToOutputFormat(outputs[0], + cmOutputConverter::SHELL); } } vars.Output = output.c_str(); @@ -1009,8 +1008,8 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( std::string shellCommand = this->MaybeConvertWatcomShellCommand(cmd); if (shellCommand.empty()) { - shellCommand = this->Convert(cmd, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + shellCommand = + this->ConvertToOutputFormat(cmd, cmOutputConverter::SHELL); } cmd = launcher + shellCommand; @@ -1681,8 +1680,8 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( std::string runRule = "$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)"; runRule += " --check-build-system "; - runRule += this->Convert(cmakefileName, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + runRule += + this->ConvertToOutputFormat(cmakefileName, cmOutputConverter::SHELL); runRule += " 1"; commands.push_back(runRule); this->CreateCDCommand(commands, this->GetBinaryDirectory(), @@ -1895,8 +1894,7 @@ std::string cmLocalUnixMakefileGenerator3::GetRecursiveMakeCall( // Call make on the given file. std::string cmd; cmd += "$(MAKE) -f "; - cmd += - this->Convert(makefile, cmOutputConverter::NONE, cmOutputConverter::SHELL); + cmd += this->ConvertToOutputFormat(makefile, cmOutputConverter::SHELL); cmd += " "; cmGlobalUnixMakefileGenerator3* gg = diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx index ca006b707..d1cefe300 100644 --- a/Source/cmLocalVisualStudioGenerator.cxx +++ b/Source/cmLocalVisualStudioGenerator.cxx @@ -205,7 +205,7 @@ std::string cmLocalVisualStudioGenerator::ConstructScript( if (workingDirectory.empty()) { script += this->Convert(cmd.c_str(), START_OUTPUT, SHELL); } else { - script += this->Convert(cmd.c_str(), NONE, SHELL); + script += this->ConvertToOutputFormat(cmd.c_str(), SHELL); } ccg.AppendArguments(c, script); diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 74bfedc52..a14df7949 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -135,8 +135,8 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) std::string targetFullPathReal = outpath + targetNameReal; std::string targetFullPathPDB = pdbOutputPath + targetNamePDB; std::string targetFullPathImport = outpathImp + targetNameImport; - std::string targetOutPathPDB = this->Convert( - targetFullPathPDB, cmOutputConverter::NONE, cmOutputConverter::SHELL); + std::string targetOutPathPDB = this->LocalGenerator->ConvertToOutputFormat( + targetFullPathPDB, cmOutputConverter::SHELL); // Convert to the output path to use in constructing commands. std::string targetOutPath = this->Convert( targetFullPath, cmOutputConverter::START_OUTPUT, cmOutputConverter::SHELL); @@ -357,9 +357,8 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) vars.Manifests = manifests.c_str(); if (this->GeneratorTarget->GetProperty("LINK_WHAT_YOU_USE")) { - std::string cmakeCommand = - this->Convert(cmSystemTools::GetCMakeCommand(), cmLocalGenerator::NONE, - cmLocalGenerator::SHELL); + std::string cmakeCommand = this->LocalGenerator->ConvertToOutputFormat( + cmSystemTools::GetCMakeCommand(), cmLocalGenerator::SHELL); cmakeCommand += " -E __run_iwyu --lwyu="; cmakeCommand += targetOutPathReal; real_link_commands.push_back(cmakeCommand); diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 6727bd050..c8ee05fbc 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -310,8 +310,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( // Construct the output path version of the names for use in command // arguments. - std::string targetOutPathPDB = this->Convert( - targetFullPathPDB, cmOutputConverter::NONE, cmOutputConverter::SHELL); + std::string targetOutPathPDB = this->LocalGenerator->ConvertToOutputFormat( + targetFullPathPDB, cmOutputConverter::SHELL); std::string targetOutPath = this->Convert( targetFullPath, cmOutputConverter::START_OUTPUT, cmOutputConverter::SHELL); std::string targetOutPathSO = @@ -572,8 +572,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( vars.TargetInstallNameDir = ""; } else { // Convert to a path for the native build tool. - install_name_dir = this->LocalGenerator->Convert( - install_name_dir, cmOutputConverter::NONE, cmOutputConverter::SHELL); + install_name_dir = this->LocalGenerator->ConvertToOutputFormat( + install_name_dir, cmOutputConverter::SHELL); vars.TargetInstallNameDir = install_name_dir.c_str(); } } @@ -640,9 +640,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( cmSystemTools::ExpandListArgument(linkRule, real_link_commands); if (this->GeneratorTarget->GetProperty("LINK_WHAT_YOU_USE") && (this->GeneratorTarget->GetType() == cmState::SHARED_LIBRARY)) { - std::string cmakeCommand = - this->Convert(cmSystemTools::GetCMakeCommand(), - cmLocalGenerator::NONE, cmLocalGenerator::SHELL); + std::string cmakeCommand = this->LocalGenerator->ConvertToOutputFormat( + cmSystemTools::GetCMakeCommand(), cmLocalGenerator::SHELL); cmakeCommand += " -E __run_iwyu --lwyu="; cmakeCommand += targetOutPathReal; real_link_commands.push_back(cmakeCommand); diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 5bba29cfa..7747aa7e9 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -324,11 +324,11 @@ void cmMakefileTargetGenerator::MacOSXContentGeneratorType::operator()( this->Generator->LocalGenerator->AppendEcho( commands, copyEcho, cmLocalUnixMakefileGenerator3::EchoBuild); std::string copyCommand = "$(CMAKE_COMMAND) -E copy "; - copyCommand += this->Generator->Convert(input, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + copyCommand += this->Generator->LocalGenerator->ConvertToOutputFormat( + input, cmOutputConverter::SHELL); copyCommand += " "; - copyCommand += this->Generator->Convert(output, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + copyCommand += this->Generator->LocalGenerator->ConvertToOutputFormat( + output, cmOutputConverter::SHELL); commands.push_back(copyCommand); this->Generator->LocalGenerator->WriteMakeRule( *this->Generator->BuildFileStream, CM_NULLPTR, output, depends, commands, @@ -464,8 +464,8 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( } // Get the output paths for source and object files. - std::string sourceFile = this->Convert( - source.GetFullPath(), cmOutputConverter::NONE, cmOutputConverter::SHELL); + std::string sourceFile = this->LocalGenerator->ConvertToOutputFormat( + source.GetFullPath(), cmOutputConverter::SHELL); // Construct the build message. std::vector no_commands; @@ -516,8 +516,8 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( targetOutPathReal = this->Convert(targetFullPathReal, cmOutputConverter::START_OUTPUT, cmOutputConverter::SHELL); - targetOutPathPDB = this->Convert( - targetFullPathPDB, cmOutputConverter::NONE, cmOutputConverter::SHELL); + targetOutPathPDB = this->LocalGenerator->ConvertToOutputFormat( + targetFullPathPDB, cmOutputConverter::SHELL); targetOutPathCompilePDB = this->Convert(targetFullPathCompilePDB, cmOutputConverter::START_OUTPUT, cmOutputConverter::SHELL); @@ -539,7 +539,7 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( vars.TargetCompilePDB = targetOutPathCompilePDB.c_str(); vars.Source = sourceFile.c_str(); std::string shellObj = - this->Convert(obj, cmOutputConverter::NONE, cmOutputConverter::SHELL); + this->LocalGenerator->ConvertToOutputFormat(obj, cmOutputConverter::SHELL); vars.Object = shellObj.c_str(); std::string objectDir = this->GeneratorTarget->GetSupportDirectory(); objectDir = this->Convert(objectDir, cmOutputConverter::START_OUTPUT, @@ -699,8 +699,8 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( std::vector preprocessCommands; cmSystemTools::ExpandListArgument(preprocessRule, preprocessCommands); - std::string shellObjI = this->Convert(objI, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + std::string shellObjI = this->LocalGenerator->ConvertToOutputFormat( + objI, cmOutputConverter::SHELL); vars.PreprocessedSource = shellObjI.c_str(); // Expand placeholders in the commands. @@ -746,8 +746,8 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( std::vector assemblyCommands; cmSystemTools::ExpandListArgument(assemblyRule, assemblyCommands); - std::string shellObjS = this->Convert(objS, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + std::string shellObjS = this->LocalGenerator->ConvertToOutputFormat( + objS, cmOutputConverter::SHELL); vars.AssemblySource = shellObjS.c_str(); // Expand placeholders in the commands. @@ -1576,8 +1576,8 @@ void cmMakefileTargetGenerator::CreateLinkLibs( // Reference the response file. linkLibs = responseFlag; - linkLibs += this->Convert(link_rsp, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + linkLibs += this->LocalGenerator->ConvertToOutputFormat( + link_rsp, cmOutputConverter::SHELL); } } @@ -1625,8 +1625,8 @@ void cmMakefileTargetGenerator::CreateObjectLists( // Reference the response file. buildObjs += responseFlag; - buildObjs += this->Convert(objects_rsp, cmOutputConverter::NONE, - cmOutputConverter::SHELL); + buildObjs += this->LocalGenerator->ConvertToOutputFormat( + objects_rsp, cmOutputConverter::SHELL); } } else if (useLinkScript) { if (!useArchiveRules) { @@ -1683,8 +1683,8 @@ void cmMakefileTargetGenerator::GenDefFile( name_of_def_file += std::string("/") + this->GeneratorTarget->GetName(); name_of_def_file += ".def"; std::string cmd = cmSystemTools::GetCMakeCommand(); - cmd = - this->Convert(cmd, cmOutputConverter::NONE, cmOutputConverter::SHELL); + cmd = this->LocalGenerator->ConvertToOutputFormat( + cmd, cmOutputConverter::SHELL); cmd += " -E __create_def "; cmd += this->Convert(name_of_def_file, cmOutputConverter::START_OUTPUT, cmOutputConverter::SHELL); diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index d0db1333e..335b5525e 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -543,8 +543,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() std::string install_dir = this->GetGeneratorTarget()->GetInstallNameDirForBuildTree(cfgName); if (!install_dir.empty()) { - vars["INSTALLNAME_DIR"] = localGen.Convert( - install_dir, cmOutputConverter::NONE, cmOutputConverter::SHELL); + vars["INSTALLNAME_DIR"] = localGen.ConvertToOutputFormat( + install_dir, cmOutputConverter::SHELL); } } } From 5ad25ef4b690252a4251e8824e00b053ea61d000 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:55 +0200 Subject: [PATCH 18/28] Convert: Remove NONE conversion It is no longer used. --- Source/cmOutputConverter.cxx | 2 -- Source/cmOutputConverter.h | 1 - 2 files changed, 3 deletions(-) diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 98872d626..80fa4bf94 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -75,8 +75,6 @@ std::string cmOutputConverter::Convert(const std::string& source, case FULL: result = cmSystemTools::CollapseFullPath(result); break; - case NONE: - break; } return this->ConvertToOutputFormat(result, output); } diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index ff06ab60c..0f4884e60 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -38,7 +38,6 @@ public: */ enum RelativeRoot { - NONE, FULL, HOME, START, From a8c7ccb1839d912edc972384de6641f3c17ad8ff Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:55 +0200 Subject: [PATCH 19/28] VS: Replace FULL/UNCHANGED conversion with equivalent --- Source/cmLocalVisualStudio7Generator.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index e72abe957..497defb7c 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -278,8 +278,8 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() cmCustomCommandLines commandLines; commandLines.push_back(commandLine); const char* no_working_directory = 0; - std::string fullpathStampName = this->Convert( - stampName.c_str(), cmOutputConverter::FULL, cmOutputConverter::UNCHANGED); + std::string fullpathStampName = + cmSystemTools::CollapseFullPath(stampName.c_str()); this->Makefile->AddCustomCommandToOutput( fullpathStampName.c_str(), listFiles, makefileIn.c_str(), commandLines, comment.c_str(), no_working_directory, true); From 95a659f1801701b02528c22f0287bb57056dc627 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:55 +0200 Subject: [PATCH 20/28] Convert: Replace FULL conversions with equivalent --- Source/cmLocalUnixMakefileGenerator3.cxx | 3 +-- Source/cmMakefileTargetGenerator.cxx | 15 ++++++--------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 2e08417f0..756db2e0d 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1067,8 +1067,7 @@ void cmLocalUnixMakefileGenerator3::AppendCleanCommand( cleanfile += filename; } cleanfile += ".cmake"; - std::string cleanfilePath = - this->Convert(cleanfile, cmOutputConverter::FULL); + std::string cleanfilePath = cmSystemTools::CollapseFullPath(cleanfile); cmsys::ofstream fout(cleanfilePath.c_str()); if (!fout) { cmSystemTools::Error("Could not create ", cleanfilePath.c_str()); diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 7747aa7e9..dd4333d18 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -393,9 +393,9 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles( std::string objFullPath = this->LocalGenerator->GetCurrentBinaryDirectory(); objFullPath += "/"; objFullPath += obj; - objFullPath = this->Convert(objFullPath, cmOutputConverter::FULL); + objFullPath = cmSystemTools::CollapseFullPath(objFullPath); std::string srcFullPath = - this->Convert(source.GetFullPath(), cmOutputConverter::FULL); + cmSystemTools::CollapseFullPath(source.GetFullPath()); this->LocalGenerator->AddImplicitDepends( this->GeneratorTarget, lang, objFullPath.c_str(), srcFullPath.c_str()); } @@ -584,9 +584,8 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( lang_can_export_cmds && compileCommands.size() == 1) { std::string compileCommand = compileCommands[0]; this->LocalGenerator->ExpandRuleVariables(compileCommand, vars); - std::string workingDirectory = this->LocalGenerator->Convert( - this->LocalGenerator->GetCurrentBinaryDirectory(), - cmOutputConverter::FULL); + std::string workingDirectory = cmSystemTools::CollapseFullPath( + this->LocalGenerator->GetCurrentBinaryDirectory()); compileCommand.replace(compileCommand.find(langFlags), langFlags.size(), this->GetFlags(lang)); std::string langDefines = std::string("$(") + lang + "_DEFINES)"; @@ -1115,10 +1114,8 @@ void cmMakefileTargetGenerator::GenerateCustomRuleFile( for (cmCustomCommand::ImplicitDependsList::const_iterator idi = ccg.GetCC().GetImplicitDepends().begin(); idi != ccg.GetCC().GetImplicitDepends().end(); ++idi) { - std::string objFullPath = - this->Convert(outputs[0], cmOutputConverter::FULL); - std::string srcFullPath = - this->Convert(idi->second, cmOutputConverter::FULL); + std::string objFullPath = cmSystemTools::CollapseFullPath(outputs[0]); + std::string srcFullPath = cmSystemTools::CollapseFullPath(idi->second); this->LocalGenerator->AddImplicitDepends(this->GeneratorTarget, idi->first, objFullPath.c_str(), srcFullPath.c_str()); From 564d3a1dc8e19f16db6ddccca38e21d89634c1b4 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:56 +0200 Subject: [PATCH 21/28] Convert: Extract ConvertToRelativePath from Convert() Convert() does some kind of relative conversion, followed by a conversion to 'output format'. Make it possible to do the former without the latter. --- Source/cmOutputConverter.cxx | 15 +++++++++++---- Source/cmOutputConverter.h | 2 ++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 80fa4bf94..176c9a0e1 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -46,11 +46,9 @@ std::string cmOutputConverter::ConvertToOutputForExisting( return this->ConvertToOutputFormat(remote, format); } -std::string cmOutputConverter::Convert(const std::string& source, - RelativeRoot relative, - OutputFormat output) const +std::string cmOutputConverter::ConvertToRelativePath( + const std::string& source, RelativeRoot relative) const { - // Convert the path to a relative path. std::string result = source; switch (relative) { @@ -76,6 +74,15 @@ std::string cmOutputConverter::Convert(const std::string& source, result = cmSystemTools::CollapseFullPath(result); break; } + return result; +} + +std::string cmOutputConverter::Convert(const std::string& source, + RelativeRoot relative, + OutputFormat output) const +{ + // Convert the path to a relative path. + std::string result = this->ConvertToRelativePath(source, relative); return this->ConvertToOutputFormat(result, output); } diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index 0f4884e60..71bb086f4 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -56,6 +56,8 @@ public: OutputFormat output) const; std::string Convert(const std::string& remote, RelativeRoot local, OutputFormat output = UNCHANGED) const; + std::string ConvertToRelativePath(const std::string& remote, + RelativeRoot local) const; std::string ConvertDirectorySeparatorsForShell( const std::string& source) const; From 08be47cf939c3adfe653809c46c7b23b7a912a39 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:56 +0200 Subject: [PATCH 22/28] Convert: Replace UNCHANGED conversions with new API call --- Source/cmLocalUnixMakefileGenerator3.cxx | 4 +-- Source/cmLocalVisualStudio7Generator.cxx | 18 +++++----- .../cmMakefileExecutableTargetGenerator.cxx | 30 +++++++--------- Source/cmMakefileLibraryTargetGenerator.cxx | 36 ++++++++----------- Source/cmMakefileTargetGenerator.cxx | 9 +++-- Source/cmVisualStudio10TargetGenerator.cxx | 5 ++- 6 files changed, 43 insertions(+), 59 deletions(-) diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 756db2e0d..33b010261 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1076,8 +1076,8 @@ void cmLocalUnixMakefileGenerator3::AppendCleanCommand( fout << "file(REMOVE_RECURSE\n"; for (std::vector::const_iterator f = files.begin(); f != files.end(); ++f) { - std::string fc = this->Convert(*f, cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED); + std::string fc = + this->ConvertToRelativePath(*f, cmOutputConverter::START_OUTPUT); fout << " " << cmOutputConverter::EscapeForCMake(fc) << "\n"; } fout << ")\n"; diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 497defb7c..1beaa87ac 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -788,8 +788,8 @@ void cmLocalVisualStudio7Generator::WriteConfiguration( target->GetProperty("Fortran_MODULE_DIRECTORY"); std::string modDir; if (target_mod_dir) { - modDir = this->Convert(target_mod_dir, cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED); + modDir = this->ConvertToRelativePath(target_mod_dir, + cmOutputConverter::START_OUTPUT); } else { modDir = "."; } @@ -1300,9 +1300,8 @@ void cmLocalVisualStudio7GeneratorInternals::OutputLibraries( cmLocalVisualStudio7Generator* lg = this->LocalGenerator; for (ItemVector::const_iterator l = libs.begin(); l != libs.end(); ++l) { if (l->IsPath) { - std::string rel = - lg->Convert(l->Value.c_str(), cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED); + std::string rel = lg->ConvertToRelativePath( + l->Value.c_str(), cmOutputConverter::START_OUTPUT); fout << lg->ConvertToXMLOutputPath(rel.c_str()) << " "; } else if (!l->Target || l->Target->GetType() != cmState::INTERFACE_LIBRARY) { @@ -1322,8 +1321,8 @@ void cmLocalVisualStudio7GeneratorInternals::OutputObjects( const char* sep = isep ? isep : ""; for (std::vector::const_iterator oi = objs.begin(); oi != objs.end(); ++oi) { - std::string rel = lg->Convert(oi->c_str(), cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED); + std::string rel = + lg->ConvertToRelativePath(oi->c_str(), cmOutputConverter::START_OUTPUT); fout << sep << lg->ConvertToXMLOutputPath(rel.c_str()); sep = " "; } @@ -1346,9 +1345,8 @@ void cmLocalVisualStudio7Generator::OutputLibraryDirectories( // Switch to a relative path specification if it is shorter. if (cmSystemTools::FileIsFullPath(dir.c_str())) { - std::string rel = - this->Convert(dir.c_str(), cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED); + std::string rel = this->ConvertToRelativePath( + dir.c_str(), cmOutputConverter::START_OUTPUT); if (rel.size() < dir.size()) { dir = rel; } diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index a14df7949..66e1ca2a2 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -218,40 +218,34 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) // Construct a list of files associated with this executable that // may need to be cleaned. std::vector exeCleanFiles; - exeCleanFiles.push_back(this->Convert(targetFullPath, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + exeCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPath, cmOutputConverter::START_OUTPUT)); #ifdef _WIN32 // There may be a manifest file for this target. Add it to the // clean set just in case. - exeCleanFiles.push_back(this->Convert((targetFullPath + ".manifest").c_str(), - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + exeCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + (targetFullPath + ".manifest").c_str(), cmOutputConverter::START_OUTPUT)); #endif if (targetNameReal != targetName) { - exeCleanFiles.push_back(this->Convert(targetFullPathReal, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + exeCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPathReal, cmOutputConverter::START_OUTPUT)); } if (!targetNameImport.empty()) { - exeCleanFiles.push_back(this->Convert(targetFullPathImport, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + exeCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPathImport, cmOutputConverter::START_OUTPUT)); std::string implib; if (this->GeneratorTarget->GetImplibGNUtoMS(targetFullPathImport, implib)) { - exeCleanFiles.push_back(this->Convert(implib, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + exeCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + implib, cmOutputConverter::START_OUTPUT)); } } // List the PDB for cleaning only when the whole target is // cleaned. We do not want to delete the .pdb file just before // linking the target. - this->CleanFiles.push_back(this->Convert(targetFullPathPDB, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + this->CleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPathPDB, cmOutputConverter::START_OUTPUT)); // Add the pre-build and pre-link rules building but not when relinking. if (!relink) { diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index c8ee05fbc..c31c469be 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -367,46 +367,40 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( // Clean files associated with this library. std::vector libCleanFiles; - libCleanFiles.push_back(this->Convert(targetFullPath, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + libCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPath, cmOutputConverter::START_OUTPUT)); if (targetNameReal != targetName) { - libCleanFiles.push_back(this->Convert(targetFullPathReal, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + libCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPathReal, cmOutputConverter::START_OUTPUT)); } if (targetNameSO != targetName && targetNameSO != targetNameReal) { - libCleanFiles.push_back(this->Convert(targetFullPathSO, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + libCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPathSO, cmOutputConverter::START_OUTPUT)); } if (!targetNameImport.empty()) { - libCleanFiles.push_back(this->Convert(targetFullPathImport, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + libCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPathImport, cmOutputConverter::START_OUTPUT)); std::string implib; if (this->GeneratorTarget->GetImplibGNUtoMS(targetFullPathImport, implib)) { - libCleanFiles.push_back(this->Convert(implib, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + libCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + implib, cmOutputConverter::START_OUTPUT)); } } // List the PDB for cleaning only when the whole target is // cleaned. We do not want to delete the .pdb file just before // linking the target. - this->CleanFiles.push_back(this->Convert(targetFullPathPDB, - cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + this->CleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + targetFullPathPDB, cmOutputConverter::START_OUTPUT)); #ifdef _WIN32 // There may be a manifest file for this target. Add it to the // clean set just in case. if (this->GeneratorTarget->GetType() != cmState::STATIC_LIBRARY) { - libCleanFiles.push_back(this->Convert( - (targetFullPath + ".manifest").c_str(), cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED)); + libCleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + (targetFullPath + ".manifest").c_str(), + cmOutputConverter::START_OUTPUT)); } #endif diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index dd4333d18..2d53669b1 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -172,8 +172,8 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules() const std::vector& outputs = ccg.GetOutputs(); for (std::vector::const_iterator o = outputs.begin(); o != outputs.end(); ++o) { - this->CleanFiles.push_back(this->Convert( - *o, cmOutputConverter::START_OUTPUT, cmOutputConverter::UNCHANGED)); + this->CleanFiles.push_back(this->LocalGenerator->ConvertToRelativePath( + *o, cmOutputConverter::START_OUTPUT)); } } } @@ -1258,9 +1258,8 @@ void cmMakefileTargetGenerator::WriteTargetDriverRule( this->LocalGenerator->GetRelativeTargetDirectory(this->GeneratorTarget); std::string buildTargetRuleName = dir; buildTargetRuleName += relink ? "/preinstall" : "/build"; - buildTargetRuleName = - this->Convert(buildTargetRuleName, cmOutputConverter::HOME_OUTPUT, - cmOutputConverter::UNCHANGED); + buildTargetRuleName = this->LocalGenerator->ConvertToRelativePath( + buildTargetRuleName, cmOutputConverter::HOME_OUTPUT); // Build the list of target outputs to drive. std::vector depends; diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 1b1d04b18..216de03d9 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2416,9 +2416,8 @@ void cmVisualStudio10TargetGenerator::AddLibraries( ItemVector libs = cli.GetItems(); for (ItemVector::const_iterator l = libs.begin(); l != libs.end(); ++l) { if (l->IsPath) { - std::string path = this->LocalGenerator->Convert( - l->Value.c_str(), cmOutputConverter::START_OUTPUT, - cmOutputConverter::UNCHANGED); + std::string path = this->LocalGenerator->ConvertToRelativePath( + l->Value.c_str(), cmOutputConverter::START_OUTPUT); this->ConvertToWindowsSlash(path); libVec.push_back(path); } else if (!l->Target || From 563ac22a1646f1287d1baac755e13cbe33c1fe7b Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:56 +0200 Subject: [PATCH 23/28] Convert: Replace trivial conversion with new method --- Source/cmDependsC.cxx | 4 ++-- Source/cmDependsFortran.cxx | 10 +++++----- Source/cmExtraEclipseCDT4Generator.cxx | 4 ++-- Source/cmGlobalGenerator.cxx | 4 ++-- Source/cmGlobalNinjaGenerator.cxx | 6 ++++-- Source/cmGlobalUnixMakefileGenerator3.cxx | 21 ++++++++++++++------- Source/cmGlobalVisualStudio7Generator.cxx | 3 ++- Source/cmListFileCache.cxx | 6 ++++-- Source/cmLocalGenerator.cxx | 10 ++++++---- Source/cmLocalNinjaGenerator.cxx | 2 +- Source/cmLocalUnixMakefileGenerator3.cxx | 11 +++++++---- Source/cmMakefileTargetGenerator.cxx | 9 ++++++--- Source/cmTarget.cxx | 3 ++- 13 files changed, 57 insertions(+), 36 deletions(-) diff --git a/Source/cmDependsC.cxx b/Source/cmDependsC.cxx index 18e123e9c..928f7ec42 100644 --- a/Source/cmDependsC.cxx +++ b/Source/cmDependsC.cxx @@ -238,8 +238,8 @@ bool cmDependsC::WriteDependencies(const std::set& sources, // written by the original local generator for this directory // convert the dependencies to paths relative to the home output // directory. We must do the same here. - std::string obj_i = - this->LocalGenerator->Convert(obj, cmOutputConverter::HOME_OUTPUT); + std::string obj_i = this->LocalGenerator->ConvertToRelativePath( + obj, cmOutputConverter::HOME_OUTPUT); std::string obj_m = this->LocalGenerator->ConvertToOutputFormat( obj_i, cmOutputConverter::MAKERULE); internalDepends << obj_i << std::endl; diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx index c57b55805..8c0acce5e 100644 --- a/Source/cmDependsFortran.cxx +++ b/Source/cmDependsFortran.cxx @@ -193,15 +193,15 @@ bool cmDependsFortran::Finalize(std::ostream& makeDepends, stamp += ".mod.stamp"; fcStream << "\n"; fcStream << " \"" - << this->LocalGenerator->Convert( + << this->LocalGenerator->ConvertToRelativePath( mod_lower, cmOutputConverter::START_OUTPUT) << "\"\n"; fcStream << " \"" - << this->LocalGenerator->Convert( + << this->LocalGenerator->ConvertToRelativePath( mod_upper, cmOutputConverter::START_OUTPUT) << "\"\n"; fcStream << " \"" - << this->LocalGenerator->Convert( + << this->LocalGenerator->ConvertToRelativePath( stamp, cmOutputConverter::START_OUTPUT) << "\"\n"; } @@ -317,8 +317,8 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj, const char* src = info.Source.c_str(); // Write the include dependencies to the output stream. - std::string obj_i = - this->LocalGenerator->Convert(obj, cmOutputConverter::HOME_OUTPUT); + std::string obj_i = this->LocalGenerator->ConvertToRelativePath( + obj, cmOutputConverter::HOME_OUTPUT); std::string obj_m = this->LocalGenerator->ConvertToOutputFormat( obj_i, cmOutputConverter::MAKERULE); internalDepends << obj_i << std::endl; diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index e617b08c1..945ee40bc 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx @@ -904,8 +904,8 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const it != this->GlobalGenerator->GetLocalGenerators().end(); ++it) { const std::vector targets = (*it)->GetGeneratorTargets(); - std::string subdir = (*it)->Convert((*it)->GetCurrentBinaryDirectory(), - cmOutputConverter::HOME_OUTPUT); + std::string subdir = (*it)->ConvertToRelativePath( + (*it)->GetCurrentBinaryDirectory(), cmOutputConverter::HOME_OUTPUT); if (subdir == ".") { subdir = ""; } diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 295f65b3c..50c5a42c9 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2547,8 +2547,8 @@ void cmGlobalGenerator::AddRuleHash(const std::vector& outputs, // Shorten the output name (in expected use case). cmOutputConverter converter(this->GetMakefiles()[0]->GetStateSnapshot()); - std::string fname = - converter.Convert(outputs[0], cmOutputConverter::HOME_OUTPUT); + std::string fname = converter.ConvertToRelativePath( + outputs[0], cmOutputConverter::HOME_OUTPUT); // Associate the hash with this output. this->RuleHashes[fname] = hash; diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 2b8347901..939c5adc5 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -747,7 +747,8 @@ std::string cmGlobalNinjaGenerator::ConvertToNinjaPath(const std::string& path) { cmLocalNinjaGenerator* ng = static_cast(this->LocalGenerators[0]); - std::string convPath = ng->Convert(path, cmOutputConverter::HOME_OUTPUT); + std::string convPath = + ng->ConvertToRelativePath(path, cmOutputConverter::HOME_OUTPUT); convPath = this->NinjaOutputPath(convPath); #ifdef _WIN32 std::replace(convPath.begin(), convPath.end(), '/', '\\'); @@ -760,7 +761,8 @@ std::string cmGlobalNinjaGenerator::ConvertToNinjaFolderRule( { cmLocalNinjaGenerator* ng = static_cast(this->LocalGenerators[0]); - std::string convPath = ng->Convert(path + "/all", cmOutputConverter::HOME); + std::string convPath = + ng->ConvertToRelativePath(path + "/all", cmOutputConverter::HOME); convPath = this->NinjaOutputPath(convPath); #ifdef _WIN32 std::replace(convPath.begin(), convPath.end(), '/', '\\'); diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index f115ecba9..bbc794dc1 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -311,11 +311,14 @@ void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile() cmakefileStream << "# The top level Makefile was generated from the following files:\n" << "set(CMAKE_MAKEFILE_DEPENDS\n" - << " \"" << lg->Convert(cache, cmOutputConverter::START_OUTPUT) << "\"\n"; + << " \"" + << lg->ConvertToRelativePath(cache, cmOutputConverter::START_OUTPUT) + << "\"\n"; for (std::vector::const_iterator i = lfiles.begin(); i != lfiles.end(); ++i) { cmakefileStream << " \"" - << lg->Convert(*i, cmOutputConverter::START_OUTPUT) + << lg->ConvertToRelativePath( + *i, cmOutputConverter::START_OUTPUT) << "\"\n"; } cmakefileStream << " )\n\n"; @@ -329,10 +332,12 @@ void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile() cmakefileStream << "# The corresponding makefile is:\n" << "set(CMAKE_MAKEFILE_OUTPUTS\n" << " \"" - << lg->Convert(makefileName, cmOutputConverter::START_OUTPUT) + << lg->ConvertToRelativePath(makefileName, + cmOutputConverter::START_OUTPUT) << "\"\n" << " \"" - << lg->Convert(check, cmOutputConverter::START_OUTPUT) + << lg->ConvertToRelativePath(check, + cmOutputConverter::START_OUTPUT) << "\"\n"; cmakefileStream << " )\n\n"; @@ -345,7 +350,8 @@ void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile() for (std::vector::const_iterator k = outfiles.begin(); k != outfiles.end(); ++k) { cmakefileStream << " \"" - << lg->Convert(*k, cmOutputConverter::HOME_OUTPUT) + << lg->ConvertToRelativePath( + *k, cmOutputConverter::HOME_OUTPUT) << "\"\n"; } @@ -358,7 +364,8 @@ void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile() tmpStr += cmake::GetCMakeFilesDirectory(); tmpStr += "/CMakeDirectoryInformation.cmake"; cmakefileStream << " \"" - << lg->Convert(tmpStr, cmOutputConverter::HOME_OUTPUT) + << lg->ConvertToRelativePath( + tmpStr, cmOutputConverter::HOME_OUTPUT) << "\"\n"; } cmakefileStream << " )\n\n"; @@ -519,7 +526,7 @@ void cmGlobalUnixMakefileGenerator3::GenerateBuildCommand( tname += "/fast"; } cmOutputConverter conv(mf->GetStateSnapshot()); - tname = conv.Convert(tname, cmOutputConverter::HOME_OUTPUT); + tname = conv.ConvertToRelativePath(tname, cmOutputConverter::HOME_OUTPUT); cmSystemTools::ConvertToOutputSlashes(tname); makeCommand.push_back(tname); if (this->Makefiles.empty()) { diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 0a83b3a8a..67ac230ca 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -385,7 +385,8 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution( if (vcprojName) { cmLocalGenerator* lg = target->GetLocalGenerator(); std::string dir = lg->GetCurrentBinaryDirectory(); - dir = root->Convert(dir.c_str(), cmOutputConverter::START_OUTPUT); + dir = root->ConvertToRelativePath(dir.c_str(), + cmOutputConverter::START_OUTPUT); if (dir == ".") { dir = ""; // msbuild cannot handle ".\" prefix } diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index 39d9e9704..3c5e33328 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -402,7 +402,8 @@ void cmListFileBacktrace::PrintTitle(std::ostream& out) const cmOutputConverter converter(this->Bottom); cmListFileContext lfc = *this->Cur; if (!this->Bottom.GetState()->GetIsInTryCompile()) { - lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); + lfc.FilePath = + converter.ConvertToRelativePath(lfc.FilePath, cmOutputConverter::HOME); } out << (lfc.Line ? " at " : " in ") << lfc; } @@ -427,7 +428,8 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& out) const } cmListFileContext lfc = *i; if (!this->Bottom.GetState()->GetIsInTryCompile()) { - lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); + lfc.FilePath = + converter.ConvertToRelativePath(lfc.FilePath, cmOutputConverter::HOME); } out << " " << lfc << "\n"; } diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 20a1e21b3..2fa3f8687 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -176,7 +176,7 @@ void cmLocalGenerator::GenerateTestFiles() // TODO: Use add_subdirectory instead? fout << "subdirs("; std::string outP = children[i].GetDirectory().GetCurrentBinary(); - fout << this->Convert(outP, START_OUTPUT); + fout << this->ConvertToRelativePath(outP, START_OUTPUT); fout << ")" << std::endl; } } @@ -2237,7 +2237,8 @@ std::string cmLocalGenerator::ConstructComment( for (std::vector::const_iterator o = ccg.GetOutputs().begin(); o != ccg.GetOutputs().end(); ++o) { comment += sep; - comment += this->Convert(*o, cmOutputConverter::START_OUTPUT); + comment += + this->ConvertToRelativePath(*o, cmOutputConverter::START_OUTPUT); sep = ", "; } return comment; @@ -2505,13 +2506,14 @@ std::string cmLocalGenerator::GetObjectFileNameWithoutTarget( const char* fullPath = source.GetFullPath().c_str(); // Try referencing the source relative to the source tree. - std::string relFromSource = this->Convert(fullPath, START); + std::string relFromSource = this->ConvertToRelativePath(fullPath, START); assert(!relFromSource.empty()); bool relSource = !cmSystemTools::FileIsFullPath(relFromSource.c_str()); bool subSource = relSource && relFromSource[0] != '.'; // Try referencing the source relative to the binary tree. - std::string relFromBinary = this->Convert(fullPath, START_OUTPUT); + std::string relFromBinary = + this->ConvertToRelativePath(fullPath, START_OUTPUT); assert(!relFromBinary.empty()); bool relBinary = !cmSystemTools::FileIsFullPath(relFromBinary.c_str()); bool subBinary = relBinary && relFromBinary[0] != '.'; diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 8c092e762..9e2c92088 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -41,7 +41,7 @@ void cmLocalNinjaGenerator::Generate() { // Compute the path to use when referencing the current output // directory from the top output directory. - this->HomeRelativeOutputPath = this->Convert( + this->HomeRelativeOutputPath = this->ConvertToRelativePath( this->GetCurrentBinaryDirectory(), cmOutputConverter::HOME_OUTPUT); if (this->HomeRelativeOutputPath == ".") { this->HomeRelativeOutputPath = ""; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 33b010261..5b83b3d24 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -140,7 +140,7 @@ void cmLocalUnixMakefileGenerator3::ComputeHomeRelativeOutputPath() { // Compute the path to use when referencing the current output // directory from the top output directory. - this->HomeRelativeOutputPath = this->Convert( + this->HomeRelativeOutputPath = this->ConvertToRelativePath( this->GetCurrentBinaryDirectory(), cmOutputConverter::HOME_OUTPUT); if (this->HomeRelativeOutputPath == ".") { this->HomeRelativeOutputPath = ""; @@ -966,7 +966,8 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand( // working directory will be the start-output directory. bool had_slash = cmd.find('/') != cmd.npos; if (workingDir.empty()) { - cmd = this->Convert(cmd, cmOutputConverter::START_OUTPUT); + cmd = + this->ConvertToRelativePath(cmd, cmOutputConverter::START_OUTPUT); } bool has_slash = cmd.find('/') != cmd.npos; if (had_slash && !has_slash) { @@ -1851,7 +1852,8 @@ void cmLocalUnixMakefileGenerator3::WriteDependLanguageInfo( for (std::vector::iterator i = includes.begin(); i != includes.end(); ++i) { cmakefileStream << " \"" - << this->Convert(*i, cmOutputConverter::HOME_OUTPUT) + << this->ConvertToRelativePath( + *i, cmOutputConverter::HOME_OUTPUT) << "\"\n"; } cmakefileStream << " )\n"; @@ -1915,7 +1917,8 @@ std::string cmLocalUnixMakefileGenerator3::GetRecursiveMakeCall( // Add the target. if (!tgt.empty()) { // The make target is always relative to the top of the build tree. - std::string tgt2 = this->Convert(tgt, cmOutputConverter::HOME_OUTPUT); + std::string tgt2 = + this->ConvertToRelativePath(tgt, cmOutputConverter::HOME_OUTPUT); // The target may have been written with windows paths. cmSystemTools::ConvertToOutputSlashes(tgt2); diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 2d53669b1..b34cd6e07 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -312,8 +312,10 @@ void cmMakefileTargetGenerator::MacOSXContentGeneratorType::operator()( output += "/"; output += cmSystemTools::GetFilenameName(input); this->Generator->CleanFiles.push_back( - this->Generator->Convert(output, cmOutputConverter::START_OUTPUT)); - output = this->Generator->Convert(output, cmOutputConverter::HOME_OUTPUT); + this->Generator->LocalGenerator->ConvertToRelativePath( + output, cmOutputConverter::START_OUTPUT)); + output = this->Generator->LocalGenerator->ConvertToRelativePath( + output, cmOutputConverter::HOME_OUTPUT); // Create a rule to copy the content into the bundle. std::vector depends; @@ -1171,7 +1173,8 @@ void cmMakefileTargetGenerator::WriteObjectsVariable( for (std::vector::const_iterator i = this->ExternalObjects.begin(); i != this->ExternalObjects.end(); ++i) { - object = this->Convert(*i, cmOutputConverter::START_OUTPUT); + object = this->LocalGenerator->ConvertToRelativePath( + *i, cmOutputConverter::START_OUTPUT); *this->BuildFileStream << " " << lineContinue << "\n" << this->Makefile->GetSafeDefinition( "CMAKE_OBJECT_NAME"); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index ed04d2fbe..d5274cd90 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -602,7 +602,8 @@ void cmTarget::GetTllSignatureTraces(std::ostream& s, TLLSignature sig) const it != this->TLLCommands.end(); ++it) { if (it->first == sig) { cmListFileContext lfc = it->second; - lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); + lfc.FilePath = + converter.ConvertToRelativePath(lfc.FilePath, cmOutputConverter::HOME); s << " * " << lfc << std::endl; } } From e80314d7a8208214ac85bf9b2e769a7e3b5aaa04 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:57 +0200 Subject: [PATCH 24/28] Ninja: Replace ternary with if() On principle of segregating the interface. --- Source/cmLocalNinjaGenerator.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 9e2c92088..bbec63426 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -132,9 +132,10 @@ std::string cmLocalNinjaGenerator::ConvertToIncludeReference( std::string const& path, cmOutputConverter::OutputFormat format, bool forceFullPaths) { - return this->Convert(path, forceFullPaths ? cmOutputConverter::FULL - : cmOutputConverter::HOME_OUTPUT, - format); + if (forceFullPaths) { + return this->Convert(path, cmOutputConverter::FULL, format); + } + return this->Convert(path, cmOutputConverter::HOME_OUTPUT, format); } // Private methods. From 58ba87f892316b9f9cbb7851a940ec808527e36a Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:57 +0200 Subject: [PATCH 25/28] Convert: Replace Convert(FULL) with equivalent This is more explicit than funnelling everything through the Convert method. --- Source/cmGlobalUnixMakefileGenerator3.cxx | 10 ++++--- Source/cmLocalGenerator.cxx | 7 +++-- Source/cmLocalNinjaGenerator.cxx | 3 +- Source/cmLocalUnixMakefileGenerator3.cxx | 32 ++++++++++---------- Source/cmLocalVisualStudio7Generator.cxx | 4 +-- Source/cmLocalVisualStudioGenerator.cxx | 3 +- Source/cmMakefileTargetGenerator.cxx | 36 +++++++++++++++-------- 7 files changed, 57 insertions(+), 38 deletions(-) diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index bbc794dc1..77fbbe940 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -723,8 +723,9 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules2( std::ostringstream progCmd; progCmd << "$(CMAKE_COMMAND) -E cmake_progress_start "; // # in target - progCmd << lg->Convert(progress.Dir, cmOutputConverter::FULL, - cmOutputConverter::SHELL); + progCmd << lg->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(progress.Dir), + cmOutputConverter::SHELL); // std::set emitted; progCmd << " " << this->CountProgressMarksInTarget(gtarget, emitted); @@ -736,8 +737,9 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules2( { std::ostringstream progCmd; progCmd << "$(CMAKE_COMMAND) -E cmake_progress_start "; // # 0 - progCmd << lg->Convert(progress.Dir, cmOutputConverter::FULL, - cmOutputConverter::SHELL); + progCmd << lg->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(progress.Dir), + cmOutputConverter::SHELL); progCmd << " 0"; commands.push_back(progCmd.str()); } diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 2fa3f8687..de9e1e551 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -688,7 +688,9 @@ std::string cmLocalGenerator::ExpandRuleVariable( } } if (variable == "CMAKE_COMMAND") { - return this->Convert(cmSystemTools::GetCMakeCommand(), FULL, SHELL); + return this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(cmSystemTools::GetCMakeCommand()), + SHELL); } std::vector enabledLanguages = this->GetState()->GetEnabledLanguages(); @@ -1183,7 +1185,8 @@ void cmLocalGenerator::GetTargetFlags( if (sf->GetExtension() == "def") { linkFlags += this->Makefile->GetSafeDefinition("CMAKE_LINK_DEF_FILE_FLAG"); - linkFlags += this->Convert(sf->GetFullPath(), FULL, SHELL); + linkFlags += this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(sf->GetFullPath()), SHELL); linkFlags += " "; } } diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index bbec63426..d07bfaabe 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -133,7 +133,8 @@ std::string cmLocalNinjaGenerator::ConvertToIncludeReference( bool forceFullPaths) { if (forceFullPaths) { - return this->Convert(path, cmOutputConverter::FULL, format); + return this->ConvertToOutputFormat(cmSystemTools::CollapseFullPath(path), + format); } return this->Convert(path, cmOutputConverter::HOME_OUTPUT, format); } diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 5b83b3d24..3c4841eca 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -640,9 +640,9 @@ void cmLocalUnixMakefileGenerator3::WriteMakeVariables( std::string cmakeShellCommand = this->MaybeConvertWatcomShellCommand(cmSystemTools::GetCMakeCommand()); if (cmakeShellCommand.empty()) { - cmakeShellCommand = - this->Convert(cmSystemTools::GetCMakeCommand(), cmOutputConverter::FULL, - cmOutputConverter::SHELL); + cmakeShellCommand = this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(cmSystemTools::GetCMakeCommand()), + cmOutputConverter::SHELL); } /* clang-format off */ @@ -665,16 +665,16 @@ void cmLocalUnixMakefileGenerator3::WriteMakeVariables( makefileStream << "# The top-level source directory on which CMake was run.\n" << "CMAKE_SOURCE_DIR = " - << this->Convert(this->GetSourceDirectory(), - cmOutputConverter::FULL, + << this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(this->GetSourceDirectory()), cmOutputConverter::SHELL) << "\n" << "\n"; makefileStream << "# The top-level build directory on which CMake was run.\n" << "CMAKE_BINARY_DIR = " - << this->Convert(this->GetBinaryDirectory(), - cmOutputConverter::FULL, + << this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(this->GetBinaryDirectory()), cmOutputConverter::SHELL) << "\n" << "\n"; @@ -1154,8 +1154,9 @@ void cmLocalUnixMakefileGenerator3::AppendEcho( cmd += color_name; if (progress) { cmd += "--progress-dir="; - cmd += this->Convert(progress->Dir, cmOutputConverter::FULL, - cmOutputConverter::SHELL); + cmd += this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(progress->Dir), + cmOutputConverter::SHELL); cmd += " "; cmd += "--progress-num="; cmd += progress->Arg; @@ -1603,15 +1604,16 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( { std::ostringstream progCmd; progCmd << "$(CMAKE_COMMAND) -E cmake_progress_start "; - progCmd << this->Convert(progressDir, cmOutputConverter::FULL, - cmOutputConverter::SHELL); + progCmd << this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(progressDir), cmOutputConverter::SHELL); std::string progressFile = cmake::GetCMakeFilesDirectory(); progressFile += "/progress.marks"; std::string progressFileNameFull = this->ConvertToFullPath(progressFile); progCmd << " " - << this->Convert(progressFileNameFull, cmOutputConverter::FULL, - cmOutputConverter::SHELL); + << this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(progressFileNameFull), + cmOutputConverter::SHELL); commands.push_back(progCmd.str()); } std::string mf2Dir = cmake::GetCMakeFilesDirectoryPostSlash(); @@ -1623,8 +1625,8 @@ void cmLocalUnixMakefileGenerator3::WriteLocalAllRules( { std::ostringstream progCmd; progCmd << "$(CMAKE_COMMAND) -E cmake_progress_start "; // # 0 - progCmd << this->Convert(progressDir, cmOutputConverter::FULL, - cmOutputConverter::SHELL); + progCmd << this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(progressDir), cmOutputConverter::SHELL); progCmd << " 0"; commands.push_back(progCmd.str()); } diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 1beaa87ac..70fe81955 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -269,8 +269,8 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() args += this->GetBinaryDirectory(); commandLine.push_back(args); commandLine.push_back("--check-stamp-file"); - std::string stampFilename = this->Convert( - stampName.c_str(), cmOutputConverter::FULL, cmOutputConverter::SHELL); + std::string stampFilename = this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(stampName), cmOutputConverter::SHELL); commandLine.push_back(stampFilename.c_str()); std::vector const& listFiles = this->Makefile->GetListFiles(); diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx index d1cefe300..b49296222 100644 --- a/Source/cmLocalVisualStudioGenerator.cxx +++ b/Source/cmLocalVisualStudioGenerator.cxx @@ -155,7 +155,8 @@ std::string cmLocalVisualStudioGenerator::ConstructScript( script += newline; newline = newline_text; script += "cd "; - script += this->Convert(workingDirectory, FULL, SHELL); + script += this->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(workingDirectory), SHELL); script += check_error; // Change the working drive. diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index b34cd6e07..165f96ce8 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1000,9 +1000,10 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() // paths. Make sure PWD is set to the original name of the home // output directory to help cmSystemTools to create the same // translation table for the dependency scanning process. - depCmd << "cd " << (this->LocalGenerator->Convert( - this->LocalGenerator->GetBinaryDirectory(), - cmOutputConverter::FULL, cmOutputConverter::SHELL)) + depCmd << "cd " << (this->LocalGenerator->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath( + this->LocalGenerator->GetBinaryDirectory()), + cmOutputConverter::SHELL)) << " && "; #endif // Generate a call this signature: @@ -1016,20 +1017,29 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() // the state of our local generator sufficiently for its needs. depCmd << "$(CMAKE_COMMAND) -E cmake_depends \"" << this->GlobalGenerator->GetName() << "\" " - << this->Convert(this->LocalGenerator->GetSourceDirectory(), - cmOutputConverter::FULL, cmOutputConverter::SHELL) + << this->LocalGenerator->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath( + this->LocalGenerator->GetSourceDirectory()), + cmOutputConverter::SHELL) << " " - << this->Convert(this->LocalGenerator->GetCurrentSourceDirectory(), - cmOutputConverter::FULL, cmOutputConverter::SHELL) + << this->LocalGenerator->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath( + this->LocalGenerator->GetCurrentSourceDirectory()), + cmOutputConverter::SHELL) << " " - << this->Convert(this->LocalGenerator->GetBinaryDirectory(), - cmOutputConverter::FULL, cmOutputConverter::SHELL) + << this->LocalGenerator->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath( + this->LocalGenerator->GetBinaryDirectory()), + cmOutputConverter::SHELL) << " " - << this->Convert(this->LocalGenerator->GetCurrentBinaryDirectory(), - cmOutputConverter::FULL, cmOutputConverter::SHELL) + << this->LocalGenerator->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath( + this->LocalGenerator->GetCurrentBinaryDirectory()), + cmOutputConverter::SHELL) << " " - << this->Convert(this->InfoFileNameFull, cmOutputConverter::FULL, - cmOutputConverter::SHELL); + << this->LocalGenerator->ConvertToOutputFormat( + cmSystemTools::CollapseFullPath(this->InfoFileNameFull), + cmOutputConverter::SHELL); if (this->LocalGenerator->GetColorMakefile()) { depCmd << " --color=$(COLOR)"; } From 146bf9267ca88831d7cff4d121f414a3a73e26de Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:57 +0200 Subject: [PATCH 26/28] Convert: Remove 'FULL' conversion It is no longer used. --- Source/cmOutputConverter.cxx | 3 --- Source/cmOutputConverter.h | 1 - 2 files changed, 4 deletions(-) diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 176c9a0e1..f056a1bba 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -70,9 +70,6 @@ std::string cmOutputConverter::ConvertToRelativePath( this->StateSnapshot.GetDirectory().GetCurrentBinaryComponents(), result); break; - case FULL: - result = cmSystemTools::CollapseFullPath(result); - break; } return result; } diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index 71bb086f4..c2403db7e 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -38,7 +38,6 @@ public: */ enum RelativeRoot { - FULL, HOME, START, HOME_OUTPUT, From 5aca066c5bbb7263624eb140378dd2f49e9d80ec Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:57 +0200 Subject: [PATCH 27/28] Convert: Remove UNCHANGED enum value It is no longer used. --- Source/cmCommonTargetGenerator.h | 6 +++--- Source/cmOutputConverter.h | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Source/cmCommonTargetGenerator.h b/Source/cmCommonTargetGenerator.h index d3f9d6463..b433c18f3 100644 --- a/Source/cmCommonTargetGenerator.h +++ b/Source/cmCommonTargetGenerator.h @@ -57,9 +57,9 @@ protected: // The windows module definition source file (.def), if any. cmSourceFile const* ModuleDefinitionFile; - std::string Convert( - std::string const& source, cmOutputConverter::RelativeRoot relative, - cmOutputConverter::OutputFormat output = cmOutputConverter::UNCHANGED); + std::string Convert(std::string const& source, + cmOutputConverter::RelativeRoot relative, + cmOutputConverter::OutputFormat output); void AppendFortranFormatFlags(std::string& flags, cmSourceFile const& source); diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index c2403db7e..9af96590e 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -45,7 +45,6 @@ public: }; enum OutputFormat { - UNCHANGED, MAKERULE, SHELL, WATCOMQUOTE, @@ -54,7 +53,7 @@ public: std::string ConvertToOutputFormat(const std::string& source, OutputFormat output) const; std::string Convert(const std::string& remote, RelativeRoot local, - OutputFormat output = UNCHANGED) const; + OutputFormat output) const; std::string ConvertToRelativePath(const std::string& remote, RelativeRoot local) const; std::string ConvertDirectorySeparatorsForShell( From 4332131dcca03b262e0dd51352eb2e27522887c8 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Aug 2016 13:44:58 +0200 Subject: [PATCH 28/28] Convert: Make variables a bit more clear --- Source/cmOutputConverter.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index f056a1bba..630da4234 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -49,26 +49,26 @@ std::string cmOutputConverter::ConvertToOutputForExisting( std::string cmOutputConverter::ConvertToRelativePath( const std::string& source, RelativeRoot relative) const { - std::string result = source; + std::string result; switch (relative) { case HOME: result = this->ConvertToRelativePath( - this->GetState()->GetSourceDirectoryComponents(), result); + this->GetState()->GetSourceDirectoryComponents(), source); break; case START: result = this->ConvertToRelativePath( this->StateSnapshot.GetDirectory().GetCurrentSourceComponents(), - result); + source); break; case HOME_OUTPUT: result = this->ConvertToRelativePath( - this->GetState()->GetBinaryDirectoryComponents(), result); + this->GetState()->GetBinaryDirectoryComponents(), source); break; case START_OUTPUT: result = this->ConvertToRelativePath( this->StateSnapshot.GetDirectory().GetCurrentBinaryComponents(), - result); + source); break; } return result;