Roll src/third_party/WebKit f298044:aa8346d (svn 202628:202629)
[chromium-blink-merge.git] / chrome / chrome_syzygy.gypi
blob666e07cbe8bcd0d4a827a6806360563292cd6c01
1 # Copyright 2013 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 # Intended to be included by chrome_syzygy.gyp. A variable 'dll_name' should
6 # be set to the base name of the DLL. This is used to generate the build steps
7 # for both chrome.dll and chrome_child.dll when in multiple dll mode.
9   # Reorder or instrument the initial chrome DLL executable, placing the
10   # optimized output and corresponding PDB file into the "syzygy"
11   # subdirectory.
12   # This target won't build in fastbuild, since there are no PDBs.
13   'dependencies': [
14     '<(DEPTH)/chrome/chrome.gyp:<(dll_name)_dll',
15   ],
16   'conditions': [
17     ['syzyasan==0 and syzygy_optimize==1', {
18       # Reorder chrome DLL executable.
19       # If there's a matching chrome.dll-ordering.json file present in
20       # the output directory, chrome.dll will be ordered according to
21       # that, otherwise it will be randomized.
22       'actions': [
23         {
24           'action_name': 'Reorder Chrome with Syzygy',
25           'inputs': [
26             '<(DEPTH)/chrome/tools/build/win/syzygy/reorder.py',
27             '<(PRODUCT_DIR)/<(dll_name).dll',
28             '<(PRODUCT_DIR)/<(dll_name).dll.pdb',
29           ],
30           'outputs': [
31             '<(dest_dir)/<(dll_name).dll',
32             '<(dest_dir)/<(dll_name).dll.pdb',
33           ],
34           'action': [
35             'python',
36             '<(DEPTH)/chrome/tools/build/win/syzygy/reorder.py',
37             '--input_executable', '<(PRODUCT_DIR)/<(dll_name).dll',
38             '--input_symbol', '<(PRODUCT_DIR)/<(dll_name).dll.pdb',
39             '--destination_dir', '<(dest_dir)',
40           ],
41         },
42       ],
43     }],
44     ['syzyasan==1 and syzygy_optimize==0', {
45       # Instrument chrome DLL executable with SyzyAsan.
46       'actions': [
47         {
48           'action_name': 'Instrument Chrome with SyzyAsan',
49           'inputs': [
50             '<(DEPTH)/chrome/tools/build/win/syzygy/instrument.py',
51             '<(DEPTH)/chrome/tools/build/win/syzygy/'
52                 'syzyasan-instrumentation-filter.txt',
53             '<(PRODUCT_DIR)/<(dll_name).dll',
54           ],
55           'outputs': [
56             '<(dest_dir)/<(dll_name).dll',
57             '<(dest_dir)/<(dll_name).dll.pdb',
58             '<(dest_dir)/win-syzyasan-filter-<(dll_name).txt.json',
59           ],
60           'action': [
61             'python',
62             '<(DEPTH)/chrome/tools/build/win/syzygy/instrument.py',
63             '--mode', 'asan',
64             '--input_executable', '<(PRODUCT_DIR)/<(dll_name).dll',
65             '--input_symbol', '<(PRODUCT_DIR)/<(dll_name).dll.pdb',
66             '--filter',
67             '<(DEPTH)/chrome/tools/build/win/syzygy/'
68                 'syzyasan-instrumentation-filter.txt',
69             '--output-filter-file',
70             '<(dest_dir)/win-syzyasan-filter-<(dll_name).txt.json',
71             '--destination_dir', '<(dest_dir)',
72           ],
73         },
74       ],
75       'dependencies': [
76         'copy_syzyasan_binaries',
77       ],
78     }],
79   ],