1*a03ca8b9SKrzysztof Kosiński# Copyright 2017 The Chromium Authors. All rights reserved. 2*a03ca8b9SKrzysztof Kosiński# Use of this source code is governed by a BSD-style license that can be 3*a03ca8b9SKrzysztof Kosiński# found in the LICENSE file. 4*a03ca8b9SKrzysztof Kosiński 5*a03ca8b9SKrzysztof Kosińskiimport("//build/buildflag_header.gni") 6*a03ca8b9SKrzysztof Kosińskiimport("//chrome/process_version_rc_template.gni") 7*a03ca8b9SKrzysztof Kosińskiimport("//testing/test.gni") 8*a03ca8b9SKrzysztof Kosiński 9*a03ca8b9SKrzysztof Kosińskibuildflag_header("buildflags") { 10*a03ca8b9SKrzysztof Kosiński header = "buildflags.h" 11*a03ca8b9SKrzysztof Kosiński 12*a03ca8b9SKrzysztof Kosiński # Disable DEX on Windows Official Builds. 13*a03ca8b9SKrzysztof Kosiński _enable_dex = !(is_win && is_official_build) 14*a03ca8b9SKrzysztof Kosiński _enable_elf = true 15*a03ca8b9SKrzysztof Kosiński _enable_win = true 16*a03ca8b9SKrzysztof Kosiński 17*a03ca8b9SKrzysztof Kosiński # Disable ZTF (Zucchini Text Format) on official builds it is for testing only. 18*a03ca8b9SKrzysztof Kosiński _enable_ztf = !is_official_build 19*a03ca8b9SKrzysztof Kosiński flags = [ 20*a03ca8b9SKrzysztof Kosiński "ENABLE_DEX=$_enable_dex", 21*a03ca8b9SKrzysztof Kosiński "ENABLE_ELF=$_enable_elf", 22*a03ca8b9SKrzysztof Kosiński "ENABLE_WIN=$_enable_win", 23*a03ca8b9SKrzysztof Kosiński "ENABLE_ZTF=$_enable_ztf", 24*a03ca8b9SKrzysztof Kosiński ] 25*a03ca8b9SKrzysztof Kosiński} 26*a03ca8b9SKrzysztof Kosiński 27*a03ca8b9SKrzysztof Kosińskistatic_library("zucchini_lib") { 28*a03ca8b9SKrzysztof Kosiński sources = [ 29*a03ca8b9SKrzysztof Kosiński "abs32_utils.cc", 30*a03ca8b9SKrzysztof Kosiński "abs32_utils.h", 31*a03ca8b9SKrzysztof Kosiński "address_translator.cc", 32*a03ca8b9SKrzysztof Kosiński "address_translator.h", 33*a03ca8b9SKrzysztof Kosiński "algorithm.h", 34*a03ca8b9SKrzysztof Kosiński "arm_utils.cc", 35*a03ca8b9SKrzysztof Kosiński "arm_utils.h", 36*a03ca8b9SKrzysztof Kosiński "binary_data_histogram.cc", 37*a03ca8b9SKrzysztof Kosiński "binary_data_histogram.h", 38*a03ca8b9SKrzysztof Kosiński "buffer_sink.cc", 39*a03ca8b9SKrzysztof Kosiński "buffer_sink.h", 40*a03ca8b9SKrzysztof Kosiński "buffer_source.cc", 41*a03ca8b9SKrzysztof Kosiński "buffer_source.h", 42*a03ca8b9SKrzysztof Kosiński "buffer_view.h", 43*a03ca8b9SKrzysztof Kosiński "crc32.cc", 44*a03ca8b9SKrzysztof Kosiński "crc32.h", 45*a03ca8b9SKrzysztof Kosiński "disassembler.cc", 46*a03ca8b9SKrzysztof Kosiński "disassembler.h", 47*a03ca8b9SKrzysztof Kosiński "disassembler_dex.cc", 48*a03ca8b9SKrzysztof Kosiński "disassembler_dex.h", 49*a03ca8b9SKrzysztof Kosiński "disassembler_elf.cc", 50*a03ca8b9SKrzysztof Kosiński "disassembler_elf.h", 51*a03ca8b9SKrzysztof Kosiński "disassembler_no_op.cc", 52*a03ca8b9SKrzysztof Kosiński "disassembler_no_op.h", 53*a03ca8b9SKrzysztof Kosiński "disassembler_win32.cc", 54*a03ca8b9SKrzysztof Kosiński "disassembler_win32.h", 55*a03ca8b9SKrzysztof Kosiński "disassembler_ztf.cc", 56*a03ca8b9SKrzysztof Kosiński "disassembler_ztf.h", 57*a03ca8b9SKrzysztof Kosiński "element_detection.cc", 58*a03ca8b9SKrzysztof Kosiński "element_detection.h", 59*a03ca8b9SKrzysztof Kosiński "encoded_view.cc", 60*a03ca8b9SKrzysztof Kosiński "encoded_view.h", 61*a03ca8b9SKrzysztof Kosiński "ensemble_matcher.cc", 62*a03ca8b9SKrzysztof Kosiński "ensemble_matcher.h", 63*a03ca8b9SKrzysztof Kosiński "equivalence_map.cc", 64*a03ca8b9SKrzysztof Kosiński "equivalence_map.h", 65*a03ca8b9SKrzysztof Kosiński "heuristic_ensemble_matcher.cc", 66*a03ca8b9SKrzysztof Kosiński "heuristic_ensemble_matcher.h", 67*a03ca8b9SKrzysztof Kosiński "image_index.cc", 68*a03ca8b9SKrzysztof Kosiński "image_index.h", 69*a03ca8b9SKrzysztof Kosiński "image_utils.h", 70*a03ca8b9SKrzysztof Kosiński "imposed_ensemble_matcher.cc", 71*a03ca8b9SKrzysztof Kosiński "imposed_ensemble_matcher.h", 72*a03ca8b9SKrzysztof Kosiński "io_utils.cc", 73*a03ca8b9SKrzysztof Kosiński "io_utils.h", 74*a03ca8b9SKrzysztof Kosiński "patch_reader.cc", 75*a03ca8b9SKrzysztof Kosiński "patch_reader.h", 76*a03ca8b9SKrzysztof Kosiński "patch_utils.h", 77*a03ca8b9SKrzysztof Kosiński "patch_writer.cc", 78*a03ca8b9SKrzysztof Kosiński "patch_writer.h", 79*a03ca8b9SKrzysztof Kosiński "reference_bytes_mixer.cc", 80*a03ca8b9SKrzysztof Kosiński "reference_bytes_mixer.h", 81*a03ca8b9SKrzysztof Kosiński "reference_set.cc", 82*a03ca8b9SKrzysztof Kosiński "reference_set.h", 83*a03ca8b9SKrzysztof Kosiński "rel32_finder.cc", 84*a03ca8b9SKrzysztof Kosiński "rel32_finder.h", 85*a03ca8b9SKrzysztof Kosiński "rel32_utils.cc", 86*a03ca8b9SKrzysztof Kosiński "rel32_utils.h", 87*a03ca8b9SKrzysztof Kosiński "reloc_elf.cc", 88*a03ca8b9SKrzysztof Kosiński "reloc_elf.h", 89*a03ca8b9SKrzysztof Kosiński "reloc_win32.cc", 90*a03ca8b9SKrzysztof Kosiński "reloc_win32.h", 91*a03ca8b9SKrzysztof Kosiński "suffix_array.h", 92*a03ca8b9SKrzysztof Kosiński "target_pool.cc", 93*a03ca8b9SKrzysztof Kosiński "target_pool.h", 94*a03ca8b9SKrzysztof Kosiński "targets_affinity.cc", 95*a03ca8b9SKrzysztof Kosiński "targets_affinity.h", 96*a03ca8b9SKrzysztof Kosiński "type_dex.h", 97*a03ca8b9SKrzysztof Kosiński "type_elf.h", 98*a03ca8b9SKrzysztof Kosiński "type_win_pe.h", 99*a03ca8b9SKrzysztof Kosiński "typed_value.h", 100*a03ca8b9SKrzysztof Kosiński "version_info.h", 101*a03ca8b9SKrzysztof Kosiński "zucchini.h", 102*a03ca8b9SKrzysztof Kosiński "zucchini_apply.cc", 103*a03ca8b9SKrzysztof Kosiński "zucchini_apply.h", 104*a03ca8b9SKrzysztof Kosiński "zucchini_gen.cc", 105*a03ca8b9SKrzysztof Kosiński "zucchini_gen.h", 106*a03ca8b9SKrzysztof Kosiński "zucchini_tools.cc", 107*a03ca8b9SKrzysztof Kosiński "zucchini_tools.h", 108*a03ca8b9SKrzysztof Kosiński ] 109*a03ca8b9SKrzysztof Kosiński 110*a03ca8b9SKrzysztof Kosiński deps = [ 111*a03ca8b9SKrzysztof Kosiński ":buildflags", 112*a03ca8b9SKrzysztof Kosiński "//base", 113*a03ca8b9SKrzysztof Kosiński ] 114*a03ca8b9SKrzysztof Kosiński} 115*a03ca8b9SKrzysztof Kosiński 116*a03ca8b9SKrzysztof Kosińskistatic_library("zucchini_io") { 117*a03ca8b9SKrzysztof Kosiński sources = [ 118*a03ca8b9SKrzysztof Kosiński "mapped_file.cc", 119*a03ca8b9SKrzysztof Kosiński "mapped_file.h", 120*a03ca8b9SKrzysztof Kosiński "zucchini_integration.cc", 121*a03ca8b9SKrzysztof Kosiński "zucchini_integration.h", 122*a03ca8b9SKrzysztof Kosiński ] 123*a03ca8b9SKrzysztof Kosiński 124*a03ca8b9SKrzysztof Kosiński deps = [ 125*a03ca8b9SKrzysztof Kosiński ":zucchini_lib", 126*a03ca8b9SKrzysztof Kosiński "//base", 127*a03ca8b9SKrzysztof Kosiński ] 128*a03ca8b9SKrzysztof Kosiński} 129*a03ca8b9SKrzysztof Kosiński 130*a03ca8b9SKrzysztof Kosińskiexecutable("zucchini") { 131*a03ca8b9SKrzysztof Kosiński sources = [ 132*a03ca8b9SKrzysztof Kosiński "main_utils.cc", 133*a03ca8b9SKrzysztof Kosiński "main_utils.h", 134*a03ca8b9SKrzysztof Kosiński "zucchini_commands.cc", 135*a03ca8b9SKrzysztof Kosiński "zucchini_commands.h", 136*a03ca8b9SKrzysztof Kosiński "zucchini_main.cc", 137*a03ca8b9SKrzysztof Kosiński ] 138*a03ca8b9SKrzysztof Kosiński 139*a03ca8b9SKrzysztof Kosiński deps = [ 140*a03ca8b9SKrzysztof Kosiński ":zucchini_io", 141*a03ca8b9SKrzysztof Kosiński ":zucchini_lib", 142*a03ca8b9SKrzysztof Kosiński "//base", 143*a03ca8b9SKrzysztof Kosiński ] 144*a03ca8b9SKrzysztof Kosiński 145*a03ca8b9SKrzysztof Kosiński if (is_win) { 146*a03ca8b9SKrzysztof Kosiński deps += [ ":zucchini_exe_version" ] 147*a03ca8b9SKrzysztof Kosiński } 148*a03ca8b9SKrzysztof Kosiński} 149*a03ca8b9SKrzysztof Kosiński 150*a03ca8b9SKrzysztof Kosińskiif (is_win) { 151*a03ca8b9SKrzysztof Kosiński process_version_rc_template("zucchini_exe_version") { 152*a03ca8b9SKrzysztof Kosiński template_file = "zucchini_exe_version.rc.version" 153*a03ca8b9SKrzysztof Kosiński output = "$target_gen_dir/zucchini_exe_version.rc" 154*a03ca8b9SKrzysztof Kosiński } 155*a03ca8b9SKrzysztof Kosiński} 156*a03ca8b9SKrzysztof Kosiński 157*a03ca8b9SKrzysztof Kosińskitest("zucchini_unittests") { 158*a03ca8b9SKrzysztof Kosiński sources = [ 159*a03ca8b9SKrzysztof Kosiński "abs32_utils_unittest.cc", 160*a03ca8b9SKrzysztof Kosiński "address_translator_unittest.cc", 161*a03ca8b9SKrzysztof Kosiński "algorithm_unittest.cc", 162*a03ca8b9SKrzysztof Kosiński "arm_utils_unittest.cc", 163*a03ca8b9SKrzysztof Kosiński "binary_data_histogram_unittest.cc", 164*a03ca8b9SKrzysztof Kosiński "buffer_sink_unittest.cc", 165*a03ca8b9SKrzysztof Kosiński "buffer_source_unittest.cc", 166*a03ca8b9SKrzysztof Kosiński "buffer_view_unittest.cc", 167*a03ca8b9SKrzysztof Kosiński "crc32_unittest.cc", 168*a03ca8b9SKrzysztof Kosiński "disassembler_dex_unittest.cc", 169*a03ca8b9SKrzysztof Kosiński "disassembler_elf_unittest.cc", 170*a03ca8b9SKrzysztof Kosiński "disassembler_ztf_unittest.cc", 171*a03ca8b9SKrzysztof Kosiński "element_detection_unittest.cc", 172*a03ca8b9SKrzysztof Kosiński "encoded_view_unittest.cc", 173*a03ca8b9SKrzysztof Kosiński "equivalence_map_unittest.cc", 174*a03ca8b9SKrzysztof Kosiński "image_index_unittest.cc", 175*a03ca8b9SKrzysztof Kosiński "image_utils_unittest.cc", 176*a03ca8b9SKrzysztof Kosiński "imposed_ensemble_matcher_unittest.cc", 177*a03ca8b9SKrzysztof Kosiński "io_utils_unittest.cc", 178*a03ca8b9SKrzysztof Kosiński "mapped_file_unittest.cc", 179*a03ca8b9SKrzysztof Kosiński "patch_read_write_unittest.cc", 180*a03ca8b9SKrzysztof Kosiński "patch_utils_unittest.cc", 181*a03ca8b9SKrzysztof Kosiński "reference_set_unittest.cc", 182*a03ca8b9SKrzysztof Kosiński "rel32_finder_unittest.cc", 183*a03ca8b9SKrzysztof Kosiński "rel32_utils_unittest.cc", 184*a03ca8b9SKrzysztof Kosiński "reloc_elf_unittest.cc", 185*a03ca8b9SKrzysztof Kosiński "reloc_win32_unittest.cc", 186*a03ca8b9SKrzysztof Kosiński "suffix_array_unittest.cc", 187*a03ca8b9SKrzysztof Kosiński "target_pool_unittest.cc", 188*a03ca8b9SKrzysztof Kosiński "targets_affinity_unittest.cc", 189*a03ca8b9SKrzysztof Kosiński "test_disassembler.cc", 190*a03ca8b9SKrzysztof Kosiński "test_disassembler.h", 191*a03ca8b9SKrzysztof Kosiński "test_reference_reader.cc", 192*a03ca8b9SKrzysztof Kosiński "test_reference_reader.h", 193*a03ca8b9SKrzysztof Kosiński "test_utils.cc", 194*a03ca8b9SKrzysztof Kosiński "test_utils.h", 195*a03ca8b9SKrzysztof Kosiński "typed_value_unittest.cc", 196*a03ca8b9SKrzysztof Kosiński "zucchini_apply_unittest.cc", 197*a03ca8b9SKrzysztof Kosiński "zucchini_gen_unittest.cc", 198*a03ca8b9SKrzysztof Kosiński ] 199*a03ca8b9SKrzysztof Kosiński 200*a03ca8b9SKrzysztof Kosiński deps = [ 201*a03ca8b9SKrzysztof Kosiński ":zucchini_io", 202*a03ca8b9SKrzysztof Kosiński ":zucchini_lib", 203*a03ca8b9SKrzysztof Kosiński "//base", 204*a03ca8b9SKrzysztof Kosiński "//base/test:run_all_unittests", 205*a03ca8b9SKrzysztof Kosiński "//base/test:test_support", 206*a03ca8b9SKrzysztof Kosiński "//testing/gtest", 207*a03ca8b9SKrzysztof Kosiński ] 208*a03ca8b9SKrzysztof Kosiński} 209*a03ca8b9SKrzysztof Kosiński 210*a03ca8b9SKrzysztof Kosińskitest("zucchini_integration_test") { 211*a03ca8b9SKrzysztof Kosiński sources = [ "integration_test.cc" ] 212*a03ca8b9SKrzysztof Kosiński 213*a03ca8b9SKrzysztof Kosiński deps = [ 214*a03ca8b9SKrzysztof Kosiński ":zucchini_lib", 215*a03ca8b9SKrzysztof Kosiński "//base", 216*a03ca8b9SKrzysztof Kosiński "//base/test:run_all_unittests", 217*a03ca8b9SKrzysztof Kosiński "//base/test:test_support", 218*a03ca8b9SKrzysztof Kosiński "//testing/gtest", 219*a03ca8b9SKrzysztof Kosiński ] 220*a03ca8b9SKrzysztof Kosiński 221*a03ca8b9SKrzysztof Kosiński data = [ "testdata" ] 222*a03ca8b9SKrzysztof Kosiński} 223*a03ca8b9SKrzysztof Kosiński 224*a03ca8b9SKrzysztof Kosiński# Group to build and depend on all the Zucchini related fuzzers. 225*a03ca8b9SKrzysztof Kosińskigroup("zucchini_fuzzers") { 226*a03ca8b9SKrzysztof Kosiński testonly = true 227*a03ca8b9SKrzysztof Kosiński deps = [ 228*a03ca8b9SKrzysztof Kosiński "//components/zucchini/fuzzers:zucchini_disassembler_dex_fuzzer", 229*a03ca8b9SKrzysztof Kosiński "//components/zucchini/fuzzers:zucchini_disassembler_win32_fuzzer", 230*a03ca8b9SKrzysztof Kosiński "//components/zucchini/fuzzers:zucchini_patch_fuzzer", 231*a03ca8b9SKrzysztof Kosiński ] 232*a03ca8b9SKrzysztof Kosiński 233*a03ca8b9SKrzysztof Kosiński # Ensure protoc is available. 234*a03ca8b9SKrzysztof Kosiński # Disabled on Windows due to crbug/844826. 235*a03ca8b9SKrzysztof Kosiński if (current_toolchain == host_toolchain && !is_win) { 236*a03ca8b9SKrzysztof Kosiński deps += [ 237*a03ca8b9SKrzysztof Kosiński "//components/zucchini/fuzzers:zucchini_apply_fuzzer", 238*a03ca8b9SKrzysztof Kosiński "//components/zucchini/fuzzers:zucchini_imposed_ensemble_matcher_fuzzer", 239*a03ca8b9SKrzysztof Kosiński "//components/zucchini/fuzzers:zucchini_raw_gen_fuzzer", 240*a03ca8b9SKrzysztof Kosiński "//components/zucchini/fuzzers:zucchini_ztf_gen_fuzzer", 241*a03ca8b9SKrzysztof Kosiński ] 242*a03ca8b9SKrzysztof Kosiński } 243*a03ca8b9SKrzysztof Kosiński} 244