1 //===- lib/Linker/LinkItems.cpp - Link LLVM objects and libraries ---------===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by Reid Spencer and is distributed under the
6 // University of Illinois Open Source License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file contains routines to handle linking together LLVM bytecode files,
11 // and to handle annoying things like static libraries.
13 //===----------------------------------------------------------------------===//
15 #include "llvm/Linker.h"
16 #include "llvm/Module.h"
20 // LinkItems - preserve link order for an arbitrary set of linkage items.
22 Linker::LinkInItems(const ItemList& Items) {
23 // For each linkage item ...
24 for (ItemList::const_iterator I = Items.begin(), E = Items.end();
27 // Link in the library suggested.
28 if (LinkInLibrary(I->first))
31 if (LinkInFile(sys::Path(I->first)))
36 // At this point we have processed all the link items provided to us. Since
37 // we have an aggregated module at this point, the dependent libraries in
38 // that module should also be aggregated with duplicates eliminated. This is
39 // now the time to process the dependent libraries to resolve any remaining
41 const Module::LibraryListType& DepLibs = Composite->getLibraries();
42 for (Module::LibraryListType::const_iterator I = DepLibs.begin(),
43 E = DepLibs.end(); I != E; ++I) {