From 0faa6c9c93804c4ce0e6fc8e5a6d5cfbc85f01da Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 22 Jul 2017 18:49:38 -0400 Subject: scaninc: read c includes Now editing .h files triggers a rebuild. Also allow .h and .inc files to be passed as a main argument. src/ and include/ are temporarily hardcoded. --- tools/scaninc/scaninc.cpp | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) (limited to 'tools/scaninc/scaninc.cpp') diff --git a/tools/scaninc/scaninc.cpp b/tools/scaninc/scaninc.cpp index b6f7ba767..10cb06eee 100644 --- a/tools/scaninc/scaninc.cpp +++ b/tools/scaninc/scaninc.cpp @@ -55,16 +55,45 @@ int main(int argc, char **argv) std::string extension = initialPath.substr(pos + 1); - if (extension == "c") + std::string srcDir("src/"); + std::string includeDir("include/"); + + if (extension == "c" || extension == "h") { - CFile file(initialPath); + filesToProcess.push(initialPath); + + while (!filesToProcess.empty()) + { + CFile file(filesToProcess.top()); + filesToProcess.pop(); - file.FindIncbins(); - dependencies = file.GetIncbins(); + file.FindIncbins(); + for (auto incbin : file.GetIncbins()) + { + dependencies.insert(incbin); + } + for (auto include : file.GetIncludes()) + { + std::string path(srcDir + include); + if (!CanOpenFile(path)) + { + path = includeDir + include; + } + + if (CanOpenFile(path)) + { + bool inserted = dependencies.insert(path).second; + if (inserted) + { + filesToProcess.push(path); + } + } + } + } } - else if (extension == "s") + else if (extension == "s" || extension == "inc") { - filesToProcess.push(std::string(argv[1])); + filesToProcess.push(initialPath); while (!filesToProcess.empty()) { -- cgit v1.2.3