Browse Source

cmBuildNameCommand: Implement as free function

Regina Pfeifer 6 years ago
parent
commit
c55fb044a9
4 changed files with 16 additions and 28 deletions
  1. 12 13
      Source/cmBuildNameCommand.cxx
  2. 2 14
      Source/cmBuildNameCommand.h
  3. 1 1
      Source/cmCommands.cxx
  4. 1 0
      Source/cmState.cxx

+ 12 - 13
Source/cmBuildNameCommand.cxx

@@ -5,21 +5,20 @@
 #include "cmsys/RegularExpression.hxx"
 #include <algorithm>
 
+#include "cmExecutionStatus.h"
 #include "cmMakefile.h"
 #include "cmStateTypes.h"
 #include "cmSystemTools.h"
 
-class cmExecutionStatus;
-
-// cmBuildNameCommand
-bool cmBuildNameCommand::InitialPass(std::vector<std::string> const& args,
-                                     cmExecutionStatus&)
+bool cmBuildNameCommand(std::vector<std::string> const& args,
+                        cmExecutionStatus& status)
 {
   if (args.empty()) {
-    this->SetError("called with incorrect number of arguments");
+    status.SetError("called with incorrect number of arguments");
     return false;
   }
-  const char* cacheValue = this->Makefile->GetDefinition(args[0]);
+  cmMakefile& mf = status.GetMakefile();
+  const char* cacheValue = mf.GetDefinition(args[0]);
   if (cacheValue) {
     // do we need to correct the value?
     cmsys::RegularExpression reg("[()/]");
@@ -28,14 +27,14 @@ bool cmBuildNameCommand::InitialPass(std::vector<std::string> const& args,
       std::replace(cv.begin(), cv.end(), '/', '_');
       std::replace(cv.begin(), cv.end(), '(', '_');
       std::replace(cv.begin(), cv.end(), ')', '_');
-      this->Makefile->AddCacheDefinition(args[0], cv.c_str(), "Name of build.",
-                                         cmStateEnums::STRING);
+      mf.AddCacheDefinition(args[0], cv.c_str(), "Name of build.",
+                            cmStateEnums::STRING);
     }
     return true;
   }
 
   std::string buildname = "WinNT";
-  if (this->Makefile->GetDefinition("UNIX")) {
+  if (mf.GetDefinition("UNIX")) {
     buildname.clear();
     cmSystemTools::RunSingleCommand("uname -a", &buildname, &buildname);
     if (!buildname.empty()) {
@@ -47,14 +46,14 @@ bool cmBuildNameCommand::InitialPass(std::vector<std::string> const& args,
     }
   }
   std::string compiler = "${CMAKE_CXX_COMPILER}";
-  this->Makefile->ExpandVariablesInString(compiler);
+  mf.ExpandVariablesInString(compiler);
   buildname += "-";
   buildname += cmSystemTools::GetFilenameName(compiler);
   std::replace(buildname.begin(), buildname.end(), '/', '_');
   std::replace(buildname.begin(), buildname.end(), '(', '_');
   std::replace(buildname.begin(), buildname.end(), ')', '_');
 
-  this->Makefile->AddCacheDefinition(args[0], buildname.c_str(),
-                                     "Name of build.", cmStateEnums::STRING);
+  mf.AddCacheDefinition(args[0], buildname.c_str(), "Name of build.",
+                        cmStateEnums::STRING);
   return true;
 }

+ 2 - 14
Source/cmBuildNameCommand.h

@@ -8,21 +8,9 @@
 #include <string>
 #include <vector>
 
-#include "cm_memory.hxx"
-
-#include "cmCommand.h"
-
 class cmExecutionStatus;
 
-class cmBuildNameCommand : public cmCommand
-{
-public:
-  std::unique_ptr<cmCommand> Clone() override
-  {
-    return cm::make_unique<cmBuildNameCommand>();
-  }
-  bool InitialPass(std::vector<std::string> const& args,
-                   cmExecutionStatus& status) override;
-};
+bool cmBuildNameCommand(std::vector<std::string> const& args,
+                        cmExecutionStatus& status);
 
 #endif

+ 1 - 1
Source/cmCommands.cxx

@@ -221,7 +221,7 @@ void GetScriptingCommands(cmState* state)
                            cm::make_unique<cmWriteFileCommand>());
 
   state->AddDisallowedCommand(
-    "build_name", cm::make_unique<cmBuildNameCommand>(), cmPolicies::CMP0036,
+    "build_name", cmBuildNameCommand, cmPolicies::CMP0036,
     "The build_name command should not be called; see CMP0036.");
   state->AddDisallowedCommand(
     "use_mangled_mesa", cm::make_unique<cmUseMangledMesaCommand>(),

+ 1 - 0
Source/cmState.cxx

@@ -19,6 +19,7 @@
 #include "cmGlobVerificationManager.h"
 #include "cmListFileCache.h"
 #include "cmMakefile.h"
+#include "cmMessageType.h"
 #include "cmStatePrivate.h"
 #include "cmStateSnapshot.h"
 #include "cmStringAlgorithms.h"