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.
4
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.
8{
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            '<(PRODUCT_DIR)/<(dll_name).dll',
27            '<(PRODUCT_DIR)/<(dll_name).dll.pdb',
28          ],
29          'outputs': [
30            '<(dest_dir)/<(dll_name).dll',
31            '<(dest_dir)/<(dll_name).dll.pdb',
32          ],
33          'action': [
34            'python',
35            '<(DEPTH)/chrome/tools/build/win/syzygy_reorder.py',
36            '--input_executable', '<(PRODUCT_DIR)/<(dll_name).dll',
37            '--input_symbol', '<(PRODUCT_DIR)/<(dll_name).dll.pdb',
38            '--destination_dir', '<(dest_dir)',
39          ],
40        },
41      ],
42    }],
43    ['syzyasan==1 and syzygy_optimize==0', {
44      # Instrument chrome DLL executable with SyzyAsan.
45      'actions': [
46        {
47          'action_name': 'Instrument Chrome with SyzyAsan',
48          'inputs': [
49            '<(DEPTH)/chrome/tools/build/win/win-syzyasan-filter.txt',
50            '<(PRODUCT_DIR)/<(dll_name).dll',
51          ],
52          'outputs': [
53            '<(dest_dir)/<(dll_name).dll',
54            '<(dest_dir)/<(dll_name).dll.pdb',
55            '<(dest_dir)/win-syzyasan-filter-<(dll_name).txt.json',
56          ],
57          'action': [
58            'python',
59            '<(DEPTH)/chrome/tools/build/win/syzygy_instrument.py',
60            '--mode', 'asan',
61            '--input_executable', '<(PRODUCT_DIR)/<(dll_name).dll',
62            '--input_symbol', '<(PRODUCT_DIR)/<(dll_name).dll.pdb',
63            '--filter',
64            '<(DEPTH)/chrome/tools/build/win/win-syzyasan-filter.txt',
65            '--output-filter-file',
66            '<(dest_dir)/win-syzyasan-filter-<(dll_name).txt.json',
67            '--destination_dir', '<(dest_dir)',
68          ],
69        },
70      ],
71      'dependencies': [
72        'copy_syzyasan_binaries',
73      ],
74    }],
75  ],
76}
77