Skip to content

Commit 48bda31

Browse files
committed
rustbuild: Update gcc-rs to 0.3.40
This commit updates the gcc-rs dependency to 0.3.40 to pick up a fix for i686 musl where we needed to pass an extra linker flag to get autoconf's detection of executables working correctly.
1 parent 6f62fae commit 48bda31

File tree

7 files changed

+77
-19
lines changed

7 files changed

+77
-19
lines changed

src/Cargo.lock

+10-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/vendor/gcc/.cargo-checksum.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"5cee7774cf6d876246a0ae0f8362cceeecec5924b751049c945faac9342565ff","Cargo.toml":"2634dedd87889b33a794e31b41a8d8d4713ef40382be3d464229707679bd83da","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ecb2d93f4c81edbd48d8742ff7887dc0a4530a5890967839090bbc972d49bebe","appveyor.yml":"46c77d913eaa45871296942c2cd96ef092c9dcaf19201cb5c500a5107faeb06f","src/bin/gcc-shim.rs":"11edfe1fc6f932bd42ffffda5145833302bc163e0b87dc0d54f4bd0997ad4708","src/lib.rs":"5eb0e311367226ed0420f5e2dac10cc35fc0a3be639a612b6e8ea6d24f646634","src/registry.rs":"3e2a42581ebb82e325dd5600c6571cef937b35003b2927dc618967f5238a2058","src/windows_registry.rs":"906653c020ffe9d572e435f3fc3a8892d9e0a13240ba297db01ce0a288e08cdb","tests/cc_env.rs":"d92c5e3d3d43ac244e63b2cd2c93a521fcf124bf1ccf8d4c6bfa7f8333d88976","tests/support/mod.rs":"d11ed0db4dda5ecf5fb970c9b0c56428cd47421a2742f07032e2cc6b0a0f07e2","tests/test.rs":"164220f11be2eebc20315826513999970660a82feff8cc4b15b4e9d73d98324e"},"package":"553f11439bdefe755bf366b264820f1da70f3aaf3924e594b886beb9c831bcf5"}
1+
{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"675ffe583db77282d010306f29e6d81e5070ab081deddd0300137dfbd2cb83de","Cargo.toml":"19bb617b74de761515ef5d087fd0e30912fda1d7c22fd04fa211236dab99a509","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ecb2d93f4c81edbd48d8742ff7887dc0a4530a5890967839090bbc972d49bebe","appveyor.yml":"46c77d913eaa45871296942c2cd96ef092c9dcaf19201cb5c500a5107faeb06f","src/bin/gcc-shim.rs":"11edfe1fc6f932bd42ffffda5145833302bc163e0b87dc0d54f4bd0997ad4708","src/lib.rs":"7e7c60beccfdd145e876da81bb07dd09c5248dab0b26d93190bab4242799d51a","src/registry.rs":"3e2a42581ebb82e325dd5600c6571cef937b35003b2927dc618967f5238a2058","src/windows_registry.rs":"1f4211caec5a192b5f05c8a47efb27aa6a0ab976c659b9318a0cf603a28d6746","tests/cc_env.rs":"d92c5e3d3d43ac244e63b2cd2c93a521fcf124bf1ccf8d4c6bfa7f8333d88976","tests/support/mod.rs":"f4dad5a8133c3dd6678d9a3de057b82e624ef547b9b3e4ac9508a48962fc387b","tests/test.rs":"164220f11be2eebc20315826513999970660a82feff8cc4b15b4e9d73d98324e"},"package":"872db9e59486ef2b14f8e8c10e9ef02de2bccef6363d7f34835dedb386b3d950"}

