1# Copyright (c) 2024, Google Inc. 2# 3# Permission to use, copy, modify, and/or distribute this software for any 4# purpose with or without fee is hereby granted, provided that the above 5# copyright notice and this permission notice appear in all copies. 6# 7# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 10# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 11# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 12# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 13# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 15load( 16 ":gen/sources.bzl", 17 "bcm_internal_headers", 18 "bcm_sources", 19 "bcm_sources_asm", 20 "bssl_internal_headers", 21 "bssl_sources", 22 "crypto_headers", 23 "crypto_internal_headers", 24 "crypto_sources", 25 "crypto_sources_asm", 26 "crypto_test_data", 27 "crypto_test_sources", 28 "decrepit_internal_headers", 29 "decrepit_sources", 30 "decrepit_test_sources", 31 "pki_headers", 32 "pki_internal_headers", 33 "pki_sources", 34 "pki_test_data", 35 "pki_test_sources", 36 "ssl_headers", 37 "ssl_internal_headers", 38 "ssl_sources", 39 "ssl_test_sources", 40 "test_support_internal_headers", 41 "test_support_sources", 42 "test_support_sources_asm", 43 "urandom_test_sources", 44) 45load(":util/util.bzl", "bssl_cc_binary", "bssl_cc_library", "bssl_cc_test") 46 47licenses(["notice"]) 48 49exports_files(["LICENSE"]) 50 51bssl_cc_library( 52 name = "crypto", 53 srcs = bcm_sources + crypto_sources, 54 hdrs = crypto_headers, 55 asm_srcs = bcm_sources_asm + crypto_sources_asm, 56 copts = ["-DBORINGSSL_IMPLEMENTATION"], 57 includes = ["include"], 58 internal_hdrs = bcm_internal_headers + crypto_internal_headers, 59 linkopts = select({ 60 "@platforms//os:windows": [ 61 "-defaultlib:advapi32.lib", 62 "-defaultlib:ws2_32.lib", 63 ], 64 "//conditions:default": ["-pthread"], 65 }), 66 visibility = ["//visibility:public"], 67) 68 69bssl_cc_library( 70 name = "ssl", 71 srcs = ssl_sources, 72 hdrs = ssl_headers, 73 copts = ["-DBORINGSSL_IMPLEMENTATION"], 74 internal_hdrs = ssl_internal_headers, 75 visibility = ["//visibility:public"], 76 deps = [":crypto_internal"], 77) 78 79bssl_cc_library( 80 name = "test_support", 81 testonly = True, 82 srcs = test_support_sources, 83 asm_srcs = test_support_sources_asm, 84 copts = ["-DBORINGSSL_USE_BAZEL_RUNFILES"], 85 internal_hdrs = test_support_internal_headers, 86 deps = [ 87 ":crypto_internal", 88 "@bazel_tools//tools/cpp/runfiles", 89 "@googletest//:gtest", 90 ], 91) 92 93bssl_cc_test( 94 name = "crypto_test", 95 size = "large", 96 srcs = crypto_test_sources, 97 data = crypto_test_data, 98 # crypto_test references assembly symbols directly and thus must be linked 99 # statically. 100 linkstatic = True, 101 shard_count = 32, 102 deps = [ 103 ":crypto_internal", 104 ":test_support", 105 "@googletest//:gtest", 106 ], 107) 108 109bssl_cc_test( 110 name = "urandom_test", 111 srcs = urandom_test_sources, 112 deps = [ 113 ":crypto_internal", 114 ":test_support", 115 "@googletest//:gtest", 116 ], 117) 118 119bssl_cc_test( 120 name = "ssl_test", 121 srcs = ssl_test_sources, 122 deps = [ 123 ":crypto_internal", 124 ":ssl_internal", 125 ":test_support", 126 "@googletest//:gtest", 127 ], 128) 129 130bssl_cc_binary( 131 name = "bssl", 132 srcs = bssl_sources + bssl_internal_headers, 133 visibility = ["//visibility:public"], 134 deps = [ 135 ":crypto_internal", 136 ":ssl_internal", 137 ], 138) 139 140# Build, but do not export libdecrepit. 141bssl_cc_library( 142 name = "decrepit", 143 srcs = decrepit_sources, 144 copts = ["-DBORINGSSL_IMPLEMENTATION"], 145 internal_hdrs = decrepit_internal_headers, 146 deps = [ 147 ":crypto_internal", 148 ":ssl_internal", 149 ], 150) 151 152bssl_cc_test( 153 name = "decrepit_test", 154 srcs = decrepit_test_sources, 155 deps = [ 156 ":crypto_internal", 157 ":decrepit", 158 ":test_support", 159 "@googletest//:gtest", 160 ], 161) 162 163# Build, but do not (yet) export libpki. 164bssl_cc_library( 165 name = "pki", 166 srcs = pki_sources, 167 hdrs = pki_headers, 168 copts = ["-DBORINGSSL_IMPLEMENTATION"], 169 internal_hdrs = pki_internal_headers, 170 deps = [":crypto"], 171) 172 173bssl_cc_test( 174 name = "pki_test", 175 srcs = pki_test_sources, 176 data = pki_test_data, 177 deps = [ 178 ":crypto_internal", 179 ":pki", 180 ":test_support", 181 "@googletest//:gtest", 182 ], 183) 184