• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Note that some host libraries have the same module name as the target
2// libraries. This is currently needed to build, for example, adb. But it's
3// probably something that should be changed.
4
5// Pull in the autogenerated sources modules
6build = ["sources.bp"]
7
8// Used by libcrypto, libssl, bssl tool, and native tests
9cc_defaults {
10    name: "boringssl_flags",
11    vendor_available: true,
12
13    cflags: [
14        "-fvisibility=hidden",
15        "-DBORINGSSL_SHARED_LIBRARY",
16        "-DBORINGSSL_ANDROID_SYSTEM",
17        "-DOPENSSL_SMALL",
18        "-D_XOPEN_SOURCE=700",
19        "-Werror",
20        "-Wno-unused-parameter",
21    ],
22
23    cppflags: [
24        "-Wall",
25        "-Werror",
26    ],
27
28    conlyflags: ["-std=c99"],
29
30    // Build BoringSSL and its tests against the same STL.
31    sdk_version: "9",
32    target: {
33        android: {
34            stl: "libc++_static",
35        },
36    },
37}
38
39// Used by libcrypto + libssl
40cc_defaults {
41    name: "boringssl_defaults",
42
43    local_include_dirs: ["src/include"],
44    export_include_dirs: ["src/include"],
45    cflags: ["-DBORINGSSL_IMPLEMENTATION"],
46}
47
48//// libcrypto
49
50// This should be removed when clang can compile everything.
51libcrypto_sources_no_clang = [
52    "linux-arm/crypto/fipsmodule/aes-armv4.S",
53    "linux-arm/crypto/fipsmodule/bsaes-armv7.S",
54]
55
56cc_defaults {
57    name: "libcrypto_defaults",
58    host_supported: true,
59
60    // Windows and Macs both have problems with assembly files
61    target: {
62        windows: {
63            enabled: true,
64            cflags: ["-DOPENSSL_NO_ASM"],
65            host_ldlibs: ["-lws2_32"],
66        },
67        darwin: {
68            cflags: ["-DOPENSSL_NO_ASM"],
69        },
70        host: {
71            host_ldlibs: ["-lpthread"],
72        },
73    },
74
75    local_include_dirs: ["src/crypto"],
76
77    arch: {
78        arm64: {
79            clang_asflags: ["-march=armv8-a+crypto"],
80        },
81    },
82
83    // This should be removed when clang can compile everything.
84    exclude_srcs: libcrypto_sources_no_clang,
85    whole_static_libs: ["libcrypto_no_clang"],
86}
87
88// Target and host library
89cc_library {
90    name: "libcrypto",
91    vendor_available: true,
92    vndk: {
93        enabled: true,
94    },
95    double_loadable: true,
96    recovery_available: true,
97    defaults: ["libcrypto_sources", "libcrypto_defaults", "boringssl_defaults", "boringssl_flags"],
98    unique_host_soname: true,
99}
100
101// Target and host library: files that don't compile with clang. This should
102// go away when clang can compile everything with integrated assembler.
103cc_library_static {
104    name: "libcrypto_no_clang",
105    defaults: ["boringssl_defaults", "boringssl_flags"],
106    host_supported: true,
107    recovery_available: true,
108
109    target: {
110        windows: {
111            enabled: true,
112        },
113    },
114
115    local_include_dirs: ["src/crypto"],
116
117    arch: {
118        arm: {
119            clang_asflags: ["-no-integrated-as"],
120            srcs: libcrypto_sources_no_clang,
121        },
122    },
123}
124
125// Static library
126// This should only be used for host modules that will be in a JVM, all other
127// modules should use the static variant of libcrypto.
128cc_library_static {
129    name: "libcrypto_static",
130    defaults: ["libcrypto_sources", "libcrypto_defaults", "boringssl_defaults", "boringssl_flags"],
131
132    target: {
133        host: {
134            // TODO: b/26160319. ASAN breaks use of this library in JVM.
135            // Re-enable sanitization when the issue with making clients of this library
136            // preload ASAN runtime is resolved. Without that, clients are getting runtime
137            // errors due to unresolved ASAN symbols, such as
138            // __asan_option_detect_stack_use_after_return.
139            sanitize: {
140                never: true,
141            },
142        },
143    },
144}
145
146//// libssl
147
148// Target static library
149// Deprecated: all users should move to libssl
150cc_library_static {
151    name: "libssl_static",
152    defaults: ["libssl_sources", "boringssl_defaults", "boringssl_flags"],
153}
154
155// Static and Shared library
156cc_library {
157    name: "libssl",
158    recovery_available: true,
159    vendor_available: true,
160    vndk: {
161        enabled: true,
162    },
163    host_supported: true,
164    defaults: ["libssl_sources", "boringssl_defaults", "boringssl_flags"],
165    unique_host_soname: true,
166
167    shared_libs: ["libcrypto"],
168}
169
170// Tool
171cc_binary {
172    name: "bssl",
173    host_supported: true,
174    defaults: ["bssl_sources", "boringssl_flags"],
175
176    shared_libs: [
177        "libcrypto",
178        "libssl",
179    ],
180    target: {
181        darwin: {
182            enabled: false,
183        },
184    },
185}
186
187cc_binary {
188    name: "cavp",
189    host_supported: true,
190    srcs: [
191        "src/fipstools/cavp_aes_gcm_test.cc",
192        "src/fipstools/cavp_aes_test.cc",
193        "src/fipstools/cavp_ctr_drbg_test.cc",
194        "src/fipstools/cavp_ecdsa2_keypair_test.cc",
195        "src/fipstools/cavp_ecdsa2_pkv_test.cc",
196        "src/fipstools/cavp_ecdsa2_siggen_test.cc",
197        "src/fipstools/cavp_ecdsa2_sigver_test.cc",
198        "src/fipstools/cavp_hmac_test.cc",
199        "src/fipstools/cavp_kas_test.cc",
200        "src/fipstools/cavp_keywrap_test.cc",
201        "src/fipstools/cavp_main.cc",
202        "src/fipstools/cavp_rsa2_keygen_test.cc",
203        "src/fipstools/cavp_rsa2_siggen_test.cc",
204        "src/fipstools/cavp_rsa2_sigver_test.cc",
205        "src/fipstools/cavp_sha_monte_test.cc",
206        "src/fipstools/cavp_sha_test.cc",
207        "src/fipstools/cavp_tdes_test.cc",
208        "src/fipstools/cavp_test_util.cc",
209        "src/fipstools/cavp_tlskdf_test.cc",
210    ],
211
212    shared_libs: [
213        "libcrypto",
214    ],
215
216    defaults: ["boringssl_test_support_sources", "boringssl_flags"],
217}
218
219// Test support library
220cc_library_static {
221    name: "boringssl_test_support",
222    host_supported: true,
223    defaults: ["boringssl_test_support_sources", "boringssl_flags"],
224
225    shared_libs: [
226        "libcrypto",
227        "libssl",
228    ],
229}
230
231// Tests
232cc_test {
233  name: "boringssl_crypto_test",
234  test_suites: ["device-tests"],
235  host_supported: true,
236  defaults: ["boringssl_crypto_test_sources", "boringssl_flags"],
237  whole_static_libs: ["boringssl_test_support"],
238
239  shared_libs: ["libcrypto"],
240}
241
242cc_test {
243  name: "boringssl_ssl_test",
244  test_suites: ["device-tests"],
245  host_supported: true,
246  defaults: ["boringssl_ssl_test_sources", "boringssl_flags"],
247  whole_static_libs: ["boringssl_test_support"],
248
249  shared_libs: ["libcrypto", "libssl"],
250}
251