# Copyright 2021 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/android/rules.gni") declare_args() { incremental_javac_test_toggle_gn = false } all_test_sources = [ "../../java/test/NoSignatureChangeIncrementalJavacTestHelper.template", "../../java/test/NoSignatureChangeIncrementalJavacTestHelper2.java", ] template("incremental_javac_prebuilt") { _out_jar = "${target_gen_dir}/${target_name}.jar" action(target_name) { script = "incremental_javac_test_android_library.py" forward_variables_from(invoker, [ "sources", "testonly", ]) deps = [ invoker.toggle_gn_target ] inputs = [] if (defined(invoker.pydeps)) { foreach(_pydeps_file, invoker.pydeps) { _pydeps_file_lines = [] _pydeps_file_lines = read_file(_pydeps_file, "list lines") _pydeps_entries = [] _pydeps_entries = filter_exclude(_pydeps_file_lines, [ "#*" ]) _pydeps_file_dir = get_path_info(_pydeps_file, "dir") inputs += rebase_path(_pydeps_entries, ".", _pydeps_file_dir) } } outputs = [ _out_jar ] args = [ "--target-name", get_label_info("${invoker.toggle_gn_target}", "label_no_toolchain"), "--gn-args-path", "args.gn", "--out-dir", rebase_path("${target_out_dir}/${target_name}/incremental_javac_out", root_build_dir), "--out-jar", rebase_path(_out_jar, root_build_dir), ] } } # Use jinja_template() instead of java_cpp_template() because incremental builds # are not done when non-.java files change. jinja_template("changing_javagen") { input = "../../java/test/NoSignatureChangeIncrementalJavacTestHelper.template" assert(filter_include(all_test_sources, [ input ]) != []) output = "${target_gen_dir}/test/NoSignatureChangeIncrementalJavacTestHelper.java" if (incremental_javac_test_toggle_gn) { variables = [ "foo_return_value=foo2" ] } else { variables = [ "foo_return_value=foo" ] } } android_library("changing_java") { testonly = true # Should not be re-compiled during incremental build. sources = [ "../../java/test/NoSignatureChangeIncrementalJavacTestHelper2.java" ] assert(filter_include(all_test_sources, sources) != []) # Should be recompiled during incremental build. sources += get_target_outputs(":changing_javagen") deps = [ ":changing_javagen" ] } # Compiles :changing_java with and without |incremental_javac_test_toggle_gn|. incremental_javac_prebuilt("no_signature_change_prebuilt_generator") { testonly = true sources = all_test_sources toggle_gn_target = ":changing_java" pydeps = [ "//build/android/gyp/compile_java.pydeps" ] } android_java_prebuilt("no_signature_change_prebuilt_java") { testonly = true _generator_outputs = get_target_outputs(":no_signature_change_prebuilt_generator") jar_paths = filter_include(_generator_outputs, [ "*.jar" ]) jar_path = jar_paths[0] deps = [ ":no_signature_change_prebuilt_generator" ] }