summaryrefslogtreecommitdiffstats
path: root/build/protoc.gypi
diff options
context:
space:
mode:
authorkushi.p@gmail.com <kushi.p@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-28 05:17:48 +0000
committerkushi.p@gmail.com <kushi.p@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-28 05:17:48 +0000
commit3eda89f734a06b1de1d85d615b8ace04341c4ad2 (patch)
tree867f2eb1f08048b93f7f665074b9f41e55d1ac1b /build/protoc.gypi
parentda1a469fe3a4b506df79ab57eb7670048905cadd (diff)
downloadchromium_src-3eda89f734a06b1de1d85d615b8ace04341c4ad2.zip
chromium_src-3eda89f734a06b1de1d85d615b8ace04341c4ad2.tar.gz
chromium_src-3eda89f734a06b1de1d85d615b8ace04341c4ad2.tar.bz2
Remove hand-rolled protobufs generation; enable rel paths in protoc.gypi
protoc.gypi now accepts a relative path to handle the way that protoc_out_dir is applied to build the generated path. Remove the 'cacheinvalidation_proto_cpp' target and instead generate a static_library to begin with. Simplify all steps by removing the actions and including the protoc.gypi file. BUG=113339 Review URL: http://codereview.chromium.org/9378041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123894 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build/protoc.gypi')
-rw-r--r--build/protoc.gypi29
1 files changed, 23 insertions, 6 deletions
diff --git a/build/protoc.gypi b/build/protoc.gypi
index 555c5be..5c1fd2b 100644
--- a/build/protoc.gypi
+++ b/build/protoc.gypi
@@ -1,4 +1,4 @@
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
+# Copyright (c) 2012 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.
@@ -32,8 +32,24 @@
# like:
# #include "dir/for/my_proto_lib/foo.pb.h"
#
+# The 'proto_relpath' variable specifies another way to provide the path
+# suffix that files are generated under. 'proto_relpath' exists because there
+# are some protos which import using qualified paths, rather than the more
+# common relative import.
+#
+# By using 'proto_relpath', projects can continue to use qualified imports
+# instead of enforcing an import style through this gypi. If provided,
+# 'proto_relpath' must have a trailing slash.
+#
# Implementation notes:
-# A proto_out_dir of foo/bar produces
+# A 'proto_out_dir' of 'foo/bar', with no 'proto_relpath' provided, produces:
+# <(SHARED_INTERMEDIATE_DIR)/protoc_out/foo/bar/{file1,file2}.pb.{cc,h}
+# <(SHARED_INTERMEDIATE_DIR)/pyproto/foo/bar/{file1,file2}_pb2.py
+#
+# By setting 'proto_relpath' to 'foo/bar', with a 'proto_out_dir' of '', the
+# protos can use qualified imports instead of relative imports,
+# e.g. #import "foo/bar/file2.proto"; instead of #import "file2.proto";
+# A 'proto_out_dir' of '', with a 'proto_relpath' of 'foo/bar/' produces:
# <(SHARED_INTERMEDIATE_DIR)/protoc_out/foo/bar/{file1,file2}.pb.{cc,h}
# <(SHARED_INTERMEDIATE_DIR)/pyproto/foo/bar/{file1,file2}_pb2.py
@@ -43,6 +59,7 @@
'cc_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out/<(proto_out_dir)',
'py_dir': '<(PRODUCT_DIR)/pyproto/<(proto_out_dir)',
'proto_in_dir%': '.',
+ 'proto_relpath%': '',
},
'rules': [
{
@@ -52,16 +69,16 @@
'<(protoc)',
],
'outputs': [
- '<(py_dir)/<(RULE_INPUT_ROOT)_pb2.py',
- '<(cc_dir)/<(RULE_INPUT_ROOT).pb.cc',
- '<(cc_dir)/<(RULE_INPUT_ROOT).pb.h',
+ '<(py_dir)/<(proto_relpath)<(RULE_INPUT_ROOT)_pb2.py',
+ '<(cc_dir)/<(proto_relpath)<(RULE_INPUT_ROOT).pb.cc',
+ '<(cc_dir)/<(proto_relpath)<(RULE_INPUT_ROOT).pb.h',
],
'action': [
'<(protoc)',
'--proto_path=<(proto_in_dir)',
# Naively you'd use <(RULE_INPUT_PATH) here, but protoc requires
# --proto_path is a strict prefix of the path given as an argument.
- '<(proto_in_dir)/<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)',
+ '<(proto_in_dir)/<(proto_relpath)<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)',
'--cpp_out=<(cc_dir)',
'--python_out=<(py_dir)',
],