xref: /aosp_15_r20/external/zucchini/BUILD.gn (revision a03ca8b91e029cd15055c20c78c2e087c84792e4)
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