From e7bbdd0af63d10a9cf7a1847a997f8327dca1bb3 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 26 Jan 2020 20:41:34 +0100 Subject: [PATCH] Allow logging the exact list of options passed to clang Since the options get splitted and not just passed as-is this can be useful for debugging. --- generator/main.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/generator/main.cpp b/generator/main.cpp index 7db89c8..d6cdb83 100644 --- a/generator/main.cpp +++ b/generator/main.cpp @@ -39,10 +39,11 @@ int main(int argc, char *argv[]) generatorsArg.setCombinable(true); ConfigValueArgument clangOptionsArg("clang-opt", '\0', "specifies arguments/options to be passed to Clang", { "option" }); clangOptionsArg.setRequiredValueCount(Argument::varValueCount); + ConfigValueArgument logClangOptions("log-clang-opt", '\0', "logs the options passed to Clang"); ConfigValueArgument errorResilientArg("error-resilient", '\0', "turns most errors into warnings"); HelpArgument helpArg(parser); NoColorArgument noColorArg; - generateArg.setSubArguments({ &inputFileArg, &outputFileArg, &generatorsArg, &clangOptionsArg, &errorResilientArg }); + generateArg.setSubArguments({ &inputFileArg, &outputFileArg, &generatorsArg, &clangOptionsArg, &logClangOptions, &errorResilientArg }); JsonSerializationCodeGenerator::Options jsonOptions; jsonOptions.appendTo(&generateArg); BinarySerializationCodeGenerator::Options binaryOptions; @@ -79,6 +80,12 @@ int main(int argc, char *argv[]) } } } + if (logClangOptions.isPresent()) { + cerr << Phrases::Info << "Options passed to clang:" << Phrases::End; + for (const auto &opt : clangOptions) { + cerr << opt << '\n'; + } + } // instantiate the code factory and add generators to it CodeFactory factory(parser.executable(), inputFileArg.values(0), clangOptions, *os);