# Copyright (c) 2012 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 a target to provide a rule
# to package prebuilt Java JARs in a consistent manner.
#
# To use this, create a gyp target with the following form:
# {
#   'target_name': 'my-package_java',
#   'type': 'none',
#   'variables': {
#     'jar_path': 'path/to/your.jar',
#   },
#   'includes': ['path/to/this/gypi/file'],
# }
#
# Required variables:
#  jar_path - The path to the prebuilt Java JAR file.

{
  'dependencies': [
    '<(DEPTH)/build/android/setup.gyp:build_output_dirs'
  ],
  'variables': {
    'dex_path': '<(PRODUCT_DIR)/lib.java/<(_target_name).dex.jar',
    'android_jar': '<(android_sdk)/android.jar',
    'input_jars_paths': [ '<(android_jar)' ],
    'neverlink%': 0,
    'proguard_config%': '',
    'proguard_preprocess%': '0',
    'variables': {
      'variables': {
        'proguard_preprocess%': 0,
      },
      'conditions': [
        ['proguard_preprocess == 1', {
          'dex_input_jar_path': '<(PRODUCT_DIR)/lib.java/<(_target_name).pre.jar',
        }, {
          'dex_input_jar_path': '<(jar_path)',
        }],
      ],
    },
    'dex_input_jar_path': '<(dex_input_jar_path)',
  },
  'all_dependent_settings': {
    'variables': {
      'input_jars_paths': ['<(dex_input_jar_path)'],
      'conditions': [
        ['neverlink == 1', {
          'library_dexed_jars_paths': [],
        }, {
          'library_dexed_jars_paths': ['<(dex_path)'],
        }],
      ],
    },
  },
  'conditions' : [
    ['proguard_preprocess == 1', {
      'actions': [
        {
          'action_name': 'proguard_<(_target_name)',
          'message': 'Proguard preprocessing <(_target_name) jar',
          'inputs': [
            '<(DEPTH)/third_party/proguard/lib/proguard.jar',
            '<(DEPTH)/build/android/gyp/util/build_utils.py',
            '<(DEPTH)/build/android/gyp/proguard.py',
            '<(jar_path)',
            '<(proguard_config)',
          ],
          'outputs': [
            '<(dex_input_jar_path)',
          ],
          'action': [
            'python', '<(DEPTH)/build/android/gyp/proguard.py',
            '--proguard-path=<(DEPTH)/third_party/proguard/lib/proguard.jar',
            '--input-path=<(jar_path)',
            '--output-path=<(dex_input_jar_path)',
            '--proguard-config=<(proguard_config)',
            '--classpath=>(input_jars_paths)',
          ]
        },
      ],
    }],
    ['neverlink == 0', {
      'actions': [
        {
          'action_name': 'dex_<(_target_name)',
          'message': 'Dexing <(_target_name) jar',
          'variables': {
            'dex_input_paths': [
              '<(dex_input_jar_path)',
            ],
            'output_path': '<(dex_path)',
          },
          'includes': [ 'android/dex_action.gypi' ],
        },
      ],
    }],
  ],
}
