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