mv compiler to compiler/
This commit is contained in:
parent
db534b3ac2
commit
9e5f7d5631
1686 changed files with 941 additions and 1051 deletions
56
compiler/rustc_codegen_ssa/src/back/archive.rs
Normal file
56
compiler/rustc_codegen_ssa/src/back/archive.rs
Normal file
|
@ -0,0 +1,56 @@
|
|||
use rustc_session::Session;
|
||||
use rustc_span::symbol::Symbol;
|
||||
|
||||
use std::io;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
pub fn find_library(name: Symbol, search_paths: &[PathBuf], sess: &Session) -> PathBuf {
|
||||
// On Windows, static libraries sometimes show up as libfoo.a and other
|
||||
// times show up as foo.lib
|
||||
let oslibname = format!(
|
||||
"{}{}{}",
|
||||
sess.target.target.options.staticlib_prefix,
|
||||
name,
|
||||
sess.target.target.options.staticlib_suffix
|
||||
);
|
||||
let unixlibname = format!("lib{}.a", name);
|
||||
|
||||
for path in search_paths {
|
||||
debug!("looking for {} inside {:?}", name, path);
|
||||
let test = path.join(&oslibname);
|
||||
if test.exists() {
|
||||
return test;
|
||||
}
|
||||
if oslibname != unixlibname {
|
||||
let test = path.join(&unixlibname);
|
||||
if test.exists() {
|
||||
return test;
|
||||
}
|
||||
}
|
||||
}
|
||||
sess.fatal(&format!(
|
||||
"could not find native static library `{}`, \
|
||||
perhaps an -L flag is missing?",
|
||||
name
|
||||
));
|
||||
}
|
||||
|
||||
pub trait ArchiveBuilder<'a> {
|
||||
fn new(sess: &'a Session, output: &Path, input: Option<&Path>) -> Self;
|
||||
|
||||
fn add_file(&mut self, path: &Path);
|
||||
fn remove_file(&mut self, name: &str);
|
||||
fn src_files(&mut self) -> Vec<String>;
|
||||
|
||||
fn add_rlib(
|
||||
&mut self,
|
||||
path: &Path,
|
||||
name: &str,
|
||||
lto: bool,
|
||||
skip_objects: bool,
|
||||
) -> io::Result<()>;
|
||||
fn add_native_library(&mut self, name: Symbol);
|
||||
fn update_symbols(&mut self);
|
||||
|
||||
fn build(self);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue