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
16namespace clang {
17
18/// DependencyOutputOptions - Options for controlling the compiler dependency
19/// file generation.
20class DependencyOutputOptions {
21public:
22  unsigned IncludeSystemHeaders : 1; ///< Include system header dependencies.
23  unsigned ShowHeaderIncludes : 1;   ///< Show header inclusions (-H).
24  unsigned UsePhonyTargets : 1;      ///< Include phony targets for each
25                                     /// dependency, which can avoid some 'make'
26                                     /// problems.
27  unsigned AddMissingHeaderDeps : 1; ///< Add missing headers to dependency list
28  unsigned PrintShowIncludes : 1; ///< Print cl.exe style /showIncludes info.
29  unsigned IncludeModuleFiles : 1; ///< Include module file dependencies.
30
31  /// The file to write dependency output to.
32  std::string OutputFile;
33
34  /// The file to write header include output to. This is orthogonal to
35  /// ShowHeaderIncludes (-H) and will include headers mentioned in the
36  /// predefines buffer. If the output file is "-", output will be sent to
37  /// stderr.
38  std::string HeaderIncludeOutputFile;
39
40  /// A list of names to use as the targets in the dependency file; this list
41  /// must contain at least one entry.
42  std::vector<std::string> Targets;
43
44  /// \brief The file to write GraphViz-formatted header dependencies to.
45  std::string DOTOutputFile;
46
47  /// \brief The directory to copy module dependencies to when collecting them.
48  std::string ModuleDependencyOutputDir;
49
50public:
51  DependencyOutputOptions() {
52    IncludeSystemHeaders = 0;
53    ShowHeaderIncludes = 0;
54    UsePhonyTargets = 0;
55    AddMissingHeaderDeps = 0;
56    PrintShowIncludes = 0;
57    IncludeModuleFiles = 0;
58  }
59};
60
61}  // end namespace clang
62
63#endif
64