1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 import("//build/config/compiler/compiler.gni")
6 import("//testing/test.gni")
8 static_library("courgette_lib") {
10 "adjustment_method.cc",
11 "adjustment_method.h",
12 "adjustment_method_2.cc",
13 "assembly_program.cc",
15 "consecutive_range_visitor.h",
19 "difference_estimator.cc",
20 "difference_estimator.h",
23 "disassembler_elf_32.cc",
24 "disassembler_elf_32.h",
25 "disassembler_elf_32_arm.cc",
26 "disassembler_elf_32_arm.h",
27 "disassembler_elf_32_x86.cc",
28 "disassembler_elf_32_x86.h",
29 "disassembler_win32.cc",
30 "disassembler_win32.h",
31 "disassembler_win32_x64.cc",
32 "disassembler_win32_x64.h",
33 "disassembler_win32_x86.cc",
34 "disassembler_win32_x86.h",
42 "instruction_utils.h",
45 "patch_generator_x86_32.h",
47 "program_detector.cc",
51 "rel32_finder_x64.cc",
53 "rel32_finder_x86.cc",
63 "//third_party/lzma_sdk",
72 source_set("courgette_common") {
76 "memory_allocator.cc",
84 "//third_party/lzma_sdk",
88 source_set("paged_array") {
90 "third_party/bsdiff/paged_array.h",
97 source_set("bsdiff") {
99 "third_party/bsdiff/bsdiff.h",
100 "third_party/bsdiff/bsdiff_apply.cc",
101 "third_party/bsdiff/bsdiff_create.cc",
102 "third_party/bsdiff/bsdiff_search.h",
114 source_set("divsufsort") {
116 "third_party/divsufsort/divsufsort.cc",
117 "third_party/divsufsort/divsufsort.h",
118 "third_party/divsufsort/divsufsort_private.h",
119 "third_party/divsufsort/sssort.cc",
120 "third_party/divsufsort/trsort.cc",
127 configs += [ "//build/config/compiler:no_shorten_64_warnings" ]
131 executable("courgette") {
132 if (is_win && current_cpu == "x64") {
133 # The build infrastructure needs courgette to be named courgette64.
134 output_name = "courgette64"
142 ldflags = [ "/LARGEADDRESSAWARE" ]
148 "//build/win:default_exe_manifest",
152 executable("courgette_minimal_tool") {
154 "courgette_minimal_tool.cc",
160 "//build/win:default_exe_manifest",
165 if (current_cpu == "x64") {
166 # TODO(sebmarchand): The official build scripts expect courgette.exe to be
167 # in the official build archives, remove this once they have been updated.
168 # https://crbug.com/629243
169 copy("copy_courgette_binaries") {
171 "$root_out_dir/courgette64.exe",
174 "$root_out_dir/courgette.exe",
181 # Make sure that we have a copy of courgette64.exe(.pdb) in the root out
184 courgette64_toolchain = "//build/toolchain/win:win_clang_x64"
186 courgette64_toolchain = "//build/toolchain/win:x64"
188 courgette64_label = ":courgette($courgette64_toolchain)"
190 courgette64_out_dir = get_label_info(courgette64_label, "root_out_dir")
192 if (symbol_level > 0) {
193 copy("copy_courgette_pdb") {
194 visibility = [ ":copy_courgette_binaries" ]
196 "$courgette64_out_dir/courgette64.exe.pdb",
199 "$root_out_dir/{{source_file_part}}",
207 copy("copy_courgette_binaries") {
209 "$courgette64_out_dir/courgette64.exe",
212 "$root_out_dir/{{source_file_part}}",
217 if (symbol_level > 0) {
218 deps += [ ":copy_courgette_pdb" ]
225 test("courgette_unittests") {
227 "adjustment_method_unittest.cc",
228 "base_test_unittest.cc",
229 "base_test_unittest.h",
230 "bsdiff_memory_unittest.cc",
231 "consecutive_range_visitor_unittest.cc",
232 "difference_estimator_unittest.cc",
233 "disassembler_elf_32_x86_unittest.cc",
234 "disassembler_win32_x64_unittest.cc",
235 "disassembler_win32_x86_unittest.cc",
236 "encode_decode_unittest.cc",
237 "encoded_program_unittest.cc",
238 "ensemble_unittest.cc",
239 "image_utils_unittest.cc",
240 "label_manager_unittest.cc",
241 "memory_allocator_unittest.cc",
242 "program_detector_unittest.cc",
243 "rel32_finder_unittest.cc",
244 "streams_unittest.cc",
245 "third_party/bsdiff/bsdiff_search_unittest.cc",
246 "third_party/bsdiff/paged_array_unittest.cc",
247 "third_party/divsufsort/divsufsort_unittest.cc",
248 "typedrva_unittest.cc",
249 "versioning_unittest.cc",
252 # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
253 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
259 "//base/test:run_all_unittests",
260 "//base/test:test_support",
269 test("courgette_fuzz") {
271 "base_test_unittest.cc",
272 "base_test_unittest.h",
273 "encoded_program_fuzz_unittest.cc",
279 "//base/test:test_support",