Code

Use subdirectories with icon sizes.
[inkscape.git] / src / deptool.cpp
index 044d197ff11247331d473bd88434d48c9cf85d5d..45a01c4e7517e5e619dd9376fc605c700870d119 100644 (file)
@@ -289,6 +289,11 @@ private:
      */
     bool saveDepFile(bool doXml);
 
+    /**
+     *
+     */
+    bool saveCmakeFile();
+
     /**
      *
      */
@@ -492,7 +497,7 @@ void DepTool::parseName(const String &fullname,
     if (fullname.size() < 2)
         return;
 
-    unsigned int pos = fullname.find_last_of('/');
+    String::size_type pos = fullname.find_last_of('/');
     if (pos != fullname.npos && pos<fullname.size()-1)
         {
         path = fullname.substr(0, pos);
@@ -524,7 +529,7 @@ String DepTool::getSuffix(const String &fname)
 {
     if (fname.size() < 2)
         return "";
-    unsigned int pos = fname.find_last_of('.');
+    String::size_type pos = fname.find_last_of('.');
     if (pos == fname.npos)
         return "";
     pos++;
@@ -1006,6 +1011,7 @@ bool DepTool::run()
     if (!generateDependencies())
         return false;
     saveDepFile(false);
+    saveCmakeFile();
     //saveRefFile(true);
     return true;
 }
@@ -1362,6 +1368,69 @@ bool DepTool::saveRefFile(bool doXml)
 }
 
 
+/**
+ *   This is a new thing.  It creates a cmake file that should be able to
+ *   build the entire thing. 
+ */
+bool DepTool::saveCmakeFile()
+{
+    time_t tim;
+    time(&tim);
+
+    FILE *f = fopen("CMakeLists.txt", "w");
+    if (!f)
+        {
+        trace("cannot open 'CMakeLists.txt' for writing");
+        }
+    fprintf(f, "########################################################\n");
+    fprintf(f, "## File: CMakeLists.txt\n");
+    fprintf(f, "## Generated by DepTool at :%s", ctime(&tim));
+    fprintf(f, "########################################################\n");
+
+    fprintf(f, "\n\n");
+    
+    fprintf(f, "\n\n\n");
+    fprintf(f, "########################################################\n");
+    fprintf(f, "## P R O J E C T\n");
+    fprintf(f, "########################################################\n");
+    fprintf(f, "project (INKSCAPE)\n");
+    fprintf(f, "\n\n\n");
+    fprintf(f, "########################################################\n");
+    fprintf(f, "## O B J E C T S\n");
+    fprintf(f, "########################################################\n");
+    fprintf(f, "set (INKSCAPE_SRCS\n");
+    
+    std::map<String, FileRec *>::iterator oiter;
+    for (oiter=allFiles.begin() ; oiter!=allFiles.end() ; oiter++)
+        {
+        FileRec *frec = oiter->second;
+        if (frec->type == FileRec::CFILE)
+            {
+            //fprintf(f, " \\\n");
+            String fname = frec->path;
+            if (fname.size()>0)
+                fname.append("/");
+            fname.append(frec->baseName);
+            fname.append(".");
+            fname.append(frec->suffix);
+            fprintf(f, "%s\n", fname.c_str());
+            }
+        }
+    fprintf(f, ")\n\n");
+
+    fprintf(f, "add_executable (inkscape ${INKSCAPE_SRCS})\n");
+
+    fprintf(f, "\n\n\n");
+    fprintf(f, "########################################################\n");
+    fprintf(f, "## E N D\n");
+    fprintf(f, "########################################################\n");
+
+    fclose(f);
+
+    return true;
+}
+
+