Auto merge of #38426 - vadimcn:nobundle, r=alexcrichton
Implement kind="static-nobundle" (RFC 1717) This implements the "static-nobundle" library kind (last item from #37403). Rustc handles "static-nobundle" libs very similarly to dylibs, except that on Windows, uses of their symbols do not get marked with "dllimport". Which is the whole point of this feature.
This commit is contained in:
commit
ea7a6486a2
13 changed files with 148 additions and 5 deletions
|
|
@ -47,7 +47,7 @@ use rustc_back::target::Target;
|
|||
use hir;
|
||||
use rustc_back::PanicStrategy;
|
||||
|
||||
pub use self::NativeLibraryKind::{NativeStatic, NativeFramework, NativeUnknown};
|
||||
pub use self::NativeLibraryKind::*;
|
||||
|
||||
// lonely orphan structs and enums looking for a better home
|
||||
|
||||
|
|
@ -123,6 +123,7 @@ pub enum LinkagePreference {
|
|||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable)]
|
||||
pub enum NativeLibraryKind {
|
||||
NativeStatic, // native static library (.a archive)
|
||||
NativeStaticNobundle, // native static library, which doesn't get bundled into .rlibs
|
||||
NativeFramework, // OSX-specific
|
||||
NativeUnknown, // default way to specify a dynamic library
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1476,12 +1476,17 @@ pub fn build_session_options_and_crate_config(matches: &getopts::Matches)
|
|||
(Some(name), "dylib") => (name, cstore::NativeUnknown),
|
||||
(Some(name), "framework") => (name, cstore::NativeFramework),
|
||||
(Some(name), "static") => (name, cstore::NativeStatic),
|
||||
(Some(name), "static-nobundle") => (name, cstore::NativeStaticNobundle),
|
||||
(_, s) => {
|
||||
early_error(error_format, &format!("unknown library kind `{}`, expected \
|
||||
one of dylib, framework, or static",
|
||||
s));
|
||||
}
|
||||
};
|
||||
if kind == cstore::NativeStaticNobundle && !nightly_options::is_nightly_build() {
|
||||
early_error(error_format, &format!("the library kind 'static-nobundle' is only \
|
||||
accepted on the nightly compiler"));
|
||||
}
|
||||
let mut name_parts = name.splitn(2, ':');
|
||||
let name = name_parts.next().unwrap();
|
||||
let new_name = name_parts.next();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue