//
// The LLVM Compiler Infrastructure
//
-// This file was developed by Reid Spencer and is distributed under the
-// University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
#define LLVM_LINKER_H
#include "llvm/System/Path.h"
-#include <vector>
#include <memory>
+#include <vector>
namespace llvm {
class Module;
+class LLVMContext;
/// This class provides the core functionality of linking in LLVM. It retains a
/// Module object which is the composite of the modules and libraries linked
/// linker.
enum ControlFlags {
Verbose = 1, ///< Print to std::cerr what steps the linker is taking
- QuietWarnings = 2, ///< Don't print errors and warnings to std::cerr.
- QuietErrors = 4 ///< Indicate that this link is for a native executable
+ QuietWarnings = 2, ///< Don't print warnings to std::cerr.
+ QuietErrors = 4 ///< Don't print errors to std::cerr.
};
/// @}
Linker(
const std::string& progname, ///< name of tool running linker
const std::string& modulename, ///< name of linker's end-result module
+ LLVMContext& C, ///< Context for global info
unsigned Flags = 0 ///< ControlFlags (one or more |'d together)
);
/// @name Data
/// @{
private:
+ LLVMContext& Context; ///< The context for global information
Module* Composite; ///< The composite module linked together
std::vector<sys::Path> LibPaths; ///< The library search paths
unsigned Flags; ///< Flags to control optional behavior.