//===-- CompilerInvocation.h - Compiler Invocation Helper Data --*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_FRONTEND_COMPILERINVOCATION_H_ #define LLVM_CLANG_FRONTEND_COMPILERINVOCATION_H_ #include "clang/Basic/LangOptions.h" #include "clang/Frontend/CompileOptions.h" #include "clang/Frontend/DiagnosticOptions.h" #include "clang/Frontend/HeaderSearchOptions.h" #include "clang/Frontend/PreprocessorOptions.h" #include "llvm/ADT/StringMap.h" #include namespace clang { /// CompilerInvocation - Helper class for holding the data necessary to invoke /// the compiler. /// /// This class is designed to represent an abstract "invocation" of the /// compiler, including data such as the include paths, the code generation /// options, the warning flags, and so on. class CompilerInvocation { /// Options controlling IRgen and the backend. CompileOptions CompileOpts; /// Options controlling the diagnostic engine. DiagnosticOptions DiagOpts; /// Options controlling the #include directive. HeaderSearchOptions HeaderSearchOpts; /// Options controlling the language variant. LangOptions LangOpts; /// Options controlling the preprocessor (aside from #include handling). PreprocessorOptions PreprocessorOpts; /// The location for the output file. This is optional only for compiler /// invocations which have no output. std::string OutputFile; /// Set of target-specific code generation features to enable/disable. llvm::StringMap TargetFeatures; public: CompilerInvocation() {} /// @name Invidual Options /// @{ std::string &getOutputFile() { return OutputFile; } const std::string &getOutputFile() const { return OutputFile; } llvm::StringMap &getTargetFeatures() { return TargetFeatures; } const llvm::StringMap &getTargetFeatures() const { return TargetFeatures; } /// @} /// @name Option Subgroups /// @{ CompileOptions &getCompileOpts() { return CompileOpts; } const CompileOptions &getCompileOpts() const { return CompileOpts; } DiagnosticOptions &getDiagnosticOpts() { return DiagOpts; } const DiagnosticOptions &getDiagnosticOpts() const { return DiagOpts; } HeaderSearchOptions &getHeaderSearchOpts() { return HeaderSearchOpts; } const HeaderSearchOptions &getHeaderSearchOpts() const { return HeaderSearchOpts; } LangOptions &getLangOpts() { return LangOpts; } const LangOptions &getLangOpts() const { return LangOpts; } PreprocessorOptions &getPreprocessorOpts() { return PreprocessorOpts; } const PreprocessorOptions &getPreprocessorOpts() const { return PreprocessorOpts; } /// @} }; } // end namespace clang #endif