# Copyright 2016 The BoringSSL Authors
#
# 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"],
)
