xref: /aosp_15_r20/external/angle/build/android/test/incremental_javac_gn/BUILD.gn (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1# Copyright 2021 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/config/android/rules.gni")
6
7declare_args() {
8  incremental_javac_test_toggle_gn = false
9}
10
11all_test_sources = [
12  "../../java/test/NoSignatureChangeIncrementalJavacTestHelper.template",
13  "../../java/test/NoSignatureChangeIncrementalJavacTestHelper2.java",
14]
15
16template("incremental_javac_prebuilt") {
17  _out_jar = "${target_gen_dir}/${target_name}.jar"
18
19  action(target_name) {
20    script = "incremental_javac_test_android_library.py"
21    forward_variables_from(invoker,
22                           [
23                             "sources",
24                             "testonly",
25                           ])
26    deps = [ invoker.toggle_gn_target ]
27
28    inputs = []
29    if (defined(invoker.pydeps)) {
30      foreach(_pydeps_file, invoker.pydeps) {
31        _pydeps_file_lines = []
32        _pydeps_file_lines = read_file(_pydeps_file, "list lines")
33        _pydeps_entries = []
34        _pydeps_entries = filter_exclude(_pydeps_file_lines, [ "#*" ])
35        _pydeps_file_dir = get_path_info(_pydeps_file, "dir")
36        inputs += rebase_path(_pydeps_entries, ".", _pydeps_file_dir)
37      }
38    }
39
40    outputs = [ _out_jar ]
41
42    args = [
43      "--target-name",
44      get_label_info("${invoker.toggle_gn_target}", "label_no_toolchain"),
45      "--gn-args-path",
46      "args.gn",
47      "--out-dir",
48      rebase_path("${target_out_dir}/${target_name}/incremental_javac_out",
49                  root_build_dir),
50      "--out-jar",
51      rebase_path(_out_jar, root_build_dir),
52    ]
53  }
54}
55
56# Use jinja_template() instead of java_cpp_template() because incremental builds
57# are not done when non-.java files change.
58jinja_template("changing_javagen") {
59  input = "../../java/test/NoSignatureChangeIncrementalJavacTestHelper.template"
60  assert(filter_include(all_test_sources, [ input ]) != [])
61  output =
62      "${target_gen_dir}/test/NoSignatureChangeIncrementalJavacTestHelper.java"
63  if (incremental_javac_test_toggle_gn) {
64    variables = [ "foo_return_value=foo2" ]
65  } else {
66    variables = [ "foo_return_value=foo" ]
67  }
68}
69
70android_library("changing_java") {
71  testonly = true
72
73  # Should not be re-compiled during incremental build.
74  sources =
75      [ "../../java/test/NoSignatureChangeIncrementalJavacTestHelper2.java" ]
76  assert(filter_include(all_test_sources, sources) != [])
77
78  # Should be recompiled during incremental build.
79  sources += get_target_outputs(":changing_javagen")
80  deps = [ ":changing_javagen" ]
81}
82
83# Compiles :changing_java with and without |incremental_javac_test_toggle_gn|.
84incremental_javac_prebuilt("no_signature_change_prebuilt_generator") {
85  testonly = true
86  sources = all_test_sources
87  toggle_gn_target = ":changing_java"
88  pydeps = [ "//build/android/gyp/compile_java.pydeps" ]
89}
90
91android_java_prebuilt("no_signature_change_prebuilt_java") {
92  testonly = true
93  _generator_outputs =
94      get_target_outputs(":no_signature_change_prebuilt_generator")
95  jar_paths = filter_include(_generator_outputs, [ "*.jar" ])
96  jar_path = jar_paths[0]
97  deps = [ ":no_signature_change_prebuilt_generator" ]
98}
99