• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2014 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 provide a rule that
6# packs relocations in Release builds of native libraries.
7#
8# To use this, create a gyp target with the following form:
9#  {
10#    'action_name': 'pack_relocations',
11#    'actions': [
12#      'variables': {
13#        'enable_packing': 'pack relocations if 1, plain file copy if 0'
14#        'exclude_packing_list': 'names of libraries explicitly not packed',
15#        'ordered_libraries_file': 'file generated by write_ordered_libraries'
16#        'input_paths': 'files to be added to the list of inputs'
17#        'stamp': 'file to touch when the action is complete'
18#        'stripped_libraries_dir': 'directory holding stripped libraries',
19#        'packed_libraries_dir': 'directory holding packed libraries',
20#      'includes': [ '../../build/android/pack_relocations.gypi' ],
21#    ],
22#  },
23#
24
25{
26  'variables': {
27    'input_paths': [],
28  },
29  'inputs': [
30    '<(DEPTH)/build/android/gyp/util/build_utils.py',
31    '<(DEPTH)/build/android/gyp/pack_relocations.py',
32    '<(ordered_libraries_file)',
33    '>@(input_paths)',
34  ],
35  'outputs': [
36    '<(stamp)',
37  ],
38  'conditions': [
39    ['enable_packing == 1', {
40      'message': 'Packing relocations for <(_target_name)',
41      'dependencies': [
42        '<(DEPTH)/third_party/android_platform/relocation_packer.gyp:android_relocation_packer#host',
43      ],
44      'inputs': [
45        '<(PRODUCT_DIR)/android_relocation_packer',
46      ],
47      'action': [
48        'python', '<(DEPTH)/build/android/gyp/pack_relocations.py',
49        '--configuration-name=<(CONFIGURATION_NAME)',
50        '--enable-packing=1',
51        '--exclude-packing-list=<@(exclude_packing_list)',
52        '--android-pack-relocations=<(PRODUCT_DIR)/android_relocation_packer',
53        '--stripped-libraries-dir=<(stripped_libraries_dir)',
54        '--packed-libraries-dir=<(packed_libraries_dir)',
55        '--libraries=@FileArg(<(ordered_libraries_file):libraries)',
56        '--stamp=<(stamp)',
57      ],
58    }, {
59      'message': 'Copying libraries (no relocation packing) for <(_target_name)',
60      'action': [
61        'python', '<(DEPTH)/build/android/gyp/pack_relocations.py',
62        '--configuration-name=<(CONFIGURATION_NAME)',
63        '--enable-packing=0',
64        '--stripped-libraries-dir=<(stripped_libraries_dir)',
65        '--packed-libraries-dir=<(packed_libraries_dir)',
66        '--libraries=@FileArg(<(ordered_libraries_file):libraries)',
67        '--stamp=<(stamp)',
68      ],
69    }],
70    ['android_must_copy_system_libraries == 1', {
71      # Add a fake output to force the build to always re-run this step. This
72      # is required because the real inputs are not known at gyp-time and
73      # changing base.so may not trigger changes to dependent libraries.
74      'outputs': [ '<(stamp).fake' ]
75    }],
76  ],
77}
78