xref: /aosp_15_r20/external/boringssl/Android.bp (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1*8fb009dcSAndroid Build Coastguard Worker// Note that some host libraries have the same module name as the target
2*8fb009dcSAndroid Build Coastguard Worker// libraries. This is currently needed to build, for example, adb. But it's
3*8fb009dcSAndroid Build Coastguard Worker// probably something that should be changed.
4*8fb009dcSAndroid Build Coastguard Worker
5*8fb009dcSAndroid Build Coastguard Workerpackage {
6*8fb009dcSAndroid Build Coastguard Worker    default_visibility: ["//visibility:private"],
7*8fb009dcSAndroid Build Coastguard Worker    default_applicable_licenses: ["external_boringssl_license"],
8*8fb009dcSAndroid Build Coastguard Worker}
9*8fb009dcSAndroid Build Coastguard Worker
10*8fb009dcSAndroid Build Coastguard Worker// Added automatically by a large-scale-change that took the approach of
11*8fb009dcSAndroid Build Coastguard Worker// 'apply every license found to every target'. While this makes sure we respect
12*8fb009dcSAndroid Build Coastguard Worker// every license restriction, it may not be entirely correct.
13*8fb009dcSAndroid Build Coastguard Worker//
14*8fb009dcSAndroid Build Coastguard Worker// e.g. GPL in an MIT project might only apply to the contrib/ directory.
15*8fb009dcSAndroid Build Coastguard Worker//
16*8fb009dcSAndroid Build Coastguard Worker// Please consider splitting the single license below into multiple licenses,
17*8fb009dcSAndroid Build Coastguard Worker// taking care not to lose any license_kind information, and overriding the
18*8fb009dcSAndroid Build Coastguard Worker// default license using the 'licenses: [...]' property on targets as needed.
19*8fb009dcSAndroid Build Coastguard Worker//
20*8fb009dcSAndroid Build Coastguard Worker// For unused files, consider creating a 'fileGroup' with "//visibility:private"
21*8fb009dcSAndroid Build Coastguard Worker// to attach the license to, and including a comment whether the files may be
22*8fb009dcSAndroid Build Coastguard Worker// used in the current project.
23*8fb009dcSAndroid Build Coastguard Worker// See: http://go/android-license-faq
24*8fb009dcSAndroid Build Coastguard Workerlicense {
25*8fb009dcSAndroid Build Coastguard Worker    name: "external_boringssl_license",
26*8fb009dcSAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
27*8fb009dcSAndroid Build Coastguard Worker    license_kinds: [
28*8fb009dcSAndroid Build Coastguard Worker        "SPDX-license-identifier-Apache-2.0",
29*8fb009dcSAndroid Build Coastguard Worker        "SPDX-license-identifier-BSD",
30*8fb009dcSAndroid Build Coastguard Worker        "SPDX-license-identifier-ISC",
31*8fb009dcSAndroid Build Coastguard Worker        "SPDX-license-identifier-MIT",
32*8fb009dcSAndroid Build Coastguard Worker        "SPDX-license-identifier-OpenSSL",
33*8fb009dcSAndroid Build Coastguard Worker        "legacy_unencumbered",
34*8fb009dcSAndroid Build Coastguard Worker    ],
35*8fb009dcSAndroid Build Coastguard Worker    license_text: [
36*8fb009dcSAndroid Build Coastguard Worker        "NOTICE",
37*8fb009dcSAndroid Build Coastguard Worker    ],
38*8fb009dcSAndroid Build Coastguard Worker}
39*8fb009dcSAndroid Build Coastguard Worker
40*8fb009dcSAndroid Build Coastguard Worker// Pull in the autogenerated sources modules
41*8fb009dcSAndroid Build Coastguard Workerbuild = ["sources.bp"]
42*8fb009dcSAndroid Build Coastguard Worker
43*8fb009dcSAndroid Build Coastguard Worker// Used by libcrypto, libssl, bssl tool, and native tests
44*8fb009dcSAndroid Build Coastguard Workercc_defaults {
45*8fb009dcSAndroid Build Coastguard Worker    // This contains the common options between boringssl_flags and
46*8fb009dcSAndroid Build Coastguard Worker    // boringssl_flags_baremetal. Nothing else should include this target
47*8fb009dcSAndroid Build Coastguard Worker    // directly.
48*8fb009dcSAndroid Build Coastguard Worker    name: "boringssl_flags_common",
49*8fb009dcSAndroid Build Coastguard Worker
50*8fb009dcSAndroid Build Coastguard Worker    cflags: [
51*8fb009dcSAndroid Build Coastguard Worker        "-fvisibility=hidden",
52*8fb009dcSAndroid Build Coastguard Worker        "-DBORINGSSL_SHARED_LIBRARY",
53*8fb009dcSAndroid Build Coastguard Worker        "-DOPENSSL_SMALL",
54*8fb009dcSAndroid Build Coastguard Worker        "-Werror",
55*8fb009dcSAndroid Build Coastguard Worker        "-Wno-unused-parameter",
56*8fb009dcSAndroid Build Coastguard Worker    ],
57*8fb009dcSAndroid Build Coastguard Worker
58*8fb009dcSAndroid Build Coastguard Worker    cppflags: [
59*8fb009dcSAndroid Build Coastguard Worker        "-Wall",
60*8fb009dcSAndroid Build Coastguard Worker        "-Werror",
61*8fb009dcSAndroid Build Coastguard Worker    ],
62*8fb009dcSAndroid Build Coastguard Worker
63*8fb009dcSAndroid Build Coastguard Worker    // Build BoringSSL and its tests against the same STL.
64*8fb009dcSAndroid Build Coastguard Worker    stl: "libc++_static",
65*8fb009dcSAndroid Build Coastguard Worker}
66*8fb009dcSAndroid Build Coastguard Worker
67*8fb009dcSAndroid Build Coastguard Workercc_defaults {
68*8fb009dcSAndroid Build Coastguard Worker    name: "boringssl_flags",
69*8fb009dcSAndroid Build Coastguard Worker    vendor_available: true,
70*8fb009dcSAndroid Build Coastguard Worker    product_available: true,
71*8fb009dcSAndroid Build Coastguard Worker    cflags: ["-DBORINGSSL_ANDROID_SYSTEM"],
72*8fb009dcSAndroid Build Coastguard Worker    defaults: ["boringssl_flags_common"],
73*8fb009dcSAndroid Build Coastguard Worker    sdk_version: "9",
74*8fb009dcSAndroid Build Coastguard Worker}
75*8fb009dcSAndroid Build Coastguard Worker
76*8fb009dcSAndroid Build Coastguard Workercc_defaults {
77*8fb009dcSAndroid Build Coastguard Worker    name: "boringssl_flags_baremetal",
78*8fb009dcSAndroid Build Coastguard Worker    cflags: [
79*8fb009dcSAndroid Build Coastguard Worker        "-DBORINGSSL_NO_STATIC_INITIALIZER",
80*8fb009dcSAndroid Build Coastguard Worker        "-DANDROID_BAREMETAL",
81*8fb009dcSAndroid Build Coastguard Worker    ],
82*8fb009dcSAndroid Build Coastguard Worker    defaults: [
83*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags_common",
84*8fb009dcSAndroid Build Coastguard Worker        "cc_baremetal_defaults",
85*8fb009dcSAndroid Build Coastguard Worker    ],
86*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
87*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
88*8fb009dcSAndroid Build Coastguard Worker    ],
89*8fb009dcSAndroid Build Coastguard Worker}
90*8fb009dcSAndroid Build Coastguard Worker
91*8fb009dcSAndroid Build Coastguard Worker// Used by libcrypto + libssl
92*8fb009dcSAndroid Build Coastguard Workercc_defaults {
93*8fb009dcSAndroid Build Coastguard Worker    name: "boringssl_defaults",
94*8fb009dcSAndroid Build Coastguard Worker
95*8fb009dcSAndroid Build Coastguard Worker    local_include_dirs: ["src/include"],
96*8fb009dcSAndroid Build Coastguard Worker    export_include_dirs: ["src/include"],
97*8fb009dcSAndroid Build Coastguard Worker    cflags: ["-DBORINGSSL_IMPLEMENTATION"],
98*8fb009dcSAndroid Build Coastguard Worker
99*8fb009dcSAndroid Build Coastguard Worker    cmake_snapshot_supported: true,
100*8fb009dcSAndroid Build Coastguard Worker}
101*8fb009dcSAndroid Build Coastguard Worker
102*8fb009dcSAndroid Build Coastguard Worker//// libcrypto, but not libcrypto_baremetal. libcrypto_baremetal is a single
103*8fb009dcSAndroid Build Coastguard Worker//// target, so there is no need for a libcrypto_defaults_baremetal.
104*8fb009dcSAndroid Build Coastguard Workercc_defaults {
105*8fb009dcSAndroid Build Coastguard Worker    name: "libcrypto_defaults",
106*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
107*8fb009dcSAndroid Build Coastguard Worker    ramdisk_available: true,
108*8fb009dcSAndroid Build Coastguard Worker    vendor_ramdisk_available: true,
109*8fb009dcSAndroid Build Coastguard Worker
110*8fb009dcSAndroid Build Coastguard Worker    target: {
111*8fb009dcSAndroid Build Coastguard Worker        windows: {
112*8fb009dcSAndroid Build Coastguard Worker            enabled: true,
113*8fb009dcSAndroid Build Coastguard Worker            host_ldlibs: ["-lws2_32"],
114*8fb009dcSAndroid Build Coastguard Worker        },
115*8fb009dcSAndroid Build Coastguard Worker        host: {
116*8fb009dcSAndroid Build Coastguard Worker            host_ldlibs: ["-lpthread"],
117*8fb009dcSAndroid Build Coastguard Worker        },
118*8fb009dcSAndroid Build Coastguard Worker        android: {
119*8fb009dcSAndroid Build Coastguard Worker            // On FIPS builds (i.e. Android only) prevent other libraries
120*8fb009dcSAndroid Build Coastguard Worker            // from pre-empting symbols in libcrypto which could affect FIPS
121*8fb009dcSAndroid Build Coastguard Worker            // compliance and cause integrity checks to fail. See b/160231064.
122*8fb009dcSAndroid Build Coastguard Worker            ldflags: ["-Wl,-Bsymbolic"],
123*8fb009dcSAndroid Build Coastguard Worker        },
124*8fb009dcSAndroid Build Coastguard Worker    },
125*8fb009dcSAndroid Build Coastguard Worker
126*8fb009dcSAndroid Build Coastguard Worker    stl: "none",
127*8fb009dcSAndroid Build Coastguard Worker}
128*8fb009dcSAndroid Build Coastguard Worker
129*8fb009dcSAndroid Build Coastguard Worker// Boring Crypto Module object file.
130*8fb009dcSAndroid Build Coastguard Worker// Common settings between bcm_object and bcm_object_for_testing.
131*8fb009dcSAndroid Build Coastguard Workercc_defaults {
132*8fb009dcSAndroid Build Coastguard Worker    name: "bcm_object_defaults",
133*8fb009dcSAndroid Build Coastguard Worker    device_supported: true,
134*8fb009dcSAndroid Build Coastguard Worker    defaults: [
135*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_bcm_sources",
136*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_defaults",
137*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
138*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
139*8fb009dcSAndroid Build Coastguard Worker    ],
140*8fb009dcSAndroid Build Coastguard Worker    sanitize: {
141*8fb009dcSAndroid Build Coastguard Worker        address: false,
142*8fb009dcSAndroid Build Coastguard Worker        hwaddress: false,
143*8fb009dcSAndroid Build Coastguard Worker        memtag_stack: false,
144*8fb009dcSAndroid Build Coastguard Worker        memtag_globals: false,
145*8fb009dcSAndroid Build Coastguard Worker        fuzzer: false,
146*8fb009dcSAndroid Build Coastguard Worker    },
147*8fb009dcSAndroid Build Coastguard Worker    target: {
148*8fb009dcSAndroid Build Coastguard Worker        android: {
149*8fb009dcSAndroid Build Coastguard Worker            cflags: [
150*8fb009dcSAndroid Build Coastguard Worker                "-DBORINGSSL_FIPS",
151*8fb009dcSAndroid Build Coastguard Worker                "-fPIC",
152*8fb009dcSAndroid Build Coastguard Worker                // -fno[data|text]-sections required to ensure a
153*8fb009dcSAndroid Build Coastguard Worker                // single text and data section for FIPS integrity check
154*8fb009dcSAndroid Build Coastguard Worker                "-fno-data-sections",
155*8fb009dcSAndroid Build Coastguard Worker                "-fno-function-sections",
156*8fb009dcSAndroid Build Coastguard Worker            ],
157*8fb009dcSAndroid Build Coastguard Worker            linker_script: "src/crypto/fipsmodule/fips_shared.lds",
158*8fb009dcSAndroid Build Coastguard Worker        },
159*8fb009dcSAndroid Build Coastguard Worker        // Temporary hack to let BoringSSL build with a new compiler.
160*8fb009dcSAndroid Build Coastguard Worker        // This doesn't enable HWASAN unconditionally, it just causes
161*8fb009dcSAndroid Build Coastguard Worker        // BoringSSL's asm code to unconditionally use a HWASAN-compatible
162*8fb009dcSAndroid Build Coastguard Worker        // global variable reference so that the non-HWASANified (because of
163*8fb009dcSAndroid Build Coastguard Worker        // sanitize: { hwaddress: false } above) code in the BCM can
164*8fb009dcSAndroid Build Coastguard Worker        // successfully link against the HWASANified code in the rest of
165*8fb009dcSAndroid Build Coastguard Worker        // BoringSSL in HWASAN builds.
166*8fb009dcSAndroid Build Coastguard Worker        android_arm64: {
167*8fb009dcSAndroid Build Coastguard Worker            asflags: [
168*8fb009dcSAndroid Build Coastguard Worker                "-fsanitize=hwaddress",
169*8fb009dcSAndroid Build Coastguard Worker            ],
170*8fb009dcSAndroid Build Coastguard Worker        },
171*8fb009dcSAndroid Build Coastguard Worker    },
172*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
173*8fb009dcSAndroid Build Coastguard Worker}
174*8fb009dcSAndroid Build Coastguard Worker
175*8fb009dcSAndroid Build Coastguard Workercc_object {
176*8fb009dcSAndroid Build Coastguard Worker    name: "bcm_object",
177*8fb009dcSAndroid Build Coastguard Worker    recovery_available: true,
178*8fb009dcSAndroid Build Coastguard Worker    native_bridge_supported: true,
179*8fb009dcSAndroid Build Coastguard Worker    defaults: [
180*8fb009dcSAndroid Build Coastguard Worker        "bcm_object_defaults",
181*8fb009dcSAndroid Build Coastguard Worker    ],
182*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
183*8fb009dcSAndroid Build Coastguard Worker        "//apex_available:platform",
184*8fb009dcSAndroid Build Coastguard Worker        "com.android.adbd",
185*8fb009dcSAndroid Build Coastguard Worker        "com.android.adservices",
186*8fb009dcSAndroid Build Coastguard Worker        "com.android.btservices",
187*8fb009dcSAndroid Build Coastguard Worker        "com.android.compos",
188*8fb009dcSAndroid Build Coastguard Worker        "com.android.configinfrastructure",
189*8fb009dcSAndroid Build Coastguard Worker        "com.android.conscrypt",
190*8fb009dcSAndroid Build Coastguard Worker        "com.android.extservices",
191*8fb009dcSAndroid Build Coastguard Worker        "com.android.ondevicepersonalization",
192*8fb009dcSAndroid Build Coastguard Worker        "com.android.resolv",
193*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
194*8fb009dcSAndroid Build Coastguard Worker        "com.android.wifi",
195*8fb009dcSAndroid Build Coastguard Worker    ],
196*8fb009dcSAndroid Build Coastguard Worker}
197*8fb009dcSAndroid Build Coastguard Worker
198*8fb009dcSAndroid Build Coastguard Worker// Version of bcm_object built with BORINGSSL_FIPS_BREAK_TESTS defined.
199*8fb009dcSAndroid Build Coastguard Worker// Only for use with the FIPS break-tests.sh script.
200*8fb009dcSAndroid Build Coastguard Workercc_object {
201*8fb009dcSAndroid Build Coastguard Worker    name: "bcm_object_for_testing",
202*8fb009dcSAndroid Build Coastguard Worker    visibility: [
203*8fb009dcSAndroid Build Coastguard Worker        "//external/boringssl",
204*8fb009dcSAndroid Build Coastguard Worker    ],
205*8fb009dcSAndroid Build Coastguard Worker    defaults: [
206*8fb009dcSAndroid Build Coastguard Worker        "bcm_object_defaults",
207*8fb009dcSAndroid Build Coastguard Worker    ],
208*8fb009dcSAndroid Build Coastguard Worker    target: {
209*8fb009dcSAndroid Build Coastguard Worker        android: {
210*8fb009dcSAndroid Build Coastguard Worker            cflags: ["-DBORINGSSL_FIPS_BREAK_TESTS"],
211*8fb009dcSAndroid Build Coastguard Worker        },
212*8fb009dcSAndroid Build Coastguard Worker    },
213*8fb009dcSAndroid Build Coastguard Worker}
214*8fb009dcSAndroid Build Coastguard Worker
215*8fb009dcSAndroid Build Coastguard Workerbootstrap_go_package {
216*8fb009dcSAndroid Build Coastguard Worker    name: "bssl_ar",
217*8fb009dcSAndroid Build Coastguard Worker    pkgPath: "boringssl.googlesource.com/boringssl/util/ar",
218*8fb009dcSAndroid Build Coastguard Worker    srcs: [
219*8fb009dcSAndroid Build Coastguard Worker        "src/util/ar/ar.go",
220*8fb009dcSAndroid Build Coastguard Worker    ],
221*8fb009dcSAndroid Build Coastguard Worker    testSrcs: [
222*8fb009dcSAndroid Build Coastguard Worker        "src/util/ar/ar_test.go",
223*8fb009dcSAndroid Build Coastguard Worker    ],
224*8fb009dcSAndroid Build Coastguard Worker}
225*8fb009dcSAndroid Build Coastguard Worker
226*8fb009dcSAndroid Build Coastguard Workerbootstrap_go_package {
227*8fb009dcSAndroid Build Coastguard Worker    name: "bssl_fipscommon",
228*8fb009dcSAndroid Build Coastguard Worker    pkgPath: "boringssl.googlesource.com/boringssl/util/fipstools/fipscommon",
229*8fb009dcSAndroid Build Coastguard Worker    srcs: [
230*8fb009dcSAndroid Build Coastguard Worker        "src/util/fipstools/fipscommon/const.go",
231*8fb009dcSAndroid Build Coastguard Worker    ],
232*8fb009dcSAndroid Build Coastguard Worker}
233*8fb009dcSAndroid Build Coastguard Worker
234*8fb009dcSAndroid Build Coastguard Workerblueprint_go_binary {
235*8fb009dcSAndroid Build Coastguard Worker    name: "bssl_inject_hash",
236*8fb009dcSAndroid Build Coastguard Worker    srcs: [
237*8fb009dcSAndroid Build Coastguard Worker        "src/util/fipstools/inject_hash/inject_hash.go",
238*8fb009dcSAndroid Build Coastguard Worker    ],
239*8fb009dcSAndroid Build Coastguard Worker    deps: [
240*8fb009dcSAndroid Build Coastguard Worker        "bssl_ar",
241*8fb009dcSAndroid Build Coastguard Worker        "bssl_fipscommon",
242*8fb009dcSAndroid Build Coastguard Worker    ],
243*8fb009dcSAndroid Build Coastguard Worker}
244*8fb009dcSAndroid Build Coastguard Worker
245*8fb009dcSAndroid Build Coastguard Worker// Target and host library.
246*8fb009dcSAndroid Build Coastguard Worker// Any changes here must also be reflected in libcrypto_for_test below.
247*8fb009dcSAndroid Build Coastguard Workercc_library {
248*8fb009dcSAndroid Build Coastguard Worker    name: "libcrypto",
249*8fb009dcSAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
250*8fb009dcSAndroid Build Coastguard Worker    vendor_available: true,
251*8fb009dcSAndroid Build Coastguard Worker    product_available: true,
252*8fb009dcSAndroid Build Coastguard Worker    native_bridge_supported: true,
253*8fb009dcSAndroid Build Coastguard Worker    double_loadable: true,
254*8fb009dcSAndroid Build Coastguard Worker    recovery_available: true,
255*8fb009dcSAndroid Build Coastguard Worker    defaults: [
256*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_sources",
257*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_defaults",
258*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
259*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
260*8fb009dcSAndroid Build Coastguard Worker    ],
261*8fb009dcSAndroid Build Coastguard Worker    unique_host_soname: true,
262*8fb009dcSAndroid Build Coastguard Worker    srcs: [
263*8fb009dcSAndroid Build Coastguard Worker        ":bcm_object",
264*8fb009dcSAndroid Build Coastguard Worker    ],
265*8fb009dcSAndroid Build Coastguard Worker    target: {
266*8fb009dcSAndroid Build Coastguard Worker        android: {
267*8fb009dcSAndroid Build Coastguard Worker            cflags: [
268*8fb009dcSAndroid Build Coastguard Worker                "-DBORINGSSL_FIPS",
269*8fb009dcSAndroid Build Coastguard Worker            ],
270*8fb009dcSAndroid Build Coastguard Worker            sanitize: {
271*8fb009dcSAndroid Build Coastguard Worker                // Disable address sanitizing otherwise libcrypto will not report
272*8fb009dcSAndroid Build Coastguard Worker                // itself as being in FIPS mode, which causes boringssl_self_test
273*8fb009dcSAndroid Build Coastguard Worker                // to fail.
274*8fb009dcSAndroid Build Coastguard Worker                address: false,
275*8fb009dcSAndroid Build Coastguard Worker            },
276*8fb009dcSAndroid Build Coastguard Worker            inject_bssl_hash: true,
277*8fb009dcSAndroid Build Coastguard Worker            static: {
278*8fb009dcSAndroid Build Coastguard Worker                // Disable the static version of libcrypto, as it causes
279*8fb009dcSAndroid Build Coastguard Worker                // problems for FIPS certification.  Use libcrypto_static for
280*8fb009dcSAndroid Build Coastguard Worker                // modules that need static libcrypto but do not need FIPS self
281*8fb009dcSAndroid Build Coastguard Worker                // testing, or use dynamic libcrypto.
282*8fb009dcSAndroid Build Coastguard Worker                enabled: false,
283*8fb009dcSAndroid Build Coastguard Worker            },
284*8fb009dcSAndroid Build Coastguard Worker        },
285*8fb009dcSAndroid Build Coastguard Worker    },
286*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
287*8fb009dcSAndroid Build Coastguard Worker        "//apex_available:platform",
288*8fb009dcSAndroid Build Coastguard Worker        "com.android.adbd",
289*8fb009dcSAndroid Build Coastguard Worker        "com.android.adservices",
290*8fb009dcSAndroid Build Coastguard Worker        "com.android.btservices",
291*8fb009dcSAndroid Build Coastguard Worker        "com.android.compos",
292*8fb009dcSAndroid Build Coastguard Worker        "com.android.configinfrastructure",
293*8fb009dcSAndroid Build Coastguard Worker        "com.android.conscrypt",
294*8fb009dcSAndroid Build Coastguard Worker        "com.android.extservices",
295*8fb009dcSAndroid Build Coastguard Worker        "com.android.ondevicepersonalization",
296*8fb009dcSAndroid Build Coastguard Worker        "com.android.resolv",
297*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
298*8fb009dcSAndroid Build Coastguard Worker        "com.android.wifi",
299*8fb009dcSAndroid Build Coastguard Worker    ],
300*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
301*8fb009dcSAndroid Build Coastguard Worker    afdo: true,
302*8fb009dcSAndroid Build Coastguard Worker}
303*8fb009dcSAndroid Build Coastguard Worker
304*8fb009dcSAndroid Build Coastguard Worker// Version of libcrypto build with BORINGSSL_FIPS_BREAK_TESTS defined
305*8fb009dcSAndroid Build Coastguard Worker// Only for use with the FIPS break-tests.sh script.
306*8fb009dcSAndroid Build Coastguard Worker// Must be kept in sync with libcrypto.
307*8fb009dcSAndroid Build Coastguard Workercc_library {
308*8fb009dcSAndroid Build Coastguard Worker    name: "libcrypto_for_testing",
309*8fb009dcSAndroid Build Coastguard Worker    visibility: [
310*8fb009dcSAndroid Build Coastguard Worker        "//external/boringssl",
311*8fb009dcSAndroid Build Coastguard Worker    ],
312*8fb009dcSAndroid Build Coastguard Worker    defaults: [
313*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_sources",
314*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_defaults",
315*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
316*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
317*8fb009dcSAndroid Build Coastguard Worker    ],
318*8fb009dcSAndroid Build Coastguard Worker    unique_host_soname: true,
319*8fb009dcSAndroid Build Coastguard Worker    srcs: [
320*8fb009dcSAndroid Build Coastguard Worker        ":bcm_object_for_testing",
321*8fb009dcSAndroid Build Coastguard Worker    ],
322*8fb009dcSAndroid Build Coastguard Worker    target: {
323*8fb009dcSAndroid Build Coastguard Worker        android: {
324*8fb009dcSAndroid Build Coastguard Worker            cflags: [
325*8fb009dcSAndroid Build Coastguard Worker                "-DBORINGSSL_FIPS",
326*8fb009dcSAndroid Build Coastguard Worker                "-DBORINGSSL_FIPS_BREAK_TESTS",
327*8fb009dcSAndroid Build Coastguard Worker            ],
328*8fb009dcSAndroid Build Coastguard Worker            sanitize: {
329*8fb009dcSAndroid Build Coastguard Worker                // Disable address sanitizing otherwise libcrypto will not report
330*8fb009dcSAndroid Build Coastguard Worker                // itself as being in FIPS mode, which causes boringssl_self_test
331*8fb009dcSAndroid Build Coastguard Worker                // to fail.
332*8fb009dcSAndroid Build Coastguard Worker                address: false,
333*8fb009dcSAndroid Build Coastguard Worker            },
334*8fb009dcSAndroid Build Coastguard Worker            inject_bssl_hash: true,
335*8fb009dcSAndroid Build Coastguard Worker            static: {
336*8fb009dcSAndroid Build Coastguard Worker                // Disable the static version of libcrypto, as it causes
337*8fb009dcSAndroid Build Coastguard Worker                // problems for FIPS certification.  Use libcrypto_static for
338*8fb009dcSAndroid Build Coastguard Worker                // modules that need static libcrypto but do not need FIPS self
339*8fb009dcSAndroid Build Coastguard Worker                // testing, or use dynamic libcrypto.
340*8fb009dcSAndroid Build Coastguard Worker                enabled: false,
341*8fb009dcSAndroid Build Coastguard Worker            },
342*8fb009dcSAndroid Build Coastguard Worker        },
343*8fb009dcSAndroid Build Coastguard Worker    },
344*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
345*8fb009dcSAndroid Build Coastguard Worker}
346*8fb009dcSAndroid Build Coastguard Worker
347*8fb009dcSAndroid Build Coastguard Worker// Static library
348*8fb009dcSAndroid Build Coastguard Worker// This version of libcrypto will not have FIPS self tests enabled, so its
349*8fb009dcSAndroid Build Coastguard Worker// usage is protected through visibility to ensure it doesn't end up used
350*8fb009dcSAndroid Build Coastguard Worker// somewhere that needs the FIPS version.
351*8fb009dcSAndroid Build Coastguard Workercc_library_static {
352*8fb009dcSAndroid Build Coastguard Worker    name: "libcrypto_static",
353*8fb009dcSAndroid Build Coastguard Worker    visibility: [
354*8fb009dcSAndroid Build Coastguard Worker        "//bootable/recovery/updater",
355*8fb009dcSAndroid Build Coastguard Worker        "//bootable/deprecated-ota/updater",
356*8fb009dcSAndroid Build Coastguard Worker        "//external/conscrypt",
357*8fb009dcSAndroid Build Coastguard Worker        "//external/python/cpython2",
358*8fb009dcSAndroid Build Coastguard Worker        "//external/rust/android-crates-io/crates/quiche",
359*8fb009dcSAndroid Build Coastguard Worker        // Strictly, only the *static* toybox for legacy devices should have
360*8fb009dcSAndroid Build Coastguard Worker        // access to libcrypto_static, but we can't express that.
361*8fb009dcSAndroid Build Coastguard Worker        "//external/toybox",
362*8fb009dcSAndroid Build Coastguard Worker        "//hardware/interfaces/confirmationui/1.0/vts/functional",
363*8fb009dcSAndroid Build Coastguard Worker        "//hardware/interfaces/drm/1.0/vts/functional",
364*8fb009dcSAndroid Build Coastguard Worker        "//hardware/interfaces/drm/1.2/vts/functional",
365*8fb009dcSAndroid Build Coastguard Worker        "//hardware/interfaces/drm/1.3/vts/functional",
366*8fb009dcSAndroid Build Coastguard Worker        "//hardware/interfaces/keymaster/3.0/vts/functional",
367*8fb009dcSAndroid Build Coastguard Worker        "//hardware/interfaces/keymaster/4.0/vts/functional",
368*8fb009dcSAndroid Build Coastguard Worker        "//hardware/interfaces/keymaster/4.1/vts/functional",
369*8fb009dcSAndroid Build Coastguard Worker        "//packages/modules/adb",
370*8fb009dcSAndroid Build Coastguard Worker        "//packages/modules/AdServices:__subpackages__",
371*8fb009dcSAndroid Build Coastguard Worker        "//packages/modules/DnsResolver/tests:__subpackages__",
372*8fb009dcSAndroid Build Coastguard Worker        "//packages/modules/NeuralNetworks:__subpackages__",
373*8fb009dcSAndroid Build Coastguard Worker        "//system/core/init",
374*8fb009dcSAndroid Build Coastguard Worker        "//system/core/fs_mgr/liblp",
375*8fb009dcSAndroid Build Coastguard Worker        "//system/core/fs_mgr/liblp/vts_core",
376*8fb009dcSAndroid Build Coastguard Worker        "//system/core/fs_mgr/libsnapshot",
377*8fb009dcSAndroid Build Coastguard Worker        "//system/libvintf/test",
378*8fb009dcSAndroid Build Coastguard Worker        "//system/security/keystore/tests",
379*8fb009dcSAndroid Build Coastguard Worker        "//system/security/provisioner",
380*8fb009dcSAndroid Build Coastguard Worker        "//test/vts-testcase/security/avb",
381*8fb009dcSAndroid Build Coastguard Worker        "//vendor:__subpackages__",
382*8fb009dcSAndroid Build Coastguard Worker    ],
383*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
384*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
385*8fb009dcSAndroid Build Coastguard Worker        "//apex_available:platform",
386*8fb009dcSAndroid Build Coastguard Worker        "com.android.adservices",
387*8fb009dcSAndroid Build Coastguard Worker        "com.android.extservices",
388*8fb009dcSAndroid Build Coastguard Worker        "com.android.neuralnetworks",
389*8fb009dcSAndroid Build Coastguard Worker    ],
390*8fb009dcSAndroid Build Coastguard Worker    defaults: [
391*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_bcm_sources",
392*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_sources",
393*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_defaults",
394*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
395*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
396*8fb009dcSAndroid Build Coastguard Worker    ],
397*8fb009dcSAndroid Build Coastguard Worker}
398*8fb009dcSAndroid Build Coastguard Worker
399*8fb009dcSAndroid Build Coastguard Worker// Static library for use in bare-metal environments
400*8fb009dcSAndroid Build Coastguard Workercc_library_static {
401*8fb009dcSAndroid Build Coastguard Worker    name: "libcrypto_baremetal",
402*8fb009dcSAndroid Build Coastguard Worker    defaults: [
403*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_bcm_sources",
404*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_sources",
405*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
406*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags_baremetal",
407*8fb009dcSAndroid Build Coastguard Worker    ],
408*8fb009dcSAndroid Build Coastguard Worker    visibility: [
409*8fb009dcSAndroid Build Coastguard Worker        "//external/avb:__subpackages__",
410*8fb009dcSAndroid Build Coastguard Worker        "//external/open-dice",
411*8fb009dcSAndroid Build Coastguard Worker        "//packages/modules/Virtualization:__subpackages__",
412*8fb009dcSAndroid Build Coastguard Worker        "//system/security/diced/open_dice",
413*8fb009dcSAndroid Build Coastguard Worker    ],
414*8fb009dcSAndroid Build Coastguard Worker
415*8fb009dcSAndroid Build Coastguard Worker    // b/336916369: This library gets linked into a rust rlib.  Disable LTO
416*8fb009dcSAndroid Build Coastguard Worker    // until cross-language lto is supported.
417*8fb009dcSAndroid Build Coastguard Worker    lto: {
418*8fb009dcSAndroid Build Coastguard Worker        never: true,
419*8fb009dcSAndroid Build Coastguard Worker    },
420*8fb009dcSAndroid Build Coastguard Worker}
421*8fb009dcSAndroid Build Coastguard Worker
422*8fb009dcSAndroid Build Coastguard Worker// For static linking into the ART module to provide limited functionality:
423*8fb009dcSAndroid Build Coastguard Worker// bignums and SHA1 for ELF checksums.
424*8fb009dcSAndroid Build Coastguard Workercc_library_static {
425*8fb009dcSAndroid Build Coastguard Worker    name: "libcrypto_for_art",
426*8fb009dcSAndroid Build Coastguard Worker    defaults: [
427*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_defaults",
428*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
429*8fb009dcSAndroid Build Coastguard Worker    ],
430*8fb009dcSAndroid Build Coastguard Worker    srcs: [
431*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/cpu_*.c",
432*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/crypto.c",
433*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/err/err.c",
434*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/fipsmodule/bn/*.c",
435*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/fipsmodule/bn/asm/*.c",
436*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/fipsmodule/rand/*.c",
437*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/fipsmodule/sha/sha1.c",
438*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/mem.c",
439*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/stack/stack.c",
440*8fb009dcSAndroid Build Coastguard Worker        "src/crypto/thread_pthread.c",
441*8fb009dcSAndroid Build Coastguard Worker        "src/gen/crypto/err_data.c",
442*8fb009dcSAndroid Build Coastguard Worker    ],
443*8fb009dcSAndroid Build Coastguard Worker    target: {
444*8fb009dcSAndroid Build Coastguard Worker        linux: {
445*8fb009dcSAndroid Build Coastguard Worker            srcs: [
446*8fb009dcSAndroid Build Coastguard Worker                "src/gen/bcm/*-linux.S",
447*8fb009dcSAndroid Build Coastguard Worker            ],
448*8fb009dcSAndroid Build Coastguard Worker        },
449*8fb009dcSAndroid Build Coastguard Worker    },
450*8fb009dcSAndroid Build Coastguard Worker    visibility: [
451*8fb009dcSAndroid Build Coastguard Worker        "//art:__subpackages__",
452*8fb009dcSAndroid Build Coastguard Worker        "//libcore:__subpackages__",
453*8fb009dcSAndroid Build Coastguard Worker    ],
454*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
455*8fb009dcSAndroid Build Coastguard Worker        "com.android.art",
456*8fb009dcSAndroid Build Coastguard Worker        "com.android.art.debug",
457*8fb009dcSAndroid Build Coastguard Worker        "com.android.art.testing",
458*8fb009dcSAndroid Build Coastguard Worker    ],
459*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
460*8fb009dcSAndroid Build Coastguard Worker}
461*8fb009dcSAndroid Build Coastguard Worker
462*8fb009dcSAndroid Build Coastguard Worker// Common defaults for lib*_fuzz_unsafe. These are unsafe and deterministic
463*8fb009dcSAndroid Build Coastguard Worker// libraries for testing and fuzzing only. See src/FUZZING.md.
464*8fb009dcSAndroid Build Coastguard Workercc_defaults {
465*8fb009dcSAndroid Build Coastguard Worker    name: "boringssl_fuzz_unsafe_defaults",
466*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
467*8fb009dcSAndroid Build Coastguard Worker    cflags: [
468*8fb009dcSAndroid Build Coastguard Worker        "-DBORINGSSL_UNSAFE_DETERMINISTIC_MODE",
469*8fb009dcSAndroid Build Coastguard Worker        "-DBORINGSSL_UNSAFE_FUZZER_MODE",
470*8fb009dcSAndroid Build Coastguard Worker    ],
471*8fb009dcSAndroid Build Coastguard Worker    visibility: [
472*8fb009dcSAndroid Build Coastguard Worker        "//frameworks/native/libs/binder/tests:__subpackages__",
473*8fb009dcSAndroid Build Coastguard Worker    ],
474*8fb009dcSAndroid Build Coastguard Worker}
475*8fb009dcSAndroid Build Coastguard Worker
476*8fb009dcSAndroid Build Coastguard Worker// Unsafe and deterministic version of libcrypto. For testing and fuzzing only.
477*8fb009dcSAndroid Build Coastguard Worker// See src/FUZZING.md.
478*8fb009dcSAndroid Build Coastguard Workercc_test_library {
479*8fb009dcSAndroid Build Coastguard Worker    name: "libcrypto_fuzz_unsafe",
480*8fb009dcSAndroid Build Coastguard Worker    ramdisk_available: false,
481*8fb009dcSAndroid Build Coastguard Worker    vendor_ramdisk_available: false,
482*8fb009dcSAndroid Build Coastguard Worker    defaults: [
483*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_bcm_sources",
484*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_sources",
485*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_defaults",
486*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
487*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
488*8fb009dcSAndroid Build Coastguard Worker        "boringssl_fuzz_unsafe_defaults",
489*8fb009dcSAndroid Build Coastguard Worker    ],
490*8fb009dcSAndroid Build Coastguard Worker}
491*8fb009dcSAndroid Build Coastguard Worker
492*8fb009dcSAndroid Build Coastguard Worker//// libssl
493*8fb009dcSAndroid Build Coastguard Worker
494*8fb009dcSAndroid Build Coastguard Worker// Target static library
495*8fb009dcSAndroid Build Coastguard Worker
496*8fb009dcSAndroid Build Coastguard Worker// Static and Shared library
497*8fb009dcSAndroid Build Coastguard Workercc_library {
498*8fb009dcSAndroid Build Coastguard Worker    name: "libssl",
499*8fb009dcSAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
500*8fb009dcSAndroid Build Coastguard Worker    recovery_available: true,
501*8fb009dcSAndroid Build Coastguard Worker    vendor_available: true,
502*8fb009dcSAndroid Build Coastguard Worker    product_available: true,
503*8fb009dcSAndroid Build Coastguard Worker    native_bridge_supported: true,
504*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
505*8fb009dcSAndroid Build Coastguard Worker    defaults: [
506*8fb009dcSAndroid Build Coastguard Worker        "libssl_sources",
507*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
508*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
509*8fb009dcSAndroid Build Coastguard Worker    ],
510*8fb009dcSAndroid Build Coastguard Worker    target: {
511*8fb009dcSAndroid Build Coastguard Worker        windows: {
512*8fb009dcSAndroid Build Coastguard Worker            enabled: true,
513*8fb009dcSAndroid Build Coastguard Worker        },
514*8fb009dcSAndroid Build Coastguard Worker    },
515*8fb009dcSAndroid Build Coastguard Worker    unique_host_soname: true,
516*8fb009dcSAndroid Build Coastguard Worker
517*8fb009dcSAndroid Build Coastguard Worker    shared_libs: ["libcrypto"],
518*8fb009dcSAndroid Build Coastguard Worker
519*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
520*8fb009dcSAndroid Build Coastguard Worker        "//apex_available:platform",
521*8fb009dcSAndroid Build Coastguard Worker        "com.android.adbd",
522*8fb009dcSAndroid Build Coastguard Worker        "com.android.btservices",
523*8fb009dcSAndroid Build Coastguard Worker        "com.android.configinfrastructure",
524*8fb009dcSAndroid Build Coastguard Worker        "com.android.conscrypt",
525*8fb009dcSAndroid Build Coastguard Worker        "com.android.resolv",
526*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
527*8fb009dcSAndroid Build Coastguard Worker        "com.android.wifi",
528*8fb009dcSAndroid Build Coastguard Worker    ],
529*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
530*8fb009dcSAndroid Build Coastguard Worker}
531*8fb009dcSAndroid Build Coastguard Worker
532*8fb009dcSAndroid Build Coastguard Workercc_library_static {
533*8fb009dcSAndroid Build Coastguard Worker    name: "libssl_baremetal",
534*8fb009dcSAndroid Build Coastguard Worker    defaults: [
535*8fb009dcSAndroid Build Coastguard Worker        "libssl_sources",
536*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
537*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags_baremetal",
538*8fb009dcSAndroid Build Coastguard Worker    ],
539*8fb009dcSAndroid Build Coastguard Worker    static_libs: ["libcrypto_baremetal"],
540*8fb009dcSAndroid Build Coastguard Worker}
541*8fb009dcSAndroid Build Coastguard Worker
542*8fb009dcSAndroid Build Coastguard Workercc_library_host_static {
543*8fb009dcSAndroid Build Coastguard Worker    name: "libssl_static",
544*8fb009dcSAndroid Build Coastguard Worker    defaults: [
545*8fb009dcSAndroid Build Coastguard Worker        "libssl_sources",
546*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
547*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
548*8fb009dcSAndroid Build Coastguard Worker    ],
549*8fb009dcSAndroid Build Coastguard Worker    static_libs: ["libcrypto_static"],
550*8fb009dcSAndroid Build Coastguard Worker}
551*8fb009dcSAndroid Build Coastguard Worker
552*8fb009dcSAndroid Build Coastguard Worker// Unsafe and deterministic version of libssl. For testing and fuzzing only.
553*8fb009dcSAndroid Build Coastguard Worker// See src/FUZZING.md.
554*8fb009dcSAndroid Build Coastguard Workercc_test_library {
555*8fb009dcSAndroid Build Coastguard Worker    name: "libssl_fuzz_unsafe",
556*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
557*8fb009dcSAndroid Build Coastguard Worker    defaults: [
558*8fb009dcSAndroid Build Coastguard Worker        "libssl_sources",
559*8fb009dcSAndroid Build Coastguard Worker        "boringssl_defaults",
560*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
561*8fb009dcSAndroid Build Coastguard Worker        "boringssl_fuzz_unsafe_defaults",
562*8fb009dcSAndroid Build Coastguard Worker    ],
563*8fb009dcSAndroid Build Coastguard Worker    static_libs: [
564*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_fuzz_unsafe",
565*8fb009dcSAndroid Build Coastguard Worker    ],
566*8fb009dcSAndroid Build Coastguard Worker}
567*8fb009dcSAndroid Build Coastguard Worker
568*8fb009dcSAndroid Build Coastguard Worker// Tool
569*8fb009dcSAndroid Build Coastguard Workercc_binary {
570*8fb009dcSAndroid Build Coastguard Worker    name: "bssl",
571*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
572*8fb009dcSAndroid Build Coastguard Worker    defaults: [
573*8fb009dcSAndroid Build Coastguard Worker        "bssl_sources",
574*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
575*8fb009dcSAndroid Build Coastguard Worker    ],
576*8fb009dcSAndroid Build Coastguard Worker
577*8fb009dcSAndroid Build Coastguard Worker    shared_libs: [
578*8fb009dcSAndroid Build Coastguard Worker        "libcrypto",
579*8fb009dcSAndroid Build Coastguard Worker        "libssl",
580*8fb009dcSAndroid Build Coastguard Worker    ],
581*8fb009dcSAndroid Build Coastguard Worker    target: {
582*8fb009dcSAndroid Build Coastguard Worker        darwin: {
583*8fb009dcSAndroid Build Coastguard Worker            enabled: false,
584*8fb009dcSAndroid Build Coastguard Worker        },
585*8fb009dcSAndroid Build Coastguard Worker        android: {
586*8fb009dcSAndroid Build Coastguard Worker            compile_multilib: "both",
587*8fb009dcSAndroid Build Coastguard Worker        },
588*8fb009dcSAndroid Build Coastguard Worker    },
589*8fb009dcSAndroid Build Coastguard Worker    multilib: {
590*8fb009dcSAndroid Build Coastguard Worker        lib32: {
591*8fb009dcSAndroid Build Coastguard Worker            suffix: "32",
592*8fb009dcSAndroid Build Coastguard Worker        },
593*8fb009dcSAndroid Build Coastguard Worker    },
594*8fb009dcSAndroid Build Coastguard Worker}
595*8fb009dcSAndroid Build Coastguard Worker
596*8fb009dcSAndroid Build Coastguard Worker// Used for ACVP testing for FIPS certification.
597*8fb009dcSAndroid Build Coastguard Worker// Not installed on devices by default.
598*8fb009dcSAndroid Build Coastguard Workercc_binary {
599*8fb009dcSAndroid Build Coastguard Worker    name: "acvp_modulewrapper",
600*8fb009dcSAndroid Build Coastguard Worker    srcs: [
601*8fb009dcSAndroid Build Coastguard Worker        "src/util/fipstools/acvp/modulewrapper/main.cc",
602*8fb009dcSAndroid Build Coastguard Worker    ],
603*8fb009dcSAndroid Build Coastguard Worker    target: {
604*8fb009dcSAndroid Build Coastguard Worker        android_x86: {
605*8fb009dcSAndroid Build Coastguard Worker            enabled: false,
606*8fb009dcSAndroid Build Coastguard Worker        },
607*8fb009dcSAndroid Build Coastguard Worker        android_x86_64: {
608*8fb009dcSAndroid Build Coastguard Worker            enabled: false,
609*8fb009dcSAndroid Build Coastguard Worker        },
610*8fb009dcSAndroid Build Coastguard Worker    },
611*8fb009dcSAndroid Build Coastguard Worker    stem: "modulewrapper",
612*8fb009dcSAndroid Build Coastguard Worker    compile_multilib: "both",
613*8fb009dcSAndroid Build Coastguard Worker    multilib: {
614*8fb009dcSAndroid Build Coastguard Worker        lib32: {
615*8fb009dcSAndroid Build Coastguard Worker            suffix: "32",
616*8fb009dcSAndroid Build Coastguard Worker        },
617*8fb009dcSAndroid Build Coastguard Worker    },
618*8fb009dcSAndroid Build Coastguard Worker
619*8fb009dcSAndroid Build Coastguard Worker    static_libs: [
620*8fb009dcSAndroid Build Coastguard Worker        "libacvp_modulewrapper",
621*8fb009dcSAndroid Build Coastguard Worker    ],
622*8fb009dcSAndroid Build Coastguard Worker    shared_libs: [
623*8fb009dcSAndroid Build Coastguard Worker        "libcrypto",
624*8fb009dcSAndroid Build Coastguard Worker    ],
625*8fb009dcSAndroid Build Coastguard Worker
626*8fb009dcSAndroid Build Coastguard Worker    defaults: [
627*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
628*8fb009dcSAndroid Build Coastguard Worker    ],
629*8fb009dcSAndroid Build Coastguard Worker}
630*8fb009dcSAndroid Build Coastguard Worker
631*8fb009dcSAndroid Build Coastguard Worker// ACVP wrapper implementation shared between Android and Trusty
632*8fb009dcSAndroid Build Coastguard Workercc_library_static {
633*8fb009dcSAndroid Build Coastguard Worker    name: "libacvp_modulewrapper",
634*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
635*8fb009dcSAndroid Build Coastguard Worker    vendor_available: true,
636*8fb009dcSAndroid Build Coastguard Worker    srcs: [
637*8fb009dcSAndroid Build Coastguard Worker        "src/util/fipstools/acvp/modulewrapper/modulewrapper.cc",
638*8fb009dcSAndroid Build Coastguard Worker    ],
639*8fb009dcSAndroid Build Coastguard Worker    target: {
640*8fb009dcSAndroid Build Coastguard Worker        android: {
641*8fb009dcSAndroid Build Coastguard Worker            compile_multilib: "both",
642*8fb009dcSAndroid Build Coastguard Worker        },
643*8fb009dcSAndroid Build Coastguard Worker    },
644*8fb009dcSAndroid Build Coastguard Worker    export_include_dirs: ["src/util/fipstools/acvp/modulewrapper/"],
645*8fb009dcSAndroid Build Coastguard Worker    shared_libs: [
646*8fb009dcSAndroid Build Coastguard Worker        "libcrypto",
647*8fb009dcSAndroid Build Coastguard Worker    ],
648*8fb009dcSAndroid Build Coastguard Worker
649*8fb009dcSAndroid Build Coastguard Worker    defaults: [
650*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
651*8fb009dcSAndroid Build Coastguard Worker    ],
652*8fb009dcSAndroid Build Coastguard Worker
653*8fb009dcSAndroid Build Coastguard Worker    visibility: ["//system/core/trusty/utils/acvp"],
654*8fb009dcSAndroid Build Coastguard Worker}
655*8fb009dcSAndroid Build Coastguard Worker
656*8fb009dcSAndroid Build Coastguard Worker// Test support library
657*8fb009dcSAndroid Build Coastguard Workercc_test_library {
658*8fb009dcSAndroid Build Coastguard Worker    name: "boringssl_test_support",
659*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
660*8fb009dcSAndroid Build Coastguard Worker    defaults: [
661*8fb009dcSAndroid Build Coastguard Worker        "boringssl_test_support_sources",
662*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
663*8fb009dcSAndroid Build Coastguard Worker    ],
664*8fb009dcSAndroid Build Coastguard Worker
665*8fb009dcSAndroid Build Coastguard Worker    shared_libs: [
666*8fb009dcSAndroid Build Coastguard Worker        "libcrypto",
667*8fb009dcSAndroid Build Coastguard Worker    ],
668*8fb009dcSAndroid Build Coastguard Worker}
669*8fb009dcSAndroid Build Coastguard Worker
670*8fb009dcSAndroid Build Coastguard Worker// Tests
671*8fb009dcSAndroid Build Coastguard Workercc_test {
672*8fb009dcSAndroid Build Coastguard Worker    name: "boringssl_crypto_test",
673*8fb009dcSAndroid Build Coastguard Worker    test_config: "CryptoNativeTests.xml",
674*8fb009dcSAndroid Build Coastguard Worker    test_suites: ["general-tests"],
675*8fb009dcSAndroid Build Coastguard Worker    host_supported: false,
676*8fb009dcSAndroid Build Coastguard Worker    vendor_available: false,
677*8fb009dcSAndroid Build Coastguard Worker    product_available: false,
678*8fb009dcSAndroid Build Coastguard Worker    per_testcase_directory: true,
679*8fb009dcSAndroid Build Coastguard Worker    compile_multilib: "both",
680*8fb009dcSAndroid Build Coastguard Worker    multilib: {
681*8fb009dcSAndroid Build Coastguard Worker        lib32: {
682*8fb009dcSAndroid Build Coastguard Worker            suffix: "32",
683*8fb009dcSAndroid Build Coastguard Worker        },
684*8fb009dcSAndroid Build Coastguard Worker        lib64: {
685*8fb009dcSAndroid Build Coastguard Worker            suffix: "64",
686*8fb009dcSAndroid Build Coastguard Worker        },
687*8fb009dcSAndroid Build Coastguard Worker    },
688*8fb009dcSAndroid Build Coastguard Worker    defaults: [
689*8fb009dcSAndroid Build Coastguard Worker        "boringssl_crypto_test_sources",
690*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
691*8fb009dcSAndroid Build Coastguard Worker    ],
692*8fb009dcSAndroid Build Coastguard Worker    whole_static_libs: ["boringssl_test_support"],
693*8fb009dcSAndroid Build Coastguard Worker    // Statically link the library to test to ensure we always pick up the
694*8fb009dcSAndroid Build Coastguard Worker    // correct version regardless of device linker configuration.
695*8fb009dcSAndroid Build Coastguard Worker    static_libs: [
696*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_static",
697*8fb009dcSAndroid Build Coastguard Worker        "libgmock_ndk",
698*8fb009dcSAndroid Build Coastguard Worker    ],
699*8fb009dcSAndroid Build Coastguard Worker    target: {
700*8fb009dcSAndroid Build Coastguard Worker        android: {
701*8fb009dcSAndroid Build Coastguard Worker            test_suites: ["mts-conscrypt"],
702*8fb009dcSAndroid Build Coastguard Worker        },
703*8fb009dcSAndroid Build Coastguard Worker    },
704*8fb009dcSAndroid Build Coastguard Worker}
705*8fb009dcSAndroid Build Coastguard Worker
706*8fb009dcSAndroid Build Coastguard Workercc_test {
707*8fb009dcSAndroid Build Coastguard Worker    name: "boringssl_ssl_test",
708*8fb009dcSAndroid Build Coastguard Worker    test_config: "SslNativeTests.xml",
709*8fb009dcSAndroid Build Coastguard Worker    test_suites: ["general-tests"],
710*8fb009dcSAndroid Build Coastguard Worker    host_supported: false,
711*8fb009dcSAndroid Build Coastguard Worker    vendor_available: false,
712*8fb009dcSAndroid Build Coastguard Worker    product_available: false,
713*8fb009dcSAndroid Build Coastguard Worker    per_testcase_directory: true,
714*8fb009dcSAndroid Build Coastguard Worker    compile_multilib: "both",
715*8fb009dcSAndroid Build Coastguard Worker    multilib: {
716*8fb009dcSAndroid Build Coastguard Worker        lib32: {
717*8fb009dcSAndroid Build Coastguard Worker            suffix: "32",
718*8fb009dcSAndroid Build Coastguard Worker        },
719*8fb009dcSAndroid Build Coastguard Worker        lib64: {
720*8fb009dcSAndroid Build Coastguard Worker            suffix: "64",
721*8fb009dcSAndroid Build Coastguard Worker        },
722*8fb009dcSAndroid Build Coastguard Worker    },
723*8fb009dcSAndroid Build Coastguard Worker    defaults: [
724*8fb009dcSAndroid Build Coastguard Worker        "boringssl_ssl_test_sources",
725*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
726*8fb009dcSAndroid Build Coastguard Worker    ],
727*8fb009dcSAndroid Build Coastguard Worker    whole_static_libs: ["boringssl_test_support"],
728*8fb009dcSAndroid Build Coastguard Worker    // Statically link the libraries to test to ensure we always pick up the
729*8fb009dcSAndroid Build Coastguard Worker    // correct version regardless of device linker configuration.
730*8fb009dcSAndroid Build Coastguard Worker    static_libs: [
731*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_static",
732*8fb009dcSAndroid Build Coastguard Worker        "libgmock_ndk",
733*8fb009dcSAndroid Build Coastguard Worker        "libssl",
734*8fb009dcSAndroid Build Coastguard Worker    ],
735*8fb009dcSAndroid Build Coastguard Worker    target: {
736*8fb009dcSAndroid Build Coastguard Worker        android: {
737*8fb009dcSAndroid Build Coastguard Worker            test_suites: ["mts-conscrypt"],
738*8fb009dcSAndroid Build Coastguard Worker        },
739*8fb009dcSAndroid Build Coastguard Worker    },
740*8fb009dcSAndroid Build Coastguard Worker}
741*8fb009dcSAndroid Build Coastguard Worker
742*8fb009dcSAndroid Build Coastguard Worker// Utility binary for CMVP on-site testing.
743*8fb009dcSAndroid Build Coastguard Workercc_binary {
744*8fb009dcSAndroid Build Coastguard Worker    name: "test_fips",
745*8fb009dcSAndroid Build Coastguard Worker    host_supported: false,
746*8fb009dcSAndroid Build Coastguard Worker    compile_multilib: "both",
747*8fb009dcSAndroid Build Coastguard Worker    multilib: {
748*8fb009dcSAndroid Build Coastguard Worker        lib32: {
749*8fb009dcSAndroid Build Coastguard Worker            suffix: "32",
750*8fb009dcSAndroid Build Coastguard Worker        },
751*8fb009dcSAndroid Build Coastguard Worker        lib64: {
752*8fb009dcSAndroid Build Coastguard Worker            suffix: "",
753*8fb009dcSAndroid Build Coastguard Worker        },
754*8fb009dcSAndroid Build Coastguard Worker    },
755*8fb009dcSAndroid Build Coastguard Worker    defaults: [
756*8fb009dcSAndroid Build Coastguard Worker        "boringssl_flags",
757*8fb009dcSAndroid Build Coastguard Worker    ],
758*8fb009dcSAndroid Build Coastguard Worker    cflags: [
759*8fb009dcSAndroid Build Coastguard Worker        "-DBORINGSSL_FIPS",
760*8fb009dcSAndroid Build Coastguard Worker    ],
761*8fb009dcSAndroid Build Coastguard Worker    shared_libs: [
762*8fb009dcSAndroid Build Coastguard Worker        "libcrypto",
763*8fb009dcSAndroid Build Coastguard Worker    ],
764*8fb009dcSAndroid Build Coastguard Worker    srcs: [
765*8fb009dcSAndroid Build Coastguard Worker        "src/util/fipstools/test_fips.c",
766*8fb009dcSAndroid Build Coastguard Worker    ],
767*8fb009dcSAndroid Build Coastguard Worker    required: [
768*8fb009dcSAndroid Build Coastguard Worker        "adb",
769*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_for_testing",
770*8fb009dcSAndroid Build Coastguard Worker    ],
771*8fb009dcSAndroid Build Coastguard Worker}
772*8fb009dcSAndroid Build Coastguard Worker
773*8fb009dcSAndroid Build Coastguard Workerlibbssl_sys_raw_flags = [
774*8fb009dcSAndroid Build Coastguard Worker    // Adapted from upstream the src/rust/CMakeLists.txt file at:
775*8fb009dcSAndroid Build Coastguard Worker    // https://boringssl.googlesource.com/boringssl/+/refs/heads/master/rust/CMakeLists.txt
776*8fb009dcSAndroid Build Coastguard Worker    "--no-derive-default",
777*8fb009dcSAndroid Build Coastguard Worker    "--enable-function-attribute-detection",
778*8fb009dcSAndroid Build Coastguard Worker    "--use-core",
779*8fb009dcSAndroid Build Coastguard Worker    "--default-macro-constant-type=signed",
780*8fb009dcSAndroid Build Coastguard Worker    "--rustified-enum=point_conversion_form_t",
781*8fb009dcSAndroid Build Coastguard Worker    // These regexes use [[:punct:]] instead of / to handle Windows file paths.
782*8fb009dcSAndroid Build Coastguard Worker    // Ideally we would write [/\\], but escaping rules are complex, and often
783*8fb009dcSAndroid Build Coastguard Worker    // ill-defined, in some build systems, so align on [[:punct:]].
784*8fb009dcSAndroid Build Coastguard Worker    "--allowlist-file=.*[[:punct:]]include[[:punct:]]openssl[[:punct:]].*\\.h",
785*8fb009dcSAndroid Build Coastguard Worker    "--allowlist-file=.*[[:punct:]]rust_wrapper\\.h",
786*8fb009dcSAndroid Build Coastguard Worker]
787*8fb009dcSAndroid Build Coastguard Worker
788*8fb009dcSAndroid Build Coastguard Worker// Rust bindings
789*8fb009dcSAndroid Build Coastguard Workerrust_bindgen {
790*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_sys_raw",
791*8fb009dcSAndroid Build Coastguard Worker    source_stem: "bssl_sys_bindings",
792*8fb009dcSAndroid Build Coastguard Worker    crate_name: "bssl_sys_raw",
793*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
794*8fb009dcSAndroid Build Coastguard Worker    wrapper_src: "src/rust/bssl-sys/wrapper.h",
795*8fb009dcSAndroid Build Coastguard Worker    vendor_available: true,
796*8fb009dcSAndroid Build Coastguard Worker    product_available: true,
797*8fb009dcSAndroid Build Coastguard Worker    bindgen_flags: libbssl_sys_raw_flags,
798*8fb009dcSAndroid Build Coastguard Worker    shared_libs: [
799*8fb009dcSAndroid Build Coastguard Worker        "libcrypto",
800*8fb009dcSAndroid Build Coastguard Worker        "libssl",
801*8fb009dcSAndroid Build Coastguard Worker    ],
802*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
803*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
804*8fb009dcSAndroid Build Coastguard Worker        "//apex_available:platform",
805*8fb009dcSAndroid Build Coastguard Worker        "com.android.configinfrastructure",
806*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
807*8fb009dcSAndroid Build Coastguard Worker    ],
808*8fb009dcSAndroid Build Coastguard Worker}
809*8fb009dcSAndroid Build Coastguard Worker
810*8fb009dcSAndroid Build Coastguard Workerrust_bindgen {
811*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_sys_raw_nostd",
812*8fb009dcSAndroid Build Coastguard Worker    source_stem: "bssl_sys_bindings",
813*8fb009dcSAndroid Build Coastguard Worker    crate_name: "bssl_sys_raw",
814*8fb009dcSAndroid Build Coastguard Worker    wrapper_src: "src/rust/bssl-sys/wrapper.h",
815*8fb009dcSAndroid Build Coastguard Worker    bindgen_flags: [
816*8fb009dcSAndroid Build Coastguard Worker        "--ctypes-prefix=core::ffi",
817*8fb009dcSAndroid Build Coastguard Worker    ] + libbssl_sys_raw_flags,
818*8fb009dcSAndroid Build Coastguard Worker    header_libs: [
819*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_baremetal",
820*8fb009dcSAndroid Build Coastguard Worker        "libssl_baremetal",
821*8fb009dcSAndroid Build Coastguard Worker    ],
822*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
823*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
824*8fb009dcSAndroid Build Coastguard Worker    ],
825*8fb009dcSAndroid Build Coastguard Worker}
826*8fb009dcSAndroid Build Coastguard Worker
827*8fb009dcSAndroid Build Coastguard Worker// Encapsulate the bindgen-generated layout tests as a test target.
828*8fb009dcSAndroid Build Coastguard Workerrust_test {
829*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_sys_raw_test",
830*8fb009dcSAndroid Build Coastguard Worker    srcs: [
831*8fb009dcSAndroid Build Coastguard Worker        ":libbssl_sys_raw",
832*8fb009dcSAndroid Build Coastguard Worker    ],
833*8fb009dcSAndroid Build Coastguard Worker    crate_name: "bssl_sys_raw_test",
834*8fb009dcSAndroid Build Coastguard Worker    test_suites: ["general-tests"],
835*8fb009dcSAndroid Build Coastguard Worker    auto_gen_config: true,
836*8fb009dcSAndroid Build Coastguard Worker    clippy_lints: "none",
837*8fb009dcSAndroid Build Coastguard Worker    lints: "none",
838*8fb009dcSAndroid Build Coastguard Worker}
839*8fb009dcSAndroid Build Coastguard Worker
840*8fb009dcSAndroid Build Coastguard Worker// Rust's bindgen doesn't cope with macros, so this target includes C functions that
841*8fb009dcSAndroid Build Coastguard Worker// do the same thing as macros defined in BoringSSL header files.
842*8fb009dcSAndroid Build Coastguard Workercc_library_static {
843*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_rust_support",
844*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
845*8fb009dcSAndroid Build Coastguard Worker    defaults: ["boringssl_flags"],
846*8fb009dcSAndroid Build Coastguard Worker    srcs: ["src/rust/bssl-sys/rust_wrapper.c"],
847*8fb009dcSAndroid Build Coastguard Worker    shared_libs: [
848*8fb009dcSAndroid Build Coastguard Worker        "libcrypto",
849*8fb009dcSAndroid Build Coastguard Worker        "libssl",
850*8fb009dcSAndroid Build Coastguard Worker    ],
851*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
852*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
853*8fb009dcSAndroid Build Coastguard Worker        "//apex_available:platform",
854*8fb009dcSAndroid Build Coastguard Worker        "com.android.configinfrastructure",
855*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
856*8fb009dcSAndroid Build Coastguard Worker    ],
857*8fb009dcSAndroid Build Coastguard Worker
858*8fb009dcSAndroid Build Coastguard Worker    // b/336916369: This library gets linked into a rust rlib.  Disable LTO
859*8fb009dcSAndroid Build Coastguard Worker    // until cross-language lto is supported.
860*8fb009dcSAndroid Build Coastguard Worker    lto: {
861*8fb009dcSAndroid Build Coastguard Worker        never: true,
862*8fb009dcSAndroid Build Coastguard Worker    },
863*8fb009dcSAndroid Build Coastguard Worker}
864*8fb009dcSAndroid Build Coastguard Worker
865*8fb009dcSAndroid Build Coastguard Workercc_library_static {
866*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_rust_support_baremetal",
867*8fb009dcSAndroid Build Coastguard Worker    defaults: ["boringssl_flags_baremetal"],
868*8fb009dcSAndroid Build Coastguard Worker    srcs: ["src/rust/bssl-sys/rust_wrapper.c"],
869*8fb009dcSAndroid Build Coastguard Worker    static_libs: [
870*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_baremetal",
871*8fb009dcSAndroid Build Coastguard Worker        "libssl_baremetal",
872*8fb009dcSAndroid Build Coastguard Worker    ],
873*8fb009dcSAndroid Build Coastguard Worker
874*8fb009dcSAndroid Build Coastguard Worker    // b/336916369: This library gets linked into a rust rlib.  Disable LTO
875*8fb009dcSAndroid Build Coastguard Worker    // until cross-language lto is supported.
876*8fb009dcSAndroid Build Coastguard Worker    lto: {
877*8fb009dcSAndroid Build Coastguard Worker        never: true,
878*8fb009dcSAndroid Build Coastguard Worker    },
879*8fb009dcSAndroid Build Coastguard Worker}
880*8fb009dcSAndroid Build Coastguard Worker
881*8fb009dcSAndroid Build Coastguard Workercc_library_host_static {
882*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_rust_support_static",
883*8fb009dcSAndroid Build Coastguard Worker    defaults: ["boringssl_flags"],
884*8fb009dcSAndroid Build Coastguard Worker    srcs: ["src/rust/bssl-sys/rust_wrapper.c"],
885*8fb009dcSAndroid Build Coastguard Worker    whole_static_libs: [
886*8fb009dcSAndroid Build Coastguard Worker        "libcrypto_static",
887*8fb009dcSAndroid Build Coastguard Worker        "libssl_static",
888*8fb009dcSAndroid Build Coastguard Worker    ],
889*8fb009dcSAndroid Build Coastguard Worker}
890*8fb009dcSAndroid Build Coastguard Worker
891*8fb009dcSAndroid Build Coastguard Workerrust_defaults {
892*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_sys_defaults",
893*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
894*8fb009dcSAndroid Build Coastguard Worker    crate_name: "bssl_sys",
895*8fb009dcSAndroid Build Coastguard Worker    visibility: [
896*8fb009dcSAndroid Build Coastguard Worker        "//external/rust/crates/openssl",
897*8fb009dcSAndroid Build Coastguard Worker        "//external/rust/android-crates-io/crates/tokio-openssl",
898*8fb009dcSAndroid Build Coastguard Worker        "//system/keymint/boringssl",
899*8fb009dcSAndroid Build Coastguard Worker        "//system/security/prng_seeder",
900*8fb009dcSAndroid Build Coastguard Worker    ],
901*8fb009dcSAndroid Build Coastguard Worker    srcs: [
902*8fb009dcSAndroid Build Coastguard Worker        "src/rust/bssl-sys/src/lib.rs",
903*8fb009dcSAndroid Build Coastguard Worker        ":libbssl_sys_raw",
904*8fb009dcSAndroid Build Coastguard Worker    ],
905*8fb009dcSAndroid Build Coastguard Worker    shared_libs: [
906*8fb009dcSAndroid Build Coastguard Worker        "libcrypto",
907*8fb009dcSAndroid Build Coastguard Worker        "libssl",
908*8fb009dcSAndroid Build Coastguard Worker    ],
909*8fb009dcSAndroid Build Coastguard Worker    vendor_available: true,
910*8fb009dcSAndroid Build Coastguard Worker    product_available: true,
911*8fb009dcSAndroid Build Coastguard Worker}
912*8fb009dcSAndroid Build Coastguard Worker
913*8fb009dcSAndroid Build Coastguard Workerrust_library {
914*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_sys",
915*8fb009dcSAndroid Build Coastguard Worker    defaults: ["libbssl_sys_defaults"],
916*8fb009dcSAndroid Build Coastguard Worker    whole_static_libs: [
917*8fb009dcSAndroid Build Coastguard Worker        "libbssl_rust_support",
918*8fb009dcSAndroid Build Coastguard Worker    ],
919*8fb009dcSAndroid Build Coastguard Worker    min_sdk_version: "29",
920*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
921*8fb009dcSAndroid Build Coastguard Worker        "//apex_available:platform",
922*8fb009dcSAndroid Build Coastguard Worker        "com.android.configinfrastructure",
923*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
924*8fb009dcSAndroid Build Coastguard Worker    ],
925*8fb009dcSAndroid Build Coastguard Worker    cfgs: ["unsupported_inline_wrappers"],
926*8fb009dcSAndroid Build Coastguard Worker}
927*8fb009dcSAndroid Build Coastguard Worker
928*8fb009dcSAndroid Build Coastguard Workerrust_library_host_rlib {
929*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_sys_static",
930*8fb009dcSAndroid Build Coastguard Worker    defaults: ["libbssl_sys_defaults"],
931*8fb009dcSAndroid Build Coastguard Worker    whole_static_libs: [
932*8fb009dcSAndroid Build Coastguard Worker        "libbssl_rust_support_static",
933*8fb009dcSAndroid Build Coastguard Worker    ],
934*8fb009dcSAndroid Build Coastguard Worker    cfgs: ["unsupported_inline_wrappers"],
935*8fb009dcSAndroid Build Coastguard Worker}
936*8fb009dcSAndroid Build Coastguard Worker
937*8fb009dcSAndroid Build Coastguard Workergenrule {
938*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_sys_src_nostd",
939*8fb009dcSAndroid Build Coastguard Worker    srcs: ["src/rust/bssl-sys/src/lib.rs"],
940*8fb009dcSAndroid Build Coastguard Worker    out: ["lib.rs"],
941*8fb009dcSAndroid Build Coastguard Worker    cmd: "(echo '#![no_std]' && cat $(in)) > $(out)",
942*8fb009dcSAndroid Build Coastguard Worker}
943*8fb009dcSAndroid Build Coastguard Worker
944*8fb009dcSAndroid Build Coastguard Workerrust_library_rlib {
945*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_sys_nostd",
946*8fb009dcSAndroid Build Coastguard Worker    crate_name: "bssl_sys",
947*8fb009dcSAndroid Build Coastguard Worker    visibility: [
948*8fb009dcSAndroid Build Coastguard Worker        "//packages/modules/Virtualization:__subpackages__",
949*8fb009dcSAndroid Build Coastguard Worker    ],
950*8fb009dcSAndroid Build Coastguard Worker    srcs: [
951*8fb009dcSAndroid Build Coastguard Worker        ":libbssl_sys_src_nostd",
952*8fb009dcSAndroid Build Coastguard Worker        ":libbssl_sys_raw_nostd",
953*8fb009dcSAndroid Build Coastguard Worker    ],
954*8fb009dcSAndroid Build Coastguard Worker    prefer_rlib: true,
955*8fb009dcSAndroid Build Coastguard Worker    no_stdlibs: true,
956*8fb009dcSAndroid Build Coastguard Worker    stdlibs: [
957*8fb009dcSAndroid Build Coastguard Worker        "libcompiler_builtins.rust_sysroot",
958*8fb009dcSAndroid Build Coastguard Worker        "libcore.rust_sysroot",
959*8fb009dcSAndroid Build Coastguard Worker    ],
960*8fb009dcSAndroid Build Coastguard Worker    whole_static_libs: [
961*8fb009dcSAndroid Build Coastguard Worker        "libbssl_rust_support_baremetal",
962*8fb009dcSAndroid Build Coastguard Worker    ],
963*8fb009dcSAndroid Build Coastguard Worker    cfgs: ["unsupported_inline_wrappers"],
964*8fb009dcSAndroid Build Coastguard Worker}
965*8fb009dcSAndroid Build Coastguard Worker
966*8fb009dcSAndroid Build Coastguard Worker// High-level Rust crate `bssl-crypto`
967*8fb009dcSAndroid Build Coastguard Worker
968*8fb009dcSAndroid Build Coastguard Workerrust_defaults {
969*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_crypto_defaults",
970*8fb009dcSAndroid Build Coastguard Worker    crate_name: "bssl_crypto",
971*8fb009dcSAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
972*8fb009dcSAndroid Build Coastguard Worker    srcs: ["src/rust/bssl-crypto/src/lib.rs"],
973*8fb009dcSAndroid Build Coastguard Worker    rustlibs: ["libbssl_sys"],
974*8fb009dcSAndroid Build Coastguard Worker}
975*8fb009dcSAndroid Build Coastguard Worker
976*8fb009dcSAndroid Build Coastguard Workerrust_library {
977*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_crypto",
978*8fb009dcSAndroid Build Coastguard Worker    defaults: ["libbssl_crypto_defaults"],
979*8fb009dcSAndroid Build Coastguard Worker    host_supported: true,
980*8fb009dcSAndroid Build Coastguard Worker    apex_available: [
981*8fb009dcSAndroid Build Coastguard Worker        "//apex_available:platform",
982*8fb009dcSAndroid Build Coastguard Worker        "com.android.virt",
983*8fb009dcSAndroid Build Coastguard Worker    ],
984*8fb009dcSAndroid Build Coastguard Worker    vendor_available: true,
985*8fb009dcSAndroid Build Coastguard Worker    product_available: true,
986*8fb009dcSAndroid Build Coastguard Worker}
987*8fb009dcSAndroid Build Coastguard Worker
988*8fb009dcSAndroid Build Coastguard Workerrust_test {
989*8fb009dcSAndroid Build Coastguard Worker    name: "libbssl_crypto_test",
990*8fb009dcSAndroid Build Coastguard Worker    defaults: ["libbssl_crypto_defaults"],
991*8fb009dcSAndroid Build Coastguard Worker    crate_name: "bssl_crypto_test",
992*8fb009dcSAndroid Build Coastguard Worker    test_suites: ["general-tests"],
993*8fb009dcSAndroid Build Coastguard Worker    auto_gen_config: true,
994*8fb009dcSAndroid Build Coastguard Worker}
995*8fb009dcSAndroid Build Coastguard Worker
996*8fb009dcSAndroid Build Coastguard Workerdirgroup {
997*8fb009dcSAndroid Build Coastguard Worker    name: "trusty_dirgroup_external_boringssl",
998*8fb009dcSAndroid Build Coastguard Worker    dirs: ["."],
999*8fb009dcSAndroid Build Coastguard Worker    visibility: ["//trusty/vendor/google/aosp/scripts"],
1000*8fb009dcSAndroid Build Coastguard Worker}
1001