| # Copyright 2019 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/fuchsia/zircon_images.gni") |
| import("//build/fuzzing/fuzzer.gni") |
| import("//build/package.gni") |
| |
| zircon_extras_manifest("zircon_test_manifest") { |
| manifest = "tests" |
| patterns = [ "*" ] |
| } |
| |
| package("zircon_tests") { |
| __deprecated_system_image = true |
| deps = [ |
| ":zircon_test_manifest", |
| ":zircon_test_metadata", |
| ] |
| extra = get_target_outputs(":zircon_test_manifest") |
| } |
| |
| zircon_extras_manifest("zircon_fuzzers_manifest") { |
| manifest = "tests" |
| patterns = [ |
| "bin/*-fuzzer.*", |
| "meta/*-fuzzer.*.cmx", |
| ] |
| } |
| |
| group("zircon_test_metadata") { |
| test_specs = read_file("$zircon_root_build_dir/tests.json", "json") |
| target_test_specs = [] |
| foreach(spec, test_specs) { |
| _test = { |
| } |
| _test = spec.test |
| |
| # Note: zircon host tests are surfaced separately as |
| # //src:zircon_host_tests; this is done separately as we want to run host |
| # tests - bringup or otherwise - together, and the same can't be said of |
| # zircon tests. |
| if (_test.os == "fuchsia") { |
| target_test_specs += [ |
| { |
| test = { |
| forward_variables_from(_test, "*") |
| label = string_replace(label, "//", "//zircon/") |
| } |
| }, |
| ] |
| } |
| } |
| metadata = { |
| tests = target_test_specs |
| } |
| } |
| |
| # When migrating Zircon fuzzers to the Fuchsia build, add them to this list. |
| _migrated_fuzzers = [ |
| "//src/devices/block/drivers/ftl/test:ftl-read-write-fuzzer", |
| "//src/connectivity/ethernet/drivers/usb-cdc-ecm:usb-cdc-ecm-descriptor-fuzzer", |
| "//src/media/audio/drivers/intel-hda/controller:nhlt-fuzzer", |
| "//zircon/system/ulib/affine/test:affine-fuzzer", |
| "//zircon/system/ulib/bitmap/test:raw-bitmap-fuzzer", |
| "//zircon/system/ulib/blobfs/test:zstd-fuzzer", |
| "//zircon/system/ulib/blobfs/test:zstd-seekable-fuzzer", |
| "//zircon/system/ulib/blobfs/test:zstd-seekable-symmetric-fuzzer", |
| "//zircon/system/ulib/bootfs/test:bootfs-parser-fuzzer", |
| "//zircon/system/ulib/elfload/test:elfload-fuzzer", |
| "//zircon/system/ulib/fs/journal/test:journal-entry-fuzzer", |
| "//zircon/system/ulib/fs/journal/test:journal-fuzzer", |
| "//zircon/system/ulib/fs/journal/test:journal-replay-fuzzer", |
| "//zircon/system/ulib/fs/test:vmo_file-fuzzer", |
| "//zircon/system/ulib/gfx/test:gfx-fuzzer", |
| "//zircon/system/ulib/hermetic-decompressor/test:hermetic-decompressor-fuzzer", |
| "//zircon/system/ulib/hid-parser/test:hid-parser-fuzzer", |
| "//zircon/system/ulib/inspect/test:inspect-reader-fuzzer", |
| "//zircon/system/ulib/ldmsg/test:ldmsg-fuzzer", |
| "//zircon/system/ulib/paver/test:paver-validation-fuzzer", |
| "//zircon/system/ulib/tftp/test:tftp-fuzzer", |
| "//zircon/system/ulib/utf_conversion/test:utf_conversion-fuzzer", |
| "//zircon/system/ulib/zbi-bootfs/test:zbi-bootfs-fuzzer", |
| "//zircon/system/ulib/zircon-crypto/test:hmac-fuzzer", |
| "//zircon/system/utest/kernel-cmdline:kernel-cmdline-fuzzer", |
| "//zircon/system/utest/noop-fuzzer", |
| "//zircon/third_party/ulib/lz4/test:lz4-decompress-fuzzer", |
| "//zircon/third_party/ulib/lz4/test:lz4-roundtrip-fuzzer", |
| ] |
| |
| # Emits a JSON manifest similar to the one used to incorporate Zircon fuzzers into the Fuchsia GN |
| # build pre-unification. This is used to validate that the list of Zircon fuzzers is the unchanged |
| # as fuzzers are being migrated. Post-unification, this target can be removed. |
| generated_file("migrated_fuzzers_manifest") { |
| outputs = [ "$root_build_dir/migrated_zircon_fuzzers.json" ] |
| contents = [] |
| foreach(fuzzer, _migrated_fuzzers) { |
| fuzzer_name = get_label_info(fuzzer, "name") |
| foreach(variant, |
| [ |
| "asan", |
| "asan-ubsan", |
| "ubsan", |
| ]) { |
| contents += [ "$fuzzer_name.$variant" ] |
| } |
| } |
| output_conversion = "json" |
| } |
| |
| fuzzers_package("zircon_fuzzers") { |
| # Zircon fuzzers built using Fuchsia GN. |
| fuzzers = _migrated_fuzzers |
| |
| # Zircon fuzzers built using Zircon GN; only enabled if a fuzzer variant is selected. |
| fuzzer_variants = [ |
| "asan-fuzzer", |
| "asan-ubsan-fuzzer", |
| "ubsan-fuzzer", |
| ] |
| |
| selected_variants = [] |
| foreach(selected_variant, select_variant_canonical) { |
| if (defined(selected_variant.variant)) { |
| selected_variants += [ selected_variant.variant ] |
| } |
| } |
| |
| if (selected_variants + fuzzer_variants - fuzzer_variants != |
| selected_variants) { |
| fuzzers_manifest = { |
| target = ":zircon_fuzzers_manifest" |
| output = "$zircon_root_build_dir/legacy_fuzzers-$target_cpu.json" |
| } |
| deps = [ ":migrated_fuzzers_manifest" ] |
| } |
| } |
| |
| # Known to infrastructure. |
| # TODO(fxbug.dev/10198): delete me. zbi_tests.json is now always produced. |
| group("zbi_tests") { |
| } |