123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #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
|