blob: 61d18a4b3ac198eb442bc58ea794e5a49da72ac3 [file] [log] [blame]
# Copyright (C) 2025 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("perfetto.gni")
# Actions defined in this file are used to generate Android.bp and Bazel
# targets, they don't produce any output during the GN build process.
template("perfetto_android_jni_library") {
_vars_to_forward = [
"sources",
"deps",
"binary_name",
"bazel_linkopts",
"testonly",
"visibility",
]
shared_library(target_name) {
forward_variables_from(invoker, _vars_to_forward)
metadata = {
perfetto_custom_target_type = [ "perfetto_android_jni_library" ]
perfetto_argument_binary_name = [ binary_name ]
if (defined(bazel_linkopts)) {
perfetto_bazel_argument_linkopts = [ bazel_linkopts ]
}
}
}
}
template("perfetto_android_library") {
_vars_to_forward = [
"sources",
"deps",
"manifest",
"android_bp_java_target_name_suffix",
"android_bp_copy_java_target_name_suffix",
"android_bp_copy_java_target_jarjar",
"testonly",
"visibility",
]
action(target_name) {
forward_variables_from(invoker, _vars_to_forward)
out_file_name = target_name + "_stub.txt"
out_path = "$target_gen_dir/" + out_file_name
rebased_out_path =
rebase_path(target_gen_dir, root_build_dir) + "/" + out_file_name
script = "$perfetto_root_path/tools/touch_file.py"
args = [
"--output",
rebased_out_path,
]
outputs = [ out_path ]
metadata = {
perfetto_action_type_for_generator = [ "perfetto_android_library" ]
if (defined(manifest)) {
perfetto_android_manifest = [ get_path_info(manifest, "abspath") ]
}
if (defined(android_bp_java_target_name_suffix)) {
perfetto_android_library_android_bp_java_target_name_suffix =
[ android_bp_java_target_name_suffix ]
}
if (defined(android_bp_copy_java_target_name_suffix)) {
perfetto_android_library_android_bp_copy_java_target_name_suffix =
[ android_bp_copy_java_target_name_suffix ]
perfetto_android_library_android_bp_copy_java_target_jarjar =
[ get_path_info(android_bp_copy_java_target_jarjar, "abspath") ]
}
}
}
}
template("perfetto_android_app") {
_vars_to_forward = [
"sources",
"deps",
"manifest",
"resource_files_glob",
"testonly",
"visibility",
]
action(target_name) {
forward_variables_from(invoker, _vars_to_forward)
out_file_name = target_name + "_stub.txt"
out_path = "$target_gen_dir/" + out_file_name
rebased_out_path =
rebase_path(target_gen_dir, root_build_dir) + "/" + out_file_name
script = "$perfetto_root_path/tools/touch_file.py"
args = [
"--output",
rebased_out_path,
]
outputs = [ out_path ]
metadata = {
perfetto_action_type_for_generator = [ "perfetto_android_app" ]
perfetto_android_manifest = [ get_path_info(manifest, "abspath") ]
if (defined(resource_files_glob)) {
perfetto_android_resource_files_glob =
[ get_path_info(resource_files_glob, "abspath") ]
}
}
}
}
template("perfetto_android_instrumentation_test") {
_vars_to_forward = [
"app",
"test_app",
"android_bp_test_manifest",
"android_bp_test_config",
"testonly",
"visibility",
]
action(target_name) {
forward_variables_from(invoker, _vars_to_forward)
out_file_name = target_name + "_stub.txt"
out_path = "$target_gen_dir/" + out_file_name
rebased_out_path =
rebase_path(target_gen_dir, root_build_dir) + "/" + out_file_name
script = "$perfetto_root_path/tools/touch_file.py"
args = [
"--output",
rebased_out_path,
]
# Build generators ignore this 'deps' variable and read metada instead.
# We create this variable to tell GN that this test depends on two android
# app targets and to maintain build graph connectivity.
deps = [
app,
test_app,
]
outputs = [ out_path ]
metadata = {
perfetto_action_type_for_generator =
[ "perfetto_android_instrumentation_test" ]
perfetto_android_a_i_t_app = [ get_label_info(app, "label_no_toolchain") ]
perfetto_android_a_i_t_test_app =
[ get_label_info(test_app, "label_no_toolchain") ]
if (defined(android_bp_test_manifest)) {
perfetto_android_a_i_t_android_bp_test_manifest =
[ get_path_info(android_bp_test_manifest, "abspath") ]
}
if (defined(android_bp_test_config)) {
perfetto_android_a_i_t_android_bp_test_config =
[ get_path_info(android_bp_test_config, "abspath") ]
}
}
}
}