|
|
@@ -361,7 +361,7 @@ cmLocalUnixMakefileGenerator3
|
|
|
}
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
|
|
|
// Write the rule to the makefile.
|
|
|
std::vector<std::string> no_depends;
|
|
|
@@ -404,7 +404,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
(makefile2.c_str(),localName.c_str()));
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
this->WriteMakeRule(ruleFileStream, "Convenience name for target.",
|
|
|
localName.c_str(), depends, commands, true);
|
|
|
|
|
|
@@ -432,7 +432,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
(makefileName.c_str(), makeTargetName.c_str()));
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
this->WriteMakeRule(ruleFileStream, "fast build rule for target.",
|
|
|
localName.c_str(), depends, commands, true);
|
|
|
|
|
|
@@ -450,7 +450,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
(makefile2.c_str(), makeTargetName.c_str()));
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
this->WriteMakeRule(ruleFileStream,
|
|
|
"Manual pre-install relink rule for target.",
|
|
|
localName.c_str(), depends, commands, true);
|
|
|
@@ -835,7 +835,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
{
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
}
|
|
|
this->WriteMakeRule(makefileStream,
|
|
|
"Special rule to run CMake to check the build system "
|
|
|
@@ -953,12 +953,13 @@ cmLocalUnixMakefileGenerator3
|
|
|
void
|
|
|
cmLocalUnixMakefileGenerator3
|
|
|
::AppendCustomCommands(std::vector<std::string>& commands,
|
|
|
- const std::vector<cmCustomCommand>& ccs)
|
|
|
+ const std::vector<cmCustomCommand>& ccs,
|
|
|
+ cmLocalGenerator::RelativeRoot relative)
|
|
|
{
|
|
|
for(std::vector<cmCustomCommand>::const_iterator i = ccs.begin();
|
|
|
i != ccs.end(); ++i)
|
|
|
{
|
|
|
- this->AppendCustomCommand(commands, *i, true);
|
|
|
+ this->AppendCustomCommand(commands, *i, true, relative);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -966,7 +967,8 @@ cmLocalUnixMakefileGenerator3
|
|
|
void
|
|
|
cmLocalUnixMakefileGenerator3
|
|
|
::AppendCustomCommand(std::vector<std::string>& commands,
|
|
|
- const cmCustomCommand& cc, bool echo_comment)
|
|
|
+ const cmCustomCommand& cc, bool echo_comment,
|
|
|
+ cmLocalGenerator::RelativeRoot relative)
|
|
|
{
|
|
|
// Optionally create a command to display the custom command's
|
|
|
// comment text. This is used for pre-build, pre-link, and
|
|
|
@@ -1072,8 +1074,7 @@ cmLocalUnixMakefileGenerator3
|
|
|
}
|
|
|
|
|
|
// Setup the proper working directory for the commands.
|
|
|
- this->CreateCDCommand(commands1, dir,
|
|
|
- this->Makefile->GetHomeOutputDirectory());
|
|
|
+ this->CreateCDCommand(commands1, dir, relative);
|
|
|
|
|
|
// push back the custom commands
|
|
|
commands.insert(commands.end(), commands1.begin(), commands1.end());
|
|
|
@@ -1610,9 +1611,11 @@ void cmLocalUnixMakefileGenerator3
|
|
|
this->AppendCustomDepends(depends,
|
|
|
glIt->second.GetPostBuildCommands());
|
|
|
this->AppendCustomCommands(commands,
|
|
|
- glIt->second.GetPreBuildCommands());
|
|
|
+ glIt->second.GetPreBuildCommands(),
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
this->AppendCustomCommands(commands,
|
|
|
- glIt->second.GetPostBuildCommands());
|
|
|
+ glIt->second.GetPostBuildCommands(),
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
std::string targetName = glIt->second.GetName();
|
|
|
this->WriteMakeRule(ruleFileStream, targetString.c_str(),
|
|
|
targetName.c_str(), depends, commands, true);
|
|
|
@@ -1674,7 +1677,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
recursiveTarget.c_str()));
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
{
|
|
|
cmOStringStream progCmd;
|
|
|
progCmd << "$(CMAKE_COMMAND) -E cmake_progress_start "; // # 0
|
|
|
@@ -1696,7 +1699,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
recursiveTarget.c_str()));
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
this->WriteMakeRule(ruleFileStream, "The main clean target", "clean",
|
|
|
depends, commands, true);
|
|
|
commands.clear();
|
|
|
@@ -1726,7 +1729,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
(this->GetRecursiveMakeCall(mf2Dir.c_str(), recursiveTarget.c_str()));
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
this->WriteMakeRule(ruleFileStream, "Prepare targets for installation.",
|
|
|
"preinstall", depends, commands, true);
|
|
|
depends.clear();
|
|
|
@@ -1747,7 +1750,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
commands.push_back(runRule);
|
|
|
this->CreateCDCommand(commands,
|
|
|
this->Makefile->GetHomeOutputDirectory(),
|
|
|
- this->Makefile->GetStartOutputDirectory());
|
|
|
+ cmLocalGenerator::START_OUTPUT);
|
|
|
this->WriteMakeRule(ruleFileStream, "clear depends",
|
|
|
"depend",
|
|
|
depends, commands, true);
|
|
|
@@ -2126,8 +2129,10 @@ cmLocalUnixMakefileGenerator3::AddImplicitDepends(cmTarget const& tgt,
|
|
|
//----------------------------------------------------------------------------
|
|
|
void cmLocalUnixMakefileGenerator3
|
|
|
::CreateCDCommand(std::vector<std::string>& commands, const char *tgtDir,
|
|
|
- const char *retDir)
|
|
|
+ cmLocalGenerator::RelativeRoot relRetDir)
|
|
|
{
|
|
|
+ const char* retDir = this->GetRelativeRootPath(relRetDir);
|
|
|
+
|
|
|
// do we need to cd?
|
|
|
if (!strcmp(tgtDir,retDir))
|
|
|
{
|
|
|
@@ -2140,18 +2145,12 @@ void cmLocalUnixMakefileGenerator3
|
|
|
// back because the shell keeps the working directory between
|
|
|
// commands.
|
|
|
std::string cmd = "cd ";
|
|
|
- cmd += this->ConvertToOutputForExisting(tgtDir);
|
|
|
+ cmd += this->ConvertToOutputForExisting(tgtDir, relRetDir);
|
|
|
commands.insert(commands.begin(),cmd);
|
|
|
-
|
|
|
- // Change back to the starting directory. Any trailing slash must be
|
|
|
- // removed to avoid problems with Borland Make.
|
|
|
- std::string back = retDir;
|
|
|
- if(back.size() && back[back.size()-1] == '/')
|
|
|
- {
|
|
|
- back = back.substr(0, back.size()-1);
|
|
|
- }
|
|
|
+
|
|
|
+ // Change back to the starting directory.
|
|
|
cmd = "cd ";
|
|
|
- cmd += this->ConvertToOutputForExisting(back.c_str());
|
|
|
+ cmd += this->ConvertToOutputForExisting(relRetDir, tgtDir);
|
|
|
commands.push_back(cmd);
|
|
|
}
|
|
|
else
|
|
|
@@ -2163,7 +2162,7 @@ void cmLocalUnixMakefileGenerator3
|
|
|
for (; i != commands.end(); ++i)
|
|
|
{
|
|
|
std::string cmd = "cd ";
|
|
|
- cmd += this->ConvertToOutputForExisting(tgtDir);
|
|
|
+ cmd += this->ConvertToOutputForExisting(tgtDir, relRetDir);
|
|
|
cmd += " && ";
|
|
|
cmd += *i;
|
|
|
*i = cmd;
|