X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fdeptool.cpp;h=45a01c4e7517e5e619dd9376fc605c700870d119;hb=f2c65c84b2e5016ef16907bf15d51ded9c25411e;hp=cf58a7902544fd723e9fdfc84871b866f51049a4;hpb=72b5abfcd4807e3bca0ef0eee59725f2fec370d4;p=inkscape.git diff --git a/src/deptool.cpp b/src/deptool.cpp index cf58a7902..45a01c4e7 100644 --- a/src/deptool.cpp +++ b/src/deptool.cpp @@ -159,10 +159,14 @@ public: std::map files; + bool checked; + private: void init() { + type = UNKNOWN; + checked = false; } void assign(const FileRec &other) @@ -172,6 +176,7 @@ private: baseName = other.baseName; suffix = other.suffix; files = other.files; + checked = other.checked; } }; @@ -282,7 +287,12 @@ private: /** * */ - bool saveDepFile(); + bool saveDepFile(bool doXml); + + /** + * + */ + bool saveCmakeFile(); /** * @@ -353,6 +363,9 @@ private: char *fileBuf; int fileSize; + + static const int readBufLen = 8192; + char readBuf[8193]; }; @@ -484,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 && postype == FileRec::HFILE) { String fname = iter->first; @@ -979,6 +992,7 @@ bool DepTool::generateDependencies() processReference(hfile, fname, 0); } + */ } @@ -996,8 +1010,9 @@ bool DepTool::run() return false; if (!generateDependencies()) return false; - saveDepFile(); - saveRefFile(true); + saveDepFile(false); + saveCmakeFile(); + //saveRefFile(true); return true; } @@ -1076,7 +1091,7 @@ bool DepTool::saveFileList() * This is the main product. This file lists the Include directives, * the Object list, and the dependency list. */ -bool DepTool::saveDepFile() +bool DepTool::saveDepFile(bool doXml) { time_t tim; time(&tim); @@ -1086,76 +1101,168 @@ bool DepTool::saveDepFile() { trace("cannot open 'make.dep' for writing"); } - fprintf(f, "########################################################\n"); - fprintf(f, "## File: make.dep\n"); - fprintf(f, "## Generated by DepTool at :%s", ctime(&tim)); - fprintf(f, "########################################################\n"); + if (doXml) + { + fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); - fprintf(f, "\n\n"); + fprintf(f, "\n\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "## I N C L U D E\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "DEPTOOL_INCLUDE ="); + fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); - std::vector::iterator inciter; - for (inciter=directories.begin() ; inciter!=directories.end() ; inciter++) - { - fprintf(f, " \\\n"); - String dirname = *inciter; - fprintf(f, "-I%s", dirname.c_str()); - } + std::vector::iterator inciter; + for (inciter=directories.begin() ; inciter!=directories.end() ; inciter++) + { + String dirname = *inciter; + fprintf(f, " \n", dirname.c_str()); + } - fprintf(f, "\n\n\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "## O B J E C T S\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "DEPTOOL_OBJECTS ="); + fprintf(f, "\n"); + fprintf(f, "\n\n\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); - std::map::iterator oiter; - for (oiter=allFiles.begin() ; oiter!=allFiles.end() ; oiter++) - { - FileRec *frec = oiter->second; - if (frec->type == FileRec::CFILE) + std::map::iterator oiter; + for (oiter=allFiles.begin() ; oiter!=allFiles.end() ; oiter++) { - fprintf(f, " \\\n"); - String fname = frec->path; - if (fname.size()>0) - fname.append("/"); - fname.append(frec->baseName); - fname.append(".o"); - fprintf(f, "%s", fname.c_str()); + FileRec *frec = oiter->second; + if (frec->type == FileRec::CFILE) + { + String fname = frec->path; + if (fname.size()>0) + fname.append("/"); + fname.append(frec->baseName); + fname.append(".o"); + fprintf(f, " \n", fname.c_str()); + } } - } - fprintf(f, "\n\n\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "## D E P E N D E N C I E S\n"); - fprintf(f, "########################################################\n"); - std::map::iterator iter; - for (iter=depFiles.begin() ; iter!=depFiles.end() ; iter++) + fprintf(f, "\n"); + fprintf(f, "\n\n\n"); + fprintf(f, "\n"); + fprintf(f, "\n\n"); + std::map::iterator iter; + for (iter=depFiles.begin() ; iter!=depFiles.end() ; iter++) + { + FileRec *frec = iter->second; + if (frec->type == FileRec::OFILE) + { + String fname = iter->first; + fprintf(f, "\n", fname.c_str()); + std::map::iterator citer; + for (citer=frec->files.begin() ; citer!=frec->files.end() ; citer++) + { + String cfname = citer->first; + fprintf(f, " \n", cfname.c_str()); + } + fprintf(f, "\n\n"); + } + } + + fprintf(f, "\n"); + fprintf(f, "\n\n\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); + } + else // ######### !XML { - FileRec *frec = iter->second; - if (frec->type == FileRec::OFILE) + fprintf(f, "########################################################\n"); + fprintf(f, "## File: make.dep\n"); + fprintf(f, "## Generated by DepTool at :%s", ctime(&tim)); + fprintf(f, "########################################################\n"); + + fprintf(f, "\n\n"); + + fprintf(f, "########################################################\n"); + fprintf(f, "## I N C L U D E\n"); + fprintf(f, "########################################################\n"); + fprintf(f, "DEPTOOL_INCLUDE ="); + + std::vector::iterator inciter; + for (inciter=directories.begin() ; inciter!=directories.end() ; inciter++) + { + fprintf(f, " \\\n"); + String dirname = *inciter; + fprintf(f, "-I%s", dirname.c_str()); + } + + fprintf(f, "\n\n\n"); + fprintf(f, "########################################################\n"); + fprintf(f, "## O B J E C T S\n"); + fprintf(f, "########################################################\n"); + fprintf(f, "DEPTOOL_OBJECTS ="); + + std::map::iterator oiter; + for (oiter=allFiles.begin() ; oiter!=allFiles.end() ; oiter++) { - String fname = iter->first; - fprintf(f, "%s:", fname.c_str()); - std::map::iterator citer; - for (citer=frec->files.begin() ; citer!=frec->files.end() ; citer++) + FileRec *frec = oiter->second; + if (frec->type == FileRec::CFILE) { - String cfname = citer->first; fprintf(f, " \\\n"); - fprintf(f, "\t%s", cfname.c_str()); + String fname = frec->path; + if (fname.size()>0) + fname.append("/"); + fname.append(frec->baseName); + fname.append(".o"); + fprintf(f, "%s", fname.c_str()); } - fprintf(f, "\n\n\n"); } - } - fprintf(f, "\n\n\n"); - fprintf(f, "########################################################\n"); - fprintf(f, "## E N D\n"); - fprintf(f, "########################################################\n"); + + fprintf(f, "\n\n\n"); + fprintf(f, "########################################################\n"); + fprintf(f, "## D E P E N D E N C I E S\n"); + fprintf(f, "########################################################\n"); + std::map::iterator iter; + for (iter=depFiles.begin() ; iter!=depFiles.end() ; iter++) + { + FileRec *frec = iter->second; + if (frec->type == FileRec::OFILE) + { + String fname = iter->first; + fprintf(f, "%s:", fname.c_str()); + std::map::iterator citer; + for (citer=frec->files.begin() ; citer!=frec->files.end() ; citer++) + { + String cfname = citer->first; + fprintf(f, " \\\n"); + fprintf(f, "\t%s", cfname.c_str()); + } + fprintf(f, "\n\n\n"); + } + } + + fprintf(f, "\n\n\n"); + fprintf(f, "########################################################\n"); + fprintf(f, "## E N D\n"); + fprintf(f, "########################################################\n"); + } fclose(f); @@ -1188,7 +1295,7 @@ bool DepTool::saveRefFile(bool doXml) fprintf(f, "## Note: The metric is the 'distance' of inclusion from\n"); fprintf(f, "## the given file.\n"); fprintf(f, "########################################################\n"); - fprintf(f, "--!>\n"); + fprintf(f, "-->\n"); fprintf(f, "\n\n"); @@ -1216,7 +1323,7 @@ bool DepTool::saveRefFile(bool doXml) fprintf(f, "########################################################\n"); fprintf(f, "## E N D\n"); fprintf(f, "########################################################\n"); - fprintf(f, "--!>\n"); + fprintf(f, "-->\n"); } else //######### not xml @@ -1261,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::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; +} + +