Another attempt to implementation_deps, preserving transitivity The observation is that :ssl needs to say two things: 1. ssl_headers depends on crypto_headers 2. ssl_sources depends on crypto_internal_headers The first impacts :ssl's dependents, so it should act like deps. The second is private to :ssl, so it should act like implementation_deps. Specify both. Change-Id: Ie92b6d619d22f61dca870b02ffe12d4370c8947c Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/85029 Reviewed-by: Rudolf Polzer <rpolzer@google.com> Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/BUILD.bazel b/BUILD.bazel index c8c4b16..927c6ae 100644 --- a/BUILD.bazel +++ b/BUILD.bazel
@@ -89,7 +89,10 @@ copts = ["-DBORINGSSL_IMPLEMENTATION"], internal_hdrs = ssl_internal_headers, visibility = ["//visibility:public"], - deps = [":crypto_internal"], + # ssl_headers depend on :crypto's exported headers. + deps = [":crypto"], + # ssl_sources also depend on :crypto's internal headers. + implementation_deps = [":crypto_internal"], ) bssl_cc_library(
diff --git a/util/util.bzl b/util/util.bzl index 6b5b750..ff8574d 100644 --- a/util/util.bzl +++ b/util/util.bzl
@@ -132,6 +132,7 @@ asm_srcs = [], copts = [], deps = [], + implementation_deps = [], hdrs = [], includes = [], internal_hdrs = [], @@ -159,6 +160,7 @@ includes = includes, linkopts = linkopts, deps = deps, + implementation_deps = implementation_deps, testonly = testonly, alwayslink = alwayslink, **linkstatic_kwargs(linkstatic) @@ -168,7 +170,13 @@ cc_library( name = name, hdrs = hdrs, - deps = [":" + name_internal], + # Depend on the internal target via implementation_deps to avoid + # re-exporting internal_hdrs. + implementation_deps = [":" + name_internal], + # Although picked up transitively, re-specify deps and includes, so + # that targets depending on the public target also pick them up. + deps = deps, + includes = includes, visibility = visibility, )