xref: /aosp_15_r20/external/boringssl/src/BUILD.bazel (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
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