Browse Source

Add find-package mode, which does nothing yet

-add command line argument --find-package and handle it,
 i.e. call an empty function cmake::FindPackage()
-add basic help

Alex
Alex Neundorf 14 years ago
parent
commit
a91d662f46
4 changed files with 45 additions and 2 deletions
  1. 3 1
      Source/cmMakefile.cxx
  2. 25 0
      Source/cmake.cxx
  3. 5 0
      Source/cmake.h
  4. 12 1
      Source/cmakemain.cxx

+ 3 - 1
Source/cmMakefile.cxx

@@ -384,7 +384,9 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff,
 
 
     // Decide whether to invoke the command.
     // Decide whether to invoke the command.
     if(pcmd->GetEnabled() && !cmSystemTools::GetFatalErrorOccured()  &&
     if(pcmd->GetEnabled() && !cmSystemTools::GetFatalErrorOccured()  &&
-       (!this->GetCMakeInstance()->GetScriptMode() || pcmd->IsScriptable()))
+       (this->GetCMakeInstance()->GetFindPackageMode()
+       || !this->GetCMakeInstance()->GetScriptMode() || pcmd->IsScriptable()))
+
       {
       {
       // if trace is one, print out invoke information
       // if trace is one, print out invoke information
       if(this->GetCMakeInstance()->GetTrace())
       if(this->GetCMakeInstance()->GetTrace())

+ 25 - 0
Source/cmake.cxx

@@ -181,6 +181,7 @@ cmake::cmake()
   this->ProgressCallback = 0;
   this->ProgressCallback = 0;
   this->ProgressCallbackClientData = 0;
   this->ProgressCallbackClientData = 0;
   this->ScriptMode = false;
   this->ScriptMode = false;
+  this->FindPackageMode = false;
 
 
 #ifdef CMAKE_BUILD_WITH_CMAKE
 #ifdef CMAKE_BUILD_WITH_CMAKE
   this->VariableWatch = new cmVariableWatch;
   this->VariableWatch = new cmVariableWatch;
@@ -353,6 +354,7 @@ void cmake::RemoveUnscriptableCommands()
 // Parse the args
 // Parse the args
 bool cmake::SetCacheArgs(const std::vector<std::string>& args)
 bool cmake::SetCacheArgs(const std::vector<std::string>& args)
 {
 {
+  bool findPackageMode = false;
   for(unsigned int i=1; i < args.size(); ++i)
   for(unsigned int i=1; i < args.size(); ++i)
     {
     {
     std::string arg = args[i];
     std::string arg = args[i];
@@ -480,7 +482,17 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
         }
         }
       this->ReadListFile(args, path.c_str());
       this->ReadListFile(args, path.c_str());
       }
       }
+    else if (arg.find("--find-package",0) == 0)
+      {
+      findPackageMode = true;
+      }
+    }
+
+  if (findPackageMode)
+    {
+    return this->FindPackage(args);
     }
     }
+
   return true;
   return true;
 }
 }
 
 
@@ -532,6 +544,14 @@ void cmake::ReadListFile(const std::vector<std::string>& args,
     }
     }
 }
 }
 
 
+
+bool cmake::FindPackage(const std::vector<std::string>& args)
+{
+  // create empty function for now, will be filled later
+  return true;
+}
+
+
 // Parse the args
 // Parse the args
 void cmake::SetArgs(const std::vector<std::string>& args,
 void cmake::SetArgs(const std::vector<std::string>& args,
                     bool directoriesSetBefore)
                     bool directoriesSetBefore)
@@ -604,6 +624,11 @@ void cmake::SetArgs(const std::vector<std::string>& args,
       // skip for now
       // skip for now
       i++;
       i++;
       }
       }
