|
|
@@ -240,6 +240,19 @@ cmDocumentation::cmDocumentation()
|
|
|
"COMPATIBILITY COMMANDS");
|
|
|
sec->Append(cmCompatCommandsDocumentationDescription);
|
|
|
this->AllSections["Compatibility Commands"] = sec;
|
|
|
+
|
|
|
+
|
|
|
+ this->PropertySections.push_back("Properties of Global Scope");
|
|
|
+ this->PropertySections.push_back("Properties on Directories");
|
|
|
+ this->PropertySections.push_back("Properties on Targets");
|
|
|
+ this->PropertySections.push_back("Properties on Tests");
|
|
|
+ this->PropertySections.push_back("Properties on Source Files");
|
|
|
+
|
|
|
+ this->VariableSections.push_back("Variables that Provide Information");
|
|
|
+ this->VariableSections.push_back("Variables That Change Behavior");
|
|
|
+ this->VariableSections.push_back("Variables That Describe the System");
|
|
|
+ this->VariableSections.push_back("Variables that Control the Build");
|
|
|
+ this->VariableSections.push_back("Variables for Languages");
|
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
@@ -325,6 +338,8 @@ bool cmDocumentation::PrintDocumentation(Type ht, std::ostream& os)
|
|
|
return this->PrintDocumentationSingleModule(os);
|
|
|
case cmDocumentation::SingleProperty:
|
|
|
return this->PrintDocumentationSingleProperty(os);
|
|
|
+ case cmDocumentation::SingleVariable:
|
|
|
+ return this->PrintDocumentationSingleVariable(os);
|
|
|
case cmDocumentation::List:
|
|
|
this->PrintDocumentationList(os,"Commands");
|
|
|
this->PrintDocumentationList(os,"Compatibility Commands");
|
|
|
@@ -334,11 +349,20 @@ bool cmDocumentation::PrintDocumentation(Type ht, std::ostream& os)
|
|
|
return true;
|
|
|
case cmDocumentation::PropertyList:
|
|
|
this->PrintDocumentationList(os,"Properties Description");
|
|
|
- this->PrintDocumentationList(os,"Properties of Global Scope");
|
|
|
- this->PrintDocumentationList(os,"Properties on Directories");
|
|
|
- this->PrintDocumentationList(os,"Properties on Targets");
|
|
|
- this->PrintDocumentationList(os,"Properties on Tests");
|
|
|
- this->PrintDocumentationList(os,"Properties on Source Files");
|
|
|
+ for (std::vector<std::string>::iterator i =
|
|
|
+ this->PropertySections.begin();
|
|
|
+ i != this->PropertySections.end(); ++i)
|
|
|
+ {
|
|
|
+ this->PrintDocumentationList(os,i->c_str());
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ case cmDocumentation::VariableList:
|
|
|
+ for (std::vector<std::string>::iterator i =
|
|
|
+ this->VariableSections.begin();
|
|
|
+ i != this->VariableSections.end(); ++i)
|
|
|
+ {
|
|
|
+ this->PrintDocumentationList(os,i->c_str());
|
|
|
+ }
|
|
|
return true;
|
|
|
case cmDocumentation::Full:
|
|
|
return this->PrintDocumentationFull(os);
|
|
|
@@ -348,6 +372,8 @@ bool cmDocumentation::PrintDocumentation(Type ht, std::ostream& os)
|
|
|
return this->PrintDocumentationCustomModules(os);
|
|
|
case cmDocumentation::Properties:
|
|
|
return this->PrintDocumentationProperties(os);
|
|
|
+ case cmDocumentation::Variables:
|
|
|
+ return this->PrintDocumentationVariables(os);
|
|
|
case cmDocumentation::Commands:
|
|
|
return this->PrintDocumentationCurrentCommands(os);
|
|
|
case cmDocumentation::CompatCommands:
|
|
|
@@ -641,6 +667,12 @@ bool cmDocumentation::CheckOptions(int argc, const char* const* argv)
|
|
|
GET_OPT_ARGUMENT(help.Filename);
|
|
|
help.HelpForm = this->GetFormFromFilename(help.Filename);
|
|
|
}
|
|
|
+ else if(strcmp(argv[i], "--help-variables") == 0)
|
|
|
+ {
|
|
|
+ help.HelpType = cmDocumentation::Variables;
|
|
|
+ GET_OPT_ARGUMENT(help.Filename);
|
|
|
+ help.HelpForm = this->GetFormFromFilename(help.Filename);
|
|
|
+ }
|
|
|
else if(strcmp(argv[i], "--help-modules") == 0)
|
|
|
{
|
|
|
help.HelpType = cmDocumentation::Modules;
|
|
|
@@ -705,6 +737,13 @@ bool cmDocumentation::CheckOptions(int argc, const char* const* argv)
|
|
|
GET_OPT_ARGUMENT(help.Filename);
|
|
|
help.HelpForm = this->GetFormFromFilename(help.Filename);
|
|
|
}
|
|
|
+ else if(strcmp(argv[i], "--help-variable") == 0)
|
|
|
+ {
|
|
|
+ help.HelpType = cmDocumentation::SingleVariable;
|
|
|
+ GET_OPT_ARGUMENT(help.Argument);
|
|
|
+ GET_OPT_ARGUMENT(help.Filename);
|
|
|
+ help.HelpForm = this->GetFormFromFilename(help.Filename);
|
|
|
+ }
|
|
|
else if(strcmp(argv[i], "--help-command-list") == 0)
|
|
|
{
|
|
|
help.HelpType = cmDocumentation::List;
|
|
|
@@ -723,6 +762,12 @@ bool cmDocumentation::CheckOptions(int argc, const char* const* argv)
|
|
|
GET_OPT_ARGUMENT(help.Filename);
|
|
|
help.HelpForm = cmDocumentation::TextForm;
|
|
|
}
|
|
|
+ else if(strcmp(argv[i], "--help-variable-list") == 0)
|
|
|
+ {
|
|
|
+ help.HelpType = cmDocumentation::VariableList;
|
|
|
+ GET_OPT_ARGUMENT(help.Filename);
|
|
|
+ help.HelpForm = cmDocumentation::TextForm;
|
|
|
+ }
|
|
|
else if(strcmp(argv[i], "--copyright") == 0)
|
|
|
{
|
|
|
help.HelpType = cmDocumentation::Copyright;
|
|
|
@@ -834,6 +879,24 @@ void cmDocumentation::PrependSection(const char *name,
|
|
|
sec->Prepend(docs);
|
|
|
}
|
|
|
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+void cmDocumentation::PrependSection(const char *name,
|
|
|
+ std::vector<cmDocumentationEntry> &docs)
|
|
|
+{
|
|
|
+ cmDocumentationSection *sec = 0;
|
|
|
+ if (this->AllSections.find(name) == this->AllSections.end())
|
|
|
+ {
|
|
|
+ sec = new cmDocumentationSection
|
|
|
+ (name, cmSystemTools::UpperCase(name).c_str());
|
|
|
+ this->SetSection(name,sec);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sec = this->AllSections[name];
|
|
|
+ }
|
|
|
+ sec->Prepend(docs);
|
|
|
+}
|
|
|
+
|
|
|
//----------------------------------------------------------------------------
|
|
|
void cmDocumentation::AppendSection(const char *name,
|
|
|
const char *docs[][3])
|
|
|
@@ -870,6 +933,26 @@ void cmDocumentation::AppendSection(const char *name,
|
|
|
sec->Append(docs);
|
|
|
}
|
|
|
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+void cmDocumentation::AppendSection(const char *name,
|
|
|
+ cmDocumentationEntry &docs)
|
|
|
+{
|
|
|
+
|
|
|
+ std::vector<cmDocumentationEntry> docsVec;
|
|
|
+ docsVec.push_back(docs);
|
|
|
+ this->AppendSection(name,docsVec);
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+void cmDocumentation::PrependSection(const char *name,
|
|
|
+ cmDocumentationEntry &docs)
|
|
|
+{
|
|
|
+
|
|
|
+ std::vector<cmDocumentationEntry> docsVec;
|
|
|
+ docsVec.push_back(docs);
|
|
|
+ this->PrependSection(name,docsVec);
|
|
|
+}
|
|
|
+
|
|
|
//----------------------------------------------------------------------------
|
|
|
void cmDocumentation::SetSeeAlsoList(const char *data[][3])
|
|
|
{
|
|
|
@@ -996,31 +1079,46 @@ bool cmDocumentation::PrintDocumentationSingleModule(std::ostream& os)
|
|
|
//----------------------------------------------------------------------------
|
|
|
bool cmDocumentation::PrintDocumentationSingleProperty(std::ostream& os)
|
|
|
{
|
|
|
- if (this->PrintDocumentationGeneric(os,"Properties of Global Scope"))
|
|
|
+ bool done = false;
|
|
|
+ for (std::vector<std::string>::iterator i =
|
|
|
+ this->PropertySections.begin();
|
|
|
+ !done && i != this->PropertySections.end(); ++i)
|
|
|
{
|
|
|
- return true;
|
|
|
+ done = this->PrintDocumentationGeneric(os,i->c_str());
|
|
|
}
|
|
|
- if (this->PrintDocumentationGeneric(os,"Properties on Directories"))
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- if (this->PrintDocumentationGeneric(os,"Properties on Targets"))
|
|
|
+
|
|
|
+ if (done)
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
- if (this->PrintDocumentationGeneric(os,"Properties on Tests"))
|
|
|
+
|
|
|
+ // Argument was not a command. Complain.
|
|
|
+ os << "Argument \"" << this->CurrentArgument.c_str()
|
|
|
+ << "\" to --help-property is not a CMake property. "
|
|
|
+ << "Use --help-property-list to see all properties.\n";
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+bool cmDocumentation::PrintDocumentationSingleVariable(std::ostream& os)
|
|
|
+{
|
|
|
+ bool done = false;
|
|
|
+ for (std::vector<std::string>::iterator i =
|
|
|
+ this->VariableSections.begin();
|
|
|
+ !done && i != this->VariableSections.end(); ++i)
|
|
|
{
|
|
|
- return true;
|
|
|
+ done = this->PrintDocumentationGeneric(os,i->c_str());
|
|
|
}
|
|
|
- if (this->PrintDocumentationGeneric(os,"Properties on Source Files"))
|
|
|
+
|
|
|
+ if (done)
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
// Argument was not a command. Complain.
|
|
|
os << "Argument \"" << this->CurrentArgument.c_str()
|
|
|
- << "\" to --help-property is not a CMake property. "
|
|
|
- << "Use --help-property-list to see all properties.\n";
|
|
|
+ << "\" to --help-variable is not a defined variable. "
|
|
|
+ << "Use --help-variable-list to see all defined variables.\n";
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -1105,11 +1203,30 @@ bool cmDocumentation::PrintDocumentationProperties(std::ostream& os)
|
|
|
{
|
|
|
this->ClearSections();
|
|
|
this->AddSectionToPrint("Properties Description");
|
|
|
- this->AddSectionToPrint("Properties of Global Scope");
|
|
|
- this->AddSectionToPrint("Properties on Directories");
|
|
|
- this->AddSectionToPrint("Properties on Targets");
|
|
|
- this->AddSectionToPrint("Properties on Tests");
|
|
|
- this->AddSectionToPrint("Properties on Source Files");
|
|
|
+ for (std::vector<std::string>::iterator i =
|
|
|
+ this->PropertySections.begin();
|
|
|
+ i != this->PropertySections.end(); ++i)
|
|
|
+ {
|
|
|
+ this->AddSectionToPrint(i->c_str());
|
|
|
+ }
|
|
|
+ this->AddSectionToPrint("Copyright");
|
|
|
+ this->AddSectionToPrint("Standard See Also");
|
|
|
+ this->CurrentFormatter->PrintHeader(this->GetNameString(), os);
|
|
|
+ this->Print(os);
|
|
|
+ this->CurrentFormatter->PrintFooter(os);
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+bool cmDocumentation::PrintDocumentationVariables(std::ostream& os)
|
|
|
+{
|
|
|
+ this->ClearSections();
|
|
|
+ for (std::vector<std::string>::iterator i =
|
|
|
+ this->VariableSections.begin();
|
|
|
+ i != this->VariableSections.end(); ++i)
|
|
|
+ {
|
|
|
+ this->AddSectionToPrint(i->c_str());
|
|
|
+ }
|
|
|
this->AddSectionToPrint("Copyright");
|
|
|
this->AddSectionToPrint("Standard See Also");
|
|
|
this->CurrentFormatter->PrintHeader(this->GetNameString(), os);
|
|
|
@@ -1181,18 +1298,16 @@ void cmDocumentation::CreateFullDocumentation()
|
|
|
this->AddSectionToPrint("Commands");
|
|
|
emitted.insert("Commands");
|
|
|
|
|
|
+
|
|
|
this->AddSectionToPrint("Properties Description");
|
|
|
emitted.insert("Properties Description");
|
|
|
- this->AddSectionToPrint("Properties of Global Scope");
|
|
|
- emitted.insert("Properties of Global Scope");
|
|
|
- this->AddSectionToPrint("Properties on Directories");
|
|
|
- emitted.insert("Properties on Directories");
|
|
|
- this->AddSectionToPrint("Properties on Targets");
|
|
|
- emitted.insert("Properties on Targets");
|
|
|
- this->AddSectionToPrint("Properties on Tests");
|
|
|
- emitted.insert("Properties on Tests");
|
|
|
- this->AddSectionToPrint("Properties on Source Files");
|
|
|
- emitted.insert("Properties on Source Files");
|
|
|
+ for (std::vector<std::string>::iterator i =
|
|
|
+ this->PropertySections.begin();
|
|
|
+ i != this->PropertySections.end(); ++i)
|
|
|
+ {
|
|
|
+ this->AddSectionToPrint(i->c_str());
|
|
|
+ emitted.insert(i->c_str());
|
|
|
+ }
|
|
|
|
|
|
emitted.insert("Copyright");
|
|
|
emitted.insert("See Also");
|