diff --git a/Makefile b/Makefile index fca69116e..571f723a6 100644 --- a/Makefile +++ b/Makefile @@ -357,6 +357,7 @@ validateXML: createXMLExamples checkCWEEntries: /tmp/errorlist.xml ./tools/listErrorsWithoutCWE.py -F /tmp/errorlist.xml + ###### Build $(libcppdir)/analyzerinfo.o: lib/analyzerinfo.cpp lib/analyzerinfo.h lib/config.h lib/errorlogger.h lib/suppressions.h lib/importproject.h lib/platform.h lib/utils.h lib/path.h diff --git a/lib/lib.pri b/lib/lib.pri index 57a85e244..74a5cc83d 100644 --- a/lib/lib.pri +++ b/lib/lib.pri @@ -3,8 +3,7 @@ include($$PWD/pcrerules.pri) include($$PWD/../externals/externals.pri) INCLUDEPATH += $$PWD -HEADERS += $${PWD}/check.h \ - $${PWD}/analyzerinfo.h \ +HEADERS += $${PWD}/analyzerinfo.h \ $${PWD}/astutils.h \ $${PWD}/check.h \ $${PWD}/check64bit.h \ diff --git a/tools/dmake.cpp b/tools/dmake.cpp index 52c4acb13..097c8aad8 100644 --- a/tools/dmake.cpp +++ b/tools/dmake.cpp @@ -41,6 +41,19 @@ static std::string objfile(std::string cppfile) return builddir(cppfile + ".o"); } +static std::string objfiles(const std::vector &files) +{ + std::string allObjfiles; + for (const std::string &file : files) { + if (file != files.front()) + allObjfiles += std::string(14, ' '); + allObjfiles += objfile(file); + if (file != files.back()) + allObjfiles += " \\\n"; + } + return allObjfiles; +} + static void getDeps(const std::string &filename, std::vector &depfiles) { // Is the dependency already included? @@ -77,14 +90,14 @@ static void getDeps(const std::string &filename, std::vector &depfi static void compilefiles(std::ostream &fout, const std::vector &files, const std::string &args) { - for (unsigned int i = 0; i < files.size(); ++i) { - bool external(files[i].compare(0,10,"externals/") == 0); - fout << objfile(files[i]) << ": " << files[i]; + for (const std::string &file : files) { + bool external(file.compare(0,10,"externals/") == 0); + fout << objfile(file) << ": " << file; std::vector depfiles; - getDeps(files[i], depfiles); - for (unsigned int dep = 0; dep < depfiles.size(); ++dep) - fout << " " << depfiles[dep]; - fout << "\n\t$(CXX) " << args << " $(CPPFLAGS) $(CFG) $(CXXFLAGS)" << (external?" -w":"") << " $(UNDEF_STRICT_ANSI) -c -o " << objfile(files[i]) << " " << builddir(files[i]) << "\n\n"; + getDeps(file, depfiles); + for (const std::string &depfile : depfiles) + fout << " " << depfile; + fout << "\n\t$(CXX) " << args << " $(CPPFLAGS) $(CFG) $(CXXFLAGS)" << (external?" -w":"") << " $(UNDEF_STRICT_ANSI) -c -o " << objfile(file) << " " << builddir(file) << "\n\n"; } } @@ -97,9 +110,9 @@ static void getCppFiles(std::vector &files, const std::string &path FileLister::addFiles(filemap, path, extra, recursive, matcher); // add *.cpp files to the "files" vector.. - for (std::map::const_iterator it = filemap.begin(); it != filemap.end(); ++it) { - if (it->first.find(".cpp") != std::string::npos) - files.push_back(it->first); + for (const std::pair file : filemap) { + if (file.first.find(".cpp") != std::string::npos) + files.push_back(file.first); } } @@ -121,8 +134,7 @@ int main(int argc, char **argv) getCppFiles(libfiles, "lib/", false); std::vector extfiles; - extfiles.push_back("externals/simplecpp/simplecpp.cpp"); - extfiles.push_back("externals/tinyxml/tinyxml2.cpp"); + getCppFiles(extfiles, "externals/", true); std::vector clifiles; getCppFiles(clifiles, "cli/", false); @@ -146,20 +158,20 @@ int main(int argc, char **argv) fout1 << "include($$PWD/pcrerules.pri)\n"; fout1 << "include($$PWD/../externals/externals.pri)\n"; fout1 << "INCLUDEPATH += $$PWD\n"; - fout1 << "HEADERS += $${PWD}/check.h \\\n"; - for (unsigned int i = 0; i < libfiles.size(); ++i) { - std::string fname(libfiles[i].substr(4)); + fout1 << "HEADERS += "; + for (const std::string &libfile : libfiles) { + std::string fname(libfile.substr(4)); if (fname.find(".cpp") == std::string::npos) continue; // shouldn't happen fname.erase(fname.find(".cpp")); - fout1 << std::string(11, ' ') << "$${PWD}/" << fname << ".h"; - if (i + 1 < libfiles.size()) - fout1 << " \\\n"; + fout1 << "$${PWD}/" << fname << ".h"; + if (libfile != libfiles.back()) + fout1 << " \\\n" << std::string(11, ' '); } fout1 << "\n\nSOURCES += "; - for (unsigned int i = 0; i < libfiles.size(); ++i) { - fout1 << "$${PWD}/" << libfiles[i].substr(4); - if (i < libfiles.size() - 1) + for (const std::string &libfile : libfiles) { + fout1 << "$${PWD}/" << libfile.substr(4); + if (libfile != libfiles.back()) fout1 << " \\\n" << std::string(11, ' '); } fout1 << "\n"; @@ -173,13 +185,13 @@ int main(int argc, char **argv) fout1 << "# no manual edits - this file is autogenerated by dmake\n\n"; fout1 << "INCLUDEPATH += ../externals/tinyxml\n"; fout1 << "\n\nSOURCES += "; - for (unsigned int i = 0; i < testfiles.size(); ++i) { - const std::string filename(testfiles[i].substr(5)); + for (const std::string &testfile : testfiles) { + const std::string filename(testfile.substr(5)); // Include only files containing tests in this listing. // I.e. filenames beginning with "test". if (filename.compare(0, 4, "test") == 0) { fout1 << "$${BASEPATH}/" << filename; - if (i + 1 < testfiles.size()) + if (testfile != testfiles.back()) fout1 << " \\\n" << std::string(11, ' '); } } @@ -362,22 +374,10 @@ int main(int argc, char **argv) fout << "MAN_SOURCE=man/cppcheck.1.xml\n\n"; fout << "\n###### Object Files\n\n"; - fout << "LIBOBJ = " << objfile(libfiles[0]); - for (size_t i = 1; i < libfiles.size(); ++i) - fout << " \\\n" << std::string(14, ' ') << objfile(libfiles[i]); - fout << "\n\n"; - fout << "EXTOBJ = " << objfile(extfiles[0]); - for (size_t i = 1; i < extfiles.size(); ++i) - fout << " \\\n" << std::string(14, ' ') << objfile(extfiles[i]); - fout << "\n\n"; - fout << "CLIOBJ = " << objfile(clifiles[0]); - for (size_t i = 1; i < clifiles.size(); ++i) - fout << " \\\n" << std::string(14, ' ') << objfile(clifiles[i]); - fout << "\n\n"; - fout << "TESTOBJ = " << objfile(testfiles[0]); - for (size_t i = 1; i < testfiles.size(); ++i) - fout << " \\\n" << std::string(14, ' ') << objfile(testfiles[i]); - fout << "\n\n"; + fout << "LIBOBJ = " << objfiles(libfiles) << "\n\n"; + fout << "EXTOBJ = " << objfiles(extfiles) << "\n\n"; + fout << "CLIOBJ = " << objfiles(clifiles) << "\n\n"; + fout << "TESTOBJ = " << objfiles(testfiles) << "\n\n"; fout << ".PHONY: run-dmake tags\n\n"; fout << "\n###### Targets\n\n"; @@ -456,7 +456,7 @@ int main(int argc, char **argv) fout << "\txmllint --noout --relaxng cppcheck-errors.rng /tmp/errorlist.xml\n"; fout << "\txmllint --noout --relaxng cppcheck-errors.rng /tmp/example.xml\n"; fout << "\ncheckCWEEntries: /tmp/errorlist.xml\n"; - fout << "\t./tools/listErrorsWithoutCWE.py -F /tmp/errorlist.xml"; + fout << "\t./tools/listErrorsWithoutCWE.py -F /tmp/errorlist.xml\n"; fout << "\n###### Build\n\n";