Skip to content

Commit da6ba32

Browse files
committed
Attempt to fix crt-static on Windows
1 parent 0f34b2b commit da6ba32

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

lzma-sys/build.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ fn main() {
2525
println!("cargo:root={}", dst.display());
2626
println!("cargo:include={}/include", dst.display());
2727
println!("cargo:rerun-if-changed=xz-5.2.2/configure");
28-
28+
let features = env::var("CARGO_CFG_TARGET_FEATURE")
29+
.unwrap_or(String::new());
2930
if target.contains("msvc") {
3031
println!("cargo:rustc-link-lib=static=liblzma");
3132
let mut msbuild = gcc::windows_registry::find(&target, "msbuild")
@@ -36,13 +37,20 @@ fn main() {
3637
let _ = fs::remove_dir_all(dst.join("include"));
3738
cp_r(Path::new("xz-5.2.2"), &build);
3839

40+
let profile = if features.contains("crt-static") {
41+
"ReleaseMT"
42+
} else {
43+
"Release"
44+
};
45+
3946
run(msbuild.current_dir(build.join("windows"))
4047
.arg("liblzma.vcxproj")
41-
.arg("/p:Configuration=Release"));
48+
.arg(&format!("/p:Configuration={}", profile)));
4249
t!(fs::create_dir(dst.join("lib")));
4350
t!(fs::create_dir(dst.join("include")));
4451
let platform = if target.contains("x86_64") {"X64"} else {"Win32"};
45-
t!(fs::copy(build.join("windows/Release")
52+
t!(fs::copy(build.join("windows")
53+
.join(profile)
4654
.join(platform)
4755
.join("liblzma/liblzma.lib"),
4856
dst.join("lib/liblzma.lib")));

0 commit comments

Comments
 (0)