summaryrefslogtreecommitdiff
path: root/Source/cmGetCMakePropertyCommand.cxx
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-10-30 15:39:57 -0700
committerAnas Nashif <anas.nashif@intel.com>2012-10-30 15:39:57 -0700
commit035c7fabc3b82cbc9a346c11abe2e9462b4c0379 (patch)
tree7e40f5a790eae329a8c5d3e59f046451767956ff /Source/cmGetCMakePropertyCommand.cxx
downloadcmake-035c7fabc3b82cbc9a346c11abe2e9462b4c0379.tar.gz
cmake-035c7fabc3b82cbc9a346c11abe2e9462b4c0379.tar.bz2
cmake-035c7fabc3b82cbc9a346c11abe2e9462b4c0379.zip
Imported Upstream version 2.8.9upstream/2.8.9
Diffstat (limited to 'Source/cmGetCMakePropertyCommand.cxx')
-rw-r--r--Source/cmGetCMakePropertyCommand.cxx77
1 files changed, 77 insertions, 0 deletions
diff --git a/Source/cmGetCMakePropertyCommand.cxx b/Source/cmGetCMakePropertyCommand.cxx
new file mode 100644
index 000000000..8bb54877e
--- /dev/null
+++ b/Source/cmGetCMakePropertyCommand.cxx
@@ -0,0 +1,77 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+#include "cmGetCMakePropertyCommand.h"
+
+#include "cmake.h"
+
+// cmGetCMakePropertyCommand
+bool cmGetCMakePropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
+{
+ if(args.size() < 2 )
+ {
+ this->SetError("called with incorrect number of arguments");
+ return false;
+ }
+
+ std::vector<std::string>::size_type cc;
+ std::string variable = args[0];
+ std::string output = "NOTFOUND";
+
+ if ( args[1] == "VARIABLES" )
+ {
+ int cacheonly = 0;
+ std::vector<std::string> vars = this->Makefile->GetDefinitions(cacheonly);
+ if (vars.size()>0)
+ {
+ output = vars[0];
+ }
+ for ( cc = 1; cc < vars.size(); ++cc )
+ {
+ output += ";";
+ output += vars[cc];
+ }
+ }
+ else if ( args[1] == "MACROS" )
+ {
+ this->Makefile->GetListOfMacros(output);
+ }
+ else if ( args[1] == "COMPONENTS" )
+ {
+ const std::set<cmStdString>* components
+ = this->Makefile->GetLocalGenerator()->GetGlobalGenerator()
+ ->GetInstallComponents();
+ std::set<cmStdString>::const_iterator compIt;
+ output = "";
+ for (compIt = components->begin(); compIt != components->end(); ++compIt)
+ {
+ if (compIt != components->begin())
+ {
+ output += ";";
+ }
+ output += *compIt;
+ }
+ }
+ else
+ {
+ const char *prop =
+ this->Makefile->GetCMakeInstance()->GetProperty(args[1].c_str());
+ if (prop)
+ {
+ output = prop;
+ }
+ }
+
+ this->Makefile->AddDefinition(variable.c_str(), output.c_str());
+
+ return true;
+}