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