From 41c34658129091ae9982d8919176fb6ff3e5a6ac Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 11 Mar 2002 17:49:53 +0000 Subject: [PATCH] * Implement linking to libraries * Pass arguments to program through shell script git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1851 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/gccld/gccld.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp index cde23f9d28f..c2aa8379a11 100644 --- a/tools/gccld/gccld.cpp +++ b/tools/gccld/gccld.cpp @@ -22,6 +22,7 @@ #include "Support/CommandLine.h" #include #include +#include #include // For FileExists #include @@ -86,8 +87,18 @@ int main(int argc, char **argv) { unsigned BaseArg = 0; std::string ErrorMessage; - if (!Libraries.empty()) - cerr << "LLVM Linker Warning: Linking to libraries is unimplemented!\n"; + if (!Libraries.empty()) { + // Sort libraries list... + sort(Libraries.begin(), Libraries.end()); + + // Remove duplicate libraries entries... + Libraries.erase(unique(Libraries.begin(), Libraries.end()), + Libraries.end()); + + // Add all of the libraries to the end of the link line... + for (unsigned i = 0; i < Libraries.size(); ++i) + InputFilenames.push_back("lib" + Libraries[i] + ".bc"); + } std::auto_ptr Composite(LoadFile(InputFilenames[BaseArg])); if (Composite.get() == 0) return 1; @@ -121,7 +132,7 @@ int main(int argc, char **argv) { cerr << "Error openeing '" << OutputFilename << "' for writing!\n"; return 1; } - Out2 << "#!/bin/sh\nlli -q $0.bc\n"; + Out2 << "#!/bin/sh\nlli -q $0.bc $*\n"; Out2.close(); // Make the script executable...