+    else if(arg.find("--find-package",0) == 0)
+      {
+      // skip for now
+      i++;
+      }
     else if(arg.find("-Wno-dev",0) == 0)
     else if(arg.find("-Wno-dev",0) == 0)
       {
       {
       // skip for now
       // skip for now

+ 5 - 0
Source/cmake.h

@@ -282,6 +282,9 @@ class cmake
   void SetScriptMode(bool mode) { this->ScriptMode = mode; }
   void SetScriptMode(bool mode) { this->ScriptMode = mode; }
   bool GetScriptMode() { return this->ScriptMode; }
   bool GetScriptMode() { return this->ScriptMode; }
 
 
+  void SetFindPackageMode(bool mode) {this->FindPackageMode = mode; }
+  bool GetFindPackageMode() {return this->FindPackageMode;}
+
   ///! Debug the try compile stuff by not delelting the files
   ///! Debug the try compile stuff by not delelting the files
   bool GetDebugTryCompile(){return this->DebugTryCompile;}
   bool GetDebugTryCompile(){return this->DebugTryCompile;}
   void DebugTryCompileOn(){this->DebugTryCompile = true;}
   void DebugTryCompileOn(){this->DebugTryCompile = true;}
@@ -407,6 +410,7 @@ protected:
 
 
   ///! read in a cmake list file to initialize the cache
   ///! read in a cmake list file to initialize the cache
   void ReadListFile(const std::vector<std::string>& args, const char *path);
   void ReadListFile(const std::vector<std::string>& args, const char *path);
+  bool FindPackage(const std::vector<std::string>& args);
 
 
   ///! Check if CMAKE_CACHEFILE_DIR is set. If it is not, delete the log file.
   ///! Check if CMAKE_CACHEFILE_DIR is set. If it is not, delete the log file.
   ///  If it is set, truncate it to 50kb
   ///  If it is set, truncate it to 50kb
@@ -461,6 +465,7 @@ private:
   bool Verbose;
   bool Verbose;
   bool InTryCompile;
   bool InTryCompile;
   bool ScriptMode;
   bool ScriptMode;
+  bool FindPackageMode;
   bool DebugOutput;
   bool DebugOutput;
   bool Trace;
   bool Trace;
   bool WarnUninitialized;
   bool WarnUninitialized;

+ 12 - 1
Source/cmakemain.cxx

@@ -102,6 +102,9 @@ static const char * cmDocumentationOptions[][3] =
    "No configure or generate step is performed and the cache is not"
    "No configure or generate step is performed and the cache is not"
    " modified. If variables are defined using -D, this must be done "
    " modified. If variables are defined using -D, this must be done "
    "before the -P argument."},
    "before the -P argument."},
+  {"--find-package", "Run in pkg-config like mode.",
+   "Search a package using find_package() and print the resulting flags "
+   "to stdout. "},
   {"--graphviz=[file]", "Generate graphviz of dependencies.",
   {"--graphviz=[file]", "Generate graphviz of dependencies.",
    "Generate a graphviz input file that will contain all the library and "
    "Generate a graphviz input file that will contain all the library and "
    "executable dependencies in the project."},
    "executable dependencies in the project."},
@@ -434,6 +437,7 @@ int do_cmake(int ac, char** av)
   bool list_help = false;
   bool list_help = false;
   bool view_only = false;
   bool view_only = false;
   bool script_mode = false;
   bool script_mode = false;
+  bool find_package_mode = false;
   std::vector<std::string> args;
   std::vector<std::string> args;
   for(int i =0; i < ac; ++i)
   for(int i =0; i < ac; ++i)
     {
     {
@@ -487,6 +491,12 @@ int do_cmake(int ac, char** av)
         args.push_back(av[i]);
         args.push_back(av[i]);
         }
         }
       }
       }
+    else if (!command && strncmp(av[i], "--find-package",
+                                 strlen("--find-package")) == 0)
+      {
+      find_package_mode = true;
+      args.push_back(av[i]);
+      }
     else 
     else 
       {
       {
       args.push_back(av[i]);
       args.push_back(av[i]);
@@ -511,7 +521,8 @@ int do_cmake(int ac, char** av)
   cmake cm;  
   cmake cm;  
   cmSystemTools::SetErrorCallback(cmakemainErrorCallback, (void *)&cm);
   cmSystemTools::SetErrorCallback(cmakemainErrorCallback, (void *)&cm);
   cm.SetProgressCallback(cmakemainProgressCallback, (void *)&cm);
   cm.SetProgressCallback(cmakemainProgressCallback, (void *)&cm);
-  cm.SetScriptMode(script_mode);
+  cm.SetScriptMode(script_mode || find_package_mode);
+  cm.SetFindPackageMode(find_package_mode);
 
 
   int res = cm.Run(args, view_only);
   int res = cm.Run(args, view_only);
   if ( list_cached || list_all_cached )
   if ( list_cached || list_all_cached )