diff options
author | John Thompson <John.Thompson.JTSoftware@gmail.com> | 2015-02-12 16:22:09 +0000 |
---|---|---|
committer | John Thompson <John.Thompson.JTSoftware@gmail.com> | 2015-02-12 16:22:09 +0000 |
commit | 469bbc002a8fa89fd3616a13fcfdf4e38acfc926 (patch) | |
tree | 9177ed7fb66c61d3a074af40aca81b2ff698d2ca | |
parent | 71e1eb5ab490347d0ac3ac65cec203d4a272ff7b (diff) | |
download | bcm5719-llvm-469bbc002a8fa89fd3616a13fcfdf4e38acfc926.tar.gz bcm5719-llvm-469bbc002a8fa89fd3616a13fcfdf4e38acfc926.zip |
Added support for multiple header list files, as a precursor for when we need to load multiple module maps.
llvm-svn: 228935
-rw-r--r-- | clang-tools-extra/docs/ModularizeUsage.rst | 3 | ||||
-rw-r--r-- | clang-tools-extra/modularize/Modularize.cpp | 22 | ||||
-rw-r--r-- | clang-tools-extra/test/modularize/NoProblemsList.modularize | 2 |
3 files changed, 17 insertions, 10 deletions
diff --git a/clang-tools-extra/docs/ModularizeUsage.rst b/clang-tools-extra/docs/ModularizeUsage.rst index 6ac5d53d0bd..90b2d6a8d0f 100644 --- a/clang-tools-extra/docs/ModularizeUsage.rst +++ b/clang-tools-extra/docs/ModularizeUsage.rst @@ -2,7 +2,8 @@ Modularize Usage ================ -``modularize [<modularize-options>] <include-files-list> [<front-end-options>...]`` +``modularize [<modularize-options>] <include-files-list>[,<include-files-list>]* +[<front-end-options>...]`` ``<modularize-options>`` is a place-holder for options specific to modularize, which are described below in diff --git a/clang-tools-extra/modularize/Modularize.cpp b/clang-tools-extra/modularize/Modularize.cpp index 3504b75560b..babade8f999 100644 --- a/clang-tools-extra/modularize/Modularize.cpp +++ b/clang-tools-extra/modularize/Modularize.cpp @@ -178,9 +178,10 @@ using namespace llvm::opt; using namespace Modularize; // Option to specify a file name for a list of header files to check. -cl::opt<std::string> -ListFileName(cl::Positional, - cl::desc("<name of file containing list of headers to check>")); +cl::list<std::string>
+ListFileNames(cl::Positional, cl::value_desc("list"),
+ cl::desc("<list of one or more header list files>"),
+ cl::CommaSeparated);
// Collect all other arguments, which will be passed to the front end. cl::list<std::string> @@ -700,7 +701,7 @@ int main(int Argc, const char **Argv) { cl::ParseCommandLineOptions(Argc, Argv, "modularize.\n"); // No go if we have no header list file. - if (ListFileName.size() == 0) { + if (ListFileNames.size() == 0) { cl::PrintHelpMessage(); return 1; } @@ -708,11 +709,14 @@ int main(int Argc, const char **Argv) { // Get header file names and dependencies. SmallVector<std::string, 32> Headers; DependencyMap Dependencies; - if (std::error_code EC = getHeaderFileNames(Headers, Dependencies, - ListFileName, HeaderPrefix)) { - errs() << Argv[0] << ": error: Unable to get header list '" << ListFileName - << "': " << EC.message() << '\n'; - return 1; + typedef std::vector<std::string>::iterator Iter; + for (Iter I = ListFileNames.begin(), E = ListFileNames.end(); I != E; ++I) { + if (std::error_code EC = getHeaderFileNames(Headers, Dependencies, + *I, HeaderPrefix)) { + errs() << Argv[0] << ": error: Unable to get header list '" << *I + << "': " << EC.message() << '\n'; + return 1; + } } // If we are in assistant mode, output the module map and quit. diff --git a/clang-tools-extra/test/modularize/NoProblemsList.modularize b/clang-tools-extra/test/modularize/NoProblemsList.modularize new file mode 100644 index 00000000000..ec5f4c9e5fc --- /dev/null +++ b/clang-tools-extra/test/modularize/NoProblemsList.modularize @@ -0,0 +1,2 @@ +# RUN: modularize NoProblems.modularize,NoProblemsAnonymous.modularize -x c++ +# RUN: modularize -prefix=%p NoProblems.modularize,NoProblemsAnonymous.modularize -x c++ |