1*6777b538SAndroid Build Coastguard Worker# Copyright 2014 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Workerimport("//build/config/android/config.gni") 6*6777b538SAndroid Build Coastguard Workerimport("//build/config/arm.gni") 7*6777b538SAndroid Build Coastguard Workerimport("//build/config/compiler/compiler.gni") 8*6777b538SAndroid Build Coastguard Workerimport("//build/config/rust.gni") 9*6777b538SAndroid Build Coastguard Workerimport("//build/config/sanitizers/sanitizers.gni") 10*6777b538SAndroid Build Coastguard Workerimport("//build_overrides/build.gni") 11*6777b538SAndroid Build Coastguard Workerimport("BUILD.generated.gni") 12*6777b538SAndroid Build Coastguard Workerimport("BUILD.generated_tests.gni") 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Workerif (enable_rust) { 15*6777b538SAndroid Build Coastguard Worker import("//build/rust/cargo_crate.gni") 16*6777b538SAndroid Build Coastguard Worker import("//build/rust/rust_bindgen.gni") 17*6777b538SAndroid Build Coastguard Worker} 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker# Config for us and everybody else depending on BoringSSL. 20*6777b538SAndroid Build Coastguard Workerconfig("external_config") { 21*6777b538SAndroid Build Coastguard Worker include_dirs = [ "src/include" ] 22*6777b538SAndroid Build Coastguard Worker if (is_component_build) { 23*6777b538SAndroid Build Coastguard Worker defines = [ "BORINGSSL_SHARED_LIBRARY" ] 24*6777b538SAndroid Build Coastguard Worker } 25*6777b538SAndroid Build Coastguard Worker} 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker# The config used by the :boringssl component itself, and the fuzzer copies. 28*6777b538SAndroid Build Coastguard Workerconfig("component_config") { 29*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 30*6777b538SAndroid Build Coastguard Worker configs = [ ":internal_config" ] 31*6777b538SAndroid Build Coastguard Worker defines = [ "BORINGSSL_IMPLEMENTATION" ] 32*6777b538SAndroid Build Coastguard Worker} 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Worker# This config is used by anything that consumes internal headers. Tests consume 35*6777b538SAndroid Build Coastguard Worker# this rather than :component_config. 36*6777b538SAndroid Build Coastguard Workerconfig("internal_config") { 37*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 38*6777b538SAndroid Build Coastguard Worker defines = [ 39*6777b538SAndroid Build Coastguard Worker "BORINGSSL_ALLOW_CXX_RUNTIME", 40*6777b538SAndroid Build Coastguard Worker "BORINGSSL_NO_STATIC_INITIALIZER", 41*6777b538SAndroid Build Coastguard Worker "OPENSSL_SMALL", 42*6777b538SAndroid Build Coastguard Worker ] 43*6777b538SAndroid Build Coastguard Worker} 44*6777b538SAndroid Build Coastguard Worker 45*6777b538SAndroid Build Coastguard Workerconfig("no_asm_config") { 46*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 47*6777b538SAndroid Build Coastguard Worker defines = [ "OPENSSL_NO_ASM" ] 48*6777b538SAndroid Build Coastguard Worker} 49*6777b538SAndroid Build Coastguard Worker 50*6777b538SAndroid Build Coastguard Worker# TODO(crbug.com/1496373): having the headers in all_sources is hacky and should 51*6777b538SAndroid Build Coastguard Worker# be fixed. It is caused by issues with the fuzzer target. 52*6777b538SAndroid Build Coastguard Workerall_sources = crypto_sources + ssl_sources + pki_sources + pki_internal_headers 53*6777b538SAndroid Build Coastguard Workerall_headers = crypto_headers + ssl_headers + pki_headers + pki_internal_headers 54*6777b538SAndroid Build Coastguard Worker 55*6777b538SAndroid Build Coastguard Workerif (enable_rust) { 56*6777b538SAndroid Build Coastguard Worker rust_bindgen("raw_bssl_sys_bindings") { 57*6777b538SAndroid Build Coastguard Worker header = "src/rust/bssl-sys/wrapper.h" 58*6777b538SAndroid Build Coastguard Worker deps = [ ":boringssl" ] 59*6777b538SAndroid Build Coastguard Worker bindgen_flags = [ 60*6777b538SAndroid Build Coastguard Worker "no-derive-default", 61*6777b538SAndroid Build Coastguard Worker "enable-function-attribute-detection", 62*6777b538SAndroid Build Coastguard Worker "use-core", 63*6777b538SAndroid Build Coastguard Worker "default-macro-constant-type=signed", 64*6777b538SAndroid Build Coastguard Worker 65*6777b538SAndroid Build Coastguard Worker # These two functions use `va_list`, which causes bindgen errors on 66*6777b538SAndroid Build Coastguard Worker # some platforms: i.e. "`extern` block uses type `[u64; 4]`, which is not 67*6777b538SAndroid Build Coastguard Worker # FFI-safe" 68*6777b538SAndroid Build Coastguard Worker "blocklist-function=BIO_vsnprintf", 69*6777b538SAndroid Build Coastguard Worker "blocklist-function=OPENSSL_vasprintf", 70*6777b538SAndroid Build Coastguard Worker "rustified-enum=point_conversion_form_t", 71*6777b538SAndroid Build Coastguard Worker "allowlist-file=.*[[:punct:]]include[[:punct:]]openssl[[:punct:]].*\\.h", 72*6777b538SAndroid Build Coastguard Worker ] 73*6777b538SAndroid Build Coastguard Worker wrap_static_fns = true 74*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # private, should only be exposed through bssl_crypto 75*6777b538SAndroid Build Coastguard Worker } 76*6777b538SAndroid Build Coastguard Worker 77*6777b538SAndroid Build Coastguard Worker # Low level, bindgen generates system bindings to boringssl 78*6777b538SAndroid Build Coastguard Worker cargo_crate("bssl_sys") { 79*6777b538SAndroid Build Coastguard Worker crate_type = "rlib" 80*6777b538SAndroid Build Coastguard Worker crate_root = "src/rust/bssl-sys/src/lib.rs" 81*6777b538SAndroid Build Coastguard Worker sources = rust_bssl_sys 82*6777b538SAndroid Build Coastguard Worker edition = "2021" 83*6777b538SAndroid Build Coastguard Worker deps = [ 84*6777b538SAndroid Build Coastguard Worker ":boringssl", 85*6777b538SAndroid Build Coastguard Worker ":raw_bssl_sys_bindings", 86*6777b538SAndroid Build Coastguard Worker ":raw_bssl_sys_bindings_static_fns", 87*6777b538SAndroid Build Coastguard Worker ] 88*6777b538SAndroid Build Coastguard Worker 89*6777b538SAndroid Build Coastguard Worker visibility = [ 90*6777b538SAndroid Build Coastguard Worker ":*", # private, should only be exposed through bssl_crypto 91*6777b538SAndroid Build Coastguard Worker ] 92*6777b538SAndroid Build Coastguard Worker bindgen_output = get_target_outputs(":raw_bssl_sys_bindings") 93*6777b538SAndroid Build Coastguard Worker inputs = bindgen_output 94*6777b538SAndroid Build Coastguard Worker rustenv = 95*6777b538SAndroid Build Coastguard Worker [ "BINDGEN_RS_FILE=" + 96*6777b538SAndroid Build Coastguard Worker rebase_path(bindgen_output[0], get_path_info(crate_root, "dir")) ] 97*6777b538SAndroid Build Coastguard Worker } 98*6777b538SAndroid Build Coastguard Worker 99*6777b538SAndroid Build Coastguard Worker # Rust bindings to boringssl 100*6777b538SAndroid Build Coastguard Worker cargo_crate("bssl_crypto") { 101*6777b538SAndroid Build Coastguard Worker crate_type = "rlib" 102*6777b538SAndroid Build Coastguard Worker crate_root = "src/rust/bssl-crypto/src/lib.rs" 103*6777b538SAndroid Build Coastguard Worker sources = rust_bssl_crypto 104*6777b538SAndroid Build Coastguard Worker edition = "2021" 105*6777b538SAndroid Build Coastguard Worker deps = [ ":bssl_sys" ] 106*6777b538SAndroid Build Coastguard Worker } 107*6777b538SAndroid Build Coastguard Worker} 108*6777b538SAndroid Build Coastguard Worker 109*6777b538SAndroid Build Coastguard Workerif (is_msan) { 110*6777b538SAndroid Build Coastguard Worker # MSan instrumentation is incompatible with assembly optimizations. 111*6777b538SAndroid Build Coastguard Worker # BoringSSL's GAS-compatible assembly knows how to detect MSan, but the NASM 112*6777b538SAndroid Build Coastguard Worker # assembly does not, so we check for MSan explicitly. 113*6777b538SAndroid Build Coastguard Worker source_set("boringssl_asm") { 114*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 115*6777b538SAndroid Build Coastguard Worker 116*6777b538SAndroid Build Coastguard Worker public_configs = [ ":no_asm_config" ] 117*6777b538SAndroid Build Coastguard Worker } 118*6777b538SAndroid Build Coastguard Worker} else if (is_win && (current_cpu == "x86" || current_cpu == "x64")) { 119*6777b538SAndroid Build Coastguard Worker # Windows' x86 and x86_64 assembly is built with NASM. 120*6777b538SAndroid Build Coastguard Worker import("//third_party/nasm/nasm_assemble.gni") 121*6777b538SAndroid Build Coastguard Worker nasm_assemble("boringssl_asm") { 122*6777b538SAndroid Build Coastguard Worker sources = crypto_sources_nasm 123*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 124*6777b538SAndroid Build Coastguard Worker } 125*6777b538SAndroid Build Coastguard Worker} else { 126*6777b538SAndroid Build Coastguard Worker # All other targets use GAS-compatible assembler. BoringSSL's assembly files 127*6777b538SAndroid Build Coastguard Worker # are all wrapped in processor checks for the corresponding target, so there 128*6777b538SAndroid Build Coastguard Worker # is no need to add target conditions in the build. 129*6777b538SAndroid Build Coastguard Worker source_set("boringssl_asm") { 130*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 131*6777b538SAndroid Build Coastguard Worker 132*6777b538SAndroid Build Coastguard Worker sources = crypto_sources_asm 133*6777b538SAndroid Build Coastguard Worker include_dirs = [ "src/include" ] 134*6777b538SAndroid Build Coastguard Worker } 135*6777b538SAndroid Build Coastguard Worker} 136*6777b538SAndroid Build Coastguard Worker 137*6777b538SAndroid Build Coastguard Workercomponent("boringssl") { 138*6777b538SAndroid Build Coastguard Worker sources = all_sources 139*6777b538SAndroid Build Coastguard Worker public = all_headers 140*6777b538SAndroid Build Coastguard Worker friend = [ ":*" ] 141*6777b538SAndroid Build Coastguard Worker deps = [ "//third_party/boringssl/src/third_party/fiat:fiat_license" ] 142*6777b538SAndroid Build Coastguard Worker 143*6777b538SAndroid Build Coastguard Worker # Mark boringssl_asm as a public dependency so the OPENSSL_NO_ASM 144*6777b538SAndroid Build Coastguard Worker # config is forwarded to callers. In particular, boringssl_crypto_tests 145*6777b538SAndroid Build Coastguard Worker # requires it. 146*6777b538SAndroid Build Coastguard Worker public_deps = [ ":boringssl_asm" ] 147*6777b538SAndroid Build Coastguard Worker 148*6777b538SAndroid Build Coastguard Worker public_configs = [ ":external_config" ] 149*6777b538SAndroid Build Coastguard Worker configs += [ ":component_config" ] 150*6777b538SAndroid Build Coastguard Worker 151*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 152*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 153*6777b538SAndroid Build Coastguard Worker 154*6777b538SAndroid Build Coastguard Worker if (is_nacl) { 155*6777b538SAndroid Build Coastguard Worker deps += [ "//native_client_sdk/src/libraries/nacl_io" ] 156*6777b538SAndroid Build Coastguard Worker } 157*6777b538SAndroid Build Coastguard Worker 158*6777b538SAndroid Build Coastguard Worker if (!is_debug && !(is_fuchsia && optimize_for_size)) { 159*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:default_optimization" ] 160*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:optimize_max" ] 161*6777b538SAndroid Build Coastguard Worker } 162*6777b538SAndroid Build Coastguard Worker 163*6777b538SAndroid Build Coastguard Worker if (is_linux && is_component_build) { 164*6777b538SAndroid Build Coastguard Worker version_script = "boringssl.map" 165*6777b538SAndroid Build Coastguard Worker inputs = [ version_script ] 166*6777b538SAndroid Build Coastguard Worker ldflags = [ "-Wl,--version-script=" + 167*6777b538SAndroid Build Coastguard Worker rebase_path(version_script, root_build_dir) ] 168*6777b538SAndroid Build Coastguard Worker } 169*6777b538SAndroid Build Coastguard Worker} 170*6777b538SAndroid Build Coastguard Worker 171*6777b538SAndroid Build Coastguard Workerif (build_with_chromium) { 172*6777b538SAndroid Build Coastguard Worker import("//testing/libfuzzer/fuzzer_test.gni") 173*6777b538SAndroid Build Coastguard Worker 174*6777b538SAndroid Build Coastguard Worker source_set("test_support") { 175*6777b538SAndroid Build Coastguard Worker # TODO(crbug.com/boringssl/542): When we switch to the new source lists, 176*6777b538SAndroid Build Coastguard Worker # we will have separate variables for the sources and headers. 177*6777b538SAndroid Build Coastguard Worker sources = filter_exclude(test_support_sources, [ "*.h" ]) 178*6777b538SAndroid Build Coastguard Worker public = filter_include(test_support_sources, [ "*.h" ]) 179*6777b538SAndroid Build Coastguard Worker testonly = true 180*6777b538SAndroid Build Coastguard Worker 181*6777b538SAndroid Build Coastguard Worker # Test data in Chromium is complex. Swap out GetTestData with a 182*6777b538SAndroid Build Coastguard Worker # Chromium-specific implementation. 183*6777b538SAndroid Build Coastguard Worker sources += [ "test_data_chromium.cc" ] 184*6777b538SAndroid Build Coastguard Worker defines = [ "BORINGSSL_CUSTOM_GET_TEST_DATA" ] 185*6777b538SAndroid Build Coastguard Worker 186*6777b538SAndroid Build Coastguard Worker deps = [ 187*6777b538SAndroid Build Coastguard Worker ":boringssl", 188*6777b538SAndroid Build Coastguard Worker "//base", 189*6777b538SAndroid Build Coastguard Worker "//testing/gtest", 190*6777b538SAndroid Build Coastguard Worker ] 191*6777b538SAndroid Build Coastguard Worker } 192*6777b538SAndroid Build Coastguard Worker 193*6777b538SAndroid Build Coastguard Worker # These targets are named "_tests" rather than "_test" to avoid colliding with 194*6777b538SAndroid Build Coastguard Worker # a historical "boringssl_ssl_test" target. This works around a bug with the 195*6777b538SAndroid Build Coastguard Worker # iOS build rules. 196*6777b538SAndroid Build Coastguard Worker 197*6777b538SAndroid Build Coastguard Worker bundle_data("boringssl_crypto_tests_bundle_data") { 198*6777b538SAndroid Build Coastguard Worker sources = crypto_test_data 199*6777b538SAndroid Build Coastguard Worker testonly = true 200*6777b538SAndroid Build Coastguard Worker outputs = [ "{{bundle_resources_dir}}/" + 201*6777b538SAndroid Build Coastguard Worker "{{source_root_relative_dir}}/{{source_file_part}}" ] 202*6777b538SAndroid Build Coastguard Worker } 203*6777b538SAndroid Build Coastguard Worker 204*6777b538SAndroid Build Coastguard Worker test("boringssl_crypto_tests") { 205*6777b538SAndroid Build Coastguard Worker sources = crypto_test_sources 206*6777b538SAndroid Build Coastguard Worker data = crypto_test_data 207*6777b538SAndroid Build Coastguard Worker deps = [ 208*6777b538SAndroid Build Coastguard Worker ":boringssl", 209*6777b538SAndroid Build Coastguard Worker ":boringssl_crypto_tests_bundle_data", 210*6777b538SAndroid Build Coastguard Worker ":test_support", 211*6777b538SAndroid Build Coastguard Worker "//testing/gtest", 212*6777b538SAndroid Build Coastguard Worker ] 213*6777b538SAndroid Build Coastguard Worker 214*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 215*6777b538SAndroid Build Coastguard Worker configs += [ 216*6777b538SAndroid Build Coastguard Worker ":internal_config", 217*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 218*6777b538SAndroid Build Coastguard Worker ] 219*6777b538SAndroid Build Coastguard Worker 220*6777b538SAndroid Build Coastguard Worker # Chromium infrastructure does not support GTest, only the //base wrapper. 221*6777b538SAndroid Build Coastguard Worker sources -= [ "src/crypto/test/gtest_main.cc" ] 222*6777b538SAndroid Build Coastguard Worker sources += [ "gtest_main_chromium.cc" ] 223*6777b538SAndroid Build Coastguard Worker deps += [ "//base/test:test_support" ] 224*6777b538SAndroid Build Coastguard Worker 225*6777b538SAndroid Build Coastguard Worker if (is_fuchsia) { 226*6777b538SAndroid Build Coastguard Worker additional_manifest_fragments = 227*6777b538SAndroid Build Coastguard Worker [ "//build/config/fuchsia/test/network.shard.test-cml" ] 228*6777b538SAndroid Build Coastguard Worker } 229*6777b538SAndroid Build Coastguard Worker } 230*6777b538SAndroid Build Coastguard Worker 231*6777b538SAndroid Build Coastguard Worker test("boringssl_ssl_tests") { 232*6777b538SAndroid Build Coastguard Worker sources = ssl_test_sources 233*6777b538SAndroid Build Coastguard Worker deps = [ 234*6777b538SAndroid Build Coastguard Worker ":boringssl", 235*6777b538SAndroid Build Coastguard Worker ":test_support", 236*6777b538SAndroid Build Coastguard Worker "//testing/gtest", 237*6777b538SAndroid Build Coastguard Worker ] 238*6777b538SAndroid Build Coastguard Worker 239*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 240*6777b538SAndroid Build Coastguard Worker configs += [ 241*6777b538SAndroid Build Coastguard Worker ":internal_config", 242*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 243*6777b538SAndroid Build Coastguard Worker ] 244*6777b538SAndroid Build Coastguard Worker 245*6777b538SAndroid Build Coastguard Worker # Chromium infrastructure does not support GTest, only the //base wrapper. 246*6777b538SAndroid Build Coastguard Worker sources -= [ "src/crypto/test/gtest_main.cc" ] 247*6777b538SAndroid Build Coastguard Worker sources += [ "gtest_main_chromium.cc" ] 248*6777b538SAndroid Build Coastguard Worker deps += [ "//base/test:test_support" ] 249*6777b538SAndroid Build Coastguard Worker } 250*6777b538SAndroid Build Coastguard Worker 251*6777b538SAndroid Build Coastguard Worker test("boringssl_pki_tests") { 252*6777b538SAndroid Build Coastguard Worker sources = pki_test_sources 253*6777b538SAndroid Build Coastguard Worker data = pki_test_data 254*6777b538SAndroid Build Coastguard Worker deps = [ 255*6777b538SAndroid Build Coastguard Worker ":boringssl", 256*6777b538SAndroid Build Coastguard Worker ":test_support", 257*6777b538SAndroid Build Coastguard Worker "//testing/gtest", 258*6777b538SAndroid Build Coastguard Worker ] 259*6777b538SAndroid Build Coastguard Worker 260*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 261*6777b538SAndroid Build Coastguard Worker configs += [ 262*6777b538SAndroid Build Coastguard Worker ":internal_config", 263*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 264*6777b538SAndroid Build Coastguard Worker ] 265*6777b538SAndroid Build Coastguard Worker 266*6777b538SAndroid Build Coastguard Worker # Chromium infrastructure does not support GTest, only the //base wrapper. 267*6777b538SAndroid Build Coastguard Worker sources -= [ "src/crypto/test/gtest_main.cc" ] 268*6777b538SAndroid Build Coastguard Worker sources += [ "gtest_main_chromium.cc" ] 269*6777b538SAndroid Build Coastguard Worker deps += [ "//base/test:test_support" ] 270*6777b538SAndroid Build Coastguard Worker } 271*6777b538SAndroid Build Coastguard Worker 272*6777b538SAndroid Build Coastguard Worker config("fuzzer_config") { 273*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 274*6777b538SAndroid Build Coastguard Worker defines = [ 275*6777b538SAndroid Build Coastguard Worker "BORINGSSL_UNSAFE_FUZZER_MODE", 276*6777b538SAndroid Build Coastguard Worker "BORINGSSL_UNSAFE_DETERMINISTIC_MODE", 277*6777b538SAndroid Build Coastguard Worker ] 278*6777b538SAndroid Build Coastguard Worker } 279*6777b538SAndroid Build Coastguard Worker 280*6777b538SAndroid Build Coastguard Worker # The same as boringssl, but builds with BORINGSSL_UNSAFE_FUZZER_MODE. 281*6777b538SAndroid Build Coastguard Worker # TODO(https://crbug.com/boringssl/258): Fold this into the normal target. 282*6777b538SAndroid Build Coastguard Worker component("boringssl_fuzzer") { 283*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 284*6777b538SAndroid Build Coastguard Worker 285*6777b538SAndroid Build Coastguard Worker sources = all_sources 286*6777b538SAndroid Build Coastguard Worker deps = [ "//third_party/boringssl/src/third_party/fiat:fiat_license" ] 287*6777b538SAndroid Build Coastguard Worker 288*6777b538SAndroid Build Coastguard Worker # Mark boringssl_asm as a public dependency so the OPENSSL_NO_ASM 289*6777b538SAndroid Build Coastguard Worker # config is forwarded to callers. In particular, boringssl_crypto_tests 290*6777b538SAndroid Build Coastguard Worker # requires it. 291*6777b538SAndroid Build Coastguard Worker public_deps = [ ":boringssl_asm" ] 292*6777b538SAndroid Build Coastguard Worker 293*6777b538SAndroid Build Coastguard Worker public_configs = [ 294*6777b538SAndroid Build Coastguard Worker ":external_config", 295*6777b538SAndroid Build Coastguard Worker ":fuzzer_config", 296*6777b538SAndroid Build Coastguard Worker ] 297*6777b538SAndroid Build Coastguard Worker configs += [ ":component_config" ] 298*6777b538SAndroid Build Coastguard Worker 299*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 300*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 301*6777b538SAndroid Build Coastguard Worker 302*6777b538SAndroid Build Coastguard Worker if (is_nacl) { 303*6777b538SAndroid Build Coastguard Worker deps += [ "//native_client_sdk/src/libraries/nacl_io" ] 304*6777b538SAndroid Build Coastguard Worker } 305*6777b538SAndroid Build Coastguard Worker } 306*6777b538SAndroid Build Coastguard Worker 307*6777b538SAndroid Build Coastguard Worker # Do not run the fuzzers on windows until 1477042 is fixed, they 308*6777b538SAndroid Build Coastguard Worker # make the fuzzer infrastructure exceed the windows command line 309*6777b538SAndroid Build Coastguard Worker # length. 310*6777b538SAndroid Build Coastguard Worker foreach(fuzzer, fuzzers) { 311*6777b538SAndroid Build Coastguard Worker fuzzer_test("boringssl_${fuzzer}_fuzzer") { 312*6777b538SAndroid Build Coastguard Worker sources = [ 313*6777b538SAndroid Build Coastguard Worker "src/fuzz/${fuzzer}.cc", 314*6777b538SAndroid Build Coastguard Worker "src/ssl/test/fuzzer.h", 315*6777b538SAndroid Build Coastguard Worker "src/ssl/test/fuzzer_tags.h", 316*6777b538SAndroid Build Coastguard Worker ] 317*6777b538SAndroid Build Coastguard Worker additional_configs = [ ":internal_config" ] 318*6777b538SAndroid Build Coastguard Worker deps = [ ":boringssl_fuzzer" ] 319*6777b538SAndroid Build Coastguard Worker seed_corpus = "src/fuzz/${fuzzer}_corpus" 320*6777b538SAndroid Build Coastguard Worker 321*6777b538SAndroid Build Coastguard Worker if ("cert" == fuzzer) { 322*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=3072" ] 323*6777b538SAndroid Build Coastguard Worker } else if ("client" == fuzzer) { 324*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=20000" ] 325*6777b538SAndroid Build Coastguard Worker } else if ("pkcs8" == fuzzer) { 326*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=2048" ] 327*6777b538SAndroid Build Coastguard Worker } else if ("privkey" == fuzzer) { 328*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=2048" ] 329*6777b538SAndroid Build Coastguard Worker } else if ("read_pem" == fuzzer) { 330*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=512" ] 331*6777b538SAndroid Build Coastguard Worker } else if ("session" == fuzzer) { 332*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=8192" ] 333*6777b538SAndroid Build Coastguard Worker } else if ("server" == fuzzer) { 334*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=4096" ] 335*6777b538SAndroid Build Coastguard Worker } else if ("spki" == fuzzer) { 336*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=1024" ] 337*6777b538SAndroid Build Coastguard Worker } else if ("ssl_ctx_api" == fuzzer) { 338*6777b538SAndroid Build Coastguard Worker libfuzzer_options = [ "max_len=256" ] 339*6777b538SAndroid Build Coastguard Worker } 340*6777b538SAndroid Build Coastguard Worker } 341*6777b538SAndroid Build Coastguard Worker } 342*6777b538SAndroid Build Coastguard Worker 343*6777b538SAndroid Build Coastguard Worker config("fuzzer_no_fuzzer_mode_config") { 344*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 345*6777b538SAndroid Build Coastguard Worker defines = [ "BORINGSSL_UNSAFE_DETERMINISTIC_MODE" ] 346*6777b538SAndroid Build Coastguard Worker } 347*6777b538SAndroid Build Coastguard Worker 348*6777b538SAndroid Build Coastguard Worker # The same as boringssl, but builds with BORINGSSL_UNSAFE_DETERMINISTIC_MODE. 349*6777b538SAndroid Build Coastguard Worker # TODO(https://crbug.com/boringssl/258): Fold this into the normal target. 350*6777b538SAndroid Build Coastguard Worker component("boringssl_fuzzer_no_fuzzer_mode") { 351*6777b538SAndroid Build Coastguard Worker visibility = [ ":*" ] # Only targets in this file can depend on this. 352*6777b538SAndroid Build Coastguard Worker 353*6777b538SAndroid Build Coastguard Worker sources = all_sources 354*6777b538SAndroid Build Coastguard Worker deps = [ "//third_party/boringssl/src/third_party/fiat:fiat_license" ] 355*6777b538SAndroid Build Coastguard Worker 356*6777b538SAndroid Build Coastguard Worker # Mark boringssl_asm as a public dependency so the OPENSSL_NO_ASM 357*6777b538SAndroid Build Coastguard Worker # config is forwarded to callers. In particular, boringssl_crypto_tests 358*6777b538SAndroid Build Coastguard Worker # requires it. 359*6777b538SAndroid Build Coastguard Worker public_deps = [ ":boringssl_asm" ] 360*6777b538SAndroid Build Coastguard Worker 361*6777b538SAndroid Build Coastguard Worker public_configs = [ 362*6777b538SAndroid Build Coastguard Worker ":external_config", 363*6777b538SAndroid Build Coastguard Worker ":fuzzer_no_fuzzer_mode_config", 364*6777b538SAndroid Build Coastguard Worker ] 365*6777b538SAndroid Build Coastguard Worker configs += [ ":component_config" ] 366*6777b538SAndroid Build Coastguard Worker 367*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 368*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 369*6777b538SAndroid Build Coastguard Worker 370*6777b538SAndroid Build Coastguard Worker if (is_nacl) { 371*6777b538SAndroid Build Coastguard Worker deps += [ "//native_client_sdk/src/libraries/nacl_io" ] 372*6777b538SAndroid Build Coastguard Worker } 373*6777b538SAndroid Build Coastguard Worker } 374*6777b538SAndroid Build Coastguard Worker 375*6777b538SAndroid Build Coastguard Worker fuzzer_test("boringssl_client_no_fuzzer_mode_fuzzer") { 376*6777b538SAndroid Build Coastguard Worker sources = [ 377*6777b538SAndroid Build Coastguard Worker "src/fuzz/client.cc", 378*6777b538SAndroid Build Coastguard Worker "src/ssl/test/fuzzer.h", 379*6777b538SAndroid Build Coastguard Worker "src/ssl/test/fuzzer_tags.h", 380*6777b538SAndroid Build Coastguard Worker ] 381*6777b538SAndroid Build Coastguard Worker additional_configs = [ ":internal_config" ] 382*6777b538SAndroid Build Coastguard Worker deps = [ ":boringssl_fuzzer_no_fuzzer_mode" ] 383*6777b538SAndroid Build Coastguard Worker seed_corpus = "src/fuzz/client_corpus_no_fuzzer_mode" 384*6777b538SAndroid Build Coastguard Worker } 385*6777b538SAndroid Build Coastguard Worker 386*6777b538SAndroid Build Coastguard Worker fuzzer_test("boringssl_server_no_fuzzer_mode_fuzzer") { 387*6777b538SAndroid Build Coastguard Worker sources = [ 388*6777b538SAndroid Build Coastguard Worker "src/fuzz/server.cc", 389*6777b538SAndroid Build Coastguard Worker "src/ssl/test/fuzzer.h", 390*6777b538SAndroid Build Coastguard Worker "src/ssl/test/fuzzer_tags.h", 391*6777b538SAndroid Build Coastguard Worker ] 392*6777b538SAndroid Build Coastguard Worker additional_configs = [ ":internal_config" ] 393*6777b538SAndroid Build Coastguard Worker deps = [ ":boringssl_fuzzer_no_fuzzer_mode" ] 394*6777b538SAndroid Build Coastguard Worker seed_corpus = "src/fuzz/server_corpus_no_fuzzer_mode" 395*6777b538SAndroid Build Coastguard Worker } 396*6777b538SAndroid Build Coastguard Worker} 397