| //===- 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 |