summaryrefslogtreecommitdiff
path: root/src/handle_dep.cc
diff options
context:
space:
mode:
authorDon Bright <hugh.m.bright@gmail.com>2011-09-12 22:40:51 (GMT)
committerDon Bright <hugh.m.bright@gmail.com>2011-09-12 22:40:51 (GMT)
commitf5f06c8e976ca45aebea42fe8c04bf7404357ac8 (patch)
tree8d0cdd2698e7806c1b12cc49e743b561e1082961 /src/handle_dep.cc
parent007c40848db9efd704694f2e7596cabed80da50f (diff)
parent5ac9162f1c67fd21737ead11d7ebc638bf4eef5f (diff)
merge
Merge remote branch 'upstream/visitor' into visitortests Conflicts: src/export.cc src/openscad.cc src/polyset.cc src/transform.cc tests/CMakeLists.txt tests/FindGLEW.cmake tests/csgtermtest.cc
Diffstat (limited to 'src/handle_dep.cc')
-rw-r--r--src/handle_dep.cc42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/handle_dep.cc b/src/handle_dep.cc
new file mode 100644
index 0000000..2a05b4a
--- /dev/null
+++ b/src/handle_dep.cc
@@ -0,0 +1,42 @@
+#include "handle_dep.h"
+#include "myqhash.h"
+#include <string>
+#include <sstream>
+#include <QString>
+#include <QDir>
+#include <QSet>
+#include <stdlib.h> // for system()
+
+QSet<std::string> dependencies;
+const char *make_command = NULL;
+
+void handle_dep(const std::string &filename)
+{
+ if (filename[0] == '/')
+ dependencies.insert(filename);
+ else {
+ QString dep = QDir::currentPath() + QString("/") + QString::fromStdString(filename);
+ dependencies.insert(dep.toStdString());
+ }
+ if (!QFile(QString::fromStdString(filename)).exists() && make_command) {
+ std::stringstream buf;
+ buf << make_command << " '" << QString::fromStdString(filename).replace("'", "'\\''").toUtf8().data() << "'";
+ system(buf.str().c_str()); // FIXME: Handle error
+ }
+}
+
+bool write_deps(const std::string &filename, const std::string &output_file)
+{
+ FILE *fp = fopen(filename.c_str(), "wt");
+ if (!fp) {
+ fprintf(stderr, "Can't open dependencies file `%s' for writing!\n", filename.c_str());
+ return false;
+ }
+ fprintf(fp, "%s:", output_file.c_str());
+ QSetIterator<std::string> i(dependencies);
+ while (i.hasNext())
+ fprintf(fp, " \\\n\t%s", i.next().c_str());
+ fprintf(fp, "\n");
+ fclose(fp);
+ return true;
+}
contact: Jan Huwald // Impressum