10e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar//===--- DependencyOutputOptions.h ------------------------------*- C++ -*-===//
20e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar//
30e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar//                     The LLVM Compiler Infrastructure
40e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar//
50e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar// This file is distributed under the University of Illinois Open Source
60e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar// License. See LICENSE.TXT for details.
70e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar//
80e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar//===----------------------------------------------------------------------===//
90e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar
100e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar#ifndef LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H
110e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar#define LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H
120e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar
13a61066310d4544d6343154eb3f4448fec0b15420Douglas Gregor#include <string>
140e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar#include <vector>
150e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar
160e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbarnamespace clang {
170e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar
180e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar/// DependencyOutputOptions - Options for controlling the compiler dependency
190e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar/// file generation.
200e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbarclass DependencyOutputOptions {
210e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbarpublic:
220e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar  unsigned IncludeSystemHeaders : 1; ///< Include system header dependencies.
23b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar  unsigned ShowHeaderIncludes : 1;   ///< Show header inclusions (-H).
240e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar  unsigned UsePhonyTargets : 1;      ///< Include phony targets for each
250e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar                                     /// dependency, which can avoid some 'make'
260e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar                                     /// problems.
27bb52786da8d055568eef6e5694288c1258bc8c2aPeter Collingbourne  unsigned AddMissingHeaderDeps : 1; ///< Add missing headers to dependency list
28708002ede3938256a6223d153a0c040f7a40f5ccHans Wennborg  unsigned PrintShowIncludes : 1; ///< Print cl.exe style /showIncludes info.
29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  unsigned IncludeModuleFiles : 1; ///< Include module file dependencies.
30c69a181049ab52da29f8f69316a34c90c3ea3b8eDouglas Gregor
31b17cc9e904c277b97cc4d57227122acd8d46ed36Nick Lewycky  /// The file to write dependency output to.
320e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar  std::string OutputFile;
330e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar
34b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar  /// The file to write header include output to. This is orthogonal to
35b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar  /// ShowHeaderIncludes (-H) and will include headers mentioned in the
36b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar  /// predefines buffer. If the output file is "-", output will be sent to
37b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar  /// stderr.
38b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar  std::string HeaderIncludeOutputFile;
39b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar
400e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar  /// A list of names to use as the targets in the dependency file; this list
410e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar  /// must contain at least one entry.
420e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar  std::vector<std::string> Targets;
430e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar
44c69a181049ab52da29f8f69316a34c90c3ea3b8eDouglas Gregor  /// \brief The file to write GraphViz-formatted header dependencies to.
45773303a505c23d73da624f1e6abcf41a393dad2bDouglas Gregor  std::string DOTOutputFile;
46ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
47ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  /// \brief The directory to copy module dependencies to when collecting them.
48ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  std::string ModuleDependencyOutputDir;
49ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
500e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbarpublic:
510e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar  DependencyOutputOptions() {
520e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar    IncludeSystemHeaders = 0;
53eef63e0997e0f6d6436736ea919b851cfe34955aDaniel Dunbar    ShowHeaderIncludes = 0;
540e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar    UsePhonyTargets = 0;
55bb52786da8d055568eef6e5694288c1258bc8c2aPeter Collingbourne    AddMissingHeaderDeps = 0;
56708002ede3938256a6223d153a0c040f7a40f5ccHans Wennborg    PrintShowIncludes = 0;
57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    IncludeModuleFiles = 0;
580e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar  }
590e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar};
600e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar
610e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar}  // end namespace clang
620e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar
630e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar#endif
64