|  | //===- tools/dsymutil/LinkUtils.h - Dwarf linker utilities ------*- C++ -*-===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef LLVM_TOOLS_DSYMUTIL_LINKOPTIONS_H | 
|  | #define LLVM_TOOLS_DSYMUTIL_LINKOPTIONS_H | 
|  |  | 
|  | #include "llvm/ADT/Twine.h" | 
|  | #include "llvm/Support/WithColor.h" | 
|  | #include <string> | 
|  |  | 
|  | namespace llvm { | 
|  | namespace dsymutil { | 
|  |  | 
|  | enum class OutputFileType { | 
|  | Object, | 
|  | Assembly, | 
|  | }; | 
|  |  | 
|  | /// The kind of accelerator tables we should emit. | 
|  | enum class AccelTableKind { | 
|  | Apple,   ///< .apple_names, .apple_namespaces, .apple_types, .apple_objc. | 
|  | Dwarf,   ///< DWARF v5 .debug_names. | 
|  | Default, ///< Dwarf for DWARF5 or later, Apple otherwise. | 
|  | }; | 
|  |  | 
|  | struct LinkOptions { | 
|  | /// Verbosity | 
|  | bool Verbose = false; | 
|  |  | 
|  | /// Skip emitting output | 
|  | bool NoOutput = false; | 
|  |  | 
|  | /// Do not unique types according to ODR | 
|  | bool NoODR = false; | 
|  |  | 
|  | /// Update | 
|  | bool Update = false; | 
|  |  | 
|  | /// Minimize | 
|  | bool Minimize = false; | 
|  |  | 
|  | /// Do not check swiftmodule timestamp | 
|  | bool NoTimestamp = false; | 
|  |  | 
|  | /// Number of threads. | 
|  | unsigned Threads = 1; | 
|  |  | 
|  | // Output file type. | 
|  | OutputFileType FileType = OutputFileType::Object; | 
|  |  | 
|  | /// The accelerator table kind | 
|  | AccelTableKind TheAccelTableKind; | 
|  |  | 
|  | /// -oso-prepend-path | 
|  | std::string PrependPath; | 
|  |  | 
|  | LinkOptions() = default; | 
|  | }; | 
|  |  | 
|  | inline void warn(Twine Warning, Twine Context = {}) { | 
|  | WithColor::warning() << Warning + "\n"; | 
|  | if (!Context.isTriviallyEmpty()) | 
|  | WithColor::note() << Twine("while processing ") + Context + "\n"; | 
|  | } | 
|  |  | 
|  | inline bool error(Twine Error, Twine Context = {}) { | 
|  | WithColor::error() << Error + "\n"; | 
|  | if (!Context.isTriviallyEmpty()) | 
|  | WithColor::note() << Twine("while processing ") + Context + "\n"; | 
|  | return false; | 
|  | } | 
|  |  | 
|  | } // end namespace dsymutil | 
|  | } // end namespace llvm | 
|  |  | 
|  | #endif // LLVM_TOOLS_DSYMUTIL_LINKOPTIONS_H |