aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--tensorflow/core/BUILD74
-rw-r--r--tensorflow/core/platform/default/build_config.bzl49
-rw-r--r--tensorflow/tensorflow.bzl33
-rw-r--r--tensorflow/tools/proto_text/BUILD7
-rw-r--r--tensorflow/tools/proto_text/gen_proto_text_functions.cc6
5 files changed, 146 insertions, 23 deletions
diff --git a/tensorflow/core/BUILD b/tensorflow/core/BUILD
index ba1fd41565..843fd7b907 100644
--- a/tensorflow/core/BUILD
+++ b/tensorflow/core/BUILD
@@ -161,7 +161,7 @@ exports_files(["ops/ops.pbtxt"])
# Note that some protos are in neither additional_core_proto_srcs nor this
# filegroup; e.g. ones with individual proto_library targets.
# LINT.IfChange
-CORE_PROTO_SRCS = [
+COMMON_PROTO_SRCS = [
"example/example.proto",
"example/feature.proto",
"framework/allocation_description.proto",
@@ -189,7 +189,6 @@ CORE_PROTO_SRCS = [
"framework/types.proto",
"framework/variable.proto",
"framework/versions.proto",
- "lib/core/error_codes.proto",
"protobuf/config.proto",
"protobuf/cluster.proto",
"protobuf/debug.proto",
@@ -202,8 +201,14 @@ CORE_PROTO_SRCS = [
"util/memmapped_file_system.proto",
"util/saved_tensor_slice.proto",
]
+
+ERROR_CODES_PROTO_SRCS = [
+ "lib/core/error_codes.proto",
+]
# LINT.ThenChange(//tensorflow/core/android_proto_config.asciipb)
+CORE_PROTO_SRCS = COMMON_PROTO_SRCS + ERROR_CODES_PROTO_SRCS
+
# Protos which are not needed on mobile builds, but should be included in
# protos_all.
#
@@ -224,12 +229,16 @@ ADDITIONAL_CORE_PROTO_SRCS = [
tf_proto_library(
name = "protos_all",
- srcs = CORE_PROTO_SRCS + ADDITIONAL_CORE_PROTO_SRCS,
+ srcs = [],
cc_api_version = 2,
default_header = True,
j2objc_api_version = 1,
java_api_version = 2,
js_api_version = 2,
+ protodeps = [
+ ":protos_all_proto",
+ ":error_codes_proto",
+ ],
visibility = ["//visibility:public"],
)
@@ -1134,7 +1143,8 @@ filegroup(
filegroup(
name = "mobile_srcs_no_runtime",
srcs = [
- ":proto_text_srcs_all",
+ ":protos_all_proto_text_srcs",
+ ":error_codes_proto_text_srcs",
"//tensorflow/core/platform/default/build_config:android_srcs",
] + glob(
[
@@ -1930,15 +1940,58 @@ cc_library(
],
)
-proto_text_hdrs_and_srcs = tf_generate_proto_text_sources(
- name = "proto_text_srcs_all",
- srcs = CORE_PROTO_SRCS,
+tf_proto_library(
+ name = "error_codes_proto",
+ srcs = ERROR_CODES_PROTO_SRCS,
+ cc_api_version = 2,
+ default_header = True,
+ j2objc_api_version = 1,
+ java_api_version = 2,
+ js_api_version = 2,
+)
+
+tf_generate_proto_text_sources(
+ name = "error_codes_proto_text",
+ srcs = ERROR_CODES_PROTO_SRCS,
+ protodeps = [],
+ srcs_relative_dir = "tensorflow/core/",
+ deps = [
+ ":error_codes_proto_cc",
+ ":lib_internal",
+ ],
+)
+
+tf_proto_library(
+ name = "protos_all_proto",
+ srcs = COMMON_PROTO_SRCS + ADDITIONAL_CORE_PROTO_SRCS,
+ cc_api_version = 2,
+ default_header = True,
+ j2objc_api_version = 1,
+ java_api_version = 2,
+ js_api_version = 2,
+ protodeps = [
+ ":error_codes_proto",
+ ],
+)
+
+tf_generate_proto_text_sources(
+ name = "protos_all_proto_text",
+ srcs = COMMON_PROTO_SRCS,
+ protodeps = ERROR_CODES_PROTO_SRCS,
srcs_relative_dir = "tensorflow/core/",
+ deps = [
+ ":error_codes_proto_text",
+ ":lib_internal",
+ ":protos_all_proto_cc",
+ ],
)
cc_library(
name = "proto_text",
- hdrs = proto_text_hdrs_and_srcs.hdrs,
+ hdrs = [
+ ":error_codes_proto_text_hdrs",
+ ":protos_all_proto_text_hdrs",
+ ],
deps = [
":lib",
":lib_internal",
@@ -2083,7 +2136,7 @@ tf_cuda_library(
"util/memmapped_file_system.cc",
"util/memmapped_file_system_writer.cc",
],
- }) + proto_text_hdrs_and_srcs.srcs + tf_additional_framework_srcs(),
+ }) + tf_additional_framework_srcs(),
hdrs = FRAMEWORK_INTERNAL_PUBLIC_HEADERS,
copts = tf_copts(),
linkopts = select({
@@ -2097,7 +2150,8 @@ tf_cuda_library(
deps = [
":lib",
":lib_internal",
- ":proto_text",
+ ":protos_all_proto_text",
+ ":error_codes_proto_text",
":protos_all_cc",
":version_lib",
"//tensorflow/core/platform/default/build_config:platformlib",
diff --git a/tensorflow/core/platform/default/build_config.bzl b/tensorflow/core/platform/default/build_config.bzl
index 44356e3438..ca0587e277 100644
--- a/tensorflow/core/platform/default/build_config.bzl
+++ b/tensorflow/core/platform/default/build_config.bzl
@@ -319,10 +319,34 @@ def tf_proto_library_cc(name, srcs = [], has_services = None,
use_grpc_plugin = None
if cc_grpc_version:
use_grpc_plugin = True
+
+ cc_deps = tf_deps(protodeps, "_cc")
+ cc_name = name + "_cc"
+ if not srcs:
+ # This is a collection of sub-libraries. Build header-only and impl
+ # libraries containing all the sources.
+ proto_gen(
+ name = cc_name + "_genproto",
+ deps = [s + "_genproto" for s in cc_deps],
+ protoc = "@protobuf_archive//:protoc",
+ visibility=["//visibility:public"],
+ )
+ native.cc_library(
+ name = cc_name,
+ deps = cc_deps + ["@protobuf_archive//:protobuf_headers"] +
+ if_static([name + "_cc_impl"]),
+ )
+ native.cc_library(
+ name = cc_name + "_impl",
+ deps = [s + "_impl" for s in cc_deps] + ["@protobuf_archive//:cc_wkt_protos"],
+ )
+
+ return
+
cc_proto_library(
- name = name + "_cc",
+ name = cc_name,
srcs = srcs,
- deps = tf_deps(protodeps, "_cc") + ["@protobuf_archive//:cc_wkt_protos"],
+ deps = cc_deps + ["@protobuf_archive//:cc_wkt_protos"],
cc_libs = cc_libs + if_static(
["@protobuf_archive//:protobuf"],
["@protobuf_archive//:protobuf_headers"]
@@ -341,11 +365,28 @@ def tf_proto_library_cc(name, srcs = [], has_services = None,
def tf_proto_library_py(name, srcs=[], protodeps=[], deps=[], visibility=[],
testonly=0, srcs_version="PY2AND3", use_grpc_plugin=False):
+ py_deps = tf_deps(protodeps, "_py")
+ py_name = name + "_py"
+ if not srcs:
+ # This is a collection of sub-libraries. Build header-only and impl
+ # libraries containing all the sources.
+ proto_gen(
+ name = py_name + "_genproto",
+ deps = [s + "_genproto" for s in py_deps],
+ protoc = "@protobuf_archive//:protoc",
+ visibility=["//visibility:public"],
+ )
+ native.py_library(
+ name = py_name,
+ deps = py_deps + ["@protobuf_archive//:protobuf_python"])
+
+ return
+
py_proto_library(
- name = name + "_py",
+ name = py_name,
srcs = srcs,
srcs_version = srcs_version,
- deps = deps + tf_deps(protodeps, "_py") + ["@protobuf_archive//:protobuf_python"],
+ deps = deps + py_deps + ["@protobuf_archive//:protobuf_python"],
protoc = "@protobuf_archive//:protoc",
default_runtime = "@protobuf_archive//:protobuf_python",
visibility = visibility,
diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl
index 51e856bed0..a9ddd4fc60 100644
--- a/tensorflow/tensorflow.bzl
+++ b/tensorflow/tensorflow.bzl
@@ -37,20 +37,25 @@ def src_to_test_name(src):
def full_path(relative_paths):
return [native.package_name() + "/" + relative for relative in relative_paths]
+def _add_tfcore_prefix(src):
+ if src.startswith("//"):
+ return src
+ return "//tensorflow/core:" + src
+
# List of proto files for android builds
def tf_android_core_proto_sources(core_proto_sources_relative):
return [
- "//tensorflow/core:" + p for p in core_proto_sources_relative
+ _add_tfcore_prefix(p) for p in core_proto_sources_relative
]
# Returns the list of pb.h and proto.h headers that are generated for
# tf_android_core_proto_sources().
def tf_android_core_proto_headers(core_proto_sources_relative):
return ([
- "//tensorflow/core/" + p.replace(".proto", ".pb.h")
+ _add_tfcore_prefix(p).replace(":", "/").replace(".proto", ".pb.h")
for p in core_proto_sources_relative
] + [
- "//tensorflow/core/" + p.replace(".proto", ".proto.h")
+ _add_tfcore_prefix(p).replace(":", "/").replace(".proto", ".proto.h")
for p in core_proto_sources_relative
])
@@ -1672,22 +1677,36 @@ def cuda_py_tests(name,
#
# Return a struct with fields (hdrs, srcs) containing the names of the
# generated files.
-def tf_generate_proto_text_sources(name, srcs_relative_dir, srcs):
+def tf_generate_proto_text_sources(name, srcs_relative_dir, srcs, protodeps=[], deps=[], visibility=None):
out_hdrs = (
[p.replace(".proto", ".pb_text.h")
for p in srcs] + [p.replace(".proto", ".pb_text-impl.h") for p in srcs])
out_srcs = [p.replace(".proto", ".pb_text.cc") for p in srcs]
native.genrule(
- name=name,
- srcs=srcs + [clean_dep("//tensorflow/tools/proto_text:placeholder.txt")],
+ name=name + "_srcs",
+ srcs=srcs + protodeps + [clean_dep("//tensorflow/tools/proto_text:placeholder.txt")],
outs=out_hdrs + out_srcs,
+ visibility=visibility,
cmd=
"$(location //tensorflow/tools/proto_text:gen_proto_text_functions) "
+ "$(@D) " + srcs_relative_dir + " $(SRCS)",
tools=[
clean_dep("//tensorflow/tools/proto_text:gen_proto_text_functions")
],)
- return struct(hdrs=out_hdrs, srcs=out_srcs)
+
+ native.filegroup(
+ name=name + "_hdrs",
+ srcs=out_hdrs,
+ visibility=visibility,
+ )
+
+ native.cc_library(
+ name=name,
+ srcs=out_srcs,
+ hdrs=out_hdrs,
+ visibility=visibility,
+ deps = deps,
+ )
def tf_genrule_cmd_append_to_srcs(to_append):
return ("cat $(SRCS) > $(@) && " + "echo >> $(@) && " + "echo " + to_append +
diff --git a/tensorflow/tools/proto_text/BUILD b/tensorflow/tools/proto_text/BUILD
index ef7bfdd3c9..31e8fb9120 100644
--- a/tensorflow/tools/proto_text/BUILD
+++ b/tensorflow/tools/proto_text/BUILD
@@ -75,9 +75,14 @@ tf_proto_library_cc(
)
tf_generate_proto_text_sources(
- name = "test_proto_text_srcs",
+ name = "test_proto_text",
srcs = ["test.proto"],
srcs_relative_dir = "tensorflow/tools/proto_text/",
+ deps = [
+ ":test_proto_cc",
+ "//tensorflow/core:lib",
+ "//tensorflow/core:lib_internal",
+ ],
)
tf_cc_test(
diff --git a/tensorflow/tools/proto_text/gen_proto_text_functions.cc b/tensorflow/tools/proto_text/gen_proto_text_functions.cc
index f0bb59acf8..234afe879b 100644
--- a/tensorflow/tools/proto_text/gen_proto_text_functions.cc
+++ b/tensorflow/tools/proto_text/gen_proto_text_functions.cc
@@ -130,7 +130,11 @@ int MainImpl(int argc, char** argv) {
const string path = output_root + "/" + proto_path_no_suffix + suffix;
FILE* f = fopen(path.c_str(), "w");
- if (f == nullptr) return -1;
+ if (f == nullptr) {
+ // We don't expect this output to be generated. It was specified in the
+ // list of sources solely to satisfy a proto import dependency.
+ continue;
+ }
if (fwrite(data.c_str(), 1, data.size(), f) != data.size()) {
fclose(f);
return -1;