@@ -2,7 +2,7 @@ use std::collections::BTreeSet;
2
2
use std:: ffi:: OsString ;
3
3
use std:: fs:: { read, File , OpenOptions } ;
4
4
use std:: io:: { BufWriter , Write } ;
5
- use std:: ops:: Deref ;
5
+ use std:: ops:: { ControlFlow , Deref } ;
6
6
use std:: path:: { Path , PathBuf } ;
7
7
use std:: process:: { ExitStatus , Output , Stdio } ;
8
8
use std:: { env, fmt, fs, io, mem, str} ;
@@ -18,8 +18,8 @@ use rustc_data_structures::temp_dir::MaybeTempDir;
18
18
use rustc_errors:: { DiagCtxtHandle , ErrorGuaranteed , FatalError } ;
19
19
use rustc_fs_util:: { fix_windows_verbatim_for_gcc, try_canonicalize} ;
20
20
use rustc_hir:: def_id:: { CrateNum , LOCAL_CRATE } ;
21
- use rustc_metadata:: find_native_static_library;
22
21
use rustc_metadata:: fs:: { copy_to_stdout, emit_wrapper_file, METADATA_FILENAME } ;
22
+ use rustc_metadata:: { find_native_static_library, walk_native_lib_search_dirs} ;
23
23
use rustc_middle:: bug;
24
24
use rustc_middle:: middle:: debugger_visualizer:: DebuggerVisualizerFile ;
25
25
use rustc_middle:: middle:: dependency_format:: Linkage ;
@@ -2110,50 +2110,19 @@ fn add_library_search_dirs(
2110
2110
return ;
2111
2111
}
2112
2112
2113
- // Library search paths explicitly supplied by user (`-L` on the command line).
2114
- for search_path in sess. target_filesearch ( PathKind :: Native ) . cli_search_paths ( ) {
2115
- cmd. include_path ( & fix_windows_verbatim_for_gcc ( & search_path. dir ) ) ;
2116
- }
2117
- for search_path in sess. target_filesearch ( PathKind :: Framework ) . cli_search_paths ( ) {
2118
- // Contrary to the `-L` docs only framework-specific paths are considered here.
2119
- if search_path. kind != PathKind :: All {
2120
- cmd. framework_path ( & search_path. dir ) ;
2121
- }
2122
- }
2123
-
2124
- // The toolchain ships some native library components and self-contained linking was enabled.
2125
- // Add the self-contained library directory to search paths.
2126
- if self_contained_components. intersects (
2127
- LinkSelfContainedComponents :: LIBC
2128
- | LinkSelfContainedComponents :: UNWIND
2129
- | LinkSelfContainedComponents :: MINGW ,
2130
- ) {
2131
- let lib_path = sess. target_tlib_path . dir . join ( "self-contained" ) ;
2132
- cmd. include_path ( & fix_windows_verbatim_for_gcc ( & lib_path) ) ;
2133
- }
2134
-
2135
- // Toolchains for some targets may ship `libunwind.a`, but place it into the main sysroot
2136
- // library directory instead of the self-contained directories.
2137
- // Sanitizer libraries have the same issue and are also linked by name on Apple targets.
2138
- // The targets here should be in sync with `copy_third_party_objects` in bootstrap.
2139
- // FIXME: implement `-Clink-self-contained=+/-unwind,+/-sanitizers`, move the shipped libunwind
2140
- // and sanitizers to self-contained directory, and stop adding this search path.
2141
- if sess. target . vendor == "fortanix"
2142
- || sess. target . os == "linux"
2143
- || sess. target . os == "fuchsia"
2144
- || sess. target . is_like_osx && !sess. opts . unstable_opts . sanitizer . is_empty ( )
2145
- {
2146
- cmd. include_path ( & fix_windows_verbatim_for_gcc ( & sess. target_tlib_path . dir ) ) ;
2147
- }
2148
-
2149
- // Mac Catalyst uses the macOS SDK, but to link to iOS-specific frameworks
2150
- // we must have the support library stubs in the library search path (#121430).
2151
- if let Some ( sdk_root) = apple_sdk_root
2152
- && sess. target . llvm_target . contains ( "macabi" )
2153
- {
2154
- cmd. include_path ( & sdk_root. join ( "System/iOSSupport/usr/lib" ) ) ;
2155
- cmd. framework_path ( & sdk_root. join ( "System/iOSSupport/System/Library/Frameworks" ) ) ;
2156
- }
2113
+ walk_native_lib_search_dirs (
2114
+ sess,
2115
+ self_contained_components,
2116
+ apple_sdk_root,
2117
+ |dir, is_framework| {
2118
+ if is_framework {
2119
+ cmd. framework_path ( dir) ;
2120
+ } else {
2121
+ cmd. include_path ( & fix_windows_verbatim_for_gcc ( dir) ) ;
2122
+ }
2123
+ ControlFlow :: < ( ) > :: Continue ( ( ) )
2124
+ } ,
2125
+ ) ;
2157
2126
}
2158
2127
2159
2128
/// Add options making relocation sections in the produced ELF files read-only
0 commit comments