summaryrefslogtreecommitdiff
path: root/src/trans/codegen_c.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2017-01-15 08:04:37 +0800
committerJohn Hodge <tpg@mutabah.net>2017-01-15 08:04:37 +0800
commit81e0a8ab53625e8138b274fc8c437bb11ad0c4c7 (patch)
treeb8fb32fc1825501754e915445ec8062a0855aa91 /src/trans/codegen_c.cpp
parent363b8f329e306710d7b78376ab4774c9d3c232fa (diff)
downloadmrust-81e0a8ab53625e8138b274fc8c437bb11ad0c4c7.tar.gz
Trans - Use #[link(name)] attributes
Diffstat (limited to 'src/trans/codegen_c.cpp')
-rw-r--r--src/trans/codegen_c.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp
index c5e99987..0624ee62 100644
--- a/src/trans/codegen_c.cpp
+++ b/src/trans/codegen_c.cpp
@@ -108,7 +108,7 @@ namespace {
}
m_of.flush();
-
+
// Execute $CC with the required libraries
::std::vector<::std::string> tmp;
::std::vector<const char*> args;
@@ -125,8 +125,17 @@ namespace {
tmp.push_back(crate.second.m_filename + ".o");
args.push_back(tmp.back().c_str());
}
- args.push_back("-lm");
- args.push_back("-ldl");
+ for(const auto& lib : m_crate.m_ext_libs) {
+ ASSERT_BUG(Span(), lib.name != "", "");
+ args.push_back("-l"); args.push_back(lib.name.c_str());
+ }
+ for( const auto& crate : m_crate.m_ext_crates )
+ {
+ for(const auto& lib : crate.second.m_data->m_ext_libs) {
+ ASSERT_BUG(Span(), lib.name != "", "Empty lib from " << crate.first);
+ args.push_back("-l"); args.push_back(lib.name.c_str());
+ }
+ }
args.push_back("-z"); args.push_back("muldefs");
}
else
@@ -139,6 +148,7 @@ namespace {
{
cmd_ss << "\"" << FmtEscaped(arg) << "\" ";
}
+ DEBUG("- " << cmd_ss.str());
if( system(cmd_ss.str().c_str()) )
{
abort();