From 1e87fed6cba4a0e6c896ec9ca9c66688acbbde83 Mon Sep 17 00:00:00 2001 From: John Baublitz Date: Wed, 8 Jan 2025 11:04:49 -0500 Subject: [PATCH] Fix bugs in --clang-macro-fallback This commit resolves a bug where -include was not respected and a bug where -MMD was passed to the fallback translation unit which would cause the dependency file to be overwritten with useless information about temporary files. --- bindgen/.lib.rs.swp | Bin 0 -> 90112 bytes bindgen/clang.rs | 4 --- bindgen/ir/context.rs | 76 +++++++++++++++-------------------------- bindgen/lib.rs | 7 ++++ bindgen/options/mod.rs | 5 +++ 5 files changed, 39 insertions(+), 53 deletions(-) create mode 100644 bindgen/.lib.rs.swp diff --git a/bindgen/.lib.rs.swp b/bindgen/.lib.rs.swp new file mode 100644 index 0000000000000000000000000000000000000000..692a3a8220d8b8d7194f539b2d0466a0d2837f9c GIT binary patch literal 90112 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, tu: TranslationUnit, @@ -1932,7 +1931,6 @@ impl FallbackTranslationUnit { /// Create a new fallback translation unit pub(crate) fn new( file: String, - header_path: String, pch_path: String, c_args: &[Box], ) -> Option { @@ -1954,7 +1952,6 @@ impl FallbackTranslationUnit { )?; Some(FallbackTranslationUnit { file_path: file, - header_path, pch_path, tu: f_translation_unit, idx: f_index, @@ -1993,7 +1990,6 @@ impl FallbackTranslationUnit { impl Drop for FallbackTranslationUnit { fn drop(&mut self) { let _ = std::fs::remove_file(&self.file_path); - let _ = std::fs::remove_file(&self.header_path); let _ = std::fs::remove_file(&self.pch_path); } } diff --git a/bindgen/ir/context.rs b/bindgen/ir/context.rs index 098dd25e59..229959d9c1 100644 --- a/bindgen/ir/context.rs +++ b/bindgen/ir/context.rs @@ -29,8 +29,6 @@ use quote::ToTokens; use std::borrow::Cow; use std::cell::{Cell, RefCell}; use std::collections::{BTreeSet, HashMap as StdHashMap}; -use std::fs::OpenOptions; -use std::io::Write; use std::mem; use std::path::Path; @@ -2054,8 +2052,11 @@ If you encounter an error missing from this list, please file an issue or a PR!" let mut header_names_to_compile = Vec::new(); let mut header_paths = Vec::new(); - let mut header_contents = String::new(); - for input_header in &self.options.input_headers { + let mut header_includes = Vec::new(); + let single_header = self.options().input_headers.last().cloned()?; + for input_header in &self.options.input_headers + [..self.options.input_headers.len() - 1] + { let path = Path::new(input_header.as_ref()); if let Some(header_path) = path.parent() { if header_path == Path::new("") { @@ -2067,50 +2068,32 @@ If you encounter an error missing from this list, please file an issue or a PR!" header_paths.push("."); } let header_name = path.file_name()?.to_str()?; + header_includes.push(header_name.to_string()); header_names_to_compile .push(header_name.split(".h").next()?.to_string()); - header_contents += - format!("\n#include <{header_name}>").as_str(); } - let header_to_precompile = format!( + let pch = format!( "{}/{}", match self.options().clang_macro_fallback_build_dir { Some(ref path) => path.as_os_str().to_str()?, None => ".", }, - header_names_to_compile.join("-") + "-precompile.h" + header_names_to_compile.join("-") + "-precompile.h.pch" ); - let pch = header_to_precompile.clone() + ".pch"; - - let mut header_to_precompile_file = OpenOptions::new() - .create(true) - .truncate(true) - .write(true) - .open(&header_to_precompile) - .ok()?; - header_to_precompile_file - .write_all(header_contents.as_bytes()) - .ok()?; - - let mut c_args = Vec::new(); + + let mut c_args = self.options.fallback_clang_args.clone(); c_args.push("-x".to_string().into_boxed_str()); c_args.push("c-header".to_string().into_boxed_str()); for header_path in header_paths { c_args.push(format!("-I{header_path}").into_boxed_str()); } - c_args.extend( - self.options - .clang_args - .iter() - .filter(|next| { - !self.options.input_headers.contains(next) && - next.as_ref() != "-include" - }) - .cloned(), - ); + for header_include in header_includes { + c_args.push("-include".to_string().into_boxed_str()); + c_args.push(header_include.into_boxed_str()); + } let mut tu = clang::TranslationUnit::parse( &index, - &header_to_precompile, + &single_header, &c_args, &[], clang_sys::CXTranslationUnit_ForSerialization, @@ -2121,23 +2104,18 @@ If you encounter an error missing from this list, please file an issue or a PR!" "-include-pch".to_string().into_boxed_str(), pch.clone().into_boxed_str(), ]; - c_args.extend( - self.options - .clang_args - .clone() - .iter() - .filter(|next| { - !self.options.input_headers.contains(next) && - next.as_ref() != "-include" - }) - .cloned(), - ); - self.fallback_tu = Some(clang::FallbackTranslationUnit::new( - file, - header_to_precompile, - pch, - &c_args, - )?); + let mut skip_next = false; + for arg in self.options.fallback_clang_args.iter() { + if arg.as_ref() == "-include" { + skip_next = true; + } else if skip_next { + skip_next = false; + } else { + c_args.push(arg.clone()) + } + } + self.fallback_tu = + Some(clang::FallbackTranslationUnit::new(file, pch, &c_args)?); } self.fallback_tu.as_mut() diff --git a/bindgen/lib.rs b/bindgen/lib.rs index 9e22e37ce6..f34448e0bc 100644 --- a/bindgen/lib.rs +++ b/bindgen/lib.rs @@ -348,6 +348,13 @@ impl Builder { } // Transform input headers to arguments on the clang command line. + self.options.fallback_clang_args = self + .options + .clang_args + .iter() + .filter(|arg| !arg.contains("-MMD") && !arg.contains("-MD")) + .cloned() + .collect::>(); self.options.clang_args.extend( self.options.input_headers [..self.options.input_headers.len().saturating_sub(1)] diff --git a/bindgen/options/mod.rs b/bindgen/options/mod.rs index 6bf652d4e1..9d1d195980 100644 --- a/bindgen/options/mod.rs +++ b/bindgen/options/mod.rs @@ -1234,6 +1234,11 @@ options! { // This field is handled specially inside the macro. as_args: ignore, }, + /// The set of arguments to be passed straight through to Clang for the macro fallback code. + fallback_clang_args: Vec> { + methods: {}, + as_args: ignore, + }, /// Tuples of unsaved file contents of the form (name, contents). input_header_contents: Vec<(Box, Box)> { methods: {