add(*arg);
}
- llvm_args.as_imm_buf(|p, len| {
- llvm::LLVMRustSetLLVMOptions(len as c_int, p);
- })
+ llvm::LLVMRustSetLLVMOptions(llvm_args.len() as c_int, llvm_args.as_ptr());
}
unsafe fn populate_llvm_passes(fpm: lib::llvm::PassManagerRef,
*/
pub fn build_link_meta(sess: Session,
- c: &ast::Crate,
+ attrs: &[ast::Attribute],
output: &Path,
symbol_hasher: &mut Sha256)
-> LinkMeta {
truncated_hash_result(symbol_hasher).to_managed()
}
- let pkgid = match attr::find_pkgid(c.attrs) {
+ let pkgid = match attr::find_pkgid(attrs) {
None => {
let stem = session::expect(
sess,
}
}
-fn link_binary_output(sess: Session,
- trans: &CrateTranslation,
- output: session::OutputStyle,
- obj_filename: &Path,
- out_filename: &Path,
- lm: &LinkMeta) -> Path {
+pub fn filename_for_input(sess: &Session, output: session::OutputStyle, lm: &LinkMeta,
+ out_filename: &Path) -> Path {
let libname = output_lib_filename(lm);
- let out_filename = match output {
+ match output {
session::OutputRlib => {
out_filename.with_filename(format!("lib{}.rlib", libname))
}
out_filename.with_filename(format!("lib{}.a", libname))
}
session::OutputExecutable => out_filename.clone(),
- };
+ }
+
+}
+
+fn link_binary_output(sess: Session,
+ trans: &CrateTranslation,
+ output: session::OutputStyle,
+ obj_filename: &Path,
+ out_filename: &Path,
+ lm: &LinkMeta) -> Path {
+ let out_filename = filename_for_input(&sess, output, lm, out_filename);
// Make sure the output and obj_filename are both writeable.
// Mac, FreeBSD, and Windows system linkers check this already --