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);