1# Copyright (c) 2011 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.
4
5{
6  'variables': {
7    'chromium_code': 1,
8    'courgette_lib_sources': [
9      'adjustment_method.cc',
10      'adjustment_method_2.cc',
11      'adjustment_method.h',
12      'assembly_program.cc',
13      'assembly_program.h',
14      'third_party/bsdiff.h',
15      'third_party/bsdiff_apply.cc',
16      'third_party/bsdiff_create.cc',
17      'third_party/paged_array.h',
18      'courgette.h',
19      'crc.cc',
20      'crc.h',
21      'difference_estimator.cc',
22      'difference_estimator.h',
23      'disassembler.cc',
24      'disassembler.h',
25      'disassembler_elf_32.cc',
26      'disassembler_elf_32.h',
27      'disassembler_elf_32_arm.cc',
28      'disassembler_elf_32_arm.h',
29      'disassembler_elf_32_x86.cc',
30      'disassembler_elf_32_x86.h',
31      'disassembler_win32_x86.cc',
32      'disassembler_win32_x86.h',
33      'disassembler_win32_x64.cc',
34      'disassembler_win32_x64.h',
35      'encoded_program.cc',
36      'encoded_program.h',
37      'ensemble.cc',
38      'ensemble.h',
39      'ensemble_apply.cc',
40      'ensemble_create.cc',
41      'memory_allocator.cc',
42      'memory_allocator.h',
43      'region.h',
44      'simple_delta.cc',
45      'simple_delta.h',
46      'streams.cc',
47      'streams.h',
48      'types_elf.h',
49      'types_win_pe.h',
50      'patch_generator_x86_32.h',
51      'patcher_x86_32.h',
52    ],
53  },
54  'targets': [
55    {
56      'target_name': 'courgette_lib',
57      'type': 'static_library',
58      'dependencies': [
59        '../base/base.gyp:base',
60        '../third_party/lzma_sdk/lzma_sdk.gyp:lzma_sdk',
61      ],
62      'sources': [
63        '<@(courgette_lib_sources)'
64      ],
65    },
66    {
67      'target_name': 'courgette',
68      'type': 'executable',
69      'sources': [
70        'courgette_tool.cc',
71      ],
72      'dependencies': [
73        'courgette_lib',
74        '../base/base.gyp:base',
75      ],
76      'msvs_settings': {
77        'VCLinkerTool': {
78          'LargeAddressAware': 2,
79        },
80      },
81    },
82    {
83      'target_name': 'courgette_minimal_tool',
84      'type': 'executable',
85      'sources': [
86        'courgette_minimal_tool.cc',
87      ],
88      'dependencies': [
89        'courgette_lib',
90        '../base/base.gyp:base',
91      ],
92    },
93    {
94      'target_name': 'courgette_unittests',
95      'type': 'executable',
96      'sources': [
97        'adjustment_method_unittest.cc',
98        'bsdiff_memory_unittest.cc',
99        'base_test_unittest.cc',
100        'base_test_unittest.h',
101        'difference_estimator_unittest.cc',
102        'disassembler_elf_32_x86_unittest.cc',
103        'disassembler_win32_x86_unittest.cc',
104        'disassembler_win32_x64_unittest.cc',
105        'encoded_program_unittest.cc',
106        'encode_decode_unittest.cc',
107        'ensemble_unittest.cc',
108        'streams_unittest.cc',
109        'typedrva_unittest.cc',
110        'versioning_unittest.cc',
111        'third_party/paged_array_unittest.cc'
112      ],
113      'dependencies': [
114        'courgette_lib',
115        '../base/base.gyp:base',
116        '../base/base.gyp:base_i18n',
117        '../base/base.gyp:run_all_unittests',
118        '../base/base.gyp:test_support_base',
119        '../testing/gtest.gyp:gtest',
120      ],
121      'conditions': [
122        [ 'os_posix == 1 and OS != "mac" and OS != "android" and OS != "ios"', {
123          'conditions': [
124            ['use_allocator!="none"', {
125              'dependencies': [
126                '../base/allocator/allocator.gyp:allocator',
127              ],
128            }],
129          ],
130        }],
131      ],
132      # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
133      'msvs_disabled_warnings': [4267, ],
134    },
135    {
136      'target_name': 'courgette_fuzz',
137      'type': 'executable',
138      'sources': [
139        'base_test_unittest.cc',
140        'base_test_unittest.h',
141        'encoded_program_fuzz_unittest.cc',
142       ],
143      'dependencies': [
144        'courgette_lib',
145        '../base/base.gyp:base',
146        '../base/base.gyp:base_i18n',
147        '../base/base.gyp:test_support_base',
148        '../testing/gtest.gyp:gtest',
149      ],
150    },
151  ],
152  'conditions': [
153    ['OS=="win" and target_arch=="ia32"', {
154      'targets': [
155        {
156          'target_name': 'courgette_lib64',
157          'type': 'static_library',
158          'dependencies': [
159            '../base/base.gyp:base_win64',
160            '../third_party/lzma_sdk/lzma_sdk.gyp:lzma_sdk64',
161          ],
162          'sources': [
163            '<@(courgette_lib_sources)',
164          ],
165          'configurations': {
166            'Common_Base': {
167              'msvs_target_platform': 'x64',
168            },
169          },
170        },
171        {
172          'target_name': 'courgette64',
173          'type': 'executable',
174          'sources': [
175            'courgette_tool.cc',
176          ],
177          'dependencies': [
178            'courgette_lib64',
179            '../base/base.gyp:base_win64',
180          ],
181          'configurations': {
182            'Common_Base': {
183              'msvs_target_platform': 'x64',
184            },
185          },
186        },
187      ],
188    }],
189    # The build infrastructure needs courgette to be named courgette64.
190    ['OS=="win" and target_arch=="x64"', {
191      'targets': [
192        {
193          'target_name': 'courgette64',
194          'type': 'none',
195          'dependencies': [
196            'courgette',
197          ],
198          'actions': [{
199            'action_name': 'courgette64',
200            'inputs': [
201              '<(PRODUCT_DIR)/courgette.exe',
202            ],
203            'outputs': [
204              '<(PRODUCT_DIR)/courgette64.exe',
205            ],
206            'action': [
207              'python',
208              '../build/cp.py',
209              '<@(_inputs)',
210              '<@(_outputs)'
211            ],
212          }],
213        },
214      ],
215    }],
216  ],
217}
218