# Copyright 2014 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 provide a rule that
# packs relocations in Release builds of native libraries.
#
# To use this, create a gyp target with the following form:
#  {
#    'action_name': 'pack_arm_relocations',
#    'actions': [
#      'variables': {
#        'enable_packing': 'pack relocations if 1, plain file copy if 0'
#        'exclude_packing_list': 'names of libraries explicitly not packed',
#        'ordered_libraries_file': 'file generated by write_ordered_libraries'
#        'input_paths': 'files to be added to the list of inputs'
#        'stamp': 'file to touch when the action is complete'
#        'stripped_libraries_dir': 'directory holding stripped libraries',
#        'packed_libraries_dir': 'directory holding packed libraries',
#      'includes': [ '../../build/android/pack_arm_relocations.gypi' ],
#    ],
#  },
#

{
  'variables': {
    'input_paths': [],
  },
  'inputs': [
    '<(DEPTH)/build/android/gyp/util/build_utils.py',
    '<(DEPTH)/build/android/gyp/pack_arm_relocations.py',
    '<(ordered_libraries_file)',
    '>@(input_paths)',
  ],
  'outputs': [
    '<(stamp)',
  ],
  'conditions': [
    ['enable_packing == 1', {
      'message': 'Packing relocations for <(_target_name)',
      'dependencies': [
        '<(DEPTH)/third_party/android_platform/relocation_packer.gyp:android_relocation_packer#host',
      ],
      'inputs': [
        '<(PRODUCT_DIR)/android_relocation_packer',
      ],
      'action': [
        'python', '<(DEPTH)/build/android/gyp/pack_arm_relocations.py',
        '--configuration-name=<(CONFIGURATION_NAME)',
        '--enable-packing=1',
        '--exclude-packing-list=<@(exclude_packing_list)',
        '--android-pack-relocations=<(PRODUCT_DIR)/android_relocation_packer',
        '--stripped-libraries-dir=<(stripped_libraries_dir)',
        '--packed-libraries-dir=<(packed_libraries_dir)',
        '--libraries=@FileArg(<(ordered_libraries_file):libraries)',
        '--stamp=<(stamp)',
      ],
    }, {
      'message': 'Copying libraries (no relocation packing) for <(_target_name)',
      'action': [
        'python', '<(DEPTH)/build/android/gyp/pack_arm_relocations.py',
        '--configuration-name=<(CONFIGURATION_NAME)',
        '--enable-packing=0',
        '--stripped-libraries-dir=<(stripped_libraries_dir)',
        '--packed-libraries-dir=<(packed_libraries_dir)',
        '--libraries=@FileArg(<(ordered_libraries_file):libraries)',
        '--stamp=<(stamp)',
      ],
    }],
    ['component == "shared_library"', {
      # Add a fake output to force the build to always re-run this step. This
      # is required because the real inputs are not known at gyp-time and
      # changing base.so may not trigger changes to dependent libraries.
      'outputs': [ '<(stamp).fake' ]
    }],
  ],
}
