Home | History | Annotate | Download | only in Frontend
      1 //===--- DependencyOutputOptions.h ------------------------------*- C++ -*-===//
      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 #ifndef LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H
     11 #define LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H
     12 
     13 #include <string>
     14 #include <vector>
     15 
     16 namespace clang {
     17 
     18 /// DependencyOutputFormat - Format for the compiler dependency file.
     19 enum class DependencyOutputFormat { Make, NMake };
     20 
     21 /// DependencyOutputOptions - Options for controlling the compiler dependency
     22 /// file generation.
     23 class DependencyOutputOptions {
     24 public:
     25   unsigned IncludeSystemHeaders : 1; ///< Include system header dependencies.
     26   unsigned ShowHeaderIncludes : 1;   ///< Show header inclusions (-H).
     27   unsigned UsePhonyTargets : 1;      ///< Include phony targets for each
     28                                      /// dependency, which can avoid some 'make'
     29                                      /// problems.
     30   unsigned AddMissingHeaderDeps : 1; ///< Add missing headers to dependency list
     31   unsigned PrintShowIncludes : 1; ///< Print cl.exe style /showIncludes info.
     32   unsigned IncludeModuleFiles : 1; ///< Include module file dependencies.
     33 
     34   /// The format for the dependency file.
     35   DependencyOutputFormat OutputFormat;
     36 
     37   /// The file to write dependency output to.
     38   std::string OutputFile;
     39 
     40   /// The file to write header include output to. This is orthogonal to
     41   /// ShowHeaderIncludes (-H) and will include headers mentioned in the
     42   /// predefines buffer. If the output file is "-", output will be sent to
     43   /// stderr.
     44   std::string HeaderIncludeOutputFile;
     45 
     46   /// A list of names to use as the targets in the dependency file; this list
     47   /// must contain at least one entry.
     48   std::vector<std::string> Targets;
     49 
     50   /// A list of filenames to be used as extra dependencies for every target.
     51   std::vector<std::string> ExtraDeps;
     52 
     53   /// In /showIncludes mode, pretend the main TU is a header with this name.
     54   std::string ShowIncludesPretendHeader;
     55 
     56   /// \brief The file to write GraphViz-formatted header dependencies to.
     57   std::string DOTOutputFile;
     58 
     59   /// \brief The directory to copy module dependencies to when collecting them.
     60   std::string ModuleDependencyOutputDir;
     61 
     62 public:
     63   DependencyOutputOptions() {
     64     IncludeSystemHeaders = 0;
     65     ShowHeaderIncludes = 0;
     66     UsePhonyTargets = 0;
     67     AddMissingHeaderDeps = 0;
     68     PrintShowIncludes = 0;
     69     IncludeModuleFiles = 0;
     70     OutputFormat = DependencyOutputFormat::Make;
     71   }
     72 };
     73 
     74 }  // end namespace clang
     75 
     76 #endif
     77