| # Copyright (C) 2019 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. | 
 |  | 
 | # Noop function used to override rules we don't want to support in standalone. | 
 | def _noop_override(**kwargs): | 
 |     pass | 
 |  | 
 | PERFETTO_CONFIG = struct( | 
 |     # This is used to refer to deps within perfetto's BUILD files. | 
 |     # In standalone and bazel-based embedders use '//', because perfetto has its | 
 |     # own repository, and //xxx would be relative to @perfetto//xxx. | 
 |     # In Google internal builds, instead, this is set to //third_party/perfetto, | 
 |     # because perfetto doesn't have its own repository there. | 
 |     root = "//", | 
 |  | 
 |     # These variables map dependencies to perfetto third-party projects. This is | 
 |     # to allow perfetto embedders (e.g. gapid) and google internal builds to | 
 |     # override paths and target names to their own third_party. | 
 |     deps = struct( | 
 |         # Target exposing the build config header. It should be a valid | 
 |         # cc_library dependency as it will become a dependency of every | 
 |         # perfetto_cc_library target. It needs to expose a | 
 |         # "perfetto_build_flags.h" file that can be included via: | 
 |         # #include "perfetto_build_flags.h". | 
 |         build_config = ["//:build_config_hdr"], | 
 |  | 
 |         # Target exposing the PERFETTO_VERSION_STRING() and | 
 |         # PERFETTO_VERSION_SCM_REVISION() macros. This is overridden in google | 
 |         # internal builds. | 
 |         version_header = ["//:cc_perfetto_version_header"], | 
 |  | 
 |         zlib = ["@perfetto_dep_zlib//:zlib"], | 
 |         jsoncpp = ["@perfetto_dep_jsoncpp//:jsoncpp"], | 
 |         linenoise = ["@perfetto_dep_linenoise//:linenoise"], | 
 |         sqlite = ["@perfetto_dep_sqlite//:sqlite"], | 
 |         sqlite_ext_percentile = ["@perfetto_dep_sqlite_src//:percentile_ext"], | 
 |         protoc = ["@com_google_protobuf//:protoc"], | 
 |         protoc_lib = ["@com_google_protobuf//:protoc_lib"], | 
 |         protobuf_lite = ["@com_google_protobuf//:protobuf_lite"], | 
 |         protobuf_full = ["@com_google_protobuf//:protobuf"], | 
 |         protobuf_descriptor_proto = ["@com_google_protobuf//:descriptor_proto"], | 
 |  | 
 |         # The Python targets are empty on the standalone build because we assume | 
 |         # any relevant deps are installed on the system or are not applicable. | 
 |         protobuf_py = [], | 
 |         pandas_py = [], | 
 |         tp_vendor_py = [], | 
 |     ), | 
 |  | 
 |     # This struct allows embedders to customize the cc_opts for Perfetto | 
 |     # 3rd party dependencies. They only have an effect if the dependencies are | 
 |     # initialized with the Perfetto build files (i.e. via perfetto_deps()). | 
 |     deps_copts = struct( | 
 |         zlib = [], | 
 |         jsoncpp = [], | 
 |         linenoise = [], | 
 |         sqlite = [], | 
 |     ), | 
 |  | 
 |     # Allow Bazel embedders to change the visibility of "public" targets. | 
 |     # This variable has been introduced to limit the change to Bazel and avoid | 
 |     # making the targets fully public in the google internal tree. | 
 |     public_visibility = [ | 
 |         "//visibility:public", | 
 |     ], | 
 |  | 
 |     # Allow Bazel embedders to change the visibility of the proto targets. | 
 |     # This variable has been introduced to limit the change to Bazel and avoid | 
 |     # making the targets public in the google internal tree. | 
 |     proto_library_visibility = "//visibility:private", | 
 |  | 
 |     # This struct allows the embedder to customize copts and other args passed | 
 |     # to rules like cc_binary. Prefixed rules (e.g. perfetto_cc_binary) will | 
 |     # look into this struct before falling back on native.cc_binary(). | 
 |     # This field is completely optional, the embedder can omit the whole | 
 |     # |rule_overrides| or invidivual keys. They are assigned to None or noop | 
 |     # actions here just for documentation purposes. | 
 |     rule_overrides = struct( | 
 |         cc_binary = None, | 
 |         cc_library = None, | 
 |         cc_proto_library = None, | 
 |  | 
 |         # Supporting java rules pulls in the JDK and generally is not something | 
 |         # we need for most embedders. | 
 |         java_proto_library = _noop_override, | 
 |         java_lite_proto_library = _noop_override, | 
 |  | 
 |         proto_library = None, | 
 |         py_binary = None, | 
 |         py_library = None, | 
 |  | 
 |         # We only need this for internal binaries. No other embeedder should | 
 |         # care about this. | 
 |         gensignature_internal_only = None, | 
 |     ), | 
 | ) |