src/vendor/gcc/.travis.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ script:
1919
- cargo test --manifest-path gcc-test/Cargo.toml --target $TARGET --features parallel
2020
- cargo test --manifest-path gcc-test/Cargo.toml --target $TARGET --release
2121
- cargo doc
22+
- cargo clean && cargo build
2223
- rustdoc --test README.md -L target/debug -L target/debug/deps
2324
after_success:
2425
- travis-cargo --only nightly doc-upload
2526
env:
2627
global:
27-
secure: ilbcq9zX+UaiBcwqkBGldeanbEQus9npLsi0/nF1PUxKbQsoWSVtVOehAD8Hy92D3hX2npIRyNL8GxBn85XEcBYc1h7DiWUhLcXfZie79v8Ly/qboHCfZLXlB1ofbypbyQfouEdOE9zHf0ZILYVpAgUkliv6KuVShsrKNlbn4QE=
28+
secure: "CBtqrudgE0PS8x3kTr44jKbC2D4nfnmdYVecooNm0qnER4B4TSvZpZSQoCgKK6k4BYQuOSyFTOwYx6M79w39ZMOgyCP9ytB+tyMWL0/+ZuUQL04yVg4M5vd3oJMkOaXbvG56ncgPyFrseY+FPDg+mXAzvJk/nily37YXjkQj2D0="
29+
2830
matrix:
2931
- ARCH=x86_64
3032
- ARCH=i686

src/vendor/gcc/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22

33
name = "gcc"
4-
version = "0.3.38"
4+
version = "0.3.40"
55
authors = ["Alex Crichton <[email protected]>"]
66
license = "MIT/Apache-2.0"
77
repository = "https://github.com/alexcrichton/gcc-rs"

src/vendor/gcc/src/lib.rs

+54-6
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,23 @@ impl Config {
353353
self.compile_objects(&src_dst);
354354
self.assemble(lib_name, &dst.join(output), &objects);
355355

356+
if self.get_target().contains("msvc") {
357+
let compiler = self.get_base_compiler();
358+
let atlmfc_lib = compiler.env().iter().find(|&&(ref var, _)| {
359+
var == OsStr::new("LIB")
360+
}).and_then(|&(_, ref lib_paths)| {
361+
env::split_paths(lib_paths).find(|path| {
362+
let sub = Path::new("atlmfc/lib");
363+
path.ends_with(sub) || path.parent().map_or(false, |p| p.ends_with(sub))
364+
})
365+
});
366+
367+
if let Some(atlmfc_lib) = atlmfc_lib {
368+
self.print(&format!("cargo:rustc-link-search=native={}",
369+
atlmfc_lib.display()));
370+
}
371+
}
372+
356373
self.print(&format!("cargo:rustc-link-lib=static={}",
357374
&output[3..output.len() - 2]));
358375
self.print(&format!("cargo:rustc-link-search=native={}", dst.display()));
@@ -446,17 +463,20 @@ impl Config {
446463

447464
if msvc {
448465
cmd.args.push("/nologo".into());
449-
cmd.args.push("/MD".into()); // link against msvcrt.dll for now
466+
let features = env::var("CARGO_CFG_TARGET_FEATURE")
467+
.unwrap_or(String::new());
468+
if features.contains("crt-static") {
469+
cmd.args.push("/MT".into());
470+
} else {
471+
cmd.args.push("/MD".into());
472+
}
450473
match &opt_level[..] {
451474
"z" | "s" => cmd.args.push("/Os".into()),
452475
"2" => cmd.args.push("/O2".into()),
453476
"1" => cmd.args.push("/O1".into()),
454477
_ => {}
455478
}
456-
if target.contains("i686") {
457-
cmd.args.push("/SAFESEH".into());
458-
} else if target.contains("i586") {
459-
cmd.args.push("/SAFESEH".into());
479+
if target.contains("i586") {
460480
cmd.args.push("/ARCH:IA32".into());
461481
}
462482
} else if nvcc {
@@ -489,27 +509,48 @@ impl Config {
489509
cmd.args.push("-Xcompiler".into());
490510
cmd.args.push("\'-fPIC\'".into());
491511
}
512+
492513
if target.contains("musl") {
493514
cmd.args.push("-static".into());
494515
}
495516

517+
// armv7 targets get to use armv7 instructions
496518
if target.starts_with("armv7-unknown-linux-") {
497519
cmd.args.push("-march=armv7-a".into());
498520
}
521+
522+
// On android we can guarantee some extra float instructions
523+
// (specified in the android spec online)
499524
if target.starts_with("armv7-linux-androideabi") {
500525
cmd.args.push("-march=armv7-a".into());
501526
cmd.args.push("-mfpu=vfpv3-d16".into());
502527
}
528+
529+
// For us arm == armv6 by default
503530
if target.starts_with("arm-unknown-linux-") {
504531
cmd.args.push("-march=armv6".into());
505532
cmd.args.push("-marm".into());
506533
}
534+
535+
// Turn codegen down on i586 to avoid some instructions.
507536
if target.starts_with("i586-unknown-linux-") {
508537
cmd.args.push("-march=pentium".into());
509538
}
539+
540+
// Set codegen level for i686 correctly
510541
if target.starts_with("i686-unknown-linux-") {
511542
cmd.args.push("-march=i686".into());
512543
}
544+
545+
// Looks like `musl-gcc` makes is hard for `-m32` to make its way
546+
// all the way to the linker, so we need to actually instruct the
547+
// linker that we're generating 32-bit executables as well. This'll
548+
// typically only be used for build scripts which transitively use
549+
// these flags that try to compile executables.
550+
if target == "i686-unknown-linux-musl" {
551+
cmd.args.push("-Wl,-melf_i386".into());
552+
}
553+
513554
if target.starts_with("thumb") {
514555
cmd.args.push("-mthumb".into());
515556

@@ -518,10 +559,14 @@ impl Config {
518559
}
519560
}
520561
if target.starts_with("thumbv6m") {
521-
cmd.args.push("-march=armv6-m".into());
562+
cmd.args.push("-march=armv6s-m".into());
522563
}
523564
if target.starts_with("thumbv7em") {
524565
cmd.args.push("-march=armv7e-m".into());
566+
567+
if target.ends_with("eabihf") {
568+
cmd.args.push("-mfpu=fpv4-sp-d16".into())
569+
}
525570
}
526571
if target.starts_with("thumbv7m") {
527572
cmd.args.push("-march=armv7-m".into());
@@ -739,6 +784,7 @@ impl Config {
739784
"powerpc64-unknown-linux-gnu" => Some("powerpc-linux-gnu"),
740785
"powerpc64le-unknown-linux-gnu" => Some("powerpc64le-linux-gnu"),
741786
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
787+
"sparc64-unknown-netbsd" => Some("sparc64--netbsd"),
742788
"thumbv6m-none-eabi" => Some("arm-none-eabi"),
743789
"thumbv7em-none-eabi" => Some("arm-none-eabi"),
744790
"thumbv7em-none-eabihf" => Some("arm-none-eabi"),
@@ -805,6 +851,8 @@ impl Config {
805851
None
806852
} else if target.contains("darwin") {
807853
Some("c++".to_string())
854+
} else if target.contains("freebsd") {
855+
Some("c++".to_string())
808856
} else {
809857
Some("stdc++".to_string())
810858
}

src/vendor/gcc/src/windows_registry.rs

+5
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,11 @@ pub fn find_tool(target: &str, tool: &str) -> Option<Tool> {
211211
let sub = otry!(vc_lib_subdir(target));
212212
tool.libs.push(path.join("lib").join(sub));
213213
tool.include.push(path.join("include"));
214+
let atlmfc_path = path.join("atlmfc");
215+
if atlmfc_path.exists() {
216+
tool.libs.push(atlmfc_path.join("lib").join(sub));
217+
tool.include.push(atlmfc_path.join("include"));
218+
}
214219
Some(tool)
215220
}).next()
216221
}

src/vendor/gcc/tests/support/mod.rs

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ impl Test {
2323
pub fn new() -> Test {
2424
let mut gcc = PathBuf::from(env::current_exe().unwrap());
2525
gcc.pop();
26+
if gcc.ends_with("deps") {
27+
gcc.pop();
28+
}
2629
gcc.push(format!("gcc-shim{}", env::consts::EXE_SUFFIX));
2730
Test {
2831
td: TempDir::new("gcc-test").unwrap(),

0 commit comments

Comments
 (0)