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 a target to provide an action
6# to generate Java source files from a C++ header file containing annotated
7# enum definitions using a Python script.
8#
9# To use this, create a gyp target with the following form:
10#  {
11#    'target_name': 'bitmap_format_java',
12#    'type': 'none',
13#    'variables': {
14#      'source_file': 'ui/android/bitmap_format.h',
15#    },
16#    'includes': [ '../build/android/java_cpp_enum.gypi' ],
17#  },
18#
19# Then have the gyp target which compiles the java code depend on the newly
20# created target.
21
22{
23  'variables': {
24    # Location where all generated Java sources will be placed.
25    'output_dir': '<(SHARED_INTERMEDIATE_DIR)/enums/<(_target_name)',
26    'generator_path': '<(DEPTH)/build/android/gyp/java_cpp_enum.py',
27    'generator_args': '--output_dir=<(output_dir) <(source_file)',
28  },
29  'direct_dependent_settings': {
30    'variables': {
31      # Ensure that the output directory is used in the class path
32      # when building targets that depend on this one.
33      'generated_src_dirs': [
34        '<(output_dir)/',
35      ],
36    },
37  },
38  'actions': [
39    {
40      'action_name': 'generate_java_constants',
41      'inputs': [
42        '<(DEPTH)/build/android/gyp/util/build_utils.py',
43        '<(generator_path)',
44        '<(source_file)',
45      ],
46      'outputs': [
47        # This is the main reason this is an action and not a rule. Gyp doesn't
48        # properly expand RULE_INPUT_PATH here and so it's impossible to
49        # calculate the list of outputs.
50        '<!@pymod_do_main(java_cpp_enum --print_output_only '
51            '<@(generator_args))',
52      ],
53      'action': [
54        'python', '<(generator_path)', '<@(generator_args)'
55      ],
56      'message': 'Generating Java from cpp header <(source_file)',
57    },
58  ],
59}
60