|  | # Copyright (c) 2024, 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. | 
|  |  | 
|  | load( | 
|  | ":gen/sources.bzl", | 
|  | "bcm_internal_headers", | 
|  | "bcm_sources", | 
|  | "bcm_sources_asm", | 
|  | "bssl_internal_headers", | 
|  | "bssl_sources", | 
|  | "crypto_headers", | 
|  | "crypto_internal_headers", | 
|  | "crypto_sources", | 
|  | "crypto_sources_asm", | 
|  | "crypto_test_data", | 
|  | "crypto_test_sources", | 
|  | "decrepit_internal_headers", | 
|  | "decrepit_sources", | 
|  | "decrepit_test_sources", | 
|  | "pki_headers", | 
|  | "pki_internal_headers", | 
|  | "pki_sources", | 
|  | "pki_test_data", | 
|  | "pki_test_sources", | 
|  | "ssl_headers", | 
|  | "ssl_internal_headers", | 
|  | "ssl_sources", | 
|  | "ssl_test_sources", | 
|  | "test_support_internal_headers", | 
|  | "test_support_sources", | 
|  | "test_support_sources_asm", | 
|  | "urandom_test_sources", | 
|  | ) | 
|  | load(":util/util.bzl", "bssl_cc_binary", "bssl_cc_library", "bssl_cc_test") | 
|  |  | 
|  | licenses(["notice"]) | 
|  |  | 
|  | exports_files(["LICENSE"]) | 
|  |  | 
|  | bssl_cc_library( | 
|  | name = "crypto", | 
|  | srcs = bcm_sources + crypto_sources, | 
|  | hdrs = crypto_headers, | 
|  | asm_srcs = bcm_sources_asm + crypto_sources_asm, | 
|  | copts = ["-DBORINGSSL_IMPLEMENTATION"], | 
|  | includes = ["include"], | 
|  | internal_hdrs = bcm_internal_headers + crypto_internal_headers, | 
|  | linkopts = select({ | 
|  | "@platforms//os:windows": [ | 
|  | "-defaultlib:advapi32.lib", | 
|  | "-defaultlib:ws2_32.lib", | 
|  | ], | 
|  | "//conditions:default": ["-pthread"], | 
|  | }), | 
|  | visibility = ["//visibility:public"], | 
|  | ) | 
|  |  | 
|  | bssl_cc_library( | 
|  | name = "ssl", | 
|  | srcs = ssl_sources, | 
|  | hdrs = ssl_headers, | 
|  | copts = ["-DBORINGSSL_IMPLEMENTATION"], | 
|  | internal_hdrs = ssl_internal_headers, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [":crypto_internal"], | 
|  | ) | 
|  |  | 
|  | bssl_cc_library( | 
|  | name = "test_support", | 
|  | testonly = True, | 
|  | srcs = test_support_sources, | 
|  | asm_srcs = test_support_sources_asm, | 
|  | copts = ["-DBORINGSSL_USE_BAZEL_RUNFILES"], | 
|  | internal_hdrs = test_support_internal_headers, | 
|  | deps = [ | 
|  | ":crypto_internal", | 
|  | "@bazel_tools//tools/cpp/runfiles", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | bssl_cc_test( | 
|  | name = "crypto_test", | 
|  | size = "large", | 
|  | srcs = crypto_test_sources, | 
|  | data = crypto_test_data, | 
|  | # crypto_test references assembly symbols directly and thus must be linked | 
|  | # statically. | 
|  | linkstatic = True, | 
|  | shard_count = 32, | 
|  | deps = [ | 
|  | ":crypto_internal", | 
|  | ":test_support", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | bssl_cc_test( | 
|  | name = "urandom_test", | 
|  | srcs = urandom_test_sources, | 
|  | deps = [ | 
|  | ":crypto_internal", | 
|  | ":test_support", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | bssl_cc_test( | 
|  | name = "ssl_test", | 
|  | srcs = ssl_test_sources, | 
|  | deps = [ | 
|  | ":crypto_internal", | 
|  | ":ssl_internal", | 
|  | ":test_support", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | bssl_cc_binary( | 
|  | name = "bssl", | 
|  | srcs = bssl_sources + bssl_internal_headers, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":crypto_internal", | 
|  | ":ssl_internal", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | # Build, but do not export libdecrepit. | 
|  | bssl_cc_library( | 
|  | name = "decrepit", | 
|  | srcs = decrepit_sources, | 
|  | copts = ["-DBORINGSSL_IMPLEMENTATION"], | 
|  | internal_hdrs = decrepit_internal_headers, | 
|  | deps = [ | 
|  | ":crypto_internal", | 
|  | ":ssl_internal", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | bssl_cc_test( | 
|  | name = "decrepit_test", | 
|  | srcs = decrepit_test_sources, | 
|  | deps = [ | 
|  | ":crypto_internal", | 
|  | ":decrepit", | 
|  | ":test_support", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | # Build, but do not (yet) export libpki. | 
|  | bssl_cc_library( | 
|  | name = "pki", | 
|  | srcs = pki_sources, | 
|  | hdrs = pki_headers, | 
|  | copts = ["-DBORINGSSL_IMPLEMENTATION"], | 
|  | internal_hdrs = pki_internal_headers, | 
|  | deps = [":crypto"], | 
|  | ) | 
|  |  | 
|  | bssl_cc_test( | 
|  | name = "pki_test", | 
|  | srcs = pki_test_sources, | 
|  | data = pki_test_data, | 
|  | deps = [ | 
|  | ":crypto_internal", | 
|  | ":pki", | 
|  | ":test_support", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) |