Ben Murdoch | 097c5b2 | 2016-05-18 11:27:45 +0100 | [diff] [blame] | 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 | } |