diff --git a/nixide-sys/build.rs b/nixide-sys/build.rs index 19c9e23..7bcfa95 100644 --- a/nixide-sys/build.rs +++ b/nixide-sys/build.rs @@ -92,36 +92,39 @@ const LIBS: &[&'static str] = &[ ]; fn main() { - let include_paths: Vec = LIBS + let libs: Vec = LIBS .iter() .map(|&name| { - let lib = pkg_config::probe_library(name) - .expect(&format!("Unable to find .pc file for {}", name)); - - for p in lib.link_files { - println!("cargo::rustc-link-lib={}", p.display()); - } - - lib.include_paths + pkg_config::probe_library(name).expect(&format!("Unable to find .pc file for {}", name)) }) + .collect(); + + let include_paths: Vec = libs + .clone() + .into_iter() + .map(|lib| lib.include_paths) + .flatten() + .unique() + .collect(); + let link_paths: Vec = libs + .clone() + .into_iter() + .map(|lib| lib.link_files) .flatten() .unique() .collect(); - // let clang_target = format!( - // "--target={}", - // env::var("CARGO_BUILD_TARGET") - // .expect("Environment variable `CARGO_BUILD_TARGET` not set! nixide/build.rs won't be able to set pointer sizes correctly!")); - let clang_args: Vec = vec![ - "-x", - "c++", - "-std=c++23", - "--target=x86_64-unknown-linux-gnu", // DEBUG - ] - .into_iter() - .map(|s: &str| s.to_owned()) - .chain(include_paths.iter().map(|p| format!("-I{}", p.display()))) - .collect(); + // ::DEBUG:DEBUG:: + // for path in link_paths { + // println!("cargo::rustc-link-lib={}", path.display()); + // } + // ::DEBUG:DEBUG:: + + let clang_args: Vec = vec!["-x", "c++", "-std=c++23"] + .into_iter() + .map(|s: &str| s.to_owned()) + .chain(include_paths.iter().map(|p| format!("-I{}", p.display()))) + .collect(); dbg!(&clang_args); @@ -139,7 +142,7 @@ fn main() { // .files(LIBS.iter().map(|s| (*s).strip_prefix("nix-").unwrap().strip_suffix("-c").unwrap())) .opt_level((!cfg!(debug_assertions)) as u32 * 3) .includes(&include_paths) - .compile("libnixide"); + .compile("nixide"); let mut builder = bindgen::Builder::default() .rust_edition(RustEdition::Edition2024) @@ -152,26 +155,11 @@ fn main() { .formatter(bindgen::Formatter::Rustfmt) .rustfmt_configuration_file(std::fs::canonicalize("rustfmt.toml").ok()) // Control allow/block listing - .allowlist_recursively(true) // DEBUG(TEMP): should remain `false` + .allowlist_recursively(true) // .allowlist_file(r".*nix_api_[a-z]+(_internal)?\.h") - .allowlist_file(r".*nix_api_[a-z]+\.h") + .allowlist_file(r".*nix_api_[a-z]+(/[a-z_]+)?\.h") - // .allowlist_type("nix_.*") - // .allowlist_function("nix_.*") - // DEBUG - // .allowlist_type(r"nix_locked_flake") - // .allowlist_type(r"nix_flake_settings") - // .allowlist_type(r"nix_flake_reference") - // .allowlist_type(r"nix_flake_reference_parse_flags") - // .allowlist_type(r"nix_flake_lock_flags") - // DEBUG - - // .allowlist_file(r".+-gcc-14\.3\.0/include/c\+\+/14\.3\.0/optional") // allow optional type - // .blocklist_file(r".*-gcc-[^/]+/include/c++/[0-9\.]+/^(optional).*") // allow optional type - // .blocklist_file(r".*-(glibc|clang-wrapper|boost)-.*") // block stdlib (gcc|glibc|clang-wrapper|boost) - // .blocklist_type(r".*Optional.*") - - .layout_tests(false) // DEBUG + // .layout_tests(false) // DEBUG .use_core() // use ::core instead of ::std .ctypes_prefix("::core::ffi") // use ::core::ffi instead of ::std::os::raw .time_phases(true) @@ -182,13 +170,13 @@ fn main() { .default_enum_style(bindgen::EnumVariation::Rust { non_exhaustive: false }) // .translate_enum_integer_types(false) .size_t_is_usize(true) - .use_distinct_char16_t(false) // DEBUG (comment this) + // .use_distinct_char16_t(false) // DEBUG .generate_comments(false) .generate_cstr(true) // use &CStr instead of &[u8] - .fit_macro_constants(true) // DEBUG (comment this) + .fit_macro_constants(false) .explicit_padding(true) - .enable_cxx_namespaces() - .represent_cxx_operators(false) // DEBUG (comment this) + // .enable_cxx_namespaces() + // .represent_cxx_operators(false) // DEBUG .enable_function_attribute_detection() .raw_line("/** These bindings were auto-generated for the Nixide project (https://github.com/cry128/nixide) */"); diff --git a/nixide-sys/src/lib.rs b/nixide-sys/src/lib.rs index 57ea9e7..93aceeb 100644 --- a/nixide-sys/src/lib.rs +++ b/nixide-sys/src/lib.rs @@ -20,7 +20,7 @@ mod bindings { include!(concat!(env!("OUT_DIR"), "/bindings.rs")); } -pub use bindings::root::*; +pub use bindings::*; mod exts; #[allow(unused_imports)]