# Copyright (c) 2016, Google Inc.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */

# This BUILD file is used as part of the synthesized "-with-bazel" branches. We
# are in the process of transitioning to keeping all builds at tip-of-tree
# directly, see https://crbug.com/boringssl/542. This means, in the synthesized
# branch, "src" now reads as a separate Bazel package. Rather than suppress
# those build files, alias the targets.

alias(
    name = "crypto",
    actual = "//src:crypto",
    visibility = ["//visibility:public"],
)

alias(
    name = "ssl",
    actual = "//src:ssl",
    visibility = ["//visibility:public"],
)

alias(
    name = "bssl",
    actual = "//src:bssl",
    visibility = ["//visibility:public"],
)
