Skip to content
This repository was archived by the owner on Jun 30, 2020. It is now read-only.

Commit 07d9562

Browse files
committed
Generate code into OUT_DIR.
This is necessary to ensure Cargo knows when to rebuild. Normally .gitignore would be enough to exclude these from Cargo's freshness calculation, but rust-lang/cargo#1729 prevents this currently. This is the new, correct way to do these thigns, just like the style crate does.
1 parent e1b28d8 commit 07d9562

File tree

5 files changed

+64
-51
lines changed

5 files changed

+64
-51
lines changed

.gitignore

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,11 @@
1+
/.servo
12
/.cargo
2-
/Cargo.lock
3+
/.servobuild
34
/target
4-
/components/servo/target
5-
/ports/gonk/target
6-
/ports/cef/target
75
/ports/android/bin
86
/ports/android/libs
97
/ports/android/local.properties
108
/ports/android/obj
11-
/components/script/dom/bindings/codegen/*.rs
12-
/components/script/dom/bindings/codegen/_cache
13-
/components/script/dom/bindings/codegen/Bindings
14-
/components/script/dom/bindings/codegen/test/*.rs
15-
/.servobuild
16-
/.servo
179
/tests/wpt/_virtualenv
1810
*~
1911
*#
@@ -34,4 +26,3 @@ Servo.app
3426
.config.mk.last
3527
parser.out
3628
/glfw
37-

components/script/dom/bindings/codegen/CodegenRust.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,25 +1429,26 @@ class CGImports(CGWrapper):
14291429
"""
14301430
Generates the appropriate import/use statements.
14311431
"""
1432-
def __init__(self, child, descriptors, callbacks, imports):
1432+
def __init__(self, child, descriptors, callbacks, imports, ignored_warnings=None):
14331433
"""
14341434
Adds a set of imports.
14351435
"""
1436-
ignored_warnings = [
1437-
# Allow unreachable_code because we use 'break' in a way that
1438-
# sometimes produces two 'break's in a row. See for example
1439-
# CallbackMember.getArgConversions.
1440-
'unreachable_code',
1441-
'non_camel_case_types',
1442-
'non_upper_case_globals',
1443-
'unused_parens',
1444-
'unused_imports',
1445-
'unused_variables',
1446-
'unused_unsafe',
1447-
'unused_mut',
1448-
'unused_assignments',
1449-
'dead_code',
1450-
]
1436+
if ignored_warnings is None:
1437+
ignored_warnings = [
1438+
# Allow unreachable_code because we use 'break' in a way that
1439+
# sometimes produces two 'break's in a row. See for example
1440+
# CallbackMember.getArgConversions.
1441+
'unreachable_code',
1442+
'non_camel_case_types',
1443+
'non_upper_case_globals',
1444+
'unused_parens',
1445+
'unused_imports',
1446+
'unused_variables',
1447+
'unused_unsafe',
1448+
'unused_mut',
1449+
'unused_assignments',
1450+
'dead_code',
1451+
]
14511452

14521453
def componentTypes(type):
14531454
if type.nullable():
@@ -1496,7 +1497,9 @@ def getIdentifier(t):
14961497

14971498
imports += ['dom::types::%s' % getIdentifier(t).name for t in types if isImportable(t)]
14981499

1499-
statements = ['#![allow(%s)]' % ','.join(ignored_warnings)]
1500+
statements = []
1501+
if len(ignored_warnings) > 0:
1502+
statements.append('#![allow(%s)]' % ','.join(ignored_warnings))
15001503
statements.extend('use %s;' % i for i in sorted(set(imports)))
15011504

15021505
CGWrapper.__init__(self, child,
@@ -1815,7 +1818,7 @@ def UnionTypes(descriptors, dictionaries, callbacks, config):
18151818
CGUnionConversionStruct(t, provider)
18161819
])
18171820

1818-
return CGImports(CGList(SortedDictValues(unionStructs), "\n\n"), [], [], imports)
1821+
return CGImports(CGList(SortedDictValues(unionStructs), "\n\n"), [], [], imports, ignored_warnings=[])
18191822

18201823

18211824
class Argument():
@@ -5415,7 +5418,7 @@ def RegisterBindings(config):
54155418
'js::jsapi::JSContext',
54165419
'js::jsapi::JSObject',
54175420
'libc',
5418-
])
5421+
], ignored_warnings=[])
54195422

54205423
@staticmethod
54215424
def InterfaceTypes(config):
@@ -5438,8 +5441,7 @@ def Bindings(config):
54385441
def InheritTypes(config):
54395442

54405443
descriptors = config.getDescriptors(register=True, isCallback=False)
5441-
allprotos = [CGGeneric("#![allow(unused_imports)]\n"),
5442-
CGGeneric("use dom::types::*;\n"),
5444+
allprotos = [CGGeneric("use dom::types::*;\n"),
54435445
CGGeneric("use dom::bindings::js::{JS, JSRef, LayoutJS, Rootable, Temporary};\n"),
54445446
CGGeneric("use dom::bindings::trace::JSTraceable;\n"),
54455447
CGGeneric("use dom::bindings::utils::Reflectable;\n"),

components/script/dom/bindings/mod.rs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,30 @@ pub mod codegen {
155155
// FIXME(#5853) we shouldn't need to
156156
// allow moved_no_move here
157157
#[allow(unrooted_must_root, moved_no_move)]
158-
pub mod Bindings;
159-
pub mod InterfaceTypes;
160-
pub mod InheritTypes;
161-
pub mod PrototypeList;
162-
pub mod RegisterBindings;
163-
pub mod UnionTypes;
158+
pub mod Bindings {
159+
include!(concat!(env!("OUT_DIR"), "/Bindings/mod.rs"));
160+
}
161+
pub mod InterfaceTypes {
162+
include!(concat!(env!("OUT_DIR"), "/InterfaceTypes.rs"));
163+
}
164+
#[allow(unused_imports)]
165+
pub mod InheritTypes {
166+
include!(concat!(env!("OUT_DIR"), "/InheritTypes.rs"));
167+
}
168+
pub mod PrototypeList {
169+
include!(concat!(env!("OUT_DIR"), "/PrototypeList.rs"));
170+
}
171+
#[allow(unreachable_code, non_camel_case_types, non_upper_case_globals, unused_parens,
172+
unused_imports, unused_variables, unused_unsafe, unused_mut, unused_assignments,
173+
dead_code)]
174+
pub mod RegisterBindings {
175+
include!(concat!(env!("OUT_DIR"), "/RegisterBindings.rs"));
176+
}
177+
#[allow(unreachable_code, non_camel_case_types, non_upper_case_globals, unused_parens,
178+
unused_imports, unused_variables, unused_unsafe, unused_mut, unused_assignments,
179+
dead_code)]
180+
pub mod UnionTypes {
181+
include!(concat!(env!("OUT_DIR"), "/UnionTypes.rs"));
182+
}
164183
}
165184

components/script/dom/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,9 @@ pub mod macros;
190190

191191
pub mod bindings;
192192

193-
#[path="bindings/codegen/InterfaceTypes.rs"]
194-
pub mod types;
193+
pub mod types {
194+
include!(concat!(env!("OUT_DIR"), "/InterfaceTypes.rs"));
195+
}
195196

196197
pub mod activation;
197198
pub mod attr;

components/script/makefile.cargo

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,38 +8,38 @@ BINDINGS_SRC = $(shell pwd)/dom/bindings/codegen
88
WEBIDLS_SRC = $(shell pwd)/dom/webidls
99
WEBIDLS = $(call rwildcard,$(WEBIDLS_SRC),*.webidl)
1010
BINDINGS = $(patsubst %.webidl,%Binding.rs,$(WEBIDLS))
11-
AUTOGEN_SRC = $(foreach var,$(BINDINGS),$(subst $(WEBIDLS_SRC),$(BINDINGS_SRC)/Bindings,$(var)))
11+
AUTOGEN_SRC = $(foreach var,$(BINDINGS),$(subst $(WEBIDLS_SRC),$(OUT_DIR)/Bindings,$(var)))
1212

13-
CACHE_DIR = $(BINDINGS_SRC)/_cache
13+
CACHE_DIR = $(OUT_DIR)/_cache
1414

15-
bindinggen_dependencies := $(addprefix $(BINDINGS_SRC)/,BindingGen.py Bindings.conf Configuration.py CodegenRust.py parser/WebIDL.py ParserResults.pkl Bindings/.done)
15+
bindinggen_dependencies := $(addprefix $(BINDINGS_SRC)/,BindingGen.py Bindings.conf Configuration.py CodegenRust.py parser/WebIDL.py) $(OUT_DIR)/ParserResults.pkl $(OUT_DIR)/Bindings/.done
1616

17-
globalgen_dependencies := $(addprefix $(BINDINGS_SRC)/,GlobalGen.py Bindings.conf Configuration.py CodegenRust.py parser/WebIDL.py) $(CACHE_DIR)/.done $(BINDINGS_SRC)/Bindings/.done
17+
globalgen_dependencies := $(addprefix $(BINDINGS_SRC)/,GlobalGen.py Bindings.conf Configuration.py CodegenRust.py parser/WebIDL.py) $(CACHE_DIR)/.done $(OUT_DIR)/Bindings/.done
1818

1919
.PHONY: all
2020
all: $(AUTOGEN_SRC)
2121

22-
$(BINDINGS_SRC)/Bindings/.done:
23-
mkdir -p $(BINDINGS_SRC)/Bindings
22+
$(OUT_DIR)/Bindings/.done:
23+
mkdir -p $(OUT_DIR)/Bindings
2424
touch $@
2525

2626
$(CACHE_DIR)/.done:
2727
mkdir -p $(CACHE_DIR)
2828
touch $@
2929

30-
$(BINDINGS_SRC)/ParserResults.pkl: $(globalgen_dependencies) $(WEBIDLS)
30+
$(OUT_DIR)/ParserResults.pkl: $(globalgen_dependencies) $(WEBIDLS)
3131
$(PYTHON) $(BINDINGS_SRC)/pythonpath.py \
3232
-I$(BINDINGS_SRC)/parser -I$(BINDINGS_SRC)/ply \
33-
-D$(BINDINGS_SRC) \
33+
-D$(OUT_DIR) \
3434
$(BINDINGS_SRC)/GlobalGen.py $(BINDINGS_SRC)/Bindings.conf . \
3535
--cachedir=$(CACHE_DIR) \
3636
$(WEBIDLS)
3737

38-
$(AUTOGEN_SRC): $(BINDINGS_SRC)/Bindings/%Binding.rs: $(bindinggen_dependencies) \
39-
$(addprefix $(WEBIDLS_SRC)/,%.webidl)
38+
$(AUTOGEN_SRC): $(OUT_DIR)/Bindings/%Binding.rs: $(bindinggen_dependencies) \
39+
$(addprefix $(WEBIDLS_SRC)/,%.webidl)
4040
$(PYTHON) $(BINDINGS_SRC)/pythonpath.py \
4141
-I$(BINDINGS_SRC)/parser -I$(BINDINGS_SRC)/ply \
42-
-D$(BINDINGS_SRC) \
42+
-D$(OUT_DIR) \
4343
$(BINDINGS_SRC)/BindingGen.py \
4444
$(BINDINGS_SRC)/Bindings.conf Bindings/$*Binding $(addprefix $(WEBIDLS_SRC)/,$*.webidl)
4545
touch $@

0 commit comments

Comments
 (0)