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