Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===--- DependencyOutputOptions.h ------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
 
9
#ifndef LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H
10
#define LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H
11
 
12
#include "clang/Basic/HeaderInclude.h"
13
#include <string>
14
#include <vector>
15
 
16
namespace clang {
17
 
18
/// ShowIncludesDestination - Destination for /showIncludes output.
19
enum class ShowIncludesDestination { None, Stdout, Stderr };
20
 
21
/// DependencyOutputFormat - Format for the compiler dependency file.
22
enum class DependencyOutputFormat { Make, NMake };
23
 
24
/// ExtraDepKind - The kind of extra dependency file.
25
enum ExtraDepKind {
26
  EDK_SanitizeIgnorelist,
27
  EDK_ProfileList,
28
  EDK_ModuleFile,
29
  EDK_DepFileEntry,
30
};
31
 
32
/// DependencyOutputOptions - Options for controlling the compiler dependency
33
/// file generation.
34
class DependencyOutputOptions {
35
public:
36
  unsigned IncludeSystemHeaders : 1; ///< Include system header dependencies.
37
  unsigned ShowHeaderIncludes : 1;   ///< Show header inclusions (-H).
38
  unsigned UsePhonyTargets : 1;      ///< Include phony targets for each
39
                                     /// dependency, which can avoid some 'make'
40
                                     /// problems.
41
  unsigned AddMissingHeaderDeps : 1; ///< Add missing headers to dependency list
42
  unsigned IncludeModuleFiles : 1; ///< Include module file dependencies.
43
  unsigned ShowSkippedHeaderIncludes : 1; ///< With ShowHeaderIncludes, show
44
                                          /// also includes that were skipped
45
                                          /// due to the "include guard
46
                                          /// optimization" or #pragma once.
47
 
48
  /// The format of header information.
49
  HeaderIncludeFormatKind HeaderIncludeFormat = HIFMT_Textual;
50
 
51
  /// Determine whether header information should be filtered.
52
  HeaderIncludeFilteringKind HeaderIncludeFiltering = HIFIL_None;
53
 
54
  /// Destination of cl.exe style /showIncludes info.
55
  ShowIncludesDestination ShowIncludesDest = ShowIncludesDestination::None;
56
 
57
  /// The format for the dependency file.
58
  DependencyOutputFormat OutputFormat = DependencyOutputFormat::Make;
59
 
60
  /// The file to write dependency output to.
61
  std::string OutputFile;
62
 
63
  /// The file to write header include output to. This is orthogonal to
64
  /// ShowHeaderIncludes (-H) and will include headers mentioned in the
65
  /// predefines buffer. If the output file is "-", output will be sent to
66
  /// stderr.
67
  std::string HeaderIncludeOutputFile;
68
 
69
  /// A list of names to use as the targets in the dependency file; this list
70
  /// must contain at least one entry.
71
  std::vector<std::string> Targets;
72
 
73
  /// A list of extra dependencies (filename and kind) to be used for every
74
  /// target.
75
  std::vector<std::pair<std::string, ExtraDepKind>> ExtraDeps;
76
 
77
  /// In /showIncludes mode, pretend the main TU is a header with this name.
78
  std::string ShowIncludesPretendHeader;
79
 
80
  /// The file to write GraphViz-formatted header dependencies to.
81
  std::string DOTOutputFile;
82
 
83
  /// The directory to copy module dependencies to when collecting them.
84
  std::string ModuleDependencyOutputDir;
85
 
86
public:
87
  DependencyOutputOptions()
88
      : IncludeSystemHeaders(0), ShowHeaderIncludes(0), UsePhonyTargets(0),
89
        AddMissingHeaderDeps(0), IncludeModuleFiles(0),
90
        ShowSkippedHeaderIncludes(0), HeaderIncludeFormat(HIFMT_Textual),
91
        HeaderIncludeFiltering(HIFIL_None) {}
92
};
93
 
94
}  // end namespace clang
95
 
96
#endif