diff --git a/Cargo.toml b/Cargo.toml index 524487083..3b0387ba4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,7 @@ winapi-x86_64-pc-windows-gnu = { version = "0.4", path = "x86_64" } [features] debug = ["impl-debug"] everything = [] +external-lib = [] impl-debug = [] impl-default = [] std = [] diff --git a/build.rs b/build.rs index 622050495..2e3884726 100644 --- a/build.rs +++ b/build.rs @@ -469,25 +469,27 @@ impl Graph { } } fn emit_libraries(&self) { - let mut libs = self.0.iter().filter(|&(_, header)| { - header.included.get() - }).flat_map(|(_, header)| { - header.libraries.iter() - }).collect::>(); - libs.sort(); - libs.dedup(); - // FIXME Temporary hacks until build script is redesigned. - libs.retain(|&&lib| match &*var("TARGET").unwrap() { - "aarch64-pc-windows-msvc" | "aarch64-uwp-windows-msvc" | "thumbv7a-pc-windows-msvc" => { - if lib == "opengl32" { false } - else { true } - }, - _ => true, - }); - let prefix = library_prefix(); - let kind = library_kind(); - for lib in libs { - println!("cargo:rustc-link-lib={}={}{}", kind, prefix, lib); + if var("CARGO_FEATURE_EXTERNAL_LIB").is_err() { + let mut libs = self.0.iter().filter(|&(_, header)| { + header.included.get() + }).flat_map(|(_, header)| { + header.libraries.iter() + }).collect::>(); + libs.sort(); + libs.dedup(); + // FIXME Temporary hacks until build script is redesigned. + libs.retain(|&&lib| match &*var("TARGET").unwrap() { + "aarch64-pc-windows-msvc" | "aarch64-uwp-windows-msvc" | "thumbv7a-pc-windows-msvc" => { + if lib == "opengl32" { false } + else { true } + }, + _ => true, + }); + let prefix = library_prefix(); + let kind = library_kind(); + for lib in libs { + println!("cargo:rustc-link-lib={}={}{}", kind, prefix, lib); + } } } } diff --git a/tests/code_checkers/check_features.rs b/tests/code_checkers/check_features.rs index 6831fc2d3..a8cf25d7e 100644 --- a/tests/code_checkers/check_features.rs +++ b/tests/code_checkers/check_features.rs @@ -111,7 +111,7 @@ fn check_missing_features_in_cargo_file(build_features: &[String], cargo_features: &[String], errors: &mut u32) { const FEATURES_TO_IGNORE: &'static [&'static str] = &[ - "debug", "everything", "impl-debug", "impl-default", "std", + "debug", "everything", "external-lib", "impl-debug", "impl-default", "std", ]; let mut it1 = 0; let mut it2 = 0;