summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmFindPackageCommand.cxx122
-rw-r--r--Source/cmFindPackageCommand.h1
2 files changed, 66 insertions, 57 deletions
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
index f130ba2..7a0b462 100644
--- a/Source/cmFindPackageCommand.cxx
+++ b/Source/cmFindPackageCommand.cxx
@@ -411,7 +411,7 @@ bool cmFindPackageCommand
{
// Set a variable telling the find script this component
// is required.
- std::string req_var = Name + "_FIND_REQUIRED_" + args[i];
+ std::string req_var = this->Name + "_FIND_REQUIRED_" + args[i];
this->Makefile->AddDefinition(req_var.c_str(), "1");
// Append to the list of required components.
@@ -480,9 +480,7 @@ bool cmFindPackageCommand
}
}
- // Store the list of components.
- std::string components_var = Name + "_FIND_COMPONENTS";
- this->Makefile->AddDefinition(components_var.c_str(), components.c_str());
+ this->SetModuleVariables(components);
// See if there is a Find<package>.cmake module.
if(!this->NoModule)
@@ -533,68 +531,78 @@ bool cmFindPackageCommand
return result;
}
+
//----------------------------------------------------------------------------
-bool cmFindPackageCommand::FindModule(bool& found)
+bool cmFindPackageCommand::SetModuleVariables(const std::string& components)
{
- std::string module = "Find";
- module += this->Name;
- module += ".cmake";
- std::string mfile = this->Makefile->GetModulesFile(module.c_str());
- if ( mfile.size() )
+ // Store the list of components.
+ std::string components_var = this->Name + "_FIND_COMPONENTS";
+ this->Makefile->AddDefinition(components_var.c_str(), components.c_str());
+
+ if(this->Quiet)
{
- if(this->Quiet)
- {
- // Tell the module that is about to be read that it should find
- // quietly.
- std::string quietly = this->Name;
- quietly += "_FIND_QUIETLY";
- this->Makefile->AddDefinition(quietly.c_str(), "1");
- }
+ // Tell the module that is about to be read that it should find
+ // quietly.
+ std::string quietly = this->Name;
+ quietly += "_FIND_QUIETLY";
+ this->Makefile->AddDefinition(quietly.c_str(), "1");
+ }
- if(this->Required)
- {
- // Tell the module that is about to be read that it should report
- // a fatal error if the package is not found.
- std::string req = this->Name;
- req += "_FIND_REQUIRED";
- this->Makefile->AddDefinition(req.c_str(), "1");
- }
+ if(this->Required)
+ {
+ // Tell the module that is about to be read that it should report
+ // a fatal error if the package is not found.
+ std::string req = this->Name;
+ req += "_FIND_REQUIRED";
+ this->Makefile->AddDefinition(req.c_str(), "1");
+ }
- if(!this->Version.empty())
+ if(!this->Version.empty())
+ {
+ // Tell the module that is about to be read what version of the
+ // package has been requested.
+ std::string ver = this->Name;
+ ver += "_FIND_VERSION";
+ this->Makefile->AddDefinition(ver.c_str(), this->Version.c_str());
+ char buf[64];
+ switch(this->VersionCount)
{
- // Tell the module that is about to be read what version of the
- // package has been requested.
- std::string ver = this->Name;
- ver += "_FIND_VERSION";
- this->Makefile->AddDefinition(ver.c_str(), this->Version.c_str());
- char buf[64];
- switch(this->VersionCount)
+ case 3:
{
- case 3:
- {
- sprintf(buf, "%u", this->VersionPatch);
- this->Makefile->AddDefinition((ver+"_PATCH").c_str(), buf);
- } // no break
- case 2:
- {
- sprintf(buf, "%u", this->VersionMinor);
- this->Makefile->AddDefinition((ver+"_MINOR").c_str(), buf);
- } // no break
- case 1:
- {
- sprintf(buf, "%u", this->VersionMajor);
- this->Makefile->AddDefinition((ver+"_MAJOR").c_str(), buf);
- } // no break
- default: break;
- }
-
- // Tell the module whether an exact version has been requested.
- std::string exact = this->Name;
- exact += "_FIND_VERSION_EXACT";
- this->Makefile->AddDefinition(exact.c_str(),
- this->VersionExact? "1":"0");
+ sprintf(buf, "%u", this->VersionPatch);
+ this->Makefile->AddDefinition((ver+"_PATCH").c_str(), buf);
+ } // no break
+ case 2:
+ {
+ sprintf(buf, "%u", this->VersionMinor);
+ this->Makefile->AddDefinition((ver+"_MINOR").c_str(), buf);
+ } // no break
+ case 1:
+ {
+ sprintf(buf, "%u", this->VersionMajor);
+ this->Makefile->AddDefinition((ver+"_MAJOR").c_str(), buf);
+ } // no break
+ default: break;
}
+ // Tell the module whether an exact version has been requested.
+ std::string exact = this->Name;
+ exact += "_FIND_VERSION_EXACT";
+ this->Makefile->AddDefinition(exact.c_str(),
+ this->VersionExact? "1":"0");
+ }
+}
+
+
+//----------------------------------------------------------------------------
+bool cmFindPackageCommand::FindModule(bool& found)
+{
+ std::string module = "Find";
+ module += this->Name;
+ module += ".cmake";
+ std::string mfile = this->Makefile->GetModulesFile(module.c_str());
+ if ( mfile.size() )
+ {
// Load the module we found.
found = true;
return this->ReadListFile(mfile.c_str());
diff --git a/Source/cmFindPackageCommand.h b/Source/cmFindPackageCommand.h
index d5fe703..398d6a9 100644
--- a/Source/cmFindPackageCommand.h
+++ b/Source/cmFindPackageCommand.h
@@ -73,6 +73,7 @@ public:
private:
void AppendSuccessInformation();
void AppendToProperty(const char* propertyName);
+ bool SetModuleVariables(const std::string& components);
bool FindModule(bool& found);
bool HandlePackageMode();
void FindConfig();