Bug 1536584 - Remove bindings.rs. r=xidorn

I kept it building the most straight-forward way possible (pub use) because it
seems to me that bindings is not a bad name, and we should probably move
structs.rs to be bindings.rs rather than the other way around.

But that's a different bug in any case, need to think more about it.

Differential Revision: https://phabricator.services.mozilla.com/D24713

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Emilio Cobos Álvarez 2019-03-26 13:38:14 +00:00
Родитель 45bc2e8f6c
Коммит a072622b02
3 изменённых файлов: 14 добавлений и 68 удалений

Просмотреть файл

@ -26,6 +26,7 @@ headers = [
"mozilla/LookAndFeel.h",
"mozilla/StaticPrefs.h",
"mozilla/GeckoBindings.h",
"mozilla/ServoBindings.h",
"mozilla/ComputedStyle.h",
"mozilla/ServoTraversalStatistics.h",
"mozilla/SizeOfState.h",
@ -46,7 +47,6 @@ raw-lines = [
"use data::ElementData;",
]
hide-types = [
"nsString",
".*char_traits",
".*incompatible_char_type",
# https://github.com/rust-lang/rust-bindgen/issues/1503
@ -468,36 +468,14 @@ mapped-generic-types = [
{ generic = false, gecko = "mozilla::ServoVisitedStyle", servo = "Option<::servo_arc::RawOffsetArc<::properties::ComputedValues>>" },
{ generic = false, gecko = "mozilla::ServoComputedValueFlags", servo = "::properties::computed_value_flags::ComputedValueFlags" },
{ generic = true, gecko = "mozilla::ServoRawOffsetArc", servo = "::servo_arc::RawOffsetArc" },
{ generic = false, gecko = "ComputedStyleStrong", servo = "::gecko_bindings::sugar::ownership::Strong<::properties::ComputedValues>" },
]
fixups = [
{ pat = "\\broot\\s*::\\s*nsString\\b", rep = "::nsstring::nsStringRepr" },
{ pat = "\\broot\\s*::\\s*nsTString\\s*<\\s*u16\\s*>", rep = "::nsstring::nsStringRepr" },
{ generic = false, gecko = "nsACString", servo = "nsstring::nsACString" },
{ generic = false, gecko = "nsAString", servo = "nsstring::nsAString" },
{ generic = false, gecko = "nsCString", servo = "nsstring::nsCString" },
{ generic = false, gecko = "nsString", servo = "nsstring::nsStringRepr" },
]
[bindings]
headers = [
"mozilla/GeckoBindings.h",
# We include ServoBindings.h so we can type check the C function declarations
# in there against the function definitions in servo/ports/gecko/glue.rs.
"mozilla/ServoBindings.h",
]
hide-types = [
"nsACString_internal",
"nsAString_internal",
]
raw-lines = [
"pub use nsstring::{nsACString, nsAString, nsCString, nsString, nsStringRepr};",
"use gecko_bindings::structs::*;",
"use gecko_bindings::structs::mozilla::gfx::*;",
"use gecko_bindings::structs::nsStyleTransformMatrix::*;",
"type nsACString_internal = nsACString;",
"type nsAString_internal = nsAString;",
]
whitelist-functions = ["Servo_.*", "Gecko_.*"]
fixups = [
# Remap the templated string type to the helper type
{ pat = "\\bnsTString\\s*<\\s*u16\\s*>", rep = "nsString" },
# hack for gecko-owned string
{ pat = "<\\s*nsString\\s*", rep = "<nsStringRepr" },
{ pat = "\\broot\\s*::\\s*nsTString\\s*<\\s*u16\\s*>", rep = "::nsstring::nsStringRepr" },
]

Просмотреть файл

@ -32,7 +32,6 @@ mod bindings {
use toml::value::Table;
const STRUCTS_FILE: &'static str = "structs.rs";
const BINDINGS_FILE: &'static str = "bindings.rs";
fn read_config(path: &PathBuf) -> Table {
println!("cargo:rerun-if-changed={}", path.to_str().unwrap());
@ -295,10 +294,11 @@ mod bindings {
fn generate_structs() {
let builder = Builder::get_initial_builder()
.enable_cxx_namespaces()
.with_codegen_config(CodegenConfig::TYPES | CodegenConfig::VARS);
.with_codegen_config(CodegenConfig::TYPES | CodegenConfig::VARS | CodegenConfig::FUNCTIONS);
let mut fixups = vec![];
let builder = BuilderWithConfig::new(builder, CONFIG["structs"].as_table().unwrap())
.handle_common(&mut fixups)
.handle_str_items("whitelist-functions", |b, item| b.whitelist_function(item))
.handle_str_items("bitfield-enums", |b, item| b.bitfield_enum(item))
.handle_str_items("rusty-enums", |b, item| b.rustified_enum(item))
.handle_str_items("whitelist-vars", |b, item| b.whitelist_var(item))
@ -389,20 +389,6 @@ mod bindings {
}
}
// FIXME(emilio): Avoid this altogether.
fn generate_bindings() {
let builder = Builder::get_initial_builder()
.disable_name_namespacing()
.with_codegen_config(CodegenConfig::FUNCTIONS);
let config = CONFIG["bindings"].as_table().unwrap();
let mut fixups = vec![];
let builder = BuilderWithConfig::new(builder, config)
.handle_common(&mut fixups)
.handle_str_items("whitelist-functions", |b, item| b.whitelist_function(item))
.get_builder();
write_binding_file(builder, BINDINGS_FILE, &fixups);
}
fn generate_atoms() {
let script = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap())
.join("gecko")
@ -420,24 +406,9 @@ mod bindings {
}
pub fn generate() {
use std::thread;
macro_rules! run_tasks {
($($task:expr,)+) => {
if setup_logging() {
$($task;)+
} else {
let threads = vec![$( thread::spawn(|| $task) ),+];
for thread in threads.into_iter() {
thread.join().unwrap();
}
}
}
}
run_tasks! {
generate_structs(),
generate_bindings(),
generate_atoms(),
}
setup_logging();
generate_structs();
generate_atoms();
for path in ADDED_PATHS.lock().unwrap().iter() {
println!("cargo:rerun-if-changed={}", path.to_str().unwrap());

Просмотреть файл

@ -4,11 +4,6 @@
//! Gecko's C++ bindings, along with some rust helpers to ease its use.
#[allow(dead_code, improper_ctypes, non_camel_case_types, missing_docs)]
pub mod bindings {
include!(concat!(env!("OUT_DIR"), "/gecko/bindings.rs"));
}
// FIXME: We allow `improper_ctypes` (for now), because the lint doesn't allow
// foreign structs to have `PhantomData`. We should remove this once the lint
// ignores this case.
@ -25,4 +20,6 @@ pub mod structs {
include!(concat!(env!("OUT_DIR"), "/gecko/structs.rs"));
}
pub use self::structs as bindings;
pub mod sugar;