| # Copyright (C) 2018 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") |
| import("../gn/fuzzer.gni") |
| import("../gn/perfetto.gni") |
| |
| if (!build_with_chromium && enable_perfetto_integration_tests) { |
| source_set("end_to_end_integrationtests") { |
| testonly = true |
| deps = [ |
| ":test_helper", |
| "../gn:default_deps", |
| "../gn:gtest_and_gmock", |
| "../include/perfetto/ext/ipc", |
| "../include/perfetto/ext/traced", |
| "../include/perfetto/protozero", |
| "../protos/perfetto/config:cpp", |
| "../protos/perfetto/config:zero", |
| "../protos/perfetto/config/power:zero", |
| "../protos/perfetto/config/sys_stats:cpp", |
| "../protos/perfetto/trace:cpp", |
| "../protos/perfetto/trace:zero", |
| "../protos/perfetto/trace/ftrace:cpp", |
| "../protos/perfetto/trace/perfetto:cpp", |
| "../protos/perfetto/trace/power:cpp", |
| "../protos/perfetto/trace/sys_stats:cpp", |
| "../src/base:base", |
| "../src/base:test_support", |
| ] |
| if (enable_perfetto_traced_probes) { |
| deps += [ |
| "../src/protozero/filtering:bytecode_generator", |
| "../src/traced/probes/ftrace", |
| "../src/traced/probes/ftrace:ftrace_procfs", |
| ] |
| } |
| |
| # These binaries are requires by the cmdline tests, which invoke perfetto |
| # and trigger_perfetto via Subprocess. |
| data_deps = [ |
| "../src/perfetto_cmd:perfetto", |
| "../src/perfetto_cmd:trigger_perfetto", |
| ] |
| |
| sources = [ "end_to_end_integrationtest.cc" ] |
| if (start_daemons_for_testing) { |
| cflags = [ "-DPERFETTO_START_DAEMONS_FOR_TESTING" ] |
| |
| # In CTS mode we use /syste/bin/perfetto for the cmdline tests and the |
| # perfetto_cmd is not required. Outside of CTS mode, instead, we need to |
| # build the cmdline code as part of the test executable. |
| deps += [ |
| "../src/perfetto_cmd", |
| "../src/perfetto_cmd:trigger_perfetto_cmd", |
| ] |
| } |
| } |
| |
| executable("client_api_example") { |
| sources = [ "client_api_example.cc" ] |
| deps = [ |
| "..:libperfetto_client_experimental", |
| "../gn:default_deps", |
| "../include/perfetto/tracing", |
| "../protos/perfetto/config/gpu:zero", |
| "../protos/perfetto/trace:zero", |
| "../protos/perfetto/trace/gpu:zero", |
| ] |
| } |
| } # if (!build_with_chromium && enable_perfetto_integration_tests) |
| |
| perfetto_fuzzer_test("end_to_end_shared_memory_fuzzer") { |
| sources = [ "end_to_end_shared_memory_fuzzer.cc" ] |
| testonly = true |
| deps = [ |
| ":test_helper", |
| "../gn:default_deps", |
| "../protos/perfetto/trace:zero", |
| "../src/base:test_support", |
| "../src/protozero", |
| "../src/tracing/core", |
| "../src/tracing/ipc/producer", |
| "../src/tracing/ipc/service", |
| ] |
| } |
| |
| perfetto_fuzzer_test("producer_socket_fuzzer") { |
| sources = [ "producer_socket_fuzzer.cc" ] |
| testonly = true |
| deps = [ |
| ":test_helper", |
| "../gn:default_deps", |
| "../protos/perfetto/trace:zero", |
| "../src/base:test_support", |
| ] |
| } |
| |
| # perfetto_fuzzer_test() targets are no-ops if is_fuzzer = false. |
| if (enable_perfetto_benchmarks || is_fuzzer || |
| enable_perfetto_integration_tests) { |
| source_set("test_helper") { |
| testonly = true |
| public_deps = [ |
| "../protos/perfetto/trace:cpp", |
| "../src/tracing/ipc/consumer", |
| "../src/tracing/ipc/producer", |
| "../src/tracing/ipc/service", |
| ] |
| deps = [ |
| "../gn:default_deps", |
| "../protos/perfetto/config:cpp", |
| "../protos/perfetto/trace:zero", |
| "../src/base:test_support", |
| "../src/ipc:perfetto_ipc", |
| "../src/tracing/ipc:common", |
| ] |
| sources = [ |
| "fake_producer.cc", |
| "fake_producer.h", |
| "test_helper.cc", |
| "test_helper.h", |
| ] |
| if (is_android) { |
| sources += [ |
| "android_test_utils.cc", |
| "android_test_utils.h", |
| ] |
| } |
| if (start_daemons_for_testing) { |
| cflags = [ "-DPERFETTO_START_DAEMONS_FOR_TESTING" ] |
| } |
| if (!build_with_chromium && enable_perfetto_traced_probes) { |
| deps += [ |
| "../include/perfetto/ext/traced", |
| "../src/traced/probes:probes_src", |
| ] |
| } |
| } |
| } |
| |
| if (enable_perfetto_benchmarks) { |
| source_set("end_to_end_benchmarks") { |
| testonly = true |
| deps = [ |
| ":test_helper", |
| "../gn:benchmark", |
| "../gn:default_deps", |
| "../gn:gtest_and_gmock", |
| "../include/perfetto/ext/traced", |
| "../protos/perfetto/config:cpp", |
| "../protos/perfetto/trace:cpp", |
| "../protos/perfetto/trace:zero", |
| "../src/base:test_support", |
| ] |
| sources = [ "end_to_end_benchmark.cc" ] |
| if (start_daemons_for_testing) { |
| cflags = [ "-DPERFETTO_START_DAEMONS_FOR_TESTING" ] |
| } |
| } |
| |
| source_set("benchmark_main") { |
| testonly = true |
| deps = [ |
| "../gn:benchmark", |
| "../gn:default_deps", |
| ] |
| sources = [ "benchmark_main.cc" ] |
| } |
| } # if (enable_perfetto_benchmarks) |
| |
| if (perfetto_build_with_android || (is_android && perfetto_build_standalone)) { |
| # This is used only in-tree builds. It's built in standalone builds just to |
| # get build coverage. |
| static_library("perfetto_gtest_logcat_printer") { |
| testonly = true |
| complete_static_lib = true |
| sources = [ "gtest_logcat_printer.cc" ] |
| deps = [ |
| "../gn:default_deps", |
| "../gn:gtest_and_gmock", |
| ] |
| } |
| } |