| Index: mojo/public/tools/bindings/mojom.gni
|
| diff --git a/mojo/public/tools/bindings/mojom.gni b/mojo/public/tools/bindings/mojom.gni
|
| index e7ed6ec7cdaac7140d03471752748ea8de3621ca..ee9fbdc4a4bfafdde78b82fe00abd30518d2385a 100644
|
| --- a/mojo/public/tools/bindings/mojom.gni
|
| +++ b/mojo/public/tools/bindings/mojom.gni
|
| @@ -40,11 +40,17 @@ foreach(config_file, _bindings_configuration_files) {
|
| foreach(configuration, _bindings_configurations) {
|
| # Check that the mojom field of each typemap refers to a mojom that exists.
|
| foreach(typemap, configuration.typemaps) {
|
| - read_file(typemap.mojom, "")
|
| + _typemap_config = {
|
| + }
|
| + _typemap_config = typemap.config
|
| + read_file(_typemap_config.mojom, "")
|
| }
|
| if (is_mac && defined(configuration.typemaps_mac)) {
|
| foreach(typemap, configuration.typemaps_mac) {
|
| - read_file(typemap.mojom, "")
|
| + _typemap_config = {
|
| + }
|
| + _typemap_config = typemap.config
|
| + read_file(_typemap_config.mojom, "")
|
| }
|
| }
|
| }
|
| @@ -300,13 +306,19 @@ template("mojom") {
|
| foreach(source, enabled_sources) {
|
| # TODO(sammc): Use a map instead of a linear scan when GN supports maps.
|
| foreach(typemap, bindings_configuration.typemaps) {
|
| - if (get_path_info(source, "abspath") == typemap.mojom) {
|
| + _typemap_config = {
|
| + }
|
| + _typemap_config = typemap.config
|
| + if (get_path_info(source, "abspath") == _typemap_config.mojom) {
|
| active_typemaps += [ typemap ]
|
| }
|
| }
|
| if (is_mac && defined(bindings_configuration.typemaps_mac)) {
|
| foreach(typemap, bindings_configuration.typemaps_mac) {
|
| - if (get_path_info(source, "abspath") == typemap.mojom) {
|
| + _typemap_config = {
|
| + }
|
| + _typemap_config = typemap.config
|
| + if (get_path_info(source, "abspath") == _typemap_config.mojom) {
|
| active_typemaps += [ typemap ]
|
| }
|
| }
|
| @@ -419,20 +431,28 @@ template("mojom") {
|
| # line length limitations.
|
| typemap_description = []
|
| foreach(typemap, active_typemaps) {
|
| + _typemap_config = {
|
| + }
|
| + _typemap_config = typemap.config
|
| typemap_description += [ "--start-typemap" ]
|
| - if (defined(typemap.public_headers)) {
|
| - foreach(value, typemap.public_headers) {
|
| + if (defined(_typemap_config.public_headers)) {
|
| + foreach(value, _typemap_config.public_headers) {
|
| typemap_description += [ "public_headers=$value" ]
|
| }
|
| }
|
| - if (defined(typemap.traits_headers)) {
|
| - foreach(value, typemap.traits_headers) {
|
| + if (defined(_typemap_config.traits_headers)) {
|
| + foreach(value, _typemap_config.traits_headers) {
|
| typemap_description += [ "traits_headers=$value" ]
|
| }
|
| }
|
| - foreach(value, typemap.type_mappings) {
|
| + foreach(value, _typemap_config.type_mappings) {
|
| typemap_description += [ "type_mappings=$value" ]
|
| }
|
| +
|
| + # The typemap configuration files are not actually used as inputs here
|
| + # but this establishes a necessary build dependency to ensure that
|
| + # typemap changes force a rebuild of affected targets.
|
| + inputs += [ typemap.filename ]
|
| }
|
| args += typemap_description
|
| }
|
| @@ -510,20 +530,23 @@ template("mojom") {
|
| }
|
| }
|
| foreach(typemap, active_typemaps) {
|
| - if (defined(typemap.public_headers)) {
|
| - sources += typemap.public_headers
|
| + _typemap_config = {
|
| + }
|
| + _typemap_config = typemap.config
|
| + if (defined(_typemap_config.public_headers)) {
|
| + sources += _typemap_config.public_headers
|
| }
|
| - if (defined(typemap.traits_headers)) {
|
| - sources += typemap.traits_headers
|
| + if (defined(_typemap_config.traits_headers)) {
|
| + sources += _typemap_config.traits_headers
|
| }
|
| - if (defined(typemap.sources)) {
|
| - sources += typemap.sources
|
| + if (defined(_typemap_config.sources)) {
|
| + sources += _typemap_config.sources
|
| }
|
| - if (defined(typemap.public_deps)) {
|
| - public_deps += typemap.public_deps
|
| + if (defined(_typemap_config.public_deps)) {
|
| + public_deps += _typemap_config.public_deps
|
| }
|
| - if (defined(typemap.deps)) {
|
| - deps += typemap.deps
|
| + if (defined(_typemap_config.deps)) {
|
| + deps += _typemap_config.deps
|
| }
|
| }
|
| if (defined(bindings_configuration.for_blink) &&
|
|
|