blob: 61b4e2c47045234eae7b6769aaa66961c6ae5e06 [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001# 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}