blob: fe4238af84fd700979748a2d62bba311d4fc5435 [file] [log] [blame]
[email protected]4d491712012-12-10 12:38:241# Copyright (c) 2012 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 a rule
6# to generate Java source files from templates that are processed
7# through the host C pre-processor.
8#
[email protected]4d491712012-12-10 12:38:249# To use this, create a gyp target with the following form:
10# {
11# 'target_name': 'android_net_java_constants',
12# 'type': 'none',
13# 'sources': [
[email protected]4d491712012-12-10 12:38:2414# 'net/android/NetError.template',
15# ],
16# 'variables': {
[email protected]1b19c9a1e2013-03-02 16:39:0817# 'package_name': 'org/chromium/net',
[email protected]2716d84e2013-01-19 04:05:4818# 'template_deps': ['net/base/certificate_mime_type_list.h'],
[email protected]4d491712012-12-10 12:38:2419# },
[email protected]b50a8b52013-04-01 23:12:3320# 'includes': [ '../build/android/java_cpp_template.gypi' ],
[email protected]4d491712012-12-10 12:38:2421# },
22#
[email protected]2716d84e2013-01-19 04:05:4823# The 'sources' entry should only list template file. The template file
[email protected]4d491712012-12-10 12:38:2424# itself should use the 'ClassName.template' format, and will generate
[email protected]2716d84e2013-01-19 04:05:4825# 'gen/templates/<package-name>/ClassName.java. The files which template
26# dependents on and typically included by the template should be listed
27# in template_deps variables. Any change to them will force a rebuild of
28# the template, and hence of any source that depends on it.
[email protected]4d491712012-12-10 12:38:2429#
30
31{
32 # Location where all generated Java sources will be placed.
33 'variables': {
[email protected]b50a8b52013-04-01 23:12:3334 'include_path%': '<(DEPTH)',
35 'output_dir': '<(SHARED_INTERMEDIATE_DIR)/templates/<(package_name)',
[email protected]4d491712012-12-10 12:38:2436 },
[email protected]4d491712012-12-10 12:38:2437 'direct_dependent_settings': {
38 'variables': {
[email protected]76e47fab2013-05-21 17:32:2739 # Ensure that the output directory is used in the class path
40 # when building targets that depend on this one.
[email protected]4d491712012-12-10 12:38:2441 'generated_src_dirs': [
42 '<(output_dir)/',
43 ],
[email protected]76e47fab2013-05-21 17:32:2744 # Ensure dependents are rebuilt when sources for this rule change.
45 'additional_input_paths': [
46 '<@(_sources)',
47 '<@(template_deps)',
48 ],
[email protected]4d491712012-12-10 12:38:2449 },
50 },
51 # Define a single rule that will be apply to each .template file
52 # listed in 'sources'.
53 'rules': [
54 {
55 'rule_name': 'generate_java_constants',
56 'extension': 'template',
[email protected]2716d84e2013-01-19 04:05:4857 # Set template_deps as additional dependencies.
[email protected]b50a8b52013-04-01 23:12:3358 'variables': {
59 'output_path': '<(output_dir)/<(RULE_INPUT_ROOT).java',
60 },
61 'inputs': [
[email protected]2f601632013-04-04 23:04:4062 '<(DEPTH)/build/android/gyp/util/build_utils.py',
63 '<(DEPTH)/build/android/gyp/gcc_preprocess.py',
[email protected]b50a8b52013-04-01 23:12:3364 '<@(template_deps)'
65 ],
[email protected]4d491712012-12-10 12:38:2466 'outputs': [
[email protected]b50a8b52013-04-01 23:12:3367 '<(output_path)',
[email protected]4d491712012-12-10 12:38:2468 ],
69 'action': [
[email protected]2f601632013-04-04 23:04:4070 'python', '<(DEPTH)/build/android/gyp/gcc_preprocess.py',
[email protected]b50a8b52013-04-01 23:12:3371 '--include-path=<(include_path)',
72 '--output=<(output_path)',
73 '--template=<(RULE_INPUT_PATH)',
[email protected]4d491712012-12-10 12:38:2474 ],
75 'message': 'Generating Java from cpp template <(RULE_INPUT_PATH)',
76 }
77 ],
78}