# 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("perfetto.gni") import("proto_library.gni") if (perfetto_build_standalone || perfetto_build_with_android) { import("//gn/standalone/sanitizers/vars.gni") } else { import("//build/config/sanitizers/sanitizers.gni") } config("asan_instrumentation") { if (use_sanitizer_configs_without_instrumentation) { defines = [ "ADDRESS_SANITIZER_WITHOUT_INSTRUMENTATION" ] } } # Used by base/gtest_prod_util.h for the FRIEND_TEST_* macros. Note that other # production targets (i.e. testonly == false) should use base/gtest_prod_util.h # instead. group("gtest_prod_config") { if (perfetto_build_standalone || perfetto_build_with_android) { public_configs = [ "//buildtools:googletest_prod_config" ] } else { public_configs = [ ":gtest_config" ] } } config("gtest_config") { if (perfetto_build_with_embedder) { include_dirs = [ "//testing/gtest/include" ] } } config("gmock_config") { if (perfetto_build_with_embedder) { include_dirs = [ "//testing/gmock/include" ] } } group("gtest_deps") { testonly = true public_configs = [ ":gtest_config", ":gmock_config", ] if (perfetto_build_standalone || perfetto_build_with_android) { public_deps = [ "//buildtools:gmock", "//buildtools:gtest", ] } else { public_deps = [ "//testing/gmock", "//testing/gtest", ] } } group("gtest_main") { testonly = true if (perfetto_build_standalone || perfetto_build_with_android) { public_deps = [ "//buildtools:gtest_main", ] } else if (build_with_chromium) { public_deps = [ "//base/test:run_all_unittests", ] } else { public_deps = [ "//testing/gtest:gtest_main", ] } } # protoc compiler library, for building protoc plugins on the host. if (current_toolchain == host_toolchain) { group("protoc_lib_deps") { public_deps = [ "${perfetto_protobuf_target_prefix}:protoc_lib", ] } } group("protobuf_full_deps") { testonly = true public_deps = [ "${perfetto_protobuf_target_prefix}:protobuf_full", ] } # All targets should depend on this target to inherit the right flags and # include directories. group("default_deps") { public_configs = [ ":default_config" ] if (perfetto_build_standalone || perfetto_build_with_android) { public_deps = [ "//gn/standalone/libc++:deps", "//gn/standalone/sanitizers:deps", ] } } # The config that all targets in the perfetto codebase inherit by virtue of # having explicit deps on //gn:default_deps. This config is NOT propagated up to # embedders that depend on perfetto (e.g. chrome). :public_config (see below) is # used for that. config("default_config") { configs = [ ":public_config" ] defines = [ "PERFETTO_IMPLEMENTATION" ] if (build_with_chromium && is_android) { # Included for __android_log_print libs = [ "log" ] } include_dirs = [ ".." ] } # This config is propagated to embedders via libperfetto. It's also included in # the default_config above. config("public_config") { include_dirs = [ "../include", # The below are needed due to generated protobuf headers including other # headers with a path relative to the perfetto root. "${root_gen_dir}/${perfetto_root_path}/protos", ] defines = [] if (perfetto_build_with_android) { defines += [ "PERFETTO_BUILD_WITH_ANDROID" ] } else if (perfetto_build_with_embedder) { defines += [ "PERFETTO_BUILD_WITH_EMBEDDER" ] if (build_with_chromium) { defines += [ "PERFETTO_BUILD_WITH_CHROMIUM" ] if (is_component_build) { defines += [ "PERFETTO_SHARED_LIBRARY" ] } } # if (build_with_chromium) } # if (build_with_embedder) if (perfetto_force_dlog == "on") { defines += [ "PERFETTO_FORCE_DLOG=1" ] } else if (perfetto_force_dlog == "off") { defines += [ "PERFETTO_FORCE_DLOG=0" ] } } # For now JsonCpp is supported only in standalone builds outside of Android or # Chromium. group("jsoncpp_deps") { if (perfetto_build_standalone) { public_configs = [ "//buildtools:jsoncpp_config" ] public_deps = [ "//buildtools:jsoncpp", ] } } group("zlib_deps") { if (perfetto_build_standalone || perfetto_build_with_android) { public_configs = [ "//buildtools:zlib_config" ] public_deps = [ "//buildtools:zlib", ] } }