Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: third_party/protobuf/proto_library.gni

Issue 289953004: Add GPU command buffer sevice and protobuf to GN build (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/protobuf/BUILD.gn ('k') | ui/gfx/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/protobuf/proto_library.gni
diff --git a/third_party/protobuf/proto_library.gni b/third_party/protobuf/proto_library.gni
new file mode 100644
index 0000000000000000000000000000000000000000..aaba76c90954cfbaf65c23608c0b8ad158d67294
--- /dev/null
+++ b/third_party/protobuf/proto_library.gni
@@ -0,0 +1,125 @@
+# Copyright 2014 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 protocol buffer.
+#
+# The 'proto_in_dir' variable must be the relative path to the
+# directory containing the .proto files. If left out, it defaults to '.'.
+#
+# The 'proto_out_dir' variable specifies the path suffix that output files are
+# generated under. Targets that gyp-depend on my_proto_lib will be able to
+# include the resulting proto headers with an include like:
+# #include "dir/for/my_proto_lib/foo.pb.h"
+# If undefined, this defaults to matching the input directory.
+#
+# If you need to add an EXPORT macro to a protobuf's C++ header, set the
+# 'cc_generator_options' variable with the value: 'dllexport_decl=FOO_EXPORT:'
+# e.g. 'dllexport_decl=BASE_EXPORT:'
+#
+# It is likely you also need to #include a file for the above EXPORT macro to
+# work. You can do so with the 'cc_include' variable.
+# e.g. 'base/base_export.h'
+#
+# Example:
+# proto_library("mylib") {
+# sources = [
+# "foo.proto",
+# ]
+# }
+
+template("proto_library") {
+ assert(defined(invoker.sources), "Need sources for proto_library")
+
+ action_name = "${target_name}_gen"
+ source_set_name = target_name
+ action_foreach(action_name) {
+ visibility = ":$source_set_name"
+
+ script = "//tools/protoc_wrapper/protoc_wrapper.py"
+
+ sources = invoker.sources
+
+ # TODO(brettw) it would be better if this used the target gen dir.
+ if (defined(invoker.proto_out_dir)) {
+ proto_out_dir = invoker.proto_out_dir
+ } else {
+ # This computes the relative path inside the target_gen_dir that
+ # we'd put the files in, which maps to the current directory path.
+ # We'll insert "protoc_out" at the beginning for compatibility with GYP.
+ proto_out_dir = rebase_path(target_gen_dir, root_gen_dir)
+ }
+ cc_dir = "$root_gen_dir/protoc_out/$proto_out_dir"
+ py_dir = "$root_gen_dir/pyproto/$proto_out_dir"
+
+ outputs = [
+ "$py_dir/{{source_name_part}}_pb2.py",
+ "$cc_dir/{{source_name_part}}.pb.cc",
+ "$cc_dir/{{source_name_part}}.pb.h",
+ ]
+
+ args = []
+ if (defined(invoker.cc_include)) {
+ args += [ "--include", invoker.cc_include ]
+ }
+
+ args += [
+ "--protobuf",
+ rebase_path("$cc_dir/{{source_name_part}}.pb.h", root_build_dir),
+ ]
+
+ if (defined(invoker.proto_in_dir)) {
+ proto_in_dir = invoker.proto_in_dir
+ } else {
+ # Extract the current source dir.
+ proto_in_dir = get_label_info(":$target_name", "dir")
+ }
+ args += [
+ "--proto-in-dir",
+ rebase_path(proto_in_dir, root_build_dir),
+ "--proto-in-file", "{{source_file_part}}",
+ # TODO(brettw) support system protobuf compiler.
+ "--use-system-protobuf=0",
+ ]
+
+ protoc_label = "//third_party/protobuf:protoc($host_toolchain)"
+ args += [
+ "--",
+ # Prepend with "./" so this will never pick up the system one (normally
+ # when not cross-compiling, protoc's output directory will be the same
+ # as the build dir, so the relative location will be empty.
+ "./" + rebase_path(get_label_info(protoc_label, "root_out_dir") +
+ "/protoc", root_build_dir),
+ ]
+
+ # If passed cc_generator_options should end in a colon, which will separate
+ # it from the directory when we concatenate them. The proto compiler
+ # understands this syntax.
+ if (defined(invoker.cc_generator_options)) {
+ cc_generator_options = invoker.cc_generator_options
+ } else {
+ cc_generator_options = ""
+ }
+ args += [
+ "--cpp_out", cc_generator_options + rebase_path(cc_dir, root_build_dir),
+ "--python_out", rebase_path(py_dir, root_build_dir),
+ ]
+
+ deps = [ protoc_label ]
+ }
+
+ source_set(target_name) {
+ if (defined(invoker.visibility)) {
+ visibility = invoker.visibility
+ }
+
+ sources = get_target_outputs(":$action_name")
+
+ direct_dependent_configs = [ "//third_party/protobuf:using_proto" ]
+
+ deps = [
+ ":$action_name",
+ "//third_party/protobuf:protobuf_lite",
+ ]
+ }
+}
« no previous file with comments | « third_party/protobuf/BUILD.gn ('k') | ui/gfx/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698