Chromium Code Reviews| Index: third_party/flatbuffers/flatc.gni |
| diff --git a/third_party/flatbuffers/flatc.gni b/third_party/flatbuffers/flatc.gni |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9ab6392220c13d1947a940b471119cf0ec686fbf |
| --- /dev/null |
| +++ b/third_party/flatbuffers/flatc.gni |
| @@ -0,0 +1,121 @@ |
| +# Copyright 2016 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. |
| + |
| +# Compile a flatbuffer. |
| +# |
| +# flatc_out_dir (optional) |
| +# Specifies the path suffix that output files are generated under. This |
| +# path will be appended to root_gen_dir. |
| +# |
| +# Targets that depend on the proto target will be able to include the |
| +# resulting flatbuffers header with an include like: |
| +# #include "dir/for/my_flatbuffer/buffer_generated.h" |
| +# If undefined, this defaults to matchign the input directory for each |
| +# .fbs file (you should almost always use the default mode). |
| +# |
| +# deps (optional) |
| +# Additional dependencies. |
| +# |
| +# Parameters for compiling the generated code: |
| +# |
| +# defines (optional) |
| +# Defines to supply to the source set that compiles the generated source |
| +# code. |
| +# |
| +# extra_configs (optional) |
| +# A list of config labels that will be appended to the configs applying |
| +# to the source set. |
| +# |
| +# testonly (optional) |
| +# Boolean to indicate whether the generated source sets should be labeled |
| +# as testonly. |
| +# |
| +# Example: |
| +# flatbuffers_library("mylib") { |
| +# sources = [ |
| +# "foo.fbs", |
| +# ] |
| +# } |
| + |
| +template("flatbuffers_library") { |
|
brettw
2016/04/21 20:00:03
I prefer to name the gni files the same as the tem
battre
2016/04/25 14:31:47
Done. I am uncertain what to do with the .gypi fil
|
| + assert(defined(invoker.sources), "Need sources for flatbuffers_library") |
| + |
| + # Don't apply OS-specific sources filtering to the assignments later on. |
| + # Platform files should have gotten filtered out in the sources assignment |
| + # when this template was invoked. If they weren't, it was on purpose and |
| + # this template shouldn't re-apply the filter. |
| + set_sources_assignment_filter([]) |
| + |
| + action_name = "${target_name}_gen" |
| + source_set_name = target_name |
| + action_foreach(action_name) { |
|
brettw
2016/04/21 20:00:03
This is wrong for cross-compile cases. You can sol
battre
2016/04/25 14:31:47
Done.
|
| + visibility = [ ":$source_set_name" ] |
| + |
| + deps = [ |
| + "//third_party/flatbuffers:flatc", |
| + ] |
| + |
| + script = "//third_party/flatbuffers/flatc_wrapper.py" |
| + |
| + sources = invoker.sources |
| + |
| + if (defined(invoker.flatc_out_dir)) { |
| + out_dir = "$root_gen_dir/" + invoker.flatc_out_dir |
| + } else { |
| + out_dir = "{{source_gen_dir}}" |
| + } |
| + |
| + outputs = [ |
| + "$out_dir/{{source_name_part}}_generated.h", |
| + ] |
| + |
| + args = [ |
| + "./flatc", |
| + "-c", |
| + "-o", |
| + "$out_dir", |
| + "{{source}}", |
| + ] |
| + |
| + # The deps may have steps that have to run before running flatc. |
| + if (defined(invoker.deps)) { |
| + deps += invoker.deps |
| + } |
| + } |
| + |
| + source_set(target_name) { |
| + forward_variables_from(invoker, |
| + [ |
| + "visibility", |
| + "defines", |
| + ]) |
| + |
| + sources = get_target_outputs(":$action_name") |
| + |
| + if (defined(invoker.extra_configs)) { |
| + configs += invoker.extra_configs |
| + } |
| + |
| + if (defined(invoker.testonly)) { |
| + testonly = invoker.testonly |
| + } |
| + |
| + public_configs = [ "//third_party/flatbuffers:flatbuffers_config" ] |
| + |
| + public_deps = [ |
| + # The generated headers reference headers within flatbuffers, so |
| + # dependencies must be able to find those headers too. |
| + "//third_party/flatbuffers:flatbuffers", |
|
brettw
2016/04/21 20:00:03
Delete the redundant ":flatbuffers"
battre
2016/04/25 14:31:47
Done.
|
| + ] |
| + deps = [ |
| + ":$action_name", |
| + ] |
| + |
| + # This will link any libraries in the deps (the use of invoker.deps in the |
| + # action won't link it). |
| + if (defined(invoker.deps)) { |
| + deps += invoker.deps |
| + } |
| + } |
| +} |