100 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
//===- tools/dsymutil/LinkUtils.h - Dwarf linker utilities ------*- 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_TOOLS_DSYMUTIL_LINKOPTIONS_H
 | 
						|
#define LLVM_TOOLS_DSYMUTIL_LINKOPTIONS_H
 | 
						|
 | 
						|
#include "SymbolMap.h"
 | 
						|
 | 
						|
#include "llvm/ADT/Twine.h"
 | 
						|
#include "llvm/Remarks/RemarkFormat.h"
 | 
						|
#include "llvm/Support/WithColor.h"
 | 
						|
 | 
						|
#include "llvm/DWARFLinker/DWARFLinker.h"
 | 
						|
#include "llvm/DWARFLinker/DWARFStreamer.h"
 | 
						|
#include <string>
 | 
						|
 | 
						|
namespace llvm {
 | 
						|
namespace dsymutil {
 | 
						|
 | 
						|
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;
 | 
						|
 | 
						|
  /// The -object-prefix-map.
 | 
						|
  std::map<std::string, std::string> ObjectPrefixMap;
 | 
						|
 | 
						|
  /// The Resources directory in the .dSYM bundle.
 | 
						|
  Optional<std::string> ResourceDir;
 | 
						|
 | 
						|
  /// Symbol map translator.
 | 
						|
  SymbolMapTranslator Translator;
 | 
						|
 | 
						|
  /// Fields used for linking and placing remarks into the .dSYM bundle.
 | 
						|
  /// @{
 | 
						|
 | 
						|
  /// Number of debug maps processed in total.
 | 
						|
  unsigned NumDebugMaps = 0;
 | 
						|
 | 
						|
  /// -remarks-prepend-path: prepend a path to all the external remark file
 | 
						|
  /// paths found in remark metadata.
 | 
						|
  std::string RemarksPrependPath;
 | 
						|
 | 
						|
  /// The output format of the remarks.
 | 
						|
  remarks::Format RemarksFormat = remarks::Format::Bitstream;
 | 
						|
 | 
						|
  /// @}
 | 
						|
 | 
						|
  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
 |