diff --git a/ffmpeg-sys/Cargo.toml b/ffmpeg-sys/Cargo.toml index 1703d2f5..fc6c208a 100644 --- a/ffmpeg-sys/Cargo.toml +++ b/ffmpeg-sys/Cargo.toml @@ -18,7 +18,7 @@ libc = "0.2" num_cpus = "1.0" cc = "1.0" pkg-config = "0.3" -bindgen = "0.32" +bindgen = "0.51.1" regex = "0.2" [features] diff --git a/ffmpeg-sys/build.rs b/ffmpeg-sys/build.rs index f570032e..ae329a1a 100644 --- a/ffmpeg-sys/build.rs +++ b/ffmpeg-sys/build.rs @@ -12,7 +12,7 @@ use std::process::Command; use std::str; use regex::Regex; -use bindgen::callbacks::{IntKind, ParseCallbacks}; +use bindgen::callbacks::{IntKind, ParseCallbacks, MacroParsingBehavior}; #[derive(Debug)] struct Library { @@ -71,6 +71,20 @@ impl ParseCallbacks for IntCallbacks { None } } + + // https://github.com/rust-lang/rust-bindgen/issues/687#issuecomment-388277405 + fn will_parse_macro(&self, name: &str) -> MacroParsingBehavior { + use MacroParsingBehavior::*; + + match name { + "FP_INFINITE" => Ignore, + "FP_NAN" => Ignore, + "FP_NORMAL" => Ignore, + "FP_SUBNORMAL" => Ignore, + "FP_ZERO" => Ignore, + _ => Default, + } + } } fn version() -> String { @@ -902,12 +916,6 @@ fn main() { let mut builder = bindgen::Builder::default() .clang_args(clang_includes) .ctypes_prefix("libc") - // https://github.com/servo/rust-bindgen/issues/687 - .blacklist_type("FP_NAN") - .blacklist_type("FP_INFINITE") - .blacklist_type("FP_ZERO") - .blacklist_type("FP_SUBNORMAL") - .blacklist_type("FP_NORMAL") // https://github.com/servo/rust-bindgen/issues/550 .blacklist_type("max_align_t") .rustified_enum("*")