ENH: produce a lot more output when running with --debug-output
-try to fix build error on HPUX Alex
This commit is contained in:
parent
57f25c53e3
commit
95a8331edb
|
@ -52,6 +52,7 @@ cmGlobalGenerator::cmGlobalGenerator()
|
|||
this->TryCompileTimeout = 0;
|
||||
|
||||
this->ExtraGenerator = 0;
|
||||
this->CurrentLocalGenerator = 0;
|
||||
}
|
||||
|
||||
cmGlobalGenerator::~cmGlobalGenerator()
|
||||
|
@ -845,12 +846,14 @@ void cmGlobalGenerator::Generate()
|
|||
// Generate project files
|
||||
for (i = 0; i < this->LocalGenerators.size(); ++i)
|
||||
{
|
||||
this->SetCurrentLocalGenerator(this->LocalGenerators[i]);
|
||||
this->LocalGenerators[i]->Generate();
|
||||
this->LocalGenerators[i]->GenerateInstallRules();
|
||||
this->LocalGenerators[i]->GenerateTestFiles();
|
||||
this->CMakeInstance->UpdateProgress("Generating",
|
||||
(i+1.0f)/this->LocalGenerators.size());
|
||||
}
|
||||
this->SetCurrentLocalGenerator(0);
|
||||
|
||||
if (this->ExtraGenerator != 0)
|
||||
{
|
||||
|
|
|
@ -122,6 +122,12 @@ public:
|
|||
const std::vector<cmLocalGenerator *>& GetLocalGenerators() const {
|
||||
return this->LocalGenerators;}
|
||||
|
||||
cmLocalGenerator* GetCurrentLocalGenerator()
|
||||
{return this->CurrentLocalGenerator;}
|
||||
|
||||
void SetCurrentLocalGenerator(cmLocalGenerator* lg)
|
||||
{this->CurrentLocalGenerator = lg;}
|
||||
|
||||
void AddLocalGenerator(cmLocalGenerator *lg);
|
||||
|
||||
///! Set an generator for an "external makefile based project"
|
||||
|
@ -235,6 +241,7 @@ protected:
|
|||
cmStdString ConfiguredFilesPath;
|
||||
cmake *CMakeInstance;
|
||||
std::vector<cmLocalGenerator *> LocalGenerators;
|
||||
cmLocalGenerator* CurrentLocalGenerator;
|
||||
// map from project name to vector of local generators in that project
|
||||
std::map<cmStdString, std::vector<cmLocalGenerator*> > ProjectMap;
|
||||
std::map<cmStdString, std::set<cmTarget*> > ProjectToTargetMap;
|
||||
|
|
|
@ -65,6 +65,9 @@ cmLocalGenerator::~cmLocalGenerator()
|
|||
|
||||
void cmLocalGenerator::Configure()
|
||||
{
|
||||
cmLocalGenerator* previousLg = this->GetGlobalGenerator()->GetCurrentLocalGenerator();
|
||||
this->GetGlobalGenerator()->SetCurrentLocalGenerator(this);
|
||||
|
||||
// make sure the CMakeFiles dir is there
|
||||
std::string filesDir = this->Makefile->GetStartOutputDirectory();
|
||||
filesDir += cmake::GetCMakeFilesDirectory();
|
||||
|
@ -94,6 +97,8 @@ void cmLocalGenerator::Configure()
|
|||
this->UseRelativePaths = this->Makefile->IsOn("CMAKE_USE_RELATIVE_PATHS");
|
||||
|
||||
this->Configured = true;
|
||||
|
||||
this->GetGlobalGenerator()->SetCurrentLocalGenerator(previousLg);
|
||||
}
|
||||
|
||||
void cmLocalGenerator::SetupPathConversions()
|
||||
|
|
|
@ -306,7 +306,7 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff)
|
|||
error << "Error in cmake code at\n"
|
||||
<< lff.FilePath << ":" << lff.Line << ":\n"
|
||||
<< rm->GetError() << std::endl
|
||||
<< "Current CMake stack: " << this->GetListFileStack().c_str();
|
||||
<< "Called from: " << this->GetListFileStack().c_str();
|
||||
cmSystemTools::Error(error.str().c_str());
|
||||
return false;
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff)
|
|||
error << "Error in cmake code at\n"
|
||||
<< lff.FilePath << ":" << lff.Line << ":\n"
|
||||
<< usedCommand->GetError() << std::endl
|
||||
<< "Current CMake stack: " << this->GetListFileStack().c_str();
|
||||
<< "Called from: " << this->GetListFileStack().c_str();
|
||||
cmSystemTools::Error(error.str().c_str());
|
||||
result = false;
|
||||
if ( this->GetCMakeInstance()->GetScriptMode() )
|
||||
|
@ -2607,7 +2607,7 @@ const char *cmMakefile::GetProperty(const char* prop,
|
|||
}
|
||||
else if (!strcmp("LISTFILE_STACK",prop))
|
||||
{
|
||||
for (std::deque<cmStdString>::const_iterator i = this->ListFileStack.begin();
|
||||
for (std::deque<cmStdString>::iterator i = this->ListFileStack.begin();
|
||||
i != this->ListFileStack.end(); ++i)
|
||||
{
|
||||
if (i != this->ListFileStack.begin())
|
||||
|
@ -2774,17 +2774,24 @@ std::string cmMakefile::GetListFileStack()
|
|||
{
|
||||
cmOStringStream tmp;
|
||||
size_t depth = this->ListFileStack.size();
|
||||
if (depth > 0)
|
||||
{
|
||||
std::deque<cmStdString>::iterator it = this->ListFileStack.end();
|
||||
do
|
||||
{
|
||||
if (depth != this->ListFileStack.size())
|
||||
{
|
||||
tmp << "\n ";
|
||||
}
|
||||
--it;
|
||||
tmp << "\n[";
|
||||
tmp << "[";
|
||||
tmp << depth;
|
||||
tmp << "]\t";
|
||||
tmp << *it;
|
||||
depth--;
|
||||
}
|
||||
while (it != this->ListFileStack.begin());
|
||||
}
|
||||
return tmp.str();
|
||||
}
|
||||
|
||||
|
|
|
@ -58,16 +58,9 @@ bool cmMessageCommand::InitialPass(std::vector<std::string> const& args)
|
|||
}
|
||||
|
||||
if (send_error || fatal_error)
|
||||
{
|
||||
if( !this->Makefile->GetCMakeInstance()->GetDebugOutput())
|
||||
{
|
||||
cmSystemTools::Error(message.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
this->SetError(message.c_str());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (status)
|
||||
|
@ -83,11 +76,6 @@ bool cmMessageCommand::InitialPass(std::vector<std::string> const& args)
|
|||
{
|
||||
cmSystemTools::SetFatalErrorOccured();
|
||||
}
|
||||
// if debug is on then retru
|
||||
if(this->Makefile->GetCMakeInstance()->GetDebugOutput())
|
||||
{
|
||||
return (!send_error && !fatal_error);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,9 @@
|
|||
#include "cmListFileCache.h"
|
||||
#include "cmakewizard.h"
|
||||
#include "cmSourceFile.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmLocalGenerator.h"
|
||||
#include "cmMakefile.h"
|
||||
|
||||
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||
#include "cmDynamicLoader.h"
|
||||
|
@ -172,7 +175,70 @@ static const cmDocumentationEntry cmDocumentationNOTE[] =
|
|||
#endif
|
||||
|
||||
int do_cmake(int ac, char** av);
|
||||
void updateProgress(const char *msg, float prog, void *cd);
|
||||
|
||||
static cmMakefile* cmakemainGetMakefile(void *clientdata)
|
||||
{
|
||||
cmake* cm = (cmake *)clientdata;
|
||||
if(cm && cm->GetDebugOutput())
|
||||
{
|
||||
cmGlobalGenerator* gg=cm->GetGlobalGenerator();
|
||||
if (gg)
|
||||
{
|
||||
cmLocalGenerator* lg=gg->GetCurrentLocalGenerator();
|
||||
if (lg)
|
||||
{
|
||||
cmMakefile* mf = lg->GetMakefile();
|
||||
return mf;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static std::string cmakemainGetStack(void *clientdata)
|
||||
{
|
||||
std::string msg;
|
||||
cmMakefile* mf=cmakemainGetMakefile(clientdata);
|
||||
if (mf)
|
||||
{
|
||||
msg = mf->GetListFileStack();
|
||||
if (!msg.empty())
|
||||
{
|
||||
msg = "\nCalled from: " + msg;
|
||||
}
|
||||
}
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
static void cmakemainErrorCallback(const char* m, const char* title, bool& nomore, void *clientdata)
|
||||
{
|
||||
std::cerr << m << cmakemainGetStack(clientdata) << std::endl << std::flush;
|
||||
}
|
||||
|
||||
static void cmakemainProgressCallback(const char *m, float prog, void* clientdata)
|
||||
{
|
||||
cmMakefile* mf = cmakemainGetMakefile(clientdata);
|
||||
std::string dir;
|
||||
if ((mf) && (strstr(m, "Configuring")==m))
|
||||
{
|
||||
dir = " ";
|
||||
dir += mf->GetCurrentDirectory();
|
||||
}
|
||||
else if ((mf) && (strstr(m, "Generating")==m))
|
||||
{
|
||||
dir = " ";
|
||||
dir += mf->GetCurrentOutputDirectory();
|
||||
}
|
||||
|
||||
if ((prog < 0) || (!dir.empty()))
|
||||
{
|
||||
std::cout << "-- " << m << dir << cmakemainGetStack(clientdata) << std::endl;
|
||||
}
|
||||
|
||||
std::cout.flush();
|
||||
}
|
||||
|
||||
|
||||
int main(int ac, char** av)
|
||||
{
|
||||
|
@ -355,8 +421,10 @@ int do_cmake(int ac, char** av)
|
|||
return ret;
|
||||
}
|
||||
cmake cm;
|
||||
cm.SetProgressCallback(updateProgress, 0);
|
||||
cmSystemTools::SetErrorCallback(cmakemainErrorCallback, (void *)&cm);
|
||||
cm.SetProgressCallback(cmakemainProgressCallback, (void *)&cm);
|
||||
cm.SetScriptMode(script_mode);
|
||||
|
||||
int res = cm.Run(args, view_only);
|
||||
if ( list_cached || list_all_cached )
|
||||
{
|
||||
|
@ -390,14 +458,3 @@ int do_cmake(int ac, char** av)
|
|||
return res;
|
||||
}
|
||||
|
||||
void updateProgress(const char *msg, float prog, void*)
|
||||
{
|
||||
if ( prog < 0 )
|
||||
{
|
||||
std::cout << "-- " << msg << std::endl;
|
||||
}
|
||||
//else
|
||||
//{
|
||||
//std::cout << "-- " << msg << " " << prog << std::endl;
|
||||
//}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue