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) <(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} 65