blob: d4abafa812f95e753eb93a5b57ef3eba059e2cd5 [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 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) <(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 # Ensure that the targets depending on this one are rebuilt if the sources
37 # of this one are modified.
38 'additional_input_paths': [
39 '<(source_file)',
40 ],
41 },
42 },
43 'actions': [
44 {
45 'action_name': 'generate_java_constants',
46 'inputs': [
47 '<(DEPTH)/build/android/gyp/util/build_utils.py',
48 '<(generator_path)',
49 '<(source_file)',
50 ],
51 'outputs': [
52 # This is the main reason this is an action and not a rule. Gyp doesn't
53 # properly expand RULE_INPUT_PATH here and so it's impossible to
54 # calculate the list of outputs.
55 '<!@pymod_do_main(java_cpp_enum --print_output_only '
56 '<@(generator_args))',
57 ],
58 'action': [
59 'python', '<(generator_path)', '<@(generator_args)'
60 ],
61 'message': 'Generating Java from cpp header <(source_file)',
62 },
63 ],
64}