diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-11 17:30:35 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-11 17:30:35 +0000 |
commit | 67f4c5db3b5bbe50e051e0364441e06ee0d45202 (patch) | |
tree | 52e88574c51b588f1aecd01ccdb216cefae2ed39 /mojo | |
parent | a8502b133c2a6c47472ef217239396bd0a45b340 (diff) | |
download | chromium_src-67f4c5db3b5bbe50e051e0364441e06ee0d45202.zip chromium_src-67f4c5db3b5bbe50e051e0364441e06ee0d45202.tar.gz chromium_src-67f4c5db3b5bbe50e051e0364441e06ee0d45202.tar.bz2 |
Add mojo_idl_generator.gypi
NOT FOR REVIEW
BUG=
R=darin@chromium.org
Review URL: https://codereview.chromium.org/53173008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@234233 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo')
-rw-r--r-- | mojo/DEPS | 1 | ||||
-rw-r--r-- | mojo/mojo.gyp | 23 | ||||
-rw-r--r-- | mojo/public/bindings/mojom_bindings_generator.gypi | 46 | ||||
-rwxr-xr-x | mojo/public/bindings/mojom_bindings_generator.py (renamed from mojo/public/bindings/mojo_idl.py) | 3 | ||||
-rw-r--r-- | mojo/public/bindings/sample/mojom/sample_service.cc (renamed from mojo/public/bindings/sample/generated/sample_service.cc) | 4 | ||||
-rw-r--r-- | mojo/public/bindings/sample/mojom/sample_service.h (renamed from mojo/public/bindings/sample/generated/sample_service.h) | 0 | ||||
-rw-r--r-- | mojo/public/bindings/sample/mojom/sample_service_internal.h (renamed from mojo/public/bindings/sample/generated/sample_service_internal.h) | 2 | ||||
-rw-r--r-- | mojo/public/bindings/sample/sample_service.idl | 33 | ||||
-rw-r--r-- | mojo/public/bindings/sample/sample_service.mojom | 62 | ||||
-rw-r--r-- | mojo/public/bindings/sample/sample_test.cc | 2 |
10 files changed, 105 insertions, 71 deletions
@@ -2,5 +2,6 @@ include_rules = [ "+base", "+build", "+mojo", + "+mojom", "+testing", ] diff --git a/mojo/mojo.gyp b/mojo/mojo.gyp index 969669f..7f07480 100644 --- a/mojo/mojo.gyp +++ b/mojo/mojo.gyp @@ -24,6 +24,7 @@ 'mojo_js', 'sample_app', 'mojo_bindings', + 'mojom_test', 'mojo_bindings_test', 'native_viewport', ], @@ -323,19 +324,33 @@ ], }, { + 'target_name': 'mojom_test', + 'type': 'executable', + 'sources': [ + 'public/bindings/sample/sample_test.cc', + 'public/bindings/sample/sample_service.mojom', + ], + 'includes': [ 'public/bindings/mojom_bindings_generator.gypi' ], + 'dependencies': [ + 'mojo_bindings', + 'mojo_system', + ], + }, + { 'target_name': 'mojo_bindings_test', 'type': 'executable', 'include_dirs': [ - '..' + '..', + '<(DEPTH)/mojo/public/bindings/sample', ], 'dependencies': [ 'mojo_bindings', 'mojo_system', ], 'sources': [ - 'public/bindings/sample/generated/sample_service.cc', - 'public/bindings/sample/generated/sample_service.h', - 'public/bindings/sample/generated/sample_service_internal.h', + 'public/bindings/sample/mojom/sample_service.cc', + 'public/bindings/sample/mojom/sample_service.h', + 'public/bindings/sample/mojom/sample_service_internal.h', 'public/bindings/sample/sample_test.cc', ], }, diff --git a/mojo/public/bindings/mojom_bindings_generator.gypi b/mojo/public/bindings/mojom_bindings_generator.gypi new file mode 100644 index 0000000..47abf00 --- /dev/null +++ b/mojo/public/bindings/mojom_bindings_generator.gypi @@ -0,0 +1,46 @@ +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'output_dir': '<(SHARED_INTERMEDIATE_DIR)/mojom', + }, + 'rules': [ + { + 'rule_name': 'Generate C++ source files from mojom files', + 'extension': 'mojom', + 'variables': { + 'mojom_bindings_generator': + '<(DEPTH)/mojo/public/bindings/mojom_bindings_generator.py', + }, + 'inputs': [ + '<(mojom_bindings_generator)', + '<(DEPTH)/mojo/public/bindings/parser/mojo_parser.py', + '<(DEPTH)/mojo/public/bindings/parser/mojo_translate.py', + '<(DEPTH)/mojo/public/bindings/generators/mojom.py', + '<(DEPTH)/mojo/public/bindings/generators/mojom_data.py', + '<(DEPTH)/mojo/public/bindings/generators/mojom_pack.py', + '<(DEPTH)/mojo/public/bindings/generators/mojom_cpp_generator.py', + ], + 'outputs': [ + '<(output_dir)/<(RULE_INPUT_ROOT).h', + '<(output_dir)/<(RULE_INPUT_ROOT)_internal.h', + '<(output_dir)/<(RULE_INPUT_ROOT).cc', + ], + 'action': [ + 'python', '<@(mojom_bindings_generator)', + '<(RULE_INPUT_PATH)', + '-i', 'mojom', + '-o', '<(output_dir)', + ], + 'message': 'Generating C++ from mojom <(RULE_INPUT_PATH)', + 'process_outputs_as_sources': 1, + } + ], + 'include_dirs': [ + '<(DEPTH)', + '<(SHARED_INTERMEDIATE_DIR)', + ], + 'hard_dependency': 1, +} diff --git a/mojo/public/bindings/mojo_idl.py b/mojo/public/bindings/mojom_bindings_generator.py index 567adf7..4039972 100755 --- a/mojo/public/bindings/mojo_idl.py +++ b/mojo/public/bindings/mojom_bindings_generator.py @@ -27,6 +27,9 @@ def Main(): parser.print_help() sys.exit(1) + if not os.path.exists(options.output_dir): + os.makedirs(options.output_dir) + for filename in args: name = os.path.splitext(os.path.basename(filename))[0] # TODO(darin): There's clearly too many layers of translation here! We can diff --git a/mojo/public/bindings/sample/generated/sample_service.cc b/mojo/public/bindings/sample/mojom/sample_service.cc index 9209cb9..877b532 100644 --- a/mojo/public/bindings/sample/generated/sample_service.cc +++ b/mojo/public/bindings/sample/mojom/sample_service.cc @@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "mojo/public/bindings/sample/generated/sample_service.h" +#include "mojom/sample_service.h" #include "mojo/public/bindings/lib/message_builder.h" -#include "mojo/public/bindings/sample/generated/sample_service_internal.h" +#include "mojom/sample_service_internal.h" namespace sample { namespace { diff --git a/mojo/public/bindings/sample/generated/sample_service.h b/mojo/public/bindings/sample/mojom/sample_service.h index 9a77aa0..9a77aa0 100644 --- a/mojo/public/bindings/sample/generated/sample_service.h +++ b/mojo/public/bindings/sample/mojom/sample_service.h diff --git a/mojo/public/bindings/sample/generated/sample_service_internal.h b/mojo/public/bindings/sample/mojom/sample_service_internal.h index fde2b3d..93bb78d 100644 --- a/mojo/public/bindings/sample/generated/sample_service_internal.h +++ b/mojo/public/bindings/sample/mojom/sample_service_internal.h @@ -8,7 +8,7 @@ #include <string.h> #include "mojo/public/bindings/lib/bindings_serialization.h" -#include "mojo/public/bindings/sample/generated/sample_service.h" +#include "mojom/sample_service.h" namespace mojo { namespace internal { diff --git a/mojo/public/bindings/sample/sample_service.idl b/mojo/public/bindings/sample/sample_service.idl deleted file mode 100644 index 3358a58..0000000 --- a/mojo/public/bindings/sample/sample_service.idl +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// HYPOTHETICAL IDL: - -module sample { - -struct Bar { - uint8 alpha @0; - uint8 beta @1; - uint8 gamma @2; -}; - -[RequiredFields=7] -struct Foo { - string name @8; - int32 x @0; - int32 y @1; - bool a @2; - bool b @3; - bool c @4; - Bar bar @5; - Bar[] extra_bars @7; - uint8[] data @6; - handle[] files @9; -}; - -interface Service { - void Frobinate(Foo foo @0, bool baz @1, handle port @2) @0; -}; - -} diff --git a/mojo/public/bindings/sample/sample_service.mojom b/mojo/public/bindings/sample/sample_service.mojom index a2903f3..3358a58 100644 --- a/mojo/public/bindings/sample/sample_service.mojom +++ b/mojo/public/bindings/sample/sample_service.mojom @@ -1,31 +1,33 @@ -{ - 'name': 'sample_service', - 'namespace': 'sample', - 'structs': [{ - 'name': 'Bar', - 'fields': [ - {'name': 'alpha', 'kind': 'u8', 'ordinal': 0}, - {'name': 'beta', 'kind': 'u8', 'ordinal': 1}, - {'name': 'gamma', 'kind': 'u8', 'ordinal': 2}]}, { - 'name': 'Foo', - 'fields': [ - {'name': 'name', 'kind': 's', 'ordinal': 8}, - {'name': 'x', 'kind': 'i32', 'ordinal': 0}, - {'name': 'y', 'kind': 'i32', 'ordinal': 1}, - {'name': 'a', 'kind': 'b', 'ordinal': 2}, - {'name': 'b', 'kind': 'b', 'ordinal': 3}, - {'name': 'c', 'kind': 'b', 'ordinal': 4}, - {'name': 'bar', 'kind': 'x:Bar', 'ordinal': 5}, - {'name': 'extra_bars', 'kind': 'a:x:Bar', 'ordinal': 7}, - {'name': 'data', 'kind': 'a:u8', 'ordinal': 6}, - {'name': 'files', 'kind': 'a:h', 'ordinal': 9}]}], - 'interfaces': [{ - 'name': 'Service', - 'methods': [{ - 'name': 'Frobinate', - 'ordinal': 0, - 'parameters': [ - {'name': 'foo', 'kind': 'x:Foo', 'ordinal': 0}, - {'name': 'baz', 'kind': 'b', 'ordinal': 1}, - {'name': 'port', 'kind': 'h', 'ordinal': 2}]}]}] +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// HYPOTHETICAL IDL: + +module sample { + +struct Bar { + uint8 alpha @0; + uint8 beta @1; + uint8 gamma @2; +}; + +[RequiredFields=7] +struct Foo { + string name @8; + int32 x @0; + int32 y @1; + bool a @2; + bool b @3; + bool c @4; + Bar bar @5; + Bar[] extra_bars @7; + uint8[] data @6; + handle[] files @9; +}; + +interface Service { + void Frobinate(Foo foo @0, bool baz @1, handle port @2) @0; +}; + } diff --git a/mojo/public/bindings/sample/sample_test.cc b/mojo/public/bindings/sample/sample_test.cc index 7fb999e..1ca95dc 100644 --- a/mojo/public/bindings/sample/sample_test.cc +++ b/mojo/public/bindings/sample/sample_test.cc @@ -6,7 +6,7 @@ #include <string> -#include "mojo/public/bindings/sample/generated/sample_service.h" +#include "mojom/sample_service.h" namespace sample { |