Home | History | Annotate | Download | only in build
      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 # This file is meant to be included into an action to invoke grit in a
      6 # consistent manner. To use this the following variables need to be
      7 # defined:
      8 #   grit_grd_file: string: grd file path
      9 #   grit_out_dir: string: the output directory path
     10 
     11 # It would be really nice to do this with a rule instead of actions, but it
     12 # would need to determine inputs and outputs via grit_info on a per-file
     13 # basis. GYP rules don't currently support that. They could be extended to
     14 # do this, but then every generator would need to be updated to handle this.
     15 
     16 {
     17   'variables': {
     18     'grit_cmd': ['python', '<(DEPTH)/tools/grit/grit.py'],
     19     'grit_resource_ids%': '<(DEPTH)/tools/gritsettings/resource_ids',
     20     # This makes it possible to add more defines in specific targets,
     21     # instead of build/common.gypi .
     22     'grit_additional_defines%': [],
     23     'grit_rc_header_format%': [],
     24     'grit_whitelist%': '',
     25 
     26     'conditions': [
     27       # These scripts can skip writing generated files if they are identical
     28       # to the already existing files, which avoids further build steps, like
     29       # recompilation. However, a dependency (earlier build step) having a
     30       # newer timestamp than an output (later build step) confuses some build
     31       # systems, so only use this on ninja, which explicitly supports this use
     32       # case (gyp turns all actions into ninja restat rules).
     33       ['"<(GENERATOR)"=="ninja"', {
     34         'write_only_new': '1',
     35       }, {
     36         'write_only_new': '0',
     37       }],
     38     ],
     39   },
     40   'conditions': [
     41     ['"<(grit_whitelist)"==""', {
     42       'variables': {
     43         'grit_whitelist_flag': [],
     44       }
     45     }, {
     46       'variables': {
     47         'grit_whitelist_flag': ['-w', '<(grit_whitelist)'],
     48       }
     49     }]
     50   ],
     51   'inputs': [
     52     '<!@pymod_do_main(grit_info <@(grit_defines) <@(grit_additional_defines) '
     53         '<@(grit_whitelist_flag) --inputs <(grit_grd_file) '
     54         '-f "<(grit_resource_ids)")',
     55   ],
     56   'outputs': [
     57     '<!@pymod_do_main(grit_info <@(grit_defines) <@(grit_additional_defines) '
     58         '<@(grit_whitelist_flag) --outputs \'<(grit_out_dir)\' '
     59         '<(grit_grd_file) -f "<(grit_resource_ids)")',
     60   ],
     61   'action': ['<@(grit_cmd)',
     62              '-i', '<(grit_grd_file)', 'build',
     63              '-f', '<(grit_resource_ids)',
     64              '-o', '<(grit_out_dir)',
     65              '--write-only-new=<(write_only_new)',
     66              '<@(grit_defines)',
     67              '<@(grit_whitelist_flag)',
     68              '<@(grit_additional_defines)',
     69              '<@(grit_rc_header_format)'],
     70   'message': 'Generating resources from <(grit_grd_file)',
     71 }
     72