# 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. """Module extension for Perfetto configuration. This extension creates a @perfetto_cfg repository that provides the PERFETTO_CONFIG struct used throughout the build. """ def _perfetto_cfg_repository_impl(repository_ctx): # Create a symlink to the standalone configuration repository_ctx.symlink( repository_ctx.path(Label("@perfetto//bazel/standalone:perfetto_cfg.bzl")), "perfetto_cfg.bzl", ) repository_ctx.file("BUILD.bazel", """ # Auto-generated BUILD file for perfetto_cfg repository exports_files(["perfetto_cfg.bzl"]) """) _perfetto_cfg_repository = repository_rule( implementation = _perfetto_cfg_repository_impl, ) def _perfetto_cfg_ext_impl(module_ctx): _perfetto_cfg_repository(name = "perfetto_cfg") return module_ctx.extension_metadata( reproducible = True, root_module_direct_deps = ["perfetto_cfg"], root_module_direct_dev_deps = [], ) perfetto_cfg_ext = module_extension( implementation = _perfetto_cfg_ext_impl, )