# Copyright (C) 2017 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("//build_overrides/build.gni") # Summary of our build configurations: # 1. Standalone builds # perfetto_build_standalone = true # perfetto_build_with_embedder = false # perfetto_build_with_android = false # build_with_chromium = false # 2. Android tree builds # perfetto_build_standalone = false # perfetto_build_with_android = true # perfetto_build_with_embedder = false # build_with_chromium = false # 3. Chromium tree builds # perfetto_build_standalone = false # perfetto_build_with_android = false # perfetto_build_with_embedder = true # build_with_chromium = true # 4. Builds in other embedder trees # perfetto_build_standalone = false # perfetto_build_with_android = false # perfetto_build_with_embedder = true # build_with_chromium = false # Note that |build_with_chromium| is a global convention used by several # projects, set outside of our control. declare_args() { # The Android blueprint file generator overrides this to true. perfetto_build_with_android = false # Whether the ftrace producer and the service should be started # by the integration test or assumed to be running. start_daemons_for_testing = true } # Chromium sets this to true. if (!defined(build_with_chromium)) { build_with_chromium = false } # Embedders can override this to true. if (!defined(perfetto_build_with_embedder)) { perfetto_build_with_embedder = build_with_chromium } perfetto_force_dlog_default = "" if (perfetto_build_with_embedder) { perfetto_force_dlog_default = "off" } declare_args() { # Whether DLOG should be enabled on debug builds (""), all builds ("on"), or # none ("off"). We disable it by default for embedders to avoid spamming their # console. perfetto_force_dlog = perfetto_force_dlog_default } assert(perfetto_force_dlog == "" || perfetto_force_dlog == "on" || perfetto_force_dlog == "off") perfetto_build_standalone = !perfetto_build_with_android && !build_with_chromium && !perfetto_build_with_embedder if (perfetto_build_standalone || perfetto_build_with_android) { perfetto_root_path = "//" } else if (!defined(perfetto_root_path)) { perfetto_root_path = "//third_party/perfetto/" } # If we're building in the Android tree, we expect that the testing infra # will start the binaries in the system image before the tests are run. if (perfetto_build_with_android) { start_daemons_for_testing = false } # Cross-checks. # Exactly one between build_with_android, build_standalone and # build_with_embedder must be true. assert(perfetto_build_standalone || perfetto_build_with_android || perfetto_build_with_embedder) assert(!(perfetto_build_with_android && perfetto_build_standalone)) assert(!(perfetto_build_with_embedder && perfetto_build_standalone)) assert(!(perfetto_build_with_android && perfetto_build_with_embedder)) # If |build_with_chromium| is true then also |perfetto_build_with_embedder| # must be true assert(!build_with_chromium || perfetto_build_with_embedder) # Only perfetto itself (standalone or with android) and chromium should link # in the IPC layer. # # This includes building things that rely on POSIX sockets, this places # limitations on the supported operating systems. perfetto_build_with_ipc_layer = (is_android || is_linux || is_mac) && (perfetto_build_standalone || perfetto_build_with_android || build_with_chromium)