1199482Srdivacky//===--- DependencyOutputOptions.h ------------------------------*- C++ -*-===//
2199482Srdivacky//
3199482Srdivacky//                     The LLVM Compiler Infrastructure
4199482Srdivacky//
5199482Srdivacky// This file is distributed under the University of Illinois Open Source
6199482Srdivacky// License. See LICENSE.TXT for details.
7199482Srdivacky//
8199482Srdivacky//===----------------------------------------------------------------------===//
9199482Srdivacky
10199482Srdivacky#ifndef LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H
11199482Srdivacky#define LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H
12199482Srdivacky
13199482Srdivacky#include <string>
14199482Srdivacky#include <vector>
15199482Srdivacky
16199482Srdivackynamespace clang {
17199482Srdivacky
18199482Srdivacky/// DependencyOutputOptions - Options for controlling the compiler dependency
19199482Srdivacky/// file generation.
20199482Srdivackyclass DependencyOutputOptions {
21199482Srdivackypublic:
22199482Srdivacky  unsigned IncludeSystemHeaders : 1; ///< Include system header dependencies.
23218893Sdim  unsigned ShowHeaderIncludes : 1;   ///< Show header inclusions (-H).
24199482Srdivacky  unsigned UsePhonyTargets : 1;      ///< Include phony targets for each
25199482Srdivacky                                     /// dependency, which can avoid some 'make'
26199482Srdivacky                                     /// problems.
27224145Sdim  unsigned AddMissingHeaderDeps : 1; ///< Add missing headers to dependency list
28263508Sdim  unsigned PrintShowIncludes : 1; ///< Print cl.exe style /showIncludes info.
29234353Sdim
30218893Sdim  /// The file to write dependency output to.
31199482Srdivacky  std::string OutputFile;
32199482Srdivacky
33218893Sdim  /// The file to write header include output to. This is orthogonal to
34218893Sdim  /// ShowHeaderIncludes (-H) and will include headers mentioned in the
35218893Sdim  /// predefines buffer. If the output file is "-", output will be sent to
36218893Sdim  /// stderr.
37218893Sdim  std::string HeaderIncludeOutputFile;
38218893Sdim
39199482Srdivacky  /// A list of names to use as the targets in the dependency file; this list
40199482Srdivacky  /// must contain at least one entry.
41199482Srdivacky  std::vector<std::string> Targets;
42199482Srdivacky
43234353Sdim  /// \brief The file to write GraphViz-formatted header dependencies to.
44234353Sdim  std::string DOTOutputFile;
45234353Sdim
46199482Srdivackypublic:
47199482Srdivacky  DependencyOutputOptions() {
48199482Srdivacky    IncludeSystemHeaders = 0;
49218893Sdim    ShowHeaderIncludes = 0;
50199482Srdivacky    UsePhonyTargets = 0;
51224145Sdim    AddMissingHeaderDeps = 0;
52263508Sdim    PrintShowIncludes = 0;
53199482Srdivacky  }
54199482Srdivacky};
55199482Srdivacky
56199482Srdivacky}  // end namespace clang
57199482Srdivacky
58199482Srdivacky#endif
59