summaryrefslogtreecommitdiffstats
path: root/build/grit_action.gypi
blob: b24f0f8d715cd0333db9b9cb9e16a7635657878a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file is meant to be included into an action to invoke grit in a
# consistent manner. To use this the following variables need to be
# defined:
#   grit_grd_file: string: grd file path
#   grit_out_dir: string: the output directory path

# It would be really nice to do this with a rule instead of actions, but it
# would need to determine inputs and outputs via grit_info on a per-file
# basis. GYP rules don't currently support that. They could be extended to
# do this, but then every generator would need to be updated to handle this.

{
  'variables': {
    'grit_cmd': ['python', '<(DEPTH)/tools/grit/grit.py'],
    'grit_resource_ids%': '<(DEPTH)/tools/gritsettings/resource_ids',
    # This makes it possible to add more defines in specific targets,
    # instead of build/common.gypi .
    'grit_additional_defines%': [],
    'grit_rc_header_format%': [],
    'grit_whitelist%': '',

    'conditions': [
      # These scripts can skip writing generated files if they are identical
      # to the already existing files, which avoids further build steps, like
      # recompilation. However, a dependency (earlier build step) having a
      # newer timestamp than an output (later build step) confuses some build
      # systems, so only use this on ninja, which explicitly supports this use
      # case (gyp turns all actions into ninja restat rules).
      ['"<(GENERATOR)"=="ninja"', {
        'write_only_new': '1',
      }, {
        'write_only_new': '0',
      }],
    ],
  },
  'conditions': [
    ['"<(grit_whitelist)"==""', {
      'variables': {
        'grit_whitelist_flag': [],
      }
    }, {
      'variables': {
        'grit_whitelist_flag': ['-w', '<(grit_whitelist)'],
      }
    }]
  ],
  'inputs': [
    '<!@pymod_do_main(grit_info <@(grit_defines) <@(grit_additional_defines) '
        '<@(grit_whitelist_flag) --inputs <(grit_grd_file) '
        '-f "<(grit_resource_ids)")',
  ],
  'outputs': [
    '<!@pymod_do_main(grit_info <@(grit_defines) <@(grit_additional_defines) '
        '<@(grit_whitelist_flag) --outputs \'<(grit_out_dir)\' '
        '<(grit_grd_file) -f "<(grit_resource_ids)")',
  ],
  'action': ['<@(grit_cmd)',
             '-i', '<(grit_grd_file)', 'build',
             '-f', '<(grit_resource_ids)',
             '-o', '<(grit_out_dir)',
             '--write-only-new=<(write_only_new)',
             '<@(grit_defines)',
             '<@(grit_whitelist_flag)',
             '<@(grit_additional_defines)',
             '<@(grit_rc_header_format)'],
  'message': 'Generating resources from <(grit_grd_file)',
}