• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (C) 2019 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15# Noop function used to override rules we don't want to support in standalone.
16def _noop_override(**kwargs):
17    pass
18
19PERFETTO_CONFIG = struct(
20    # This is used to refer to deps within perfetto's BUILD files.
21    # In standalone and bazel-based embedders use '//', because perfetto has its
22    # own repository, and //xxx would be relative to @perfetto//xxx.
23    # In Google internal builds, instead, this is set to //third_party/perfetto,
24    # because perfetto doesn't have its own repository there.
25    root = "//",
26
27    # These variables map dependencies to perfetto third-party projects. This is
28    # to allow perfetto embedders (e.g. gapid) and google internal builds to
29    # override paths and target names to their own third_party.
30    deps = struct(
31        # Target exposing the build config header. It should be a valid
32        # cc_library dependency as it will become a dependency of every
33        # perfetto_cc_library target. It needs to expose a
34        # "perfetto_build_flags.h" file that can be included via:
35        # #include "perfetto_build_flags.h".
36        build_config = ["//:build_config_hdr"],
37        zlib = ["@perfetto_dep_zlib//:zlib"],
38        jsoncpp = ["@perfetto_dep_jsoncpp//:jsoncpp"],
39        linenoise = ["@perfetto_dep_linenoise//:linenoise"],
40        sqlite = ["@perfetto_dep_sqlite//:sqlite"],
41        sqlite_ext_percentile = ["@perfetto_dep_sqlite_src//:percentile_ext"],
42        protoc = ["@com_google_protobuf//:protoc"],
43        protoc_lib = ["@com_google_protobuf//:protoc_lib"],
44        protobuf_lite = ["@com_google_protobuf//:protobuf_lite"],
45        protobuf_full = ["@com_google_protobuf//:protobuf"],
46    ),
47
48    # This struct allows embedders to customize the cc_opts for Perfetto
49    # 3rd party dependencies. They only have an effect if the dependencies are
50    # initialized with the Perfetto build files (i.e. via perfetto_deps()).
51    deps_copts = struct(
52        zlib = [],
53        jsoncpp = [],
54        linenoise = [],
55        sqlite = [],
56    ),
57
58    # Allow Bazel embedders to change the visibility of "public" targets.
59    # This variable has been introduced to limit the change to Bazel and avoid
60    # making the targets fully public in the google internal tree.
61    public_visibility = [
62        "//visibility:public",
63    ],
64
65    # Allow Bazel embedders to change the visibility of the proto targets.
66    # This variable has been introduced to limit the change to Bazel and avoid
67    # making the targets public in the google internal tree.
68    proto_library_visibility = "//visibility:private",
69
70    # This struct allows the embedder to customize copts and other args passed
71    # to rules like cc_binary. Prefixed rules (e.g. perfetto_cc_binary) will
72    # look into this struct before falling back on native.cc_binary().
73    # This field is completely optional, the embedder can omit the whole
74    # |rule_overrides| or invidivual keys. They are assigned to None or noop
75    # actions here just for documentation purposes.
76    rule_overrides = struct(
77        cc_binary = None,
78        cc_library = None,
79        cc_proto_library = None,
80
81        # Supporting java rules pulls in the JDK and generally is not something
82        # we need for most embedders.
83        java_proto_library = _noop_override,
84        java_lite_proto_library = _noop_override,
85
86        proto_library = None,
87        py_binary = None,
88
89        # We only need this for internal binaries. No other embeedder should
90        # care about this.
91        gensignature_internal_only = None,
92    ),
93)
94