summaryrefslogtreecommitdiffstats
path: root/Source/cmAuxSourceDirectoryRule.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2001-01-05 16:41:20 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2001-01-05 16:41:20 (GMT)
commitc54a05bfc799f3e88459956ec37698bab22c27f9 (patch)
tree400b2eb0b6853952a4faa8c0fc41b90eb06deaec /Source/cmAuxSourceDirectoryRule.cxx
parentd888b5e39d4e01af538b48ad16c2a6a474de34a0 (diff)
downloadCMake-c54a05bfc799f3e88459956ec37698bab22c27f9.zip
CMake-c54a05bfc799f3e88459956ec37698bab22c27f9.tar.gz
CMake-c54a05bfc799f3e88459956ec37698bab22c27f9.tar.bz2
ENH: rework cmake, added ruleMaker classes and changed the syntax of the CMakeLists.txt files.
Diffstat (limited to 'Source/cmAuxSourceDirectoryRule.cxx')
-rw-r--r--Source/cmAuxSourceDirectoryRule.cxx46
1 files changed, 46 insertions, 0 deletions
diff --git a/Source/cmAuxSourceDirectoryRule.cxx b/Source/cmAuxSourceDirectoryRule.cxx
new file mode 100644
index 0000000..e7c5211
--- /dev/null
+++ b/Source/cmAuxSourceDirectoryRule.cxx
@@ -0,0 +1,46 @@
+#include "cmAuxSourceDirectoryRule.h"
+#include "cmDirectory.h"
+
+// cmAuxSourceDirectoryRule
+bool cmAuxSourceDirectoryRule::Invoke(std::vector<std::string>& args)
+{
+ if(args.size() < 1 || args.size() > 1)
+ {
+ this->SetError("PROJECT called with incorrect number of arguments");
+ return false;
+ }
+
+ std::string templateDirectory = args[0];
+ m_Makefile->AddExtraDirectory(templateDirectory.c_str());
+ std::string tdir = m_Makefile->GetCurrentDirectory();
+ tdir += "/";
+ tdir += templateDirectory;
+ // Load all the files in the directory
+ cmDirectory dir;
+ if(dir.Load(tdir.c_str()))
+ {
+ int numfiles = dir.GetNumberOfFiles();
+ for(int i =0; i < numfiles; ++i)
+ {
+ std::string file = dir.GetFile(i);
+ // ignore files less than f.cxx in length
+ if(file.size() > 4)
+ {
+ // Remove the extension
+ std::string::size_type dotpos = file.rfind(".");
+ file = file.substr(0, dotpos);
+ std::string fullname = templateDirectory;
+ fullname += "/";
+ fullname += file;
+ // add the file as a class file so
+ // depends can be done
+ cmClassFile cmfile;
+ cmfile.SetName(fullname.c_str(), m_Makefile->GetCurrentDirectory());
+ cmfile.m_AbstractClass = false;
+ m_Makefile->AddClass(cmfile);
+ }
+ }
+ }
+ return true;
+}
+