File size: 1,513 Bytes
2ee40b0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
diff --git a/build.rs b/build.rs
index 912a3bf..e078f0e 100644
--- a/build.rs
+++ b/build.rs
@@ -85,6 +85,7 @@ fn flag_if_supported_with_fallbacks(config: &mut cc::Build, flags: &[&str]) {
 }
 
 fn compile_zstd() {
+    let target = env::var("TARGET").unwrap_or_default();
     let mut config = cc::Build::new();
 
     // Search the following directories for C files to add to the compilation.
@@ -164,6 +165,16 @@ fn compile_zstd() {
     // Some extra parameters
     config.include("zstd/lib/");
     config.include("zstd/lib/common");
+    if target.contains("msvc") {
+        config.include("zstd/lib/compress");
+        config.include("zstd/lib/decompress");
+        #[cfg(feature = "zdict_builder")]
+        config.include("zstd/lib/dictBuilder");
+        #[cfg(feature = "legacy")]
+        config.include("zstd/lib/legacy");
+        #[cfg(feature = "seekable")]
+        config.include("zstd/contrib/seekable_format");
+    }
     config.warnings(false);
 
     config.define("ZSTD_LIB_DEPRECATED", Some("0"));
@@ -210,7 +221,9 @@ fn compile_zstd() {
 
     // Hide symbols from resulting library,
     // so we can be used with another zstd-linking lib.
-    // See https://github.com/gyscos/zstd-rs/issues/58
-    config.flag("-fvisibility=hidden");
+    // See https://github.com/gyscos/zstd-rs/issues/58.
+    if !target.contains("msvc") {
+        config.flag("-fvisibility=hidden");
+    }
     config.define("XXH_PRIVATE_API", Some(""));
     config.define("ZSTDLIB_VISIBILITY", Some(""));