Skip to content

Commit 529d488

Browse files
committed
Factor out NativeLibKind::Dylib from NativeLibKind::Unspecified
1 parent ee7a35a commit 529d488

File tree

6 files changed

+17
-9
lines changed

6 files changed

+17
-9
lines changed

src/librustc_codegen_ssa/back/link.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ fn link_rlib<'a, B: ArchiveBuilder<'a>>(
330330
match lib.kind {
331331
NativeLibKind::StaticBundle => {}
332332
NativeLibKind::StaticNoBundle
333+
| NativeLibKind::Dylib
333334
| NativeLibKind::Framework
334335
| NativeLibKind::RawDylib
335336
| NativeLibKind::Unspecified => continue,
@@ -866,7 +867,9 @@ fn print_native_static_libs(sess: &Session, all_native_libs: &[NativeLib]) {
866867
.filter_map(|lib| {
867868
let name = lib.name?;
868869
match lib.kind {
869-
NativeLibKind::StaticNoBundle | NativeLibKind::Unspecified => {
870+
NativeLibKind::StaticNoBundle
871+
| NativeLibKind::Dylib
872+
| NativeLibKind::Unspecified => {
870873
if sess.target.target.options.is_like_msvc {
871874
Some(format!("{}.lib", name))
872875
} else {
@@ -1648,7 +1651,7 @@ fn add_local_native_libraries(
16481651
None => continue,
16491652
};
16501653
match lib.kind {
1651-
NativeLibKind::Unspecified => cmd.link_dylib(name),
1654+
NativeLibKind::Dylib | NativeLibKind::Unspecified => cmd.link_dylib(name),
16521655
NativeLibKind::Framework => cmd.link_framework(name),
16531656
NativeLibKind::StaticNoBundle => cmd.link_staticlib(name),
16541657
NativeLibKind::StaticBundle => cmd.link_whole_staticlib(name, &search_path),
@@ -1984,7 +1987,7 @@ fn add_upstream_native_libraries(
19841987
continue;
19851988
}
19861989
match lib.kind {
1987-
NativeLibKind::Unspecified => cmd.link_dylib(name),
1990+
NativeLibKind::Dylib | NativeLibKind::Unspecified => cmd.link_dylib(name),
19881991
NativeLibKind::Framework => cmd.link_framework(name),
19891992
NativeLibKind::StaticNoBundle => {
19901993
// Link "static-nobundle" native libs only if the crate they originate from

src/librustc_codegen_ssa/base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -896,7 +896,7 @@ pub fn provide_both(providers: &mut Providers<'_>) {
896896
.native_libraries(krate)
897897
.iter()
898898
.filter(|lib| {
899-
if lib.kind != NativeLibKind::Unspecified {
899+
if !matches!(lib.kind, NativeLibKind::Dylib | NativeLibKind::Unspecified) {
900900
return false;
901901
}
902902
let cfg = match lib.cfg {

src/librustc_metadata/native_libs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ impl ItemLikeVisitor<'tcx> for Collector<'tcx> {
6767
lib.kind = match &*kind.as_str() {
6868
"static" => NativeLibKind::StaticBundle,
6969
"static-nobundle" => NativeLibKind::StaticNoBundle,
70-
"dylib" => NativeLibKind::Unspecified,
70+
"dylib" => NativeLibKind::Dylib,
7171
"framework" => NativeLibKind::Framework,
7272
"raw-dylib" => NativeLibKind::RawDylib,
7373
k => {

src/librustc_metadata/rmeta/decoder/cstore_impl.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,9 @@ pub fn provide(providers: &mut Providers<'_>) {
247247
// resolve! Does this work? Unsure! That's what the issue is about
248248
*providers = Providers {
249249
is_dllimport_foreign_item: |tcx, id| match tcx.native_library_kind(id) {
250-
Some(NativeLibKind::Unspecified | NativeLibKind::RawDylib) => true,
250+
Some(NativeLibKind::Dylib | NativeLibKind::RawDylib | NativeLibKind::Unspecified) => {
251+
true
252+
}
251253
_ => false,
252254
},
253255
is_statically_included_foreign_item: |tcx, id| match tcx.native_library_kind(id) {

src/librustc_session/config.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1463,7 +1463,7 @@ fn parse_libs(
14631463
let kind = parts.next().unwrap();
14641464
let (name, kind) = match (parts.next(), kind) {
14651465
(None, name) => (name, None),
1466-
(Some(name), "dylib") => (name, Some(NativeLibKind::Unspecified)),
1466+
(Some(name), "dylib") => (name, Some(NativeLibKind::Dylib)),
14671467
(Some(name), "framework") => (name, Some(NativeLibKind::Framework)),
14681468
(Some(name), "static") => (name, Some(NativeLibKind::StaticBundle)),
14691469
(Some(name), "static-nobundle") => (name, Some(NativeLibKind::StaticNoBundle)),

src/librustc_session/utils.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@ pub enum NativeLibKind {
1818
/// Static library (e.g. `libfoo.a` on Linux or `foo.lib` on Windows/MSVC) included
1919
/// when linking a final binary, but also included when archiving an rlib.
2020
StaticBundle,
21-
/// Windows dynamic library (`foo.dll`) without a corresponding import library.
21+
/// Dynamic library (e.g. `libfoo.so` on Linux)
22+
/// or an import library corresponding to a dynamic library (e.g. `foo.lib` on Windows/MSVC).
23+
Dylib,
24+
/// Dynamic library (e.g. `foo.dll` on Windows) without a corresponding import library.
2225
RawDylib,
2326
/// A macOS-specific kind of dynamic libraries.
2427
Framework,
25-
/// The library kind wasn't specified, dynamic linking is currently preferred.
28+
/// The library kind wasn't specified, `Dylib` is currently used as a default.
2629
Unspecified,
2730
}
2831

0 commit comments

Comments
 (0)