Browse Source

Merge topic 'minor-cleanups'

eb7b6f6d cmVariableWatchCommand: Simplify error reporting.
499ebb65 cmListFileBacktrace: Internalize the step of making paths relative.
80b433b0 cmGlobalGenerator: Don't use else after a return.
52919ac8 cmMakefile: Make cmListFileBacktrace default constructible.
b68f2ea8 cmMakefile: Add API for elseif to create backtrace.
17e13f0a cmMakefile: Simplify CMP0000 handling.
Brad King 10 years ago
parent
commit
b49aef6b10

+ 2 - 2
Source/cmCustomCommand.cxx

@@ -17,7 +17,7 @@
 
 //----------------------------------------------------------------------------
 cmCustomCommand::cmCustomCommand()
-  : Backtrace(NULL)
+  : Backtrace()
 {
   this->HaveComment = false;
   this->EscapeOldStyle = true;
@@ -82,7 +82,7 @@ cmCustomCommand::cmCustomCommand(cmMakefile const* mf,
   WorkingDirectory(workingDirectory?workingDirectory:""),
   EscapeAllowMakeVars(false),
   EscapeOldStyle(true),
-  Backtrace(NULL)
+  Backtrace()
 {
   this->EscapeOldStyle = true;
   this->EscapeAllowMakeVars = false;

+ 1 - 1
Source/cmExportBuildFileGenerator.cxx

@@ -18,7 +18,7 @@
 
 //----------------------------------------------------------------------------
 cmExportBuildFileGenerator::cmExportBuildFileGenerator()
-  : Backtrace(NULL)
+  : Backtrace()
 {
   this->Makefile = 0;
   this->ExportSet = 0;

+ 1 - 1
Source/cmGeneratorExpression.cxx

@@ -34,7 +34,7 @@ cmGeneratorExpression::Parse(std::string const& input)
 {
   return cmsys::auto_ptr<cmCompiledGeneratorExpression>(
     new cmCompiledGeneratorExpression(
-      this->Backtrace ? *this->Backtrace : cmListFileBacktrace(NULL),
+      this->Backtrace ? *this->Backtrace : cmListFileBacktrace(),
       input));
 }
 

+ 1 - 1
Source/cmGeneratorExpressionDAGChecker.cxx

@@ -35,7 +35,7 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
                 const GeneratorExpressionContent *content,
                 cmGeneratorExpressionDAGChecker *parent)
   : Parent(parent), Target(target), Property(property),
-    Content(content), Backtrace(NULL), TransitivePropertiesOnly(false)
+    Content(content), Backtrace(), TransitivePropertiesOnly(false)
 {
   Initialize();
 }

+ 19 - 24
Source/cmGlobalGenerator.cxx

@@ -87,18 +87,16 @@ bool cmGlobalGenerator::SetGeneratorPlatform(std::string const& p,
     {
     return true;
     }
-  else
-    {
-    std::ostringstream e;
-    e <<
-      "Generator\n"
-      "  " << this->GetName() << "\n"
-      "does not support platform specification, but platform\n"
-      "  " << p << "\n"
-      "was specified.";
-    mf->IssueMessage(cmake::FATAL_ERROR, e.str());
-    return false;
-    }
+
+  std::ostringstream e;
+  e <<
+    "Generator\n"
+    "  " << this->GetName() << "\n"
+    "does not support platform specification, but platform\n"
+    "  " << p << "\n"
+    "was specified.";
+  mf->IssueMessage(cmake::FATAL_ERROR, e.str());
+  return false;
 }
 
 bool cmGlobalGenerator::SetGeneratorToolset(std::string const& ts,
@@ -108,18 +106,15 @@ bool cmGlobalGenerator::SetGeneratorToolset(std::string const& ts,
     {
     return true;
     }
-  else
-    {
-    std::ostringstream e;
-    e <<
-      "Generator\n"
-      "  " << this->GetName() << "\n"
-      "does not support toolset specification, but toolset\n"
-      "  " << ts << "\n"
-      "was specified.";
-    mf->IssueMessage(cmake::FATAL_ERROR, e.str());
-    return false;
-    }
+  std::ostringstream e;
+  e <<
+    "Generator\n"
+    "  " << this->GetName() << "\n"
+    "does not support toolset specification, but toolset\n"
+    "  " << ts << "\n"
+    "was specified.";
+  mf->IssueMessage(cmake::FATAL_ERROR, e.str());
+  return false;
 }
 
 std::string cmGlobalGenerator::SelectMakeProgram(

+ 2 - 5
Source/cmIfCommand.cxx

@@ -92,10 +92,6 @@ IsFunctionBlocked(const cmListFileFunction& lff,
             }
           else
             {
-            // Place this call on the call stack.
-            cmMakefileCall stack_manager(&mf, this->Functions[c], status);
-            static_cast<void>(stack_manager);
-
             // if trace is enabled, print the evaluated "elseif" statement
             if(mf.GetCMakeInstance()->GetTrace())
               {
@@ -119,7 +115,8 @@ IsFunctionBlocked(const cmListFileFunction& lff,
               {
               std::string err = cmIfCommandError(expandedArguments);
               err += errorString;
-              mf.IssueMessage(messType, err);
+              cmListFileBacktrace bt = mf.GetBacktrace(this->Functions[c]);
+              mf.GetCMakeInstance()->IssueMessage(messType, err, bt);
               if (messType == cmake::FATAL_ERROR)
                 {
                 cmSystemTools::SetFatalErrorOccured();

+ 8 - 18
Source/cmListFileCache.cxx

@@ -405,29 +405,17 @@ void cmListFileBacktrace::Append(cmListFileContext const& context)
   this->push_back(context);
 }
 
-//----------------------------------------------------------------------------
-void cmListFileBacktrace::MakeRelative()
-{
-  if (this->Relative)
-    {
-    return;
-    }
-  for (cmListFileBacktrace::iterator i = this->begin();
-       i != this->end(); ++i)
-    {
-    i->FilePath = this->LocalGenerator->Convert(i->FilePath,
-                                                cmLocalGenerator::HOME);
-    }
-  this->Relative = true;
-}
-
 void cmListFileBacktrace::PrintTitle(std::ostream& out)
 {
   if (this->empty())
     {
     return;
     }
-  out << (this->front().Line ? " at " : " in ") << this->front();
+
+  cmListFileContext lfc = this->front();
+  lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath,
+                                               cmLocalGenerator::HOME);
+  out << (lfc.Line ? " at " : " in ") << lfc;
 }
 
 void cmListFileBacktrace::PrintCallStack(std::ostream& out)
@@ -441,7 +429,9 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& out)
   out << "Call Stack (most recent call first):\n";
   while(i != this->end())
     {
-    cmListFileContext const& lfc = *i;
+    cmListFileContext lfc = *i;
+    lfc.FilePath = this->LocalGenerator->Convert(lfc.FilePath,
+                                                 cmLocalGenerator::HOME);
     out << "  " << lfc << "\n";
     ++i;
     }

+ 1 - 5
Source/cmListFileCache.h

@@ -74,21 +74,17 @@ struct cmListFileFunction: public cmListFileContext
 class cmListFileBacktrace: private std::vector<cmListFileContext>
 {
   public:
-    cmListFileBacktrace(cmLocalGenerator* localGen)
+    cmListFileBacktrace(cmLocalGenerator* localGen = 0)
       : LocalGenerator(localGen)
-      , Relative(localGen ? false : true)
     {
     }
 
     void Append(cmListFileContext const& context);
 
-    void MakeRelative();
-
     void PrintTitle(std::ostream& out);
     void PrintCallStack(std::ostream& out);
   private:
     cmLocalGenerator* LocalGenerator;
-    bool Relative;
 };
 
 struct cmListFile

+ 18 - 9
Source/cmMakefile.cxx

@@ -286,6 +286,20 @@ cmListFileBacktrace cmMakefile::GetBacktrace() const
   return backtrace;
 }
 
+//----------------------------------------------------------------------------
+cmListFileBacktrace
+cmMakefile::GetBacktrace(cmListFileContext const& lfc) const
+{
+  cmListFileBacktrace backtrace(this->GetLocalGenerator());
+  backtrace.Append(lfc);
+  for(CallStackType::const_reverse_iterator i = this->CallStack.rbegin();
+      i != this->CallStack.rend(); ++i)
+    {
+    backtrace.Append(*i->Context);
+    }
+  return backtrace;
+}
+
 //----------------------------------------------------------------------------
 cmListFileContext cmMakefile::GetExecutionContext() const
 {
@@ -519,8 +533,10 @@ bool cmMakefile::ProcessBuildsystemFile(const char* listfile)
 {
   this->AddDefinition("CMAKE_PARENT_LIST_FILE", listfile);
   std::string curSrc = this->GetCurrentSourceDirectory();
-  return this->ReadListFile(listfile, true,
-                            curSrc == this->GetHomeDirectory());
+  bool result = this->ReadListFile(listfile, true,
+                                   curSrc == this->GetHomeDirectory());
+  this->EnforceDirectoryLevelRules();
+  return result;
 }
 
 bool cmMakefile::ReadDependentFile(const char* listfile, bool noPolicyScope)
@@ -619,13 +635,6 @@ bool cmMakefile::ReadListFileInternal(const char* filenametoread,
     }
   }
 
-  // If this is the directory-level CMakeLists.txt file then perform
-  // some extra checks.
-  if(this->ListFileStack.size() == 1)
-    {
-    this->EnforceDirectoryLevelRules();
-    }
-
   return true;
 }
 

+ 1 - 0
Source/cmMakefile.h

@@ -572,6 +572,7 @@ public:
    * Get the current context backtrace.
    */
   cmListFileBacktrace GetBacktrace() const;
+  cmListFileBacktrace GetBacktrace(cmListFileContext const& lfc) const;
   cmListFileContext GetExecutionContext() const;
 
   /**

+ 2 - 2
Source/cmTarget.cxx

@@ -94,13 +94,13 @@ class cmTargetInternals
 {
 public:
   cmTargetInternals()
-    : Backtrace(NULL)
+    : Backtrace()
     {
     this->PolicyWarnedCMP0022 = false;
     this->UtilityItemsDone = false;
     }
   cmTargetInternals(cmTargetInternals const&)
-    : Backtrace(NULL)
+    : Backtrace()
     {
     this->PolicyWarnedCMP0022 = false;
     this->UtilityItemsDone = false;

+ 1 - 1
Source/cmTarget.h

@@ -66,7 +66,7 @@ public:
 class cmLinkImplItem: public cmLinkItem
 {
 public:
-  cmLinkImplItem(): cmLinkItem(), Backtrace(0), FromGenex(false) {}
+  cmLinkImplItem(): cmLinkItem(), Backtrace(), FromGenex(false) {}
   cmLinkImplItem(std::string const& n,
                  cmTarget const* t,
                  cmListFileBacktrace const& bt,

+ 1 - 4
Source/cmVariableWatchCommand.cxx

@@ -68,11 +68,8 @@ static void cmVariableWatchCommandVariableAccessed(
     cmExecutionStatus status;
     if(!makefile->ExecuteCommand(newLFF,status))
       {
-      arg.FilePath =  "Unknown";
-      arg.Line = 0;
       std::ostringstream error;
-      error << "Error in cmake code at\n"
-        << arg.FilePath << ":" << arg.Line << ":\n"
+      error << "Error in cmake code at\nUnknown:0:\n"
         << "A command failed during the invocation of callback \""
         << data->Command << "\".";
       cmSystemTools::Error(error.str().c_str());

+ 0 - 1
Source/cmake.cxx

@@ -2519,7 +2519,6 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
                          cmListFileBacktrace const& bt)
 {
   cmListFileBacktrace backtrace = bt;
-  backtrace.MakeRelative();
 
   std::ostringstream msg;
   if (!this->PrintMessagePreamble(t, msg))

+ 1 - 1
Source/cmake.h

@@ -301,7 +301,7 @@ class cmake
 
   /** Display a message to the user.  */
   void IssueMessage(cmake::MessageType t, std::string const& text,
-        cmListFileBacktrace const& backtrace = cmListFileBacktrace(NULL));
+        cmListFileBacktrace const& backtrace = cmListFileBacktrace());
   void IssueMessage(cmake::MessageType t, std::string const& text,
         cmListFileContext const& lfc);