Merge topic 'cmGlobalGenerator-Build-output-ref'

30983ebe cmGlobalGenerator: Take Build output argument by reference
This commit is contained in:
Brad King 2014-08-04 10:02:28 -04:00 committed by CMake Topic Stage
commit ba60ff99ed
7 changed files with 26 additions and 51 deletions

View File

@ -301,7 +301,7 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring)
int retVal = cm.GetGlobalGenerator()->Build(
this->SourceDir, this->BinaryDir,
this->BuildProject, *tarIt,
&output, this->BuildMakeProgram,
output, this->BuildMakeProgram,
config,
!this->BuildNoClean,
false, remainingTime);

View File

@ -489,7 +489,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
targetName,
this->SrcFileSignature,
&cmakeFlags,
&output);
output);
if ( erroroc )
{
cmSystemTools::SetErrorOccured();

View File

@ -1616,7 +1616,7 @@ int cmGlobalGenerator::TryCompile(const std::string& srcdir,
const std::string& bindir,
const std::string& projectName,
const std::string& target, bool fast,
std::string *output, cmMakefile *mf)
std::string& output, cmMakefile *mf)
{
// if this is not set, then this is a first time configure
// and there is a good chance that the try compile stuff will
@ -1675,7 +1675,7 @@ void cmGlobalGenerator::GenerateBuildCommand(
int cmGlobalGenerator::Build(
const std::string&, const std::string& bindir,
const std::string& projectName, const std::string& target,
std::string *output,
std::string& output,
const std::string& makeCommandCSTR,
const std::string& config,
bool clean, bool fast,
@ -1688,22 +1688,15 @@ int cmGlobalGenerator::Build(
*/
std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
cmSystemTools::ChangeDirectory(bindir.c_str());
if(output)
{
*output += "Change Dir: ";
*output += bindir;
*output += "\n";
}
output += "Change Dir: ";
output += bindir;
output += "\n";
int retVal;
bool hideconsole = cmSystemTools::GetRunCommandHideConsole();
cmSystemTools::SetRunCommandHideConsole(true);
std::string outputBuffer;
std::string* outputPtr = 0;
if(output)
{
outputPtr = &outputBuffer;
}
std::string* outputPtr = &outputBuffer;
// should we do a clean first?
if (clean)
@ -1711,32 +1704,23 @@ int cmGlobalGenerator::Build(
std::vector<std::string> cleanCommand;
this->GenerateBuildCommand(cleanCommand, makeCommandCSTR, projectName,
bindir, "clean", config, fast);
if(output)
{
*output += "\nRun Clean Command:";
*output += cmSystemTools::PrintSingleCommand(cleanCommand);
*output += "\n";
}
output += "\nRun Clean Command:";
output += cmSystemTools::PrintSingleCommand(cleanCommand);
output += "\n";
if (!cmSystemTools::RunSingleCommand(cleanCommand, outputPtr,
&retVal, 0, outputflag, timeout))
{
cmSystemTools::SetRunCommandHideConsole(hideconsole);
cmSystemTools::Error("Generator: execution of make clean failed.");
if (output)
{
*output += *outputPtr;
*output += "\nGenerator: execution of make clean failed.\n";
}
output += *outputPtr;
output += "\nGenerator: execution of make clean failed.\n";
// return to the original directory
cmSystemTools::ChangeDirectory(cwd.c_str());
return 1;
}
if (output)
{
*output += *outputPtr;
}
output += *outputPtr;
}
// now build
@ -1744,12 +1728,9 @@ int cmGlobalGenerator::Build(
this->GenerateBuildCommand(makeCommand, makeCommandCSTR, projectName,
bindir, target, config, fast, nativeOptions);
std::string makeCommandStr = cmSystemTools::PrintSingleCommand(makeCommand);
if(output)
{
*output += "\nRun Build Command:";
*output += makeCommandStr;
*output += "\n";
}
output += "\nRun Build Command:";
output += makeCommandStr;
output += "\n";
if (!cmSystemTools::RunSingleCommand(makeCommand, outputPtr,
&retVal, 0, outputflag, timeout))
@ -1758,27 +1739,21 @@ int cmGlobalGenerator::Build(
cmSystemTools::Error
("Generator: execution of make failed. Make command was: ",
makeCommandStr.c_str());
if (output)
{
*output += *outputPtr;
*output += "\nGenerator: execution of make failed. Make command was: "
output += *outputPtr;
output += "\nGenerator: execution of make failed. Make command was: "
+ makeCommandStr + "\n";
}
// return to the original directory
cmSystemTools::ChangeDirectory(cwd.c_str());
return 1;
}
if (output)
{
*output += *outputPtr;
}
output += *outputPtr;
cmSystemTools::SetRunCommandHideConsole(hideconsole);
// The SGI MipsPro 7.3 compiler does not return an error code when
// the source has a #error in it! This is a work-around for such
// compilers.
if((retVal == 0) && (output->find("#error") != std::string::npos))
if((retVal == 0) && (output.find("#error") != std::string::npos))
{
retVal = 1;
}

View File

@ -116,7 +116,7 @@ public:
virtual int TryCompile(const std::string& srcdir, const std::string& bindir,
const std::string& projectName,
const std::string& targetName,
bool fast, std::string *output, cmMakefile* mf);
bool fast, std::string& output, cmMakefile* mf);
/**
@ -127,7 +127,7 @@ public:
*/
int Build(const std::string& srcdir, const std::string& bindir,
const std::string& projectName, const std::string& targetName,
std::string *output,
std::string& output,
const std::string& makeProgram, const std::string& config,
bool clean, bool fast,
double timeout,

View File

@ -3510,7 +3510,7 @@ int cmMakefile::TryCompile(const std::string& srcdir,
const std::string& targetName,
bool fast,
const std::vector<std::string> *cmakeArgs,
std::string *output)
std::string& output)
{
this->Internal->IsSourceFileTryCompile = fast;
// does the binary directory exist ? If not create it...

View File

@ -130,7 +130,7 @@ public:
const std::string& projectName, const std::string& targetName,
bool fast,
const std::vector<std::string> *cmakeArgs,
std::string *output);
std::string& output);
bool GetIsSourceFileTryCompile() const;

View File

@ -2757,7 +2757,7 @@ int cmake::Build(const std::string& dir,
projName = it.GetValue();
return gen->Build("", dir,
projName, target,
&output,
output,
"",
config, clean, false, 0,
cmSystemTools::OUTPUT_PASSTHROUGH,