1 //===--- ArgumentsAdjusters.cpp - Command line arguments adjuster ---------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file contains definitions of classes which implement ArgumentsAdjuster 11 // interface. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #include "clang/Tooling/ArgumentsAdjusters.h" 16 #include "clang/Basic/LLVM.h" 17 #include "llvm/ADT/StringRef.h" 18 19 namespace clang { 20 namespace tooling { 21 22 void ArgumentsAdjuster::anchor() { 23 } 24 25 /// Add -fsyntax-only option to the commnand line arguments. 26 CommandLineArguments 27 ClangSyntaxOnlyAdjuster::Adjust(const CommandLineArguments &Args) { 28 CommandLineArguments AdjustedArgs; 29 for (size_t i = 0, e = Args.size(); i != e; ++i) { 30 StringRef Arg = Args[i]; 31 // FIXME: Remove options that generate output. 32 if (!Arg.startswith("-fcolor-diagnostics") && 33 !Arg.startswith("-fdiagnostics-color")) 34 AdjustedArgs.push_back(Args[i]); 35 } 36 AdjustedArgs.push_back("-fsyntax-only"); 37 return AdjustedArgs; 38 } 39 40 CommandLineArguments 41 ClangStripOutputAdjuster::Adjust(const CommandLineArguments &Args) { 42 CommandLineArguments AdjustedArgs; 43 for (size_t i = 0, e = Args.size(); i < e; ++i) { 44 StringRef Arg = Args[i]; 45 if(!Arg.startswith("-o")) 46 AdjustedArgs.push_back(Args[i]); 47 48 if(Arg == "-o") { 49 // Output is specified as -o foo. Skip the next argument also. 50 ++i; 51 } 52 // Else, the output is specified as -ofoo. Just do nothing. 53 } 54 return AdjustedArgs; 55 } 56 57 } // end namespace tooling 58 } // end namespace clang 59 60