зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
45bc2e8f6c
Коммит
a072622b02
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче