Skip to content

Commit 1c26f1b

Browse files
committed
split finding the cc for a single target into a separate fn
1 parent c6707dc commit 1c26f1b

File tree

1 file changed

+52
-48
lines changed

1 file changed

+52
-48
lines changed

src/bootstrap/cc_detect.rs

Lines changed: 52 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -100,60 +100,64 @@ pub fn find(build: &Build) {
100100
.chain(iter::once(build.build))
101101
.collect::<HashSet<_>>();
102102
for target in targets.into_iter() {
103-
let mut cfg = new_cc_build(build, target);
104-
let config = build.config.target_config.get(&target);
105-
if let Some(cc) = config.and_then(|c| c.cc.as_ref()) {
106-
cfg.compiler(cc);
107-
} else {
108-
set_compiler(&mut cfg, Language::C, target, config, build);
109-
}
103+
find_target(build, target);
104+
}
105+
}
110106

111-
let compiler = cfg.get_compiler();
112-
let ar = if let ar @ Some(..) = config.and_then(|c| c.ar.clone()) {
113-
ar
114-
} else {
115-
cc2ar(compiler.path(), target)
116-
};
107+
pub fn find_target(build: &Build, target: TargetSelection) {
108+
let mut cfg = new_cc_build(build, target);
109+
let config = build.config.target_config.get(&target);
110+
if let Some(cc) = config.and_then(|c| c.cc.as_ref()) {
111+
cfg.compiler(cc);
112+
} else {
113+
set_compiler(&mut cfg, Language::C, target, config, build);
114+
}
117115

118-
build.cc.borrow_mut().insert(target, compiler.clone());
119-
let cflags = build.cflags(target, GitRepo::Rustc, CLang::C);
116+
let compiler = cfg.get_compiler();
117+
let ar = if let ar @ Some(..) = config.and_then(|c| c.ar.clone()) {
118+
ar
119+
} else {
120+
cc2ar(compiler.path(), target)
121+
};
120122

121-
// If we use llvm-libunwind, we will need a C++ compiler as well for all targets
122-
// We'll need one anyways if the target triple is also a host triple
123-
let mut cfg = new_cc_build(build, target);
124-
cfg.cpp(true);
125-
let cxx_configured = if let Some(cxx) = config.and_then(|c| c.cxx.as_ref()) {
126-
cfg.compiler(cxx);
127-
true
128-
} else if build.hosts.contains(&target) || build.build == target {
129-
set_compiler(&mut cfg, Language::CPlusPlus, target, config, build);
130-
true
131-
} else {
132-
// Use an auto-detected compiler (or one configured via `CXX_target_triple` env vars).
133-
cfg.try_get_compiler().is_ok()
134-
};
123+
build.cc.borrow_mut().insert(target, compiler.clone());
124+
let cflags = build.cflags(target, GitRepo::Rustc, CLang::C);
135125

136-
// for VxWorks, record CXX compiler which will be used in lib.rs:linker()
137-
if cxx_configured || target.contains("vxworks") {
138-
let compiler = cfg.get_compiler();
139-
build.cxx.borrow_mut().insert(target, compiler);
140-
}
126+
// If we use llvm-libunwind, we will need a C++ compiler as well for all targets
127+
// We'll need one anyways if the target triple is also a host triple
128+
let mut cfg = new_cc_build(build, target);
129+
cfg.cpp(true);
130+
let cxx_configured = if let Some(cxx) = config.and_then(|c| c.cxx.as_ref()) {
131+
cfg.compiler(cxx);
132+
true
133+
} else if build.hosts.contains(&target) || build.build == target {
134+
set_compiler(&mut cfg, Language::CPlusPlus, target, config, build);
135+
true
136+
} else {
137+
// Use an auto-detected compiler (or one configured via `CXX_target_triple` env vars).
138+
cfg.try_get_compiler().is_ok()
139+
};
141140

142-
build.verbose(&format!("CC_{} = {:?}", &target.triple, build.cc(target)));
143-
build.verbose(&format!("CFLAGS_{} = {:?}", &target.triple, cflags));
144-
if let Ok(cxx) = build.cxx(target) {
145-
let cxxflags = build.cflags(target, GitRepo::Rustc, CLang::Cxx);
146-
build.verbose(&format!("CXX_{} = {:?}", &target.triple, cxx));
147-
build.verbose(&format!("CXXFLAGS_{} = {:?}", &target.triple, cxxflags));
148-
}
149-
if let Some(ar) = ar {
150-
build.verbose(&format!("AR_{} = {:?}", &target.triple, ar));
151-
build.ar.borrow_mut().insert(target, ar);
152-
}
141+
// for VxWorks, record CXX compiler which will be used in lib.rs:linker()
142+
if cxx_configured || target.contains("vxworks") {
143+
let compiler = cfg.get_compiler();
144+
build.cxx.borrow_mut().insert(target, compiler);
145+
}
153146

154-
if let Some(ranlib) = config.and_then(|c| c.ranlib.clone()) {
155-
build.ranlib.borrow_mut().insert(target, ranlib);
156-
}
147+
build.verbose(&format!("CC_{} = {:?}", &target.triple, build.cc(target)));
148+
build.verbose(&format!("CFLAGS_{} = {:?}", &target.triple, cflags));
149+
if let Ok(cxx) = build.cxx(target) {
150+
let cxxflags = build.cflags(target, GitRepo::Rustc, CLang::Cxx);
151+
build.verbose(&format!("CXX_{} = {:?}", &target.triple, cxx));
152+
build.verbose(&format!("CXXFLAGS_{} = {:?}", &target.triple, cxxflags));
153+
}
154+
if let Some(ar) = ar {
155+
build.verbose(&format!("AR_{} = {:?}", &target.triple, ar));
156+
build.ar.borrow_mut().insert(target, ar);
157+
}
158+
159+
if let Some(ranlib) = config.and_then(|c| c.ranlib.clone()) {
160+
build.ranlib.borrow_mut().insert(target, ranlib);
157161
}
158162
}
159163

0 commit comments

Comments
 (0)