1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2021 The Chromium Authors 2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 4*8975f5c5SAndroid Build Coastguard Worker 5*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/rust.gni") 6*8975f5c5SAndroid Build Coastguard Workerimport("//build/rust/rust_unit_tests_group.gni") 7*8975f5c5SAndroid Build Coastguard Worker 8*8975f5c5SAndroid Build Coastguard Worker# Build some minimal binaries to exercise the Rust toolchain 9*8975f5c5SAndroid Build Coastguard Worker# only if that toolchain is enabled in gn args. 10*8975f5c5SAndroid Build Coastguard Workergroup("tests") { 11*8975f5c5SAndroid Build Coastguard Worker testonly = true 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Worker deps = [ ":deps" ] 14*8975f5c5SAndroid Build Coastguard Worker if (can_build_rust_unit_tests) { 15*8975f5c5SAndroid Build Coastguard Worker deps += [ ":build_rust_tests" ] 16*8975f5c5SAndroid Build Coastguard Worker } 17*8975f5c5SAndroid Build Coastguard Worker} 18*8975f5c5SAndroid Build Coastguard Worker 19*8975f5c5SAndroid Build Coastguard Workergroup("deps") { 20*8975f5c5SAndroid Build Coastguard Worker testonly = true 21*8975f5c5SAndroid Build Coastguard Worker deps = [] 22*8975f5c5SAndroid Build Coastguard Worker 23*8975f5c5SAndroid Build Coastguard Worker # All the rest require Rust. 24*8975f5c5SAndroid Build Coastguard Worker if (toolchain_has_rust) { 25*8975f5c5SAndroid Build Coastguard Worker deps += [ 26*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_cpp_test_with_cpp_linkage", 27*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_static_fns_test", 28*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_test", 29*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_aliased_deps", 30*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_aliased_deps:test_aliased_deps_exe", 31*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_bin_crate", 32*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:target1", 33*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:target2", 34*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:test_rlib_crate_associated_bin", 35*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate_testonly:testonly_target", 36*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_metadata:test_rust_metadata_cc_exe", 37*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_metadata:test_rust_metadata_exe", 38*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_multiple_dep_versions_exe", 39*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_simple_rust_exe", 40*8975f5c5SAndroid Build Coastguard Worker 41*8975f5c5SAndroid Build Coastguard Worker # TODO(crbug.com/40226863): Enable the additional target below 42*8975f5c5SAndroid Build Coastguard Worker # once `rs_bindings_from_cc` is distributed via `gclient sync`. In the 43*8975f5c5SAndroid Build Coastguard Worker # meantime see the instructions in 44*8975f5c5SAndroid Build Coastguard Worker # `//build/rust/run_rs_bindings_from_cc.py`. 45*8975f5c5SAndroid Build Coastguard Worker #"test_rs_bindings_from_cc:test_rs_bindings_from_cc", 46*8975f5c5SAndroid Build Coastguard Worker ] 47*8975f5c5SAndroid Build Coastguard Worker 48*8975f5c5SAndroid Build Coastguard Worker if (!(is_apple && is_official_build)) { 49*8975f5c5SAndroid Build Coastguard Worker # TODO: crbug.com/372055517 - Apple lld has an ordering dependency bug 50*8975f5c5SAndroid Build Coastguard Worker # when LTO is enabled, and this particular build target runs into that. 51*8975f5c5SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/bindgen_cpp_test" ] 52*8975f5c5SAndroid Build Coastguard Worker } 53*8975f5c5SAndroid Build Coastguard Worker 54*8975f5c5SAndroid Build Coastguard Worker if (enable_chromium_prelude) { 55*8975f5c5SAndroid Build Coastguard Worker deps += [ "//build/rust/chromium_prelude:import_test" ] 56*8975f5c5SAndroid Build Coastguard Worker } 57*8975f5c5SAndroid Build Coastguard Worker if (enable_rust_cxx) { 58*8975f5c5SAndroid Build Coastguard Worker deps += [ 59*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_cpp_including_rust", 60*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_calling_cpp", 61*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_exe", 62*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_static_library", 63*8975f5c5SAndroid Build Coastguard Worker ] 64*8975f5c5SAndroid Build Coastguard Worker } 65*8975f5c5SAndroid Build Coastguard Worker if (build_with_chromium) { 66*8975f5c5SAndroid Build Coastguard Worker # This tests integration with a 3p library that downstream projects 67*8975f5c5SAndroid Build Coastguard Worker # don't need to have. 68*8975f5c5SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_serde_json_lenient" ] 69*8975f5c5SAndroid Build Coastguard Worker } 70*8975f5c5SAndroid Build Coastguard Worker 71*8975f5c5SAndroid Build Coastguard Worker if (can_build_rust_unit_tests) { 72*8975f5c5SAndroid Build Coastguard Worker deps += [ 73*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_static_fns_test:bindgen_static_fns_test_lib_unittests", 74*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_test:bindgen_test_lib_unittests", 75*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_aliased_deps:test_aliased_deps_unittests", 76*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:target1_test_rlib_crate_v0_2_unittests", 77*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:target2_test_rlib_crate_v0_2_unittests", 78*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_metadata:test_rust_metadata_unittests", 79*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_multiple_dep_versions_exe/v1:test_lib_v1_unittests", 80*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_multiple_dep_versions_exe/v2:test_lib_v2_unittests", 81*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_static_library_non_standard_arrangement:foo_tests", 82*8975f5c5SAndroid Build Coastguard Worker 83*8975f5c5SAndroid Build Coastguard Worker # TODO(crbug.com/40226863): Enable the additional target below 84*8975f5c5SAndroid Build Coastguard Worker # once `rs_bindings_from_cc` is distributed via `gclient sync`. In the 85*8975f5c5SAndroid Build Coastguard Worker # meantime see the instructions in 86*8975f5c5SAndroid Build Coastguard Worker # `//build/rust/run_rs_bindings_from_cc.py`. 87*8975f5c5SAndroid Build Coastguard Worker #"test_rs_bindings_from_cc:test_rs_bindings_from_cc_unittests", 88*8975f5c5SAndroid Build Coastguard Worker ] 89*8975f5c5SAndroid Build Coastguard Worker 90*8975f5c5SAndroid Build Coastguard Worker if (enable_rust_cxx) { 91*8975f5c5SAndroid Build Coastguard Worker deps += [ 92*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_cpp_including_rust:test_cpp_including_rust_unittests", 93*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_exe:test_rust_exe_unittests", 94*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_static_library:test_rust_static_library_unittests", 95*8975f5c5SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_unittests", 96*8975f5c5SAndroid Build Coastguard Worker ] 97*8975f5c5SAndroid Build Coastguard Worker } 98*8975f5c5SAndroid Build Coastguard Worker } 99*8975f5c5SAndroid Build Coastguard Worker 100*8975f5c5SAndroid Build Coastguard Worker # Dylibs should only be built in component builds. We turn on flags which 101*8975f5c5SAndroid Build Coastguard Worker # are incompatible with shared library compilation in non-component builds 102*8975f5c5SAndroid Build Coastguard Worker # (such as code coverage https://crbug.com/1457533). 103*8975f5c5SAndroid Build Coastguard Worker if (is_component_build && enable_rust_cxx) { 104*8975f5c5SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_rust_shared_library" ] 105*8975f5c5SAndroid Build Coastguard Worker if (can_build_rust_unit_tests) { 106*8975f5c5SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_cpp_including_rust:test_cpp_including_rust_dylib_unittests" ] 107*8975f5c5SAndroid Build Coastguard Worker 108*8975f5c5SAndroid Build Coastguard Worker # TODO(crbug.com/40266882): The shared library unittest EXE ends up 109*8975f5c5SAndroid Build Coastguard Worker # requiring the DLL to run, even though it does not use the DLL. 110*8975f5c5SAndroid Build Coastguard Worker if (!is_win && !is_mac) { 111*8975f5c5SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_rust_shared_library:test_rust_shared_library_unittests" ] 112*8975f5c5SAndroid Build Coastguard Worker } 113*8975f5c5SAndroid Build Coastguard Worker } 114*8975f5c5SAndroid Build Coastguard Worker } 115*8975f5c5SAndroid Build Coastguard Worker 116*8975f5c5SAndroid Build Coastguard Worker if (is_win) { 117*8975f5c5SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/windows_sys_test" ] 118*8975f5c5SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_control_flow_guard" ] 119*8975f5c5SAndroid Build Coastguard Worker } 120*8975f5c5SAndroid Build Coastguard Worker } 121*8975f5c5SAndroid Build Coastguard Worker} 122*8975f5c5SAndroid Build Coastguard Worker 123*8975f5c5SAndroid Build Coastguard Workerif (can_build_rust_unit_tests) { 124*8975f5c5SAndroid Build Coastguard Worker # Generates a script that will run all the native Rust unit tests, in order 125*8975f5c5SAndroid Build Coastguard Worker # to have them all part of a single test step on infra bots. 126*8975f5c5SAndroid Build Coastguard Worker rust_unit_tests_group("build_rust_tests") { 127*8975f5c5SAndroid Build Coastguard Worker deps = [ ":deps" ] 128*8975f5c5SAndroid Build Coastguard Worker } 129*8975f5c5SAndroid Build Coastguard Worker} 130