| # 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("../gn/perfetto.gni") |
| import("../gn/standalone/libc++/libc++.gni") |
| import("../gn/standalone/sanitizers/vars.gni") |
| |
| # We should never get here in embedder builds. |
| assert(perfetto_build_standalone || is_perfetto_build_generator) |
| |
| # This is to make sure that we don't add accidental dependencies from build |
| # files in src/ or include/ to buildtools. All deps (outside of /gn/*) should |
| # go via the groups defined in gn/BUILD.gn, not directly into buildtools. This |
| # is to allow embedders to re-route targets to their third_party directories. |
| _buildtools_visibility = [ |
| "./*", |
| "../gn:*", |
| "../gn/standalone:*", |
| "../src/base:flat_hash_map_benchmark", |
| ] |
| |
| # Used to suppress warnings coming from googletest macros expansions. |
| # These suppressions apply both to gtest/gmock haders and to perfetto's |
| # test translation units. See test/gtest_and_gmock.h for the subset of |
| # suppressions that apply only to the gmock/gtest headers. |
| config("test_warning_suppressions") { |
| visibility = _buildtools_visibility |
| if (is_clang) { |
| cflags = [ |
| "-Wno-covered-switch-default", |
| "-Wno-deprecated-copy-dtor", |
| "-Wno-global-constructors", |
| "-Wno-inconsistent-missing-override", |
| "-Wno-language-extension-token", |
| "-Wno-suggest-destructor-override", |
| "-Wno-suggest-override", |
| "-Wno-undef", |
| "-Wno-unknown-warning-option", |
| "-Wno-unused-member-function", |
| "-Wno-used-but-marked-unused", |
| "-Wno-weak-vtables", |
| "-Wno-zero-as-null-pointer-constant", |
| ] |
| } else if (!is_win) { |
| cflags = [ |
| "-Wno-unknown-warning-option", |
| "-Wno-deprecated-copy", |
| "-Wno-uninitialized", |
| ] |
| } |
| } |
| |
| config("libunwindstack_config") { |
| visibility = _buildtools_visibility |
| cflags = [ |
| # Using -isystem instead of include_dirs (-I), so we don't need to suppress |
| # warnings coming from libunwindstack headers. Doing so would mask warnings |
| # in our own code. |
| perfetto_isystem_cflag, |
| rebase_path("android-unwinding/libunwindstack/include", root_build_dir), |
| perfetto_isystem_cflag, |
| rebase_path("android-libprocinfo/include", root_build_dir), |
| perfetto_isystem_cflag, |
| rebase_path("android-libbase/include", root_build_dir), |
| perfetto_isystem_cflag, |
| rebase_path("android-core/demangle/include", root_build_dir), |
| perfetto_isystem_cflag, |
| rebase_path("rustc-demangle-capi", root_build_dir), |
| ] |
| |
| # TODO(rsavitski): figure out how to cleanly depend on bionic's uapi headers |
| defines = [ |
| "NO_LIBDEXFILE_SUPPORT", |
| "NT_RISCV_VECTOR=0x901", |
| "ELFCOMPRESS_ZSTD=2", |
| ] |
| } |
| |
| # Config to include gtest.h in test targets. |
| config("googletest_config") { |
| visibility = _buildtools_visibility |
| defines = [ "GTEST_LANG_CXX11=1" ] |
| include_dirs = [ |
| "googletest/googletest/include", |
| "googletest/googlemock/include", |
| ] |
| configs = [ ":test_warning_suppressions" ] |
| } |
| |
| source_set("gtest") { |
| visibility = _buildtools_visibility |
| testonly = true |
| include_dirs = [ "googletest/googletest" ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":googletest_config" ] |
| all_dependent_configs = [ ":googletest_config" ] |
| sources = [ "googletest/googletest/src/gtest-all.cc" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| source_set("gtest_main") { |
| visibility = _buildtools_visibility |
| testonly = true |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| configs += [ ":googletest_config" ] |
| sources = [ "googletest/googletest/src/gtest_main.cc" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| source_set("gmock") { |
| visibility = _buildtools_visibility |
| testonly = true |
| include_dirs = [ "googletest/googlemock" ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":googletest_config" ] |
| all_dependent_configs = [ ":googletest_config" ] |
| sources = [ "googletest/googlemock/src/gmock-all.cc" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| # Abseil-cpp configuration and source_set. |
| # Required by protobuf v22+. |
| config("abseil_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ "abseil-cpp" ] |
| cflags = [] |
| if (is_clang) { |
| cflags += [ |
| "-Wno-deprecated-builtins", |
| "-Wno-deprecated-pragma", |
| "-Wno-gcc-compat", |
| "-Wno-nullability-extension", |
| "-Wno-unknown-warning-option", |
| ] |
| } |
| if (is_gcc) { |
| cflags += [ |
| "-Wno-stringop-overflow", |
| "-Wno-ignored-attributes", |
| "-Wno-pedantic", |
| "-Wno-overflow", |
| ] |
| } |
| } |
| |
| # We separate this from the above because frameworks need to be forcefully |
| # propogated to all dependents, unlike regular link flags. |
| config("abseil_framework_config") { |
| if (is_mac) { |
| ldflags = [ |
| "-framework", |
| "CoreFoundation", |
| ] |
| } |
| } |
| |
| source_set("abseil_cpp") { |
| visibility = _buildtools_visibility |
| sources = [ |
| # base |
| "abseil-cpp/absl/base/attributes.h", |
| "abseil-cpp/absl/base/call_once.h", |
| "abseil-cpp/absl/base/casts.h", |
| "abseil-cpp/absl/base/config.h", |
| "abseil-cpp/absl/base/const_init.h", |
| "abseil-cpp/absl/base/dynamic_annotations.h", |
| "abseil-cpp/absl/base/internal/cycleclock.cc", |
| "abseil-cpp/absl/base/internal/cycleclock.h", |
| "abseil-cpp/absl/base/internal/low_level_alloc.cc", |
| "abseil-cpp/absl/base/internal/low_level_alloc.h", |
| "abseil-cpp/absl/base/internal/raw_logging.cc", |
| "abseil-cpp/absl/base/internal/raw_logging.h", |
| "abseil-cpp/absl/base/internal/spinlock.cc", |
| "abseil-cpp/absl/base/internal/spinlock.h", |
| "abseil-cpp/absl/base/internal/spinlock_wait.cc", |
| "abseil-cpp/absl/base/internal/spinlock_wait.h", |
| "abseil-cpp/absl/base/internal/strerror.cc", |
| "abseil-cpp/absl/base/internal/sysinfo.cc", |
| "abseil-cpp/absl/base/internal/sysinfo.h", |
| "abseil-cpp/absl/base/internal/thread_identity.cc", |
| "abseil-cpp/absl/base/internal/thread_identity.h", |
| "abseil-cpp/absl/base/internal/throw_delegate.cc", |
| "abseil-cpp/absl/base/internal/throw_delegate.h", |
| "abseil-cpp/absl/base/internal/tracing.cc", |
| "abseil-cpp/absl/base/internal/tracing.h", |
| "abseil-cpp/absl/base/internal/unscaledcycleclock.cc", |
| "abseil-cpp/absl/base/internal/unscaledcycleclock.h", |
| "abseil-cpp/absl/base/log_severity.cc", |
| "abseil-cpp/absl/base/log_severity.h", |
| "abseil-cpp/absl/base/macros.h", |
| "abseil-cpp/absl/base/no_destructor.h", |
| "abseil-cpp/absl/base/nullability.h", |
| "abseil-cpp/absl/base/optimization.h", |
| "abseil-cpp/absl/base/options.h", |
| "abseil-cpp/absl/base/policy_checks.h", |
| "abseil-cpp/absl/base/port.h", |
| "abseil-cpp/absl/base/prefetch.h", |
| "abseil-cpp/absl/base/thread_annotations.h", |
| |
| # container |
| "abseil-cpp/absl/container/btree_map.h", |
| "abseil-cpp/absl/container/btree_set.h", |
| "abseil-cpp/absl/container/fixed_array.h", |
| "abseil-cpp/absl/container/flat_hash_map.h", |
| "abseil-cpp/absl/container/flat_hash_set.h", |
| "abseil-cpp/absl/container/inlined_vector.h", |
| "abseil-cpp/absl/container/internal/compressed_tuple.h", |
| "abseil-cpp/absl/container/internal/container_memory.h", |
| "abseil-cpp/absl/container/internal/hash_function_defaults.h", |
| "abseil-cpp/absl/container/internal/hashtablez_sampler.cc", |
| "abseil-cpp/absl/container/internal/hashtablez_sampler.h", |
| "abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc", |
| "abseil-cpp/absl/container/internal/raw_hash_map.h", |
| "abseil-cpp/absl/container/internal/raw_hash_set.cc", |
| "abseil-cpp/absl/container/internal/raw_hash_set.h", |
| "abseil-cpp/absl/container/node_hash_map.h", |
| "abseil-cpp/absl/container/node_hash_set.h", |
| |
| # crc (needed by strings/cord) |
| "abseil-cpp/absl/crc/crc32c.cc", |
| "abseil-cpp/absl/crc/crc32c.h", |
| "abseil-cpp/absl/crc/internal/cpu_detect.cc", |
| "abseil-cpp/absl/crc/internal/crc.cc", |
| "abseil-cpp/absl/crc/internal/crc.h", |
| "abseil-cpp/absl/crc/internal/crc_cord_state.cc", |
| "abseil-cpp/absl/crc/internal/crc_cord_state.h", |
| "abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc", |
| "abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc", |
| "abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc", |
| "abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc", |
| |
| # debugging (needed by log) |
| "abseil-cpp/absl/debugging/failure_signal_handler.cc", |
| "abseil-cpp/absl/debugging/failure_signal_handler.h", |
| "abseil-cpp/absl/debugging/internal/address_is_readable.cc", |
| "abseil-cpp/absl/debugging/internal/address_is_readable.h", |
| "abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc", |
| "abseil-cpp/absl/debugging/internal/demangle.cc", |
| "abseil-cpp/absl/debugging/internal/demangle.h", |
| "abseil-cpp/absl/debugging/internal/demangle_rust.cc", |
| "abseil-cpp/absl/debugging/internal/elf_mem_image.cc", |
| "abseil-cpp/absl/debugging/internal/elf_mem_image.h", |
| "abseil-cpp/absl/debugging/internal/examine_stack.cc", |
| "abseil-cpp/absl/debugging/internal/examine_stack.h", |
| "abseil-cpp/absl/debugging/internal/stack_consumption.cc", |
| "abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc", |
| "abseil-cpp/absl/debugging/internal/vdso_support.cc", |
| "abseil-cpp/absl/debugging/internal/vdso_support.h", |
| "abseil-cpp/absl/debugging/leak_check.cc", |
| "abseil-cpp/absl/debugging/leak_check.h", |
| "abseil-cpp/absl/debugging/stacktrace.cc", |
| "abseil-cpp/absl/debugging/stacktrace.h", |
| "abseil-cpp/absl/debugging/symbolize.cc", |
| "abseil-cpp/absl/debugging/symbolize.h", |
| |
| # flags (needed by log) |
| "abseil-cpp/absl/flags/commandlineflag.cc", |
| "abseil-cpp/absl/flags/commandlineflag.h", |
| "abseil-cpp/absl/flags/config.h", |
| "abseil-cpp/absl/flags/declare.h", |
| "abseil-cpp/absl/flags/flag.h", |
| "abseil-cpp/absl/flags/internal/commandlineflag.cc", |
| "abseil-cpp/absl/flags/internal/commandlineflag.h", |
| "abseil-cpp/absl/flags/internal/flag.cc", |
| "abseil-cpp/absl/flags/internal/flag.h", |
| "abseil-cpp/absl/flags/internal/private_handle_accessor.cc", |
| "abseil-cpp/absl/flags/internal/private_handle_accessor.h", |
| "abseil-cpp/absl/flags/internal/program_name.cc", |
| "abseil-cpp/absl/flags/internal/program_name.h", |
| "abseil-cpp/absl/flags/internal/usage.cc", |
| "abseil-cpp/absl/flags/internal/usage.h", |
| "abseil-cpp/absl/flags/marshalling.cc", |
| "abseil-cpp/absl/flags/marshalling.h", |
| "abseil-cpp/absl/flags/parse.cc", |
| "abseil-cpp/absl/flags/parse.h", |
| "abseil-cpp/absl/flags/reflection.cc", |
| "abseil-cpp/absl/flags/reflection.h", |
| "abseil-cpp/absl/flags/usage.cc", |
| "abseil-cpp/absl/flags/usage.h", |
| "abseil-cpp/absl/flags/usage_config.cc", |
| "abseil-cpp/absl/flags/usage_config.h", |
| |
| # hash |
| "abseil-cpp/absl/hash/hash.h", |
| "abseil-cpp/absl/hash/internal/city.cc", |
| "abseil-cpp/absl/hash/internal/city.h", |
| "abseil-cpp/absl/hash/internal/hash.cc", |
| "abseil-cpp/absl/hash/internal/hash.h", |
| "abseil-cpp/absl/hash/internal/low_level_hash.cc", |
| "abseil-cpp/absl/hash/internal/low_level_hash.h", |
| |
| # log |
| "abseil-cpp/absl/log/absl_check.h", |
| "abseil-cpp/absl/log/absl_log.h", |
| "abseil-cpp/absl/log/check.h", |
| "abseil-cpp/absl/log/die_if_null.cc", |
| "abseil-cpp/absl/log/die_if_null.h", |
| |
| # Note: flags.cc is excluded because it defines FLAGS_v which conflicts |
| # with Google Benchmark's FLAGS_v. |
| # "abseil-cpp/absl/log/flags.cc", |
| "abseil-cpp/absl/log/globals.cc", |
| "abseil-cpp/absl/log/globals.h", |
| "abseil-cpp/absl/log/initialize.cc", |
| "abseil-cpp/absl/log/initialize.h", |
| "abseil-cpp/absl/log/internal/check_op.cc", |
| "abseil-cpp/absl/log/internal/check_op.h", |
| "abseil-cpp/absl/log/internal/conditions.cc", |
| "abseil-cpp/absl/log/internal/conditions.h", |
| "abseil-cpp/absl/log/internal/fnmatch.cc", |
| "abseil-cpp/absl/log/internal/globals.cc", |
| "abseil-cpp/absl/log/internal/globals.h", |
| "abseil-cpp/absl/log/internal/log_format.cc", |
| "abseil-cpp/absl/log/internal/log_format.h", |
| "abseil-cpp/absl/log/internal/log_message.cc", |
| "abseil-cpp/absl/log/internal/log_message.h", |
| "abseil-cpp/absl/log/internal/log_sink_set.cc", |
| "abseil-cpp/absl/log/internal/log_sink_set.h", |
| "abseil-cpp/absl/log/internal/nullguard.cc", |
| "abseil-cpp/absl/log/internal/nullguard.h", |
| "abseil-cpp/absl/log/internal/proto.cc", |
| "abseil-cpp/absl/log/internal/proto.h", |
| "abseil-cpp/absl/log/internal/structured.h", |
| "abseil-cpp/absl/log/internal/structured_proto.cc", |
| "abseil-cpp/absl/log/internal/structured_proto.h", |
| "abseil-cpp/absl/log/internal/vlog_config.cc", |
| "abseil-cpp/absl/log/internal/vlog_config.h", |
| "abseil-cpp/absl/log/log.h", |
| "abseil-cpp/absl/log/log_entry.h", |
| "abseil-cpp/absl/log/log_sink.cc", |
| "abseil-cpp/absl/log/log_sink.h", |
| "abseil-cpp/absl/log/log_sink_registry.h", |
| |
| # numeric |
| "abseil-cpp/absl/numeric/bits.h", |
| "abseil-cpp/absl/numeric/int128.cc", |
| "abseil-cpp/absl/numeric/int128.h", |
| |
| # profiling (needed by container) |
| "abseil-cpp/absl/profiling/internal/exponential_biased.cc", |
| "abseil-cpp/absl/profiling/internal/exponential_biased.h", |
| "abseil-cpp/absl/profiling/internal/periodic_sampler.cc", |
| "abseil-cpp/absl/profiling/internal/periodic_sampler.h", |
| |
| # random (needed by various components) |
| "abseil-cpp/absl/random/bernoulli_distribution.h", |
| "abseil-cpp/absl/random/discrete_distribution.cc", |
| "abseil-cpp/absl/random/discrete_distribution.h", |
| "abseil-cpp/absl/random/distributions.h", |
| "abseil-cpp/absl/random/gaussian_distribution.cc", |
| "abseil-cpp/absl/random/gaussian_distribution.h", |
| "abseil-cpp/absl/random/internal/entropy_pool.cc", |
| "abseil-cpp/absl/random/internal/entropy_pool.h", |
| "abseil-cpp/absl/random/internal/randen.cc", |
| "abseil-cpp/absl/random/internal/randen.h", |
| "abseil-cpp/absl/random/internal/randen_detect.cc", |
| "abseil-cpp/absl/random/internal/randen_detect.h", |
| "abseil-cpp/absl/random/internal/randen_hwaes.cc", |
| "abseil-cpp/absl/random/internal/randen_hwaes.h", |
| "abseil-cpp/absl/random/internal/randen_round_keys.cc", |
| "abseil-cpp/absl/random/internal/randen_slow.cc", |
| "abseil-cpp/absl/random/internal/randen_slow.h", |
| "abseil-cpp/absl/random/internal/seed_material.cc", |
| "abseil-cpp/absl/random/internal/seed_material.h", |
| "abseil-cpp/absl/random/random.h", |
| "abseil-cpp/absl/random/seed_gen_exception.cc", |
| "abseil-cpp/absl/random/seed_sequences.cc", |
| "abseil-cpp/absl/random/seed_sequences.h", |
| |
| # status |
| "abseil-cpp/absl/status/internal/status_internal.cc", |
| "abseil-cpp/absl/status/internal/status_internal.h", |
| "abseil-cpp/absl/status/status.cc", |
| "abseil-cpp/absl/status/status.h", |
| "abseil-cpp/absl/status/status_payload_printer.cc", |
| "abseil-cpp/absl/status/statusor.cc", |
| "abseil-cpp/absl/status/statusor.h", |
| |
| # strings |
| "abseil-cpp/absl/strings/ascii.cc", |
| "abseil-cpp/absl/strings/ascii.h", |
| "abseil-cpp/absl/strings/charconv.cc", |
| "abseil-cpp/absl/strings/charconv.h", |
| "abseil-cpp/absl/strings/cord.cc", |
| "abseil-cpp/absl/strings/cord.h", |
| "abseil-cpp/absl/strings/cord_analysis.cc", |
| "abseil-cpp/absl/strings/cord_buffer.h", |
| "abseil-cpp/absl/strings/escaping.cc", |
| "abseil-cpp/absl/strings/escaping.h", |
| "abseil-cpp/absl/strings/internal/charconv_bigint.cc", |
| "abseil-cpp/absl/strings/internal/charconv_bigint.h", |
| "abseil-cpp/absl/strings/internal/charconv_parse.cc", |
| "abseil-cpp/absl/strings/internal/charconv_parse.h", |
| "abseil-cpp/absl/strings/internal/cord_internal.cc", |
| "abseil-cpp/absl/strings/internal/cord_internal.h", |
| "abseil-cpp/absl/strings/internal/cord_rep_btree.cc", |
| "abseil-cpp/absl/strings/internal/cord_rep_btree.h", |
| "abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc", |
| "abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h", |
| "abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc", |
| "abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h", |
| "abseil-cpp/absl/strings/internal/cord_rep_consume.cc", |
| "abseil-cpp/absl/strings/internal/cord_rep_crc.cc", |
| "abseil-cpp/absl/strings/internal/cord_rep_crc.h", |
| "abseil-cpp/absl/strings/internal/cord_rep_flat.h", |
| "abseil-cpp/absl/strings/internal/cordz_functions.cc", |
| "abseil-cpp/absl/strings/internal/cordz_functions.h", |
| "abseil-cpp/absl/strings/internal/cordz_handle.cc", |
| "abseil-cpp/absl/strings/internal/cordz_handle.h", |
| "abseil-cpp/absl/strings/internal/cordz_info.cc", |
| "abseil-cpp/absl/strings/internal/cordz_info.h", |
| "abseil-cpp/absl/strings/internal/cordz_sample_token.cc", |
| "abseil-cpp/absl/strings/internal/cordz_sample_token.h", |
| "abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc", |
| "abseil-cpp/absl/strings/internal/escaping.cc", |
| "abseil-cpp/absl/strings/internal/escaping.h", |
| "abseil-cpp/absl/strings/internal/memutil.cc", |
| "abseil-cpp/absl/strings/internal/memutil.h", |
| "abseil-cpp/absl/strings/internal/ostringstream.cc", |
| "abseil-cpp/absl/strings/internal/ostringstream.h", |
| "abseil-cpp/absl/strings/internal/resize_uninitialized.h", |
| "abseil-cpp/absl/strings/internal/stl_type_traits.h", |
| "abseil-cpp/absl/strings/internal/str_format/arg.cc", |
| "abseil-cpp/absl/strings/internal/str_format/arg.h", |
| "abseil-cpp/absl/strings/internal/str_format/bind.cc", |
| "abseil-cpp/absl/strings/internal/str_format/bind.h", |
| "abseil-cpp/absl/strings/internal/str_format/checker.h", |
| "abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h", |
| "abseil-cpp/absl/strings/internal/str_format/extension.cc", |
| "abseil-cpp/absl/strings/internal/str_format/extension.h", |
| "abseil-cpp/absl/strings/internal/str_format/float_conversion.cc", |
| "abseil-cpp/absl/strings/internal/str_format/float_conversion.h", |
| "abseil-cpp/absl/strings/internal/str_format/output.cc", |
| "abseil-cpp/absl/strings/internal/str_format/output.h", |
| "abseil-cpp/absl/strings/internal/str_format/parser.cc", |
| "abseil-cpp/absl/strings/internal/str_format/parser.h", |
| "abseil-cpp/absl/strings/internal/str_join_internal.h", |
| "abseil-cpp/absl/strings/internal/str_split_internal.h", |
| "abseil-cpp/absl/strings/internal/stringify_sink.cc", |
| "abseil-cpp/absl/strings/internal/stringify_sink.h", |
| "abseil-cpp/absl/strings/internal/utf8.cc", |
| "abseil-cpp/absl/strings/internal/utf8.h", |
| "abseil-cpp/absl/strings/match.cc", |
| "abseil-cpp/absl/strings/match.h", |
| "abseil-cpp/absl/strings/numbers.cc", |
| "abseil-cpp/absl/strings/numbers.h", |
| "abseil-cpp/absl/strings/str_cat.cc", |
| "abseil-cpp/absl/strings/str_cat.h", |
| "abseil-cpp/absl/strings/str_format.h", |
| "abseil-cpp/absl/strings/str_join.h", |
| "abseil-cpp/absl/strings/str_replace.cc", |
| "abseil-cpp/absl/strings/str_replace.h", |
| "abseil-cpp/absl/strings/str_split.cc", |
| "abseil-cpp/absl/strings/str_split.h", |
| "abseil-cpp/absl/strings/string_view.cc", |
| "abseil-cpp/absl/strings/string_view.h", |
| "abseil-cpp/absl/strings/strip.h", |
| "abseil-cpp/absl/strings/substitute.cc", |
| "abseil-cpp/absl/strings/substitute.h", |
| |
| # synchronization |
| "abseil-cpp/absl/synchronization/barrier.cc", |
| "abseil-cpp/absl/synchronization/barrier.h", |
| "abseil-cpp/absl/synchronization/blocking_counter.cc", |
| "abseil-cpp/absl/synchronization/blocking_counter.h", |
| "abseil-cpp/absl/synchronization/internal/create_thread_identity.cc", |
| "abseil-cpp/absl/synchronization/internal/create_thread_identity.h", |
| "abseil-cpp/absl/synchronization/internal/futex.h", |
| "abseil-cpp/absl/synchronization/internal/futex_waiter.cc", |
| "abseil-cpp/absl/synchronization/internal/graphcycles.cc", |
| "abseil-cpp/absl/synchronization/internal/graphcycles.h", |
| "abseil-cpp/absl/synchronization/internal/kernel_timeout.cc", |
| "abseil-cpp/absl/synchronization/internal/kernel_timeout.h", |
| "abseil-cpp/absl/synchronization/internal/per_thread_sem.cc", |
| "abseil-cpp/absl/synchronization/internal/per_thread_sem.h", |
| "abseil-cpp/absl/synchronization/internal/pthread_waiter.cc", |
| "abseil-cpp/absl/synchronization/internal/sem_waiter.cc", |
| "abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc", |
| "abseil-cpp/absl/synchronization/internal/waiter.h", |
| "abseil-cpp/absl/synchronization/internal/waiter_base.cc", |
| "abseil-cpp/absl/synchronization/internal/win32_waiter.cc", |
| "abseil-cpp/absl/synchronization/mutex.cc", |
| "abseil-cpp/absl/synchronization/mutex.h", |
| "abseil-cpp/absl/synchronization/notification.cc", |
| "abseil-cpp/absl/synchronization/notification.h", |
| |
| # time |
| "abseil-cpp/absl/time/civil_time.cc", |
| "abseil-cpp/absl/time/civil_time.h", |
| "abseil-cpp/absl/time/clock.cc", |
| "abseil-cpp/absl/time/clock.h", |
| "abseil-cpp/absl/time/duration.cc", |
| "abseil-cpp/absl/time/format.cc", |
| "abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h", |
| "abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h", |
| "abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h", |
| "abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h", |
| "abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc", |
| "abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc", |
| "abseil-cpp/absl/time/time.cc", |
| "abseil-cpp/absl/time/time.h", |
| |
| # types |
| "abseil-cpp/absl/types/compare.h", |
| "abseil-cpp/absl/types/optional.h", |
| "abseil-cpp/absl/types/span.h", |
| "abseil-cpp/absl/types/variant.h", |
| |
| # utility |
| "abseil-cpp/absl/utility/utility.h", |
| |
| # functional |
| "abseil-cpp/absl/functional/any_invocable.h", |
| "abseil-cpp/absl/functional/bind_front.h", |
| "abseil-cpp/absl/functional/function_ref.h", |
| |
| # memory |
| "abseil-cpp/absl/memory/memory.h", |
| |
| # meta |
| "abseil-cpp/absl/meta/type_traits.h", |
| |
| # cleanup |
| "abseil-cpp/absl/cleanup/cleanup.h", |
| |
| # algorithm |
| "abseil-cpp/absl/algorithm/algorithm.h", |
| "abseil-cpp/absl/algorithm/container.h", |
| ] |
| |
| if (is_win) { |
| sources += [ "abseil-cpp/absl/base/internal/spinlock_win32.inc" ] |
| } else if (is_linux || is_android) { |
| sources += [ "abseil-cpp/absl/base/internal/spinlock_linux.inc" ] |
| } else { |
| sources += [ "abseil-cpp/absl/base/internal/spinlock_posix.inc" ] |
| } |
| |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| configs += [ ":abseil_config" ] |
| public_configs = [ ":abseil_config" ] |
| deps = [ "//gn:default_deps" ] |
| all_dependent_configs = [ ":abseil_framework_config" ] |
| } |
| |
| # Configuration for utf8_range (required by protobuf v22+). |
| config("utf8_range_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ "protobuf/third_party/utf8_range" ] |
| } |
| |
| # UTF-8 validation library required by protobuf v22+. |
| source_set("utf8_range") { |
| visibility = _buildtools_visibility |
| sources = [ "protobuf/third_party/utf8_range/utf8_range.c" ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| configs += [ ":abseil_config" ] |
| public_configs = [ ":utf8_range_config" ] |
| public_deps = [ ":abseil_cpp" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| # Configuration for upb (micro protobuf, required by protobuf v31+). |
| config("upb_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ |
| "protobuf", |
| "protobuf/upb/reflection/stage0", # For pre-generated descriptor.upb.h |
| "protobuf/third_party/utf8_range", # For utf8_range.h |
| ] |
| defines = [ "UPB_BOOTSTRAP_STAGE=0" ] # Use stage0 minitable functions |
| } |
| |
| # upb (micro protobuf) library required by protobuf v31+. |
| source_set("upb") { |
| visibility = _buildtools_visibility |
| sources = [ |
| # base |
| "protobuf/upb/base/descriptor_constants.h", |
| "protobuf/upb/base/internal/endian.h", |
| "protobuf/upb/base/internal/log2.h", |
| "protobuf/upb/base/status.c", |
| "protobuf/upb/base/status.h", |
| "protobuf/upb/base/string_view.h", |
| "protobuf/upb/base/upcast.h", |
| |
| # generated_code_support |
| "protobuf/upb/generated_code_support.h", |
| |
| # hash |
| "protobuf/upb/hash/common.c", |
| "protobuf/upb/hash/common.h", |
| "protobuf/upb/hash/int_table.h", |
| "protobuf/upb/hash/str_table.h", |
| |
| # lex |
| "protobuf/upb/lex/atoi.c", |
| "protobuf/upb/lex/atoi.h", |
| "protobuf/upb/lex/round_trip.c", |
| "protobuf/upb/lex/round_trip.h", |
| "protobuf/upb/lex/strtod.c", |
| "protobuf/upb/lex/strtod.h", |
| "protobuf/upb/lex/unicode.c", |
| "protobuf/upb/lex/unicode.h", |
| |
| # mem |
| "protobuf/upb/mem/alloc.c", |
| "protobuf/upb/mem/alloc.h", |
| "protobuf/upb/mem/arena.c", |
| "protobuf/upb/mem/arena.h", |
| "protobuf/upb/mem/internal/arena.h", |
| |
| # message |
| "protobuf/upb/message/accessors.c", |
| "protobuf/upb/message/accessors.h", |
| "protobuf/upb/message/accessors_split64.h", |
| "protobuf/upb/message/array.c", |
| "protobuf/upb/message/array.h", |
| "protobuf/upb/message/compare.c", |
| "protobuf/upb/message/compare.h", |
| "protobuf/upb/message/compat.c", |
| "protobuf/upb/message/compat.h", |
| "protobuf/upb/message/copy.c", |
| "protobuf/upb/message/copy.h", |
| "protobuf/upb/message/internal/accessors.h", |
| "protobuf/upb/message/internal/array.h", |
| "protobuf/upb/message/internal/compare_unknown.c", |
| "protobuf/upb/message/internal/compare_unknown.h", |
| "protobuf/upb/message/internal/extension.c", |
| "protobuf/upb/message/internal/extension.h", |
| "protobuf/upb/message/internal/iterator.c", |
| "protobuf/upb/message/internal/iterator.h", |
| "protobuf/upb/message/internal/map.h", |
| "protobuf/upb/message/internal/map_entry.h", |
| "protobuf/upb/message/internal/map_sorter.h", |
| "protobuf/upb/message/internal/message.c", |
| "protobuf/upb/message/internal/message.h", |
| "protobuf/upb/message/internal/tagged_ptr.h", |
| "protobuf/upb/message/internal/types.h", |
| "protobuf/upb/message/map.c", |
| "protobuf/upb/message/map.h", |
| "protobuf/upb/message/map_gencode_util.h", |
| "protobuf/upb/message/map_sorter.c", |
| "protobuf/upb/message/merge.c", |
| "protobuf/upb/message/merge.h", |
| "protobuf/upb/message/message.c", |
| "protobuf/upb/message/message.h", |
| "protobuf/upb/message/promote.c", |
| "protobuf/upb/message/promote.h", |
| "protobuf/upb/message/tagged_ptr.h", |
| "protobuf/upb/message/value.h", |
| |
| # mini_descriptor |
| "protobuf/upb/mini_descriptor/build_enum.c", |
| "protobuf/upb/mini_descriptor/build_enum.h", |
| "protobuf/upb/mini_descriptor/decode.c", |
| "protobuf/upb/mini_descriptor/decode.h", |
| "protobuf/upb/mini_descriptor/internal/base92.c", |
| "protobuf/upb/mini_descriptor/internal/base92.h", |
| "protobuf/upb/mini_descriptor/internal/decoder.h", |
| "protobuf/upb/mini_descriptor/internal/encode.c", |
| "protobuf/upb/mini_descriptor/internal/encode.h", |
| "protobuf/upb/mini_descriptor/internal/modifiers.h", |
| "protobuf/upb/mini_descriptor/internal/wire_constants.h", |
| "protobuf/upb/mini_descriptor/link.c", |
| "protobuf/upb/mini_descriptor/link.h", |
| |
| # mini_table |
| "protobuf/upb/mini_table/compat.c", |
| "protobuf/upb/mini_table/compat.h", |
| "protobuf/upb/mini_table/enum.h", |
| "protobuf/upb/mini_table/extension.h", |
| "protobuf/upb/mini_table/extension_registry.c", |
| "protobuf/upb/mini_table/extension_registry.h", |
| "protobuf/upb/mini_table/field.h", |
| "protobuf/upb/mini_table/file.h", |
| "protobuf/upb/mini_table/internal/enum.h", |
| "protobuf/upb/mini_table/internal/extension.h", |
| "protobuf/upb/mini_table/internal/field.h", |
| "protobuf/upb/mini_table/internal/file.h", |
| "protobuf/upb/mini_table/internal/message.c", |
| "protobuf/upb/mini_table/internal/message.h", |
| "protobuf/upb/mini_table/internal/size_log2.h", |
| "protobuf/upb/mini_table/internal/sub.h", |
| "protobuf/upb/mini_table/message.c", |
| "protobuf/upb/mini_table/message.h", |
| "protobuf/upb/mini_table/sub.h", |
| |
| # port |
| "protobuf/upb/port/atomic.h", |
| "protobuf/upb/port/vsnprintf_compat.h", |
| |
| # reflection |
| "protobuf/upb/reflection/common.h", |
| "protobuf/upb/reflection/def.h", |
| "protobuf/upb/reflection/def_pool.c", |
| "protobuf/upb/reflection/def_pool.h", |
| "protobuf/upb/reflection/def_type.c", |
| "protobuf/upb/reflection/def_type.h", |
| "protobuf/upb/reflection/desc_state.c", |
| "protobuf/upb/reflection/descriptor_bootstrap.h", |
| "protobuf/upb/reflection/enum_def.c", |
| "protobuf/upb/reflection/enum_def.h", |
| "protobuf/upb/reflection/enum_reserved_range.c", |
| "protobuf/upb/reflection/enum_reserved_range.h", |
| "protobuf/upb/reflection/enum_value_def.c", |
| "protobuf/upb/reflection/enum_value_def.h", |
| "protobuf/upb/reflection/extension_range.c", |
| "protobuf/upb/reflection/extension_range.h", |
| "protobuf/upb/reflection/field_def.c", |
| "protobuf/upb/reflection/field_def.h", |
| "protobuf/upb/reflection/file_def.c", |
| "protobuf/upb/reflection/file_def.h", |
| "protobuf/upb/reflection/internal/def_builder.c", |
| "protobuf/upb/reflection/internal/def_builder.h", |
| "protobuf/upb/reflection/internal/def_pool.h", |
| "protobuf/upb/reflection/internal/desc_state.h", |
| "protobuf/upb/reflection/internal/enum_def.h", |
| "protobuf/upb/reflection/internal/enum_reserved_range.h", |
| "protobuf/upb/reflection/internal/enum_value_def.h", |
| "protobuf/upb/reflection/internal/extension_range.h", |
| "protobuf/upb/reflection/internal/field_def.h", |
| "protobuf/upb/reflection/internal/file_def.h", |
| "protobuf/upb/reflection/internal/message_def.h", |
| "protobuf/upb/reflection/internal/message_reserved_range.h", |
| "protobuf/upb/reflection/internal/method_def.h", |
| "protobuf/upb/reflection/internal/oneof_def.h", |
| "protobuf/upb/reflection/internal/service_def.h", |
| "protobuf/upb/reflection/internal/strdup2.c", |
| "protobuf/upb/reflection/message.c", |
| "protobuf/upb/reflection/message_def.c", |
| "protobuf/upb/reflection/message_def.h", |
| "protobuf/upb/reflection/message_reserved_range.c", |
| "protobuf/upb/reflection/message_reserved_range.h", |
| "protobuf/upb/reflection/method_def.c", |
| "protobuf/upb/reflection/method_def.h", |
| "protobuf/upb/reflection/oneof_def.c", |
| "protobuf/upb/reflection/oneof_def.h", |
| "protobuf/upb/reflection/service_def.c", |
| "protobuf/upb/reflection/service_def.h", |
| "protobuf/upb/reflection/stage0/google/protobuf/descriptor.upb.c", |
| "protobuf/upb/reflection/stage0/google/protobuf/descriptor.upb.h", |
| |
| # text |
| "protobuf/upb/text/encode.c", |
| "protobuf/upb/text/encode.h", |
| "protobuf/upb/text/internal/encode.c", |
| |
| # wire |
| "protobuf/upb/wire/byte_size.c", |
| "protobuf/upb/wire/decode.c", |
| "protobuf/upb/wire/decode.h", |
| "protobuf/upb/wire/encode.c", |
| "protobuf/upb/wire/encode.h", |
| "protobuf/upb/wire/eps_copy_input_stream.c", |
| "protobuf/upb/wire/eps_copy_input_stream.h", |
| "protobuf/upb/wire/internal/decode_fast.c", |
| "protobuf/upb/wire/reader.c", |
| "protobuf/upb/wire/reader.h", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":upb_config" ] |
| deps = [ "//gn:default_deps" ] |
| |
| if (is_gcc) { |
| cflags = [ "-Wno-attributes" ] |
| } |
| if (is_clang) { |
| cflags = [ "-Wno-unknown-attributes" ] |
| } |
| } |
| |
| # upb_generator library (code generators for upb, used by protoc). |
| # This depends on protobuf_full for compiler APIs and abseil for containers. |
| source_set("upb_generator") { |
| visibility = _buildtools_visibility |
| sources = [ |
| "protobuf/upb_generator/common.cc", |
| "protobuf/upb_generator/common.h", |
| "protobuf/upb_generator/common/names.cc", |
| "protobuf/upb_generator/common/names.h", |
| "protobuf/upb_generator/file_layout.cc", |
| "protobuf/upb_generator/file_layout.h", |
| "protobuf/upb_generator/minitable/fasttable.cc", |
| "protobuf/upb_generator/minitable/fasttable.h", |
| "protobuf/upb_generator/minitable/generator.cc", |
| "protobuf/upb_generator/minitable/generator.h", |
| "protobuf/upb_generator/minitable/names.cc", |
| "protobuf/upb_generator/minitable/names.h", |
| "protobuf/upb_generator/minitable/names_internal.cc", |
| "protobuf/upb_generator/minitable/names_internal.h", |
| "protobuf/upb_generator/plugin.cc", |
| "protobuf/upb_generator/plugin.h", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| configs += [ |
| ":protobuf_config", |
| ":upb_config", |
| ] |
| |
| # Export upb_config so dependents can include upb_generator headers. |
| public_configs = [ ":upb_config" ] |
| deps = [ |
| ":abseil_cpp", |
| ":protobuf_full", |
| ":upb", |
| "//gn:default_deps", |
| ] |
| } |
| |
| # Configuration used to build libprotobuf_* and the protoc compiler. |
| config("protobuf_config") { |
| visibility = _buildtools_visibility |
| |
| # Apply the lighter supressions and macro definitions from above. |
| configs = [ "//gn:protobuf_gen_config" ] |
| |
| defines = [ "HAVE_PTHREAD=1" ] |
| cflags = [] |
| |
| # Fixed upstream in: |
| # https://github.com/protocolbuffers/protobuf/pull/10112 |
| # But we don't have that yet. |
| if (is_mac) { |
| cflags += [ "-Wno-deprecated-declarations" ] |
| } |
| if (is_gcc) { |
| cflags += [ |
| "-Wno-stringop-overread", |
| "-Wno-attributes", |
| "-Wno-nonnull", |
| ] |
| } |
| if (is_win) { |
| cflags += [ "/W0" ] |
| } |
| } |
| |
| # Configuration propagated to targets depending on protobuf_full. |
| config("protobuf_full_public_config") { |
| visibility = _buildtools_visibility |
| cflags = [] |
| if (is_clang) { |
| cflags += [ "-Wno-switch-enum" ] |
| if (is_win) { |
| cflags += [ "-Wno-undef" ] |
| } |
| } |
| } |
| |
| _protobuf_headers = [ |
| "protobuf/src/google/protobuf/any.h", |
| "protobuf/src/google/protobuf/any.pb.h", |
| "protobuf/src/google/protobuf/api.pb.h", |
| "protobuf/src/google/protobuf/arena.h", |
| "protobuf/src/google/protobuf/arena_align.h", |
| "protobuf/src/google/protobuf/arena_allocation_policy.h", |
| "protobuf/src/google/protobuf/arena_cleanup.h", |
| "protobuf/src/google/protobuf/arenastring.h", |
| "protobuf/src/google/protobuf/arenaz_sampler.h", |
| "protobuf/src/google/protobuf/compiler/importer.h", |
| "protobuf/src/google/protobuf/compiler/parser.h", |
| "protobuf/src/google/protobuf/descriptor.h", |
| "protobuf/src/google/protobuf/descriptor.pb.h", |
| "protobuf/src/google/protobuf/descriptor_database.h", |
| "protobuf/src/google/protobuf/duration.pb.h", |
| "protobuf/src/google/protobuf/dynamic_message.h", |
| "protobuf/src/google/protobuf/empty.pb.h", |
| "protobuf/src/google/protobuf/endian.h", |
| "protobuf/src/google/protobuf/explicitly_constructed.h", |
| "protobuf/src/google/protobuf/extension_set.h", |
| "protobuf/src/google/protobuf/extension_set_inl.h", |
| "protobuf/src/google/protobuf/field_access_listener.h", |
| "protobuf/src/google/protobuf/field_mask.pb.h", |
| "protobuf/src/google/protobuf/generated_enum_reflection.h", |
| "protobuf/src/google/protobuf/generated_enum_util.h", |
| "protobuf/src/google/protobuf/generated_message_bases.h", |
| "protobuf/src/google/protobuf/generated_message_reflection.h", |
| "protobuf/src/google/protobuf/generated_message_tctable_decl.h", |
| "protobuf/src/google/protobuf/generated_message_tctable_gen.h", |
| "protobuf/src/google/protobuf/generated_message_tctable_impl.h", |
| "protobuf/src/google/protobuf/generated_message_util.h", |
| "protobuf/src/google/protobuf/has_bits.h", |
| "protobuf/src/google/protobuf/implicit_weak_message.h", |
| "protobuf/src/google/protobuf/inlined_string_field.h", |
| "protobuf/src/google/protobuf/io/coded_stream.h", |
| "protobuf/src/google/protobuf/io/gzip_stream.h", |
| "protobuf/src/google/protobuf/io/io_win32.h", |
| "protobuf/src/google/protobuf/io/printer.h", |
| "protobuf/src/google/protobuf/io/strtod.h", |
| "protobuf/src/google/protobuf/io/tokenizer.h", |
| "protobuf/src/google/protobuf/io/zero_copy_sink.h", |
| "protobuf/src/google/protobuf/io/zero_copy_stream.h", |
| "protobuf/src/google/protobuf/io/zero_copy_stream_impl.h", |
| "protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h", |
| "protobuf/src/google/protobuf/json/json.h", |
| "protobuf/src/google/protobuf/map.h", |
| "protobuf/src/google/protobuf/map_entry.h", |
| "protobuf/src/google/protobuf/map_field.h", |
| "protobuf/src/google/protobuf/map_field_lite.h", |
| "protobuf/src/google/protobuf/map_type_handler.h", |
| "protobuf/src/google/protobuf/message.h", |
| "protobuf/src/google/protobuf/message_lite.h", |
| "protobuf/src/google/protobuf/metadata.h", |
| "protobuf/src/google/protobuf/metadata_lite.h", |
| "protobuf/src/google/protobuf/parse_context.h", |
| "protobuf/src/google/protobuf/port.h", |
| "protobuf/src/google/protobuf/reflection.h", |
| "protobuf/src/google/protobuf/reflection_internal.h", |
| "protobuf/src/google/protobuf/reflection_ops.h", |
| "protobuf/src/google/protobuf/repeated_field.h", |
| "protobuf/src/google/protobuf/repeated_ptr_field.h", |
| "protobuf/src/google/protobuf/serial_arena.h", |
| "protobuf/src/google/protobuf/service.h", |
| "protobuf/src/google/protobuf/source_context.pb.h", |
| "protobuf/src/google/protobuf/string_block.h", |
| "protobuf/src/google/protobuf/struct.pb.h", |
| "protobuf/src/google/protobuf/stubs/callback.h", |
| "protobuf/src/google/protobuf/stubs/common.h", |
| "protobuf/src/google/protobuf/stubs/platform_macros.h", |
| "protobuf/src/google/protobuf/stubs/port.h", |
| "protobuf/src/google/protobuf/stubs/status_macros.h", |
| "protobuf/src/google/protobuf/text_format.h", |
| "protobuf/src/google/protobuf/thread_safe_arena.h", |
| "protobuf/src/google/protobuf/timestamp.pb.h", |
| "protobuf/src/google/protobuf/type.pb.h", |
| "protobuf/src/google/protobuf/unknown_field_set.h", |
| "protobuf/src/google/protobuf/util/delimited_message_util.h", |
| "protobuf/src/google/protobuf/util/field_comparator.h", |
| "protobuf/src/google/protobuf/util/field_mask_util.h", |
| "protobuf/src/google/protobuf/util/json_util.h", |
| "protobuf/src/google/protobuf/util/message_differencer.h", |
| "protobuf/src/google/protobuf/util/time_util.h", |
| "protobuf/src/google/protobuf/util/type_resolver.h", |
| "protobuf/src/google/protobuf/util/type_resolver_util.h", |
| "protobuf/src/google/protobuf/wire_format.h", |
| "protobuf/src/google/protobuf/wire_format_lite.h", |
| "protobuf/src/google/protobuf/wrappers.pb.h", |
| ] |
| |
| source_set("protobuf_lite") { |
| visibility = _buildtools_visibility |
| sources = [ |
| "protobuf/src/google/protobuf/any_lite.cc", |
| "protobuf/src/google/protobuf/arena.cc", |
| "protobuf/src/google/protobuf/arena_align.cc", |
| "protobuf/src/google/protobuf/arenastring.cc", |
| "protobuf/src/google/protobuf/arenaz_sampler.cc", |
| "protobuf/src/google/protobuf/extension_set.cc", |
| "protobuf/src/google/protobuf/generated_enum_util.cc", |
| "protobuf/src/google/protobuf/generated_message_tctable_lite.cc", |
| "protobuf/src/google/protobuf/generated_message_util.cc", |
| "protobuf/src/google/protobuf/implicit_weak_message.cc", |
| "protobuf/src/google/protobuf/inlined_string_field.cc", |
| "protobuf/src/google/protobuf/io/coded_stream.cc", |
| "protobuf/src/google/protobuf/io/io_win32.cc", |
| "protobuf/src/google/protobuf/io/strtod.cc", |
| "protobuf/src/google/protobuf/io/zero_copy_sink.cc", |
| "protobuf/src/google/protobuf/io/zero_copy_stream.cc", |
| "protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc", |
| "protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc", |
| "protobuf/src/google/protobuf/map.cc", |
| "protobuf/src/google/protobuf/message_lite.cc", |
| "protobuf/src/google/protobuf/micro_string.cc", |
| "protobuf/src/google/protobuf/parse_context.cc", |
| "protobuf/src/google/protobuf/port.cc", |
| "protobuf/src/google/protobuf/raw_ptr.cc", |
| "protobuf/src/google/protobuf/repeated_field.cc", |
| "protobuf/src/google/protobuf/repeated_ptr_field.cc", |
| "protobuf/src/google/protobuf/stubs/common.cc", |
| "protobuf/src/google/protobuf/wire_format_lite.cc", |
| ] |
| sources += _protobuf_headers |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| if (is_win) { |
| # Protobuf has its own #define WIN32_LEAN_AND_MEAN. |
| configs -= [ "//gn/standalone:win32_lean_and_mean" ] |
| } |
| configs += [ ":protobuf_config" ] |
| public_configs = [ "//gn:protobuf_gen_config" ] |
| public_deps = [ |
| ":abseil_cpp", |
| ":utf8_range", |
| ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| source_set("protobuf_full") { |
| visibility = _buildtools_visibility |
| public_deps = [ ":protobuf_lite" ] |
| deps = [ "//gn:default_deps" ] |
| sources = [ |
| "protobuf/src/google/protobuf/any.cc", |
| "protobuf/src/google/protobuf/any.pb.cc", |
| "protobuf/src/google/protobuf/api.pb.cc", |
| "protobuf/src/google/protobuf/compiler/importer.cc", |
| "protobuf/src/google/protobuf/compiler/parser.cc", |
| "protobuf/src/google/protobuf/cpp_features.pb.cc", |
| "protobuf/src/google/protobuf/descriptor.cc", |
| "protobuf/src/google/protobuf/descriptor.pb.cc", |
| "protobuf/src/google/protobuf/descriptor_database.cc", |
| "protobuf/src/google/protobuf/duration.pb.cc", |
| "protobuf/src/google/protobuf/dynamic_message.cc", |
| "protobuf/src/google/protobuf/empty.pb.cc", |
| "protobuf/src/google/protobuf/extension_set_heavy.cc", |
| "protobuf/src/google/protobuf/feature_resolver.cc", |
| "protobuf/src/google/protobuf/field_mask.pb.cc", |
| "protobuf/src/google/protobuf/generated_message_bases.cc", |
| "protobuf/src/google/protobuf/generated_message_reflection.cc", |
| "protobuf/src/google/protobuf/generated_message_tctable_full.cc", |
| "protobuf/src/google/protobuf/generated_message_tctable_gen.cc", |
| "protobuf/src/google/protobuf/internal_feature_helper.cc", |
| "protobuf/src/google/protobuf/io/gzip_stream.cc", |
| "protobuf/src/google/protobuf/io/printer.cc", |
| "protobuf/src/google/protobuf/io/tokenizer.cc", |
| "protobuf/src/google/protobuf/json/internal/lexer.cc", |
| "protobuf/src/google/protobuf/json/internal/message_path.cc", |
| "protobuf/src/google/protobuf/json/internal/parser.cc", |
| "protobuf/src/google/protobuf/json/internal/unparser.cc", |
| "protobuf/src/google/protobuf/json/internal/untyped_message.cc", |
| "protobuf/src/google/protobuf/json/internal/writer.cc", |
| "protobuf/src/google/protobuf/json/internal/zero_copy_buffered_stream.cc", |
| "protobuf/src/google/protobuf/json/json.cc", |
| "protobuf/src/google/protobuf/map_field.cc", |
| "protobuf/src/google/protobuf/message.cc", |
| "protobuf/src/google/protobuf/reflection_mode.cc", |
| "protobuf/src/google/protobuf/reflection_ops.cc", |
| "protobuf/src/google/protobuf/service.cc", |
| "protobuf/src/google/protobuf/source_context.pb.cc", |
| "protobuf/src/google/protobuf/struct.pb.cc", |
| "protobuf/src/google/protobuf/text_format.cc", |
| "protobuf/src/google/protobuf/timestamp.pb.cc", |
| "protobuf/src/google/protobuf/type.pb.cc", |
| "protobuf/src/google/protobuf/unknown_field_set.cc", |
| "protobuf/src/google/protobuf/util/delimited_message_util.cc", |
| "protobuf/src/google/protobuf/util/field_comparator.cc", |
| "protobuf/src/google/protobuf/util/field_mask_util.cc", |
| "protobuf/src/google/protobuf/util/message_differencer.cc", |
| "protobuf/src/google/protobuf/util/time_util.cc", |
| "protobuf/src/google/protobuf/util/type_resolver_util.cc", |
| "protobuf/src/google/protobuf/wire_format.cc", |
| "protobuf/src/google/protobuf/wrappers.pb.cc", |
| ] |
| sources += _protobuf_headers |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| if (is_win) { |
| # Protobuf has its own #define WIN32_LEAN_AND_MEAN. |
| configs -= [ "//gn/standalone:win32_lean_and_mean" ] |
| } |
| configs += [ ":protobuf_config" ] |
| public_configs = [ |
| "//gn:protobuf_gen_config", |
| ":protobuf_full_public_config", |
| ] |
| } |
| |
| source_set("protoc_lib") { |
| visibility = _buildtools_visibility |
| public_deps = [ |
| ":protobuf_full", |
| ":upb_generator", |
| ] |
| deps = [ "//gn:default_deps" ] |
| sources = [ |
| "protobuf/src/google/protobuf/compiler/code_generator.cc", |
| "protobuf/src/google/protobuf/compiler/code_generator_lite.cc", |
| "protobuf/src/google/protobuf/compiler/command_line_interface.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/enum.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/extension.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field_chunk.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field_generators/cord_field.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field_generators/enum_field.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field_generators/map_field.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field_generators/message_field.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field_generators/primitive_field.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field_generators/string_field.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/field_generators/string_view_field.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/file.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/generator.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/helpers.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/ifndef_guard.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/message.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/message_layout_helper.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/namespace_printer.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/parse_function_generator.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/service.cc", |
| "protobuf/src/google/protobuf/compiler/cpp/tracker.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_enum.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_enum_field.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_generator.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_map_field.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_message.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc", |
| "protobuf/src/google/protobuf/compiler/csharp/names.cc", |
| "protobuf/src/google/protobuf/compiler/java/context.cc", |
| "protobuf/src/google/protobuf/compiler/java/doc_comment.cc", |
| "protobuf/src/google/protobuf/compiler/java/field_common.cc", |
| "protobuf/src/google/protobuf/compiler/java/file.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/enum.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/enum_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/extension.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/generator_factory.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/make_field_gens.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/map_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/message.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/message_builder.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/message_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/primitive_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/service.cc", |
| "protobuf/src/google/protobuf/compiler/java/full/string_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/generator.cc", |
| "protobuf/src/google/protobuf/compiler/java/helpers.cc", |
| "protobuf/src/google/protobuf/compiler/java/internal_helpers.cc", |
| "protobuf/src/google/protobuf/compiler/java/java_features.pb.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/enum.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/enum_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/extension.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/generator_factory.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/make_field_gens.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/map_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/message.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/message_builder.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/message_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/primitive_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/lite/string_field.cc", |
| "protobuf/src/google/protobuf/compiler/java/message_serialization.cc", |
| "protobuf/src/google/protobuf/compiler/java/name_resolver.cc", |
| "protobuf/src/google/protobuf/compiler/java/names.cc", |
| "protobuf/src/google/protobuf/compiler/java/shared_code_generator.cc", |
| "protobuf/src/google/protobuf/compiler/kotlin/field.cc", |
| "protobuf/src/google/protobuf/compiler/kotlin/file.cc", |
| "protobuf/src/google/protobuf/compiler/kotlin/generator.cc", |
| "protobuf/src/google/protobuf/compiler/kotlin/message.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/enum.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/enum_field.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/extension.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/field.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/file.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/generator.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/helpers.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/import_writer.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/line_consumer.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/map_field.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/message.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/message_field.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/names.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/oneof.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/primitive_field.cc", |
| "protobuf/src/google/protobuf/compiler/objectivec/tf_decode_data.cc", |
| "protobuf/src/google/protobuf/compiler/php/names.cc", |
| "protobuf/src/google/protobuf/compiler/php/php_generator.cc", |
| "protobuf/src/google/protobuf/compiler/plugin.cc", |
| "protobuf/src/google/protobuf/compiler/plugin.pb.cc", |
| "protobuf/src/google/protobuf/compiler/python/generator.cc", |
| "protobuf/src/google/protobuf/compiler/python/helpers.cc", |
| "protobuf/src/google/protobuf/compiler/python/pyi_generator.cc", |
| "protobuf/src/google/protobuf/compiler/retention.cc", |
| "protobuf/src/google/protobuf/compiler/ruby/ruby_generator.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/accessor_case.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/accessors.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/default_value.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/map.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/repeated_field.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/singular_cord.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/singular_message.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/singular_scalar.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/singular_string.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/unsupported_field.cc", |
| "protobuf/src/google/protobuf/compiler/rust/accessors/with_presence.cc", |
| "protobuf/src/google/protobuf/compiler/rust/context.cc", |
| "protobuf/src/google/protobuf/compiler/rust/crate_mapping.cc", |
| "protobuf/src/google/protobuf/compiler/rust/enum.cc", |
| "protobuf/src/google/protobuf/compiler/rust/generator.cc", |
| "protobuf/src/google/protobuf/compiler/rust/message.cc", |
| "protobuf/src/google/protobuf/compiler/rust/naming.cc", |
| "protobuf/src/google/protobuf/compiler/rust/oneof.cc", |
| "protobuf/src/google/protobuf/compiler/rust/relative_path.cc", |
| "protobuf/src/google/protobuf/compiler/rust/rust_field_type.cc", |
| "protobuf/src/google/protobuf/compiler/rust/rust_keywords.cc", |
| "protobuf/src/google/protobuf/compiler/rust/upb_helpers.cc", |
| "protobuf/src/google/protobuf/compiler/subprocess.cc", |
| "protobuf/src/google/protobuf/compiler/versions.cc", |
| "protobuf/src/google/protobuf/compiler/zip_writer.cc", |
| "protobuf/src/google/protobuf/testing/file.cc", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| if (is_win) { |
| # Protobuf does has its own #define WIN32_LEAN_AND_MEAN. |
| configs -= [ "//gn/standalone:win32_lean_and_mean" ] |
| } |
| configs += [ ":protobuf_config" ] |
| public_configs = [ |
| "//gn:protobuf_gen_config", |
| ":protobuf_full_public_config", |
| ] |
| } |
| |
| if (current_toolchain == host_toolchain) { |
| executable("protoc") { |
| visibility = _buildtools_visibility |
| deps = [ |
| ":protoc_lib", |
| "//gn:default_deps", |
| ] |
| sources = [ "protobuf/src/google/protobuf/compiler/main.cc" ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| if (is_win) { |
| # Protobuf does has its own #define WIN32_LEAN_AND_MEAN. |
| configs -= [ "//gn/standalone:win32_lean_and_mean" ] |
| } |
| } |
| } # host_toolchain |
| |
| if (use_custom_libcxx) { |
| config("libunwind_config") { |
| defines = [ "_LIBUNWIND_IS_NATIVE_ONLY" ] |
| cflags = [ |
| "-fstrict-aliasing", |
| "-fPIC", |
| |
| # ValueAsBitPattern in Unwind-EHABI.cpp is only used on Debug builds. |
| "-Wno-unused-function", |
| |
| # libunwind expects to be compiled with unwind tables so it can |
| # unwind its own frames. |
| "-funwind-tables", |
| ] |
| } |
| |
| source_set("libunwind") { |
| visibility = _buildtools_visibility |
| sources = [ |
| # C++ sources |
| "libunwind/src/Unwind-EHABI.cpp", |
| "libunwind/src/libunwind.cpp", |
| |
| # C sources |
| "libunwind/src/Unwind-sjlj.c", |
| "libunwind/src/UnwindLevel1-gcc-ext.c", |
| "libunwind/src/UnwindLevel1.c", |
| |
| # ASM sources |
| "libunwind/src/UnwindRegistersRestore.S", |
| "libunwind/src/UnwindRegistersSave.S", |
| ] |
| include_dirs = [ |
| "libunwind/include", |
| "libunwind/src", |
| ] |
| configs -= [ |
| "//gn/standalone:extra_warnings", |
| "//gn/standalone:no_exceptions", |
| "//gn/standalone:rtti_cflags", |
| |
| # When building with msan, libunwind itself triggers memory violations |
| # that causes msan to get stuck into an infinite loop. Just don't |
| # instrument libunwind itself. |
| "//gn/standalone/sanitizers:sanitizers_cflags", |
| ] |
| configs += [ |
| "//gn/standalone/sanitizers:sanitizer_options_link_helper", |
| |
| ":libunwind_config", |
| ] |
| } |
| |
| # Config applied to both libc++ and libc++abi targets below. |
| config("libc++config") { |
| visibility = _buildtools_visibility |
| cflags = [ "-fstrict-aliasing" ] |
| if (is_win) { |
| cflags += [ |
| # libc++ wants to redefine the macros WIN32_LEAN_AND_MEAN and |
| # _CRT_RAND_S in its implementation. |
| "-Wno-macro-redefined", |
| ] |
| } else { |
| cflags += [ "-fPIC" ] |
| } |
| configs = [ "//gn/standalone:c++20" ] |
| defines = [ "_LIBCPP_BUILDING_LIBRARY" ] |
| } |
| |
| source_set("libc++abi") { |
| visibility = _buildtools_visibility |
| |
| # Fuchsia builds don't link against any libraries that provide stack |
| # unwinding symbols, unlike Linux does with glibc (same applies for |
| # Android). Build and link against libunwind manually to get this |
| # functionality. |
| if (is_fuchsia || is_android) { |
| deps = [ ":libunwind" ] |
| } |
| |
| sources = [ |
| "libcxxabi/src/abort_message.cpp", |
| "libcxxabi/src/cxa_aux_runtime.cpp", |
| "libcxxabi/src/cxa_default_handlers.cpp", |
| "libcxxabi/src/cxa_exception.cpp", |
| "libcxxabi/src/cxa_exception_storage.cpp", |
| "libcxxabi/src/cxa_handlers.cpp", |
| |
| # This file is supposed to be used in fno-exception builds of |
| # libc++abi. We build lib++/libc++abi with exceptions enabled. |
| #"trunk/src/cxa_noexception.cpp", |
| "libcxxabi/src/cxa_personality.cpp", |
| "libcxxabi/src/cxa_vector.cpp", |
| "libcxxabi/src/cxa_virtual.cpp", |
| "libcxxabi/src/fallback_malloc.cpp", |
| "libcxxabi/src/private_typeinfo.cpp", |
| "libcxxabi/src/stdlib_exception.cpp", |
| "libcxxabi/src/stdlib_stdexcept.cpp", |
| "libcxxabi/src/stdlib_typeinfo.cpp", |
| ] |
| |
| if (!is_tsan) { |
| sources += [ "libcxxabi/src/cxa_guard.cpp" ] |
| } |
| |
| # See the comment in cxa_demangle_stub.cc for why we don't use LLVM's |
| # demangler on android. |
| sources += [ "libcxxabi/src/cxa_demangle.cpp" ] |
| |
| if (is_fuchsia || is_android || is_linux) { |
| sources += [ "libcxxabi/src/cxa_thread_atexit.cpp" ] |
| } |
| |
| defines = [ |
| "LIBCXXABI_SILENT_TERMINATE", |
| |
| # TODO(crbug.com/1298070) _LIBCPP_CONSTINIT is defined in a libc++ |
| # revision more recent than the one currently used in Perfetto/Chrome. |
| "_LIBCPP_CONSTINIT=constinit", |
| ] |
| |
| configs -= [ |
| "//gn/standalone:extra_warnings", |
| "//gn/standalone:no_exceptions", |
| "//gn/standalone:rtti_cflags", |
| "//gn/standalone:c++17", |
| ] |
| configs += [ |
| ":libc++config", |
| "//gn/standalone/sanitizers:sanitizer_options_link_helper", |
| ] |
| if (!custom_libcxx_is_static) { |
| configs -= [ "//gn/standalone:visibility_hidden" ] |
| } |
| |
| # libc++abi depends on libc++ internals. |
| include_dirs = [ "libcxx/src" ] |
| } |
| |
| # Explicitly set version macros to Windows 7 to prevent libc++ from adding a |
| # hard dependency on GetSystemTimePreciseAsFileTime, which was introduced in |
| # Windows 8. |
| config("libc++winver") { |
| defines = [ |
| "NTDDI_VERSION=NTDDI_WIN7", |
| "_WIN32_WINNT=_WIN32_WINNT_WIN7", |
| "WINVER=_WIN32_WINNT_WIN7", |
| ] |
| } |
| |
| if (custom_libcxx_is_static) { |
| libcxx_target_type = "source_set" |
| } else { |
| libcxx_target_type = "shared_library" |
| } |
| |
| target(libcxx_target_type, "libc++") { |
| visibility = _buildtools_visibility |
| visibility += [ "../gn/standalone/libc++:*" ] |
| |
| if (is_linux && !is_clang) { |
| libs = [ "atomic" ] |
| } |
| |
| inputs = [ |
| "libcxx_config/__assertion_handler", |
| "libcxx_config/__config_site", |
| ] |
| |
| sources = [ |
| "libcxx/src/algorithm.cpp", |
| "libcxx/src/any.cpp", |
| "libcxx/src/atomic.cpp", |
| "libcxx/src/barrier.cpp", |
| "libcxx/src/bind.cpp", |
| "libcxx/src/call_once.cpp", |
| "libcxx/src/charconv.cpp", |
| "libcxx/src/chrono.cpp", |
| "libcxx/src/condition_variable.cpp", |
| "libcxx/src/condition_variable_destructor.cpp", |
| "libcxx/src/error_category.cpp", |
| "libcxx/src/exception.cpp", |
| "libcxx/src/filesystem/directory_iterator.cpp", |
| "libcxx/src/filesystem/filesystem_error.cpp", |
| "libcxx/src/filesystem/operations.cpp", |
| "libcxx/src/filesystem/path.cpp", |
| "libcxx/src/functional.cpp", |
| "libcxx/src/future.cpp", |
| "libcxx/src/hash.cpp", |
| "libcxx/src/ios.cpp", |
| "libcxx/src/ios.instantiations.cpp", |
| "libcxx/src/iostream.cpp", |
| "libcxx/src/legacy_pointer_safety.cpp", |
| "libcxx/src/locale.cpp", |
| "libcxx/src/memory.cpp", |
| "libcxx/src/mutex.cpp", |
| "libcxx/src/mutex_destructor.cpp", |
| "libcxx/src/new_handler.cpp", |
| "libcxx/src/new_helpers.cpp", |
| "libcxx/src/optional.cpp", |
| "libcxx/src/random.cpp", |
| "libcxx/src/random_shuffle.cpp", |
| "libcxx/src/regex.cpp", |
| "libcxx/src/ryu/d2fixed.cpp", |
| "libcxx/src/ryu/d2s.cpp", |
| "libcxx/src/ryu/f2s.cpp", |
| "libcxx/src/shared_mutex.cpp", |
| "libcxx/src/stdexcept.cpp", |
| "libcxx/src/string.cpp", |
| "libcxx/src/strstream.cpp", |
| "libcxx/src/system_error.cpp", |
| "libcxx/src/thread.cpp", |
| "libcxx/src/typeinfo.cpp", |
| "libcxx/src/valarray.cpp", |
| "libcxx/src/variant.cpp", |
| "libcxx/src/vector.cpp", |
| "libcxx/src/verbose_abort.cpp", |
| ] |
| if (!using_sanitizer || is_ubsan) { |
| # In {a,t,m}san configurations, operator new and operator delete will be |
| # provided by the sanitizer runtime library. Since libc++ defines these |
| # symbols with weak linkage, and the *san runtime uses strong linkage, it |
| # should technically be OK to include this file, but it's removed to be |
| # explicit. |
| # We need using_sanitizer rather than is_asan || is_msan ... because in |
| # perfetto, when cross-compiling, we build only targets with sanitizers, |
| # but not host artifacts, and using_sanitizer is only true for the |
| # target toolchain, while is_asan is globally true on all toolchains. |
| # However, ubsan standalone does not provide operator new/delete, so we |
| # need to include new.cpp for ubsan builds. |
| sources += [ "libcxx/src/new.cpp" ] |
| } |
| |
| include_dirs = [ "libcxx/src" ] |
| if (is_win) { |
| sources += [ |
| "libcxx/src/support/win32/locale_win32.cpp", |
| "libcxx/src/support/win32/support.cpp", |
| "libcxx/src/support/win32/thread_win32.cpp", |
| ] |
| configs += [ ":libc++winver" ] |
| } |
| configs -= [ |
| "//gn/standalone:extra_warnings", |
| "//gn/standalone:no_exceptions", |
| "//gn/standalone:rtti_cflags", |
| "//gn/standalone:c++17", |
| ] |
| if ((is_android || is_mac) && !custom_libcxx_is_static) { |
| # Use libc++_perfetto to avoid conflicting with system libc++ |
| output_name = "libc++_perfettto" |
| } |
| configs += [ |
| ":libc++config", |
| "//gn/standalone/sanitizers:sanitizer_options_link_helper", |
| ] |
| if (!custom_libcxx_is_static) { |
| configs -= [ "//gn/standalone:visibility_hidden" ] |
| } |
| |
| defines = [] |
| if (custom_libcxx_is_static) { |
| if (is_mac && is_clang) { |
| # We want operator new/delete to be private on Mac, but these functions |
| # are implicitly created by the compiler for each translation unit, as |
| # specified in the C++ spec 3.7.4p2, which makes them always have |
| # default visibility. This option is needed to force hidden visibility |
| # since -fvisibility=hidden doesn't have the desired effect. |
| cflags = [ "-fvisibility-global-new-delete-hidden" ] |
| } else { |
| defines += [ |
| # This resets the visibility to default only for the various |
| # flavors of operator new and operator delete. These symbols |
| # are weak and get overriden by Chromium-provided ones, but if |
| # these symbols had hidden visibility, this would make the |
| # Chromium symbols hidden too because elf visibility rules |
| # require that linkers use the least visible form when merging, |
| # and if this is hidden, then when we merge it with tcmalloc's |
| # operator new, hidden visibility would win. However, tcmalloc |
| # needs a visible operator new to also override operator new |
| # references from system libraries. |
| # TODO(lld): Ask lld for a --force-public-visibility flag or |
| # similar to that overrides the default elf merging rules, and |
| # make tcmalloc's gn config pass that to all its dependencies, |
| # then remove this override here. |
| "_LIBCPP_OVERRIDABLE_FUNC_VIS=__attribute__((__visibility__(\"default\")))", |
| ] |
| } |
| } |
| if (!is_mac && using_sanitizer && (is_asan || is_tsan || is_msan)) { |
| # In {a,t,m}san configurations, operator new and operator delete will be |
| # provided by the sanitizer runtime library. Since libc++ defines these |
| # symbols with weak linkage, and the *san runtime uses strong linkage, it |
| # should technically be OK to omit this, but it's added to be explicit. |
| defines += [ "_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS" ] |
| } |
| |
| if (!is_win) { |
| defines += [ "LIBCXX_BUILDING_LIBCXXABI" ] |
| deps = [ ":libc++abi" ] |
| } |
| } |
| } # if (use_custom_libcxx) |
| |
| config("benchmark_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ "benchmark/include" ] |
| configs = [ ":test_warning_suppressions" ] |
| } |
| |
| source_set("benchmark") { |
| visibility = _buildtools_visibility |
| testonly = true |
| sources = [ |
| "benchmark/include/benchmark/benchmark.h", |
| "benchmark/src/arraysize.h", |
| "benchmark/src/benchmark.cc", |
| "benchmark/src/benchmark_api_internal.cc", |
| "benchmark/src/benchmark_api_internal.h", |
| "benchmark/src/benchmark_name.cc", |
| "benchmark/src/benchmark_register.cc", |
| "benchmark/src/benchmark_register.h", |
| "benchmark/src/benchmark_runner.cc", |
| "benchmark/src/benchmark_runner.h", |
| "benchmark/src/check.h", |
| "benchmark/src/colorprint.cc", |
| "benchmark/src/colorprint.h", |
| "benchmark/src/commandlineflags.cc", |
| "benchmark/src/commandlineflags.h", |
| "benchmark/src/complexity.cc", |
| "benchmark/src/complexity.h", |
| "benchmark/src/console_reporter.cc", |
| "benchmark/src/counter.cc", |
| "benchmark/src/counter.h", |
| "benchmark/src/csv_reporter.cc", |
| "benchmark/src/cycleclock.h", |
| "benchmark/src/internal_macros.h", |
| "benchmark/src/json_reporter.cc", |
| "benchmark/src/log.h", |
| "benchmark/src/mutex.h", |
| "benchmark/src/perf_counters.cc", |
| "benchmark/src/perf_counters.h", |
| "benchmark/src/re.h", |
| "benchmark/src/reporter.cc", |
| "benchmark/src/sleep.cc", |
| "benchmark/src/sleep.h", |
| "benchmark/src/statistics.cc", |
| "benchmark/src/statistics.h", |
| "benchmark/src/string_util.cc", |
| "benchmark/src/string_util.h", |
| "benchmark/src/sysinfo.cc", |
| "benchmark/src/thread_manager.h", |
| "benchmark/src/thread_timer.h", |
| "benchmark/src/timers.cc", |
| "benchmark/src/timers.h", |
| ] |
| defines = [ "HAVE_POSIX_REGEX" ] |
| public_configs = [ ":benchmark_config" ] |
| all_dependent_configs = [ ":benchmark_config" ] |
| if (!is_win) { |
| cflags = [ "-Wno-deprecated-declarations" ] |
| } |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| # On Linux/Android use libbacktrace in debug builds for better stacktraces. |
| if (is_linux || is_android) { |
| config("libbacktrace_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ |
| "libbacktrace_config", |
| "libbacktrace", |
| ] |
| cflags = [ |
| # We force include this config file because "config.h" is too generic as a |
| # file name and on some platforms #include "config.h" ends up colliding |
| # importing some other project's config.h. |
| "-include", |
| rebase_path("libbacktrace_config/config.h", root_build_dir), |
| ] |
| } |
| |
| source_set("libbacktrace") { |
| visibility = _buildtools_visibility |
| sources = [ |
| "libbacktrace/dwarf.c", |
| "libbacktrace/elf.c", |
| "libbacktrace/fileline.c", |
| "libbacktrace/mmap.c", |
| "libbacktrace/mmapio.c", |
| "libbacktrace/posix.c", |
| "libbacktrace/sort.c", |
| "libbacktrace/state.c", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":libbacktrace_config" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| } |
| |
| config("sqlite_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ "sqlite" ] |
| cflags = [ |
| "-DSQLITE_THREADSAFE=0", |
| "-DSQLITE_DEFAULT_MEMSTATUS=0", |
| "-DSQLITE_LIKE_DOESNT_MATCH_BLOBS", |
| "-DSQLITE_OMIT_DEPRECATED", |
| "-DSQLITE_OMIT_SHARED_CACHE", |
| "-DHAVE_USLEEP", |
| "-DHAVE_UTIME", |
| "-DSQLITE_BYTEORDER=1234", |
| "-DSQLITE_DEFAULT_AUTOVACUUM=0", |
| "-DSQLITE_DEFAULT_MMAP_SIZE=0", |
| "-DSQLITE_CORE", |
| "-DSQLITE_TEMP_STORE=3", |
| "-DSQLITE_OMIT_LOAD_EXTENSION", |
| "-DSQLITE_OMIT_RANDOMNESS", |
| "-DSQLITE_OMIT_AUTOINIT", |
| "-DSQLITE_ENABLE_JSON1", |
| "-DSQLITE_ENABLE_MATH_FUNCTIONS", |
| ] |
| if (is_clang && is_win) { |
| # SQLite uses __int64 which clang complains about unless |
| # we specify this flag. |
| cflags += [ "-Wno-language-extension-token" ] |
| } |
| } |
| |
| source_set("sqlite") { |
| visibility = _buildtools_visibility |
| if (perfetto_use_system_sqlite) { |
| # Use the system sqlite library instead of the hermetic one. |
| libs = [ "sqlite3" ] |
| } else { |
| sources = [ |
| "sqlite/sqlite3.c", |
| "sqlite/sqlite3.h", |
| "sqlite/sqlite3ext.h", |
| "sqlite_src/ext/misc/percentile.c", |
| ] |
| } |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":sqlite_config" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| source_set("lzma") { |
| visibility = _buildtools_visibility |
| defines = [ "_7ZIP_ST" ] |
| sources = [ |
| "lzma/C/7zAlloc.c", |
| "lzma/C/7zArcIn.c", |
| "lzma/C/7zBuf.c", |
| "lzma/C/7zBuf2.c", |
| "lzma/C/7zCrc.c", |
| "lzma/C/7zCrcOpt.c", |
| "lzma/C/7zDec.c", |
| "lzma/C/7zFile.c", |
| "lzma/C/7zStream.c", |
| "lzma/C/Aes.c", |
| "lzma/C/AesOpt.c", |
| "lzma/C/Alloc.c", |
| "lzma/C/Bcj2.c", |
| "lzma/C/Bra.c", |
| "lzma/C/Bra86.c", |
| "lzma/C/BraIA64.c", |
| "lzma/C/CpuArch.c", |
| "lzma/C/Delta.c", |
| "lzma/C/LzFind.c", |
| "lzma/C/Lzma2Dec.c", |
| "lzma/C/Lzma2Enc.c", |
| "lzma/C/Lzma86Dec.c", |
| "lzma/C/Lzma86Enc.c", |
| "lzma/C/LzmaDec.c", |
| "lzma/C/LzmaEnc.c", |
| "lzma/C/LzmaLib.c", |
| "lzma/C/Ppmd7.c", |
| "lzma/C/Ppmd7Dec.c", |
| "lzma/C/Ppmd7Enc.c", |
| "lzma/C/Sha256.c", |
| "lzma/C/Sort.c", |
| "lzma/C/Xz.c", |
| "lzma/C/XzCrc64.c", |
| "lzma/C/XzCrc64Opt.c", |
| "lzma/C/XzDec.c", |
| "lzma/C/XzEnc.c", |
| "lzma/C/XzIn.c", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| cflags = [ |
| "-Wno-empty-body", |
| "-Wno-enum-conversion", |
| ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| source_set("zlib") { |
| visibility = _buildtools_visibility |
| sources = [ |
| "zlib/adler32.c", |
| "zlib/chromeconf.h", |
| "zlib/compress.c", |
| "zlib/contrib/optimizations/insert_string.h", |
| "zlib/cpu_features.c", |
| "zlib/cpu_features.h", |
| "zlib/crc32.c", |
| "zlib/crc32.h", |
| "zlib/deflate.c", |
| "zlib/deflate.h", |
| "zlib/gzclose.c", |
| "zlib/gzguts.h", |
| "zlib/gzlib.c", |
| "zlib/gzread.c", |
| "zlib/gzwrite.c", |
| "zlib/infback.c", |
| "zlib/inffast.c", |
| "zlib/inffast.h", |
| "zlib/inffixed.h", |
| "zlib/inflate.c", |
| "zlib/inflate.h", |
| "zlib/inftrees.c", |
| "zlib/inftrees.h", |
| "zlib/trees.c", |
| "zlib/trees.h", |
| "zlib/uncompr.c", |
| "zlib/zconf.h", |
| "zlib/zlib.h", |
| "zlib/zutil.c", |
| "zlib/zutil.h", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":zlib_config" ] |
| deps = [ "//gn:default_deps" ] |
| |
| if (is_win) { |
| defines = [ "X86_WINDOWS" ] |
| } |
| |
| # TODO(primiano): look into ADLER32_SIMD_SSSE3 and other SIMD optimizations |
| # (from chromium's third_party/zlib/BUILD.gn). |
| } |
| |
| config("zlib_config") { |
| visibility = _buildtools_visibility |
| defines = [ |
| "ZLIB_IMPLEMENTATION", |
| "CHROMIUM_ZLIB_NO_CHROMECONF", |
| ] |
| cflags = [ |
| # Using -isystem instead of include_dirs (-I), so we don't need to suppress |
| # warnings coming from third-party headers. Doing so would mask warnings in |
| # our own code. |
| perfetto_isystem_cflag, |
| rebase_path("zlib", root_build_dir), |
| ] |
| if (is_clang) { |
| cflags += [ |
| "-Wno-unknown-warning-option", |
| "-Wno-deprecated-non-prototype", |
| "-Wno-macro-redefined", |
| ] |
| } |
| } |
| |
| source_set("zstd") { |
| visibility = _buildtools_visibility |
| sources = [ |
| "zstd/lib/common/allocations.h", |
| "zstd/lib/common/bits.h", |
| "zstd/lib/common/bitstream.h", |
| "zstd/lib/common/compiler.h", |
| "zstd/lib/common/cpu.h", |
| "zstd/lib/common/debug.c", |
| "zstd/lib/common/debug.h", |
| "zstd/lib/common/entropy_common.c", |
| "zstd/lib/common/error_private.c", |
| "zstd/lib/common/error_private.h", |
| "zstd/lib/common/fse.h", |
| "zstd/lib/common/fse_decompress.c", |
| "zstd/lib/common/huf.h", |
| "zstd/lib/common/mem.h", |
| "zstd/lib/common/pool.c", |
| "zstd/lib/common/pool.h", |
| "zstd/lib/common/portability_macros.h", |
| "zstd/lib/common/threading.c", |
| "zstd/lib/common/threading.h", |
| "zstd/lib/common/xxhash.c", |
| "zstd/lib/common/xxhash.h", |
| "zstd/lib/common/zstd_common.c", |
| "zstd/lib/common/zstd_deps.h", |
| "zstd/lib/common/zstd_internal.h", |
| "zstd/lib/common/zstd_trace.h", |
| "zstd/lib/compress/clevels.h", |
| "zstd/lib/compress/fse_compress.c", |
| "zstd/lib/compress/hist.c", |
| "zstd/lib/compress/hist.h", |
| "zstd/lib/compress/huf_compress.c", |
| "zstd/lib/compress/zstd_compress.c", |
| "zstd/lib/compress/zstd_compress_internal.h", |
| "zstd/lib/compress/zstd_compress_literals.c", |
| "zstd/lib/compress/zstd_compress_literals.h", |
| "zstd/lib/compress/zstd_compress_sequences.c", |
| "zstd/lib/compress/zstd_compress_sequences.h", |
| "zstd/lib/compress/zstd_compress_superblock.c", |
| "zstd/lib/compress/zstd_compress_superblock.h", |
| "zstd/lib/compress/zstd_cwksp.h", |
| "zstd/lib/compress/zstd_double_fast.c", |
| "zstd/lib/compress/zstd_double_fast.h", |
| "zstd/lib/compress/zstd_fast.c", |
| "zstd/lib/compress/zstd_fast.h", |
| "zstd/lib/compress/zstd_lazy.c", |
| "zstd/lib/compress/zstd_lazy.h", |
| "zstd/lib/compress/zstd_ldm.c", |
| "zstd/lib/compress/zstd_ldm.h", |
| "zstd/lib/compress/zstd_ldm_geartab.h", |
| "zstd/lib/compress/zstd_opt.c", |
| "zstd/lib/compress/zstd_opt.h", |
| "zstd/lib/compress/zstdmt_compress.c", |
| "zstd/lib/compress/zstdmt_compress.h", |
| "zstd/lib/decompress/huf_decompress.c", |
| "zstd/lib/decompress/zstd_ddict.c", |
| "zstd/lib/decompress/zstd_ddict.h", |
| "zstd/lib/decompress/zstd_decompress.c", |
| "zstd/lib/decompress/zstd_decompress_block.c", |
| "zstd/lib/decompress/zstd_decompress_block.h", |
| "zstd/lib/decompress/zstd_decompress_internal.h", |
| "zstd/lib/deprecated/zbuff.h", |
| "zstd/lib/deprecated/zbuff_common.c", |
| "zstd/lib/deprecated/zbuff_compress.c", |
| "zstd/lib/deprecated/zbuff_decompress.c", |
| "zstd/lib/dictBuilder/cover.c", |
| "zstd/lib/dictBuilder/cover.h", |
| "zstd/lib/dictBuilder/divsufsort.c", |
| "zstd/lib/dictBuilder/divsufsort.h", |
| "zstd/lib/dictBuilder/fastcover.c", |
| "zstd/lib/dictBuilder/zdict.c", |
| "zstd/lib/zdict.h", |
| "zstd/lib/zstd.h", |
| "zstd/lib/zstd_errors.h", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":zstd_config" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| config("zstd_config") { |
| visibility = _buildtools_visibility |
| cflags = [ |
| perfetto_isystem_cflag, |
| rebase_path("zstd", root_build_dir), |
| ] |
| if (current_cpu == "x64") { |
| defines = [ "ZSTD_DISABLE_ASM" ] |
| } |
| } |
| |
| # For standalone profiler builds. |
| source_set("libunwindstack") { |
| visibility = _buildtools_visibility |
| include_dirs = [ |
| "android-unwinding/libunwindstack/include", |
| "android-unwinding/libunwindstack", |
| "android-libbase/include", |
| "android-logging/liblog/include", |
| "android-libprocinfo/include", |
| "android-core/include", |
| "android-core/libcutils/include", |
| "bionic/libc/async_safe/include", |
| "bionic/libc/platform/", |
| "lzma/C", |
| "zstd/lib", |
| ] |
| deps = [ |
| ":lzma", |
| ":zlib", |
| ":zstd", |
| "//gn:default_deps", |
| ] |
| sources = [ |
| "android-libbase/file.cpp", |
| "android-libbase/stringprintf.cpp", |
| "android-libbase/strings.cpp", |
| "android-unwinding/libunwindstack/ArmExidx.cpp", |
| "android-unwinding/libunwindstack/Demangle.cpp", |
| "android-unwinding/libunwindstack/DwarfCfa.cpp", |
| "android-unwinding/libunwindstack/DwarfEhFrameWithHdr.cpp", |
| "android-unwinding/libunwindstack/DwarfMemory.cpp", |
| "android-unwinding/libunwindstack/DwarfOp.cpp", |
| "android-unwinding/libunwindstack/DwarfSection.cpp", |
| "android-unwinding/libunwindstack/Elf.cpp", |
| "android-unwinding/libunwindstack/ElfInterface.cpp", |
| "android-unwinding/libunwindstack/ElfInterfaceArm.cpp", |
| "android-unwinding/libunwindstack/Global.cpp", |
| "android-unwinding/libunwindstack/JitDebug.cpp", |
| "android-unwinding/libunwindstack/MapInfo.cpp", |
| "android-unwinding/libunwindstack/Maps.cpp", |
| "android-unwinding/libunwindstack/Memory.cpp", |
| "android-unwinding/libunwindstack/MemoryXz.cpp", |
| "android-unwinding/libunwindstack/Regs.cpp", |
| "android-unwinding/libunwindstack/RegsArm.cpp", |
| "android-unwinding/libunwindstack/RegsArm64.cpp", |
| "android-unwinding/libunwindstack/RegsRiscv64.cpp", |
| "android-unwinding/libunwindstack/RegsX86.cpp", |
| "android-unwinding/libunwindstack/RegsX86_64.cpp", |
| "android-unwinding/libunwindstack/Symbols.cpp", |
| "android-unwinding/libunwindstack/Unwinder.cpp", |
| ] |
| if (!is_android) { |
| sources += [ |
| "android-libbase/liblog_symbols.cpp", |
| "android-libbase/logging.cpp", |
| "android-libbase/threads.cpp", |
| "android-logging/liblog/logger_write.cpp", |
| "android-logging/liblog/properties.cpp", |
| "android-unwinding/libunwindstack/LogStdout.cpp", |
| "android-unwinding/libunwindstack/MemoryMte.cpp", |
| ] |
| } else { |
| sources += [ "android-unwinding/libunwindstack/LogAndroid.cpp" ] |
| } |
| if (current_cpu == "x86") { |
| sources += [ "android-unwinding/libunwindstack/AsmGetRegsX86.S" ] |
| } else if (current_cpu == "x64") { |
| sources += [ "android-unwinding/libunwindstack/AsmGetRegsX86_64.S" ] |
| } |
| configs -= [ |
| "//gn/standalone:extra_warnings", |
| "//gn/standalone:visibility_hidden", |
| ] |
| cflags = [ "-DFAKE_LOG_DEVICE=1" ] |
| if (!is_win) { |
| cflags += [ |
| "-Wno-deprecated-declarations", |
| "-Wno-vla-cxx-extension", |
| "-Wno-c99-designator", |
| ] |
| } |
| public_configs = [ ":libunwindstack_config" ] |
| } |
| |
| config("bionic_kernel_uapi_headers") { |
| visibility = _buildtools_visibility |
| cflags = [ |
| perfetto_isystem_cflag, |
| rebase_path("bionic/libc/kernel", root_build_dir), |
| ] |
| } |
| |
| config("jsoncpp_config") { |
| visibility = _buildtools_visibility |
| cflags = [ "-DJSON_USE_EXCEPTION=0" ] |
| cflags += [ |
| # Using -isystem instead of include_dirs (-I), so we don't need to suppress |
| # warnings coming from third-party headers. Doing so would mask warnings in |
| # our own code. |
| perfetto_isystem_cflag, |
| rebase_path("jsoncpp/include", root_build_dir), |
| ] |
| if (!is_win) { |
| cflags += [ "-Wno-deprecated-declarations" ] |
| } |
| if (is_clang && is_win) { |
| # JSON uses __int64 which clang complains about unless we specify this flag. |
| cflags += [ "-Wno-language-extension-token" ] |
| } |
| } |
| |
| source_set("jsoncpp") { |
| visibility = _buildtools_visibility |
| sources = [ |
| "jsoncpp/src/lib_json/json_reader.cpp", |
| "jsoncpp/src/lib_json/json_value.cpp", |
| "jsoncpp/src/lib_json/json_writer.cpp", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":jsoncpp_config" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| config("no_format_warning") { |
| if (!is_win || is_clang) { |
| cflags = [ "-Wno-format" ] |
| } |
| } |
| |
| if (enable_perfetto_trace_processor_mac_instruments) { |
| config("expat_public_config") { |
| defines = [ "XML_STATIC" ] |
| cflags = [ |
| # Using -isystem instead of include_dirs (-I), so we don't need to |
| # suppress warnings coming from third-party headers. Doing so would mask |
| # warnings in our own code. |
| perfetto_isystem_cflag, |
| rebase_path("expat/src/expat/lib", root_build_dir), |
| perfetto_isystem_cflag, |
| rebase_path("expat/include", root_build_dir), |
| ] |
| } |
| |
| source_set("expat") { |
| sources = [ |
| "expat/src/expat/lib/expat.h", |
| "expat/src/expat/lib/xmlparse.c", |
| "expat/src/expat/lib/xmlrole.c", |
| "expat/src/expat/lib/xmltok.c", |
| ] |
| |
| public_configs = [ ":expat_public_config" ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| configs += [ ":no_format_warning" ] |
| |
| defines = [ |
| "_LIB", |
| "HAVE_EXPAT_CONFIG_H", |
| ] |
| } |
| } |
| |
| config("linenoise_config") { |
| visibility = _buildtools_visibility |
| cflags = [ |
| # Using -isystem instead of include_dirs (-I), so we don't need to suppress |
| # warnings coming from third-party headers. Doing so would mask warnings in |
| # our own code. |
| perfetto_isystem_cflag, |
| rebase_path("linenoise", root_build_dir), |
| ] |
| } |
| |
| source_set("linenoise") { |
| visibility = _buildtools_visibility |
| sources = [ |
| "linenoise/linenoise.c", |
| "linenoise/linenoise.h", |
| ] |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":linenoise_config" ] |
| cflags = [ "-Wno-tautological-unsigned-zero-compare" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| if (use_libfuzzer) { |
| source_set("libfuzzer") { |
| visibility = _buildtools_visibility |
| configs -= [ |
| "//gn/standalone:extra_warnings", |
| "//gn/standalone/sanitizers:sanitizers_cflags", |
| ] |
| sources = [ |
| "libfuzzer/FuzzerCrossOver.cpp", |
| "libfuzzer/FuzzerDataFlowTrace.cpp", |
| "libfuzzer/FuzzerDriver.cpp", |
| "libfuzzer/FuzzerExtFunctionsDlsym.cpp", |
| "libfuzzer/FuzzerExtFunctionsWeak.cpp", |
| "libfuzzer/FuzzerExtFunctionsWindows.cpp", |
| "libfuzzer/FuzzerExtraCounters.cpp", |
| "libfuzzer/FuzzerFork.cpp", |
| "libfuzzer/FuzzerIO.cpp", |
| "libfuzzer/FuzzerIOPosix.cpp", |
| "libfuzzer/FuzzerIOWindows.cpp", |
| "libfuzzer/FuzzerLoop.cpp", |
| "libfuzzer/FuzzerMain.cpp", |
| "libfuzzer/FuzzerMerge.cpp", |
| "libfuzzer/FuzzerMutate.cpp", |
| "libfuzzer/FuzzerSHA1.cpp", |
| "libfuzzer/FuzzerTracePC.cpp", |
| "libfuzzer/FuzzerUtil.cpp", |
| "libfuzzer/FuzzerUtilDarwin.cpp", |
| "libfuzzer/FuzzerUtilFuchsia.cpp", |
| "libfuzzer/FuzzerUtilLinux.cpp", |
| "libfuzzer/FuzzerUtilPosix.cpp", |
| "libfuzzer/FuzzerUtilWindows.cpp", |
| ] |
| deps = [ "//gn:default_deps" ] |
| } |
| } |
| |
| config("llvm_demangle_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ "llvm-project/llvm/include" ] |
| } |
| |
| source_set("llvm_demangle") { |
| visibility = _buildtools_visibility |
| configs -= [ "//gn/standalone:extra_warnings" ] |
| public_configs = [ ":llvm_demangle_config" ] |
| sources = [ |
| "llvm-project/llvm/include/llvm/Demangle/Demangle.h", |
| "llvm-project/llvm/include/llvm/Demangle/DemangleConfig.h", |
| "llvm-project/llvm/include/llvm/Demangle/ItaniumDemangle.h", |
| "llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangle.h", |
| "llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h", |
| "llvm-project/llvm/include/llvm/Demangle/StringViewExtras.h", |
| "llvm-project/llvm/include/llvm/Demangle/Utility.h", |
| "llvm-project/llvm/lib/Demangle/DLangDemangle.cpp", |
| "llvm-project/llvm/lib/Demangle/Demangle.cpp", |
| "llvm-project/llvm/lib/Demangle/ItaniumDemangle.cpp", |
| "llvm-project/llvm/lib/Demangle/MicrosoftDemangle.cpp", |
| "llvm-project/llvm/lib/Demangle/MicrosoftDemangleNodes.cpp", |
| "llvm-project/llvm/lib/Demangle/RustDemangle.cpp", |
| ] |
| deps = [ "//gn:default_deps" ] |
| } |
| |
| if (enable_perfetto_grpc) { |
| config("grpc_boringssl_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ "grpc/src/third_party/boringssl-with-bazel/src/include" ] |
| if (is_gcc) { |
| cflags = [ "-Wno-stringop-overflow" ] |
| } |
| } |
| |
| config("grpc_upb_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ |
| "grpc/src/third_party/upb", |
| "grpc/src/src/core/ext/upb-generated", |
| "grpc/src/src/core/ext/upbdefs-generated", |
| ] |
| } |
| |
| config("grpc_re2_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ "grpc/src/third_party/re2" ] |
| } |
| |
| config("grpc_internal_config") { |
| visibility = _buildtools_visibility |
| include_dirs = [ |
| "grpc/src", |
| "grpc/src/include", |
| "grpc/src/src/core/ext/upb-gen", |
| "grpc/src/src/core/ext/upbdefs-gen", |
| "grpc/src/third_party/address_sorting/include", |
| "grpc/src/third_party/re2", |
| "grpc/src/third_party/upb", |
| "grpc/src/third_party/utf8_range", |
| "grpc/src/third_party/xxhash", |
| ] |
| cflags = [ "-DGRPC_ARES=0" ] |
| if (is_gcc) { |
| cflags += [ |
| "-Wno-attributes", |
| "-Wno-return-type", |
| "-Wno-trigraphs", |
| ] |
| } |
| } |
| |
| config("grpc_gen_config") { |
| cflags = [ |
| # Using -isystem instead of include_dirs (-I), so we don't need to |
| # suppress warnings coming from libprotobuf headers. Doing so would mask |
| # warnings in our own code. |
| perfetto_isystem_cflag, |
| rebase_path("grpc/src/include", root_build_dir), |
| perfetto_isystem_cflag, |
| rebase_path("grpc/src/third_party/abseil-cpp", root_build_dir), |
| ] |
| |
| # This issues appear in .grpc.pb.h files so we unfortunately need to leak |
| # the cflags outside of just compiling this code. |
| if (is_clang && !is_win) { |
| cflags += [ |
| "-Wno-weak-vtables", |
| "-Wno-suggest-destructor-override", |
| ] |
| } |
| } |
| |
| config("grpc_public_config") { |
| visibility = _buildtools_visibility |
| cflags = [ |
| perfetto_isystem_cflag, |
| rebase_path("grpc/src/include", root_build_dir), |
| ] |
| } |
| config("cpp_httplib_config") { |
| visibility = _buildtools_visibility |
| cflags = [ |
| perfetto_isystem_cflag, |
| rebase_path("cpp-httplib", root_build_dir), |
| ] |
| } |
| |
| source_set("cpp_httplib") { |
| visibility = _buildtools_visibility |
| sources = [ "cpp-httplib/httplib.h" ] |
| public_configs = [ ":cpp_httplib_config" ] |
| deps = [ "//gn:default_deps" ] |
| } |
| } |
| |
| if (enable_perfetto_etm_importer) { |
| config("open_csd_config") { |
| visibility = _buildtools_visibility |
| cflags = [ |
| # Using -isystem instead of include_dirs (-I), so we don't need to |
| # suppress warnings coming from third-party headers. Doing so would mask |
| # warnings in our own code. |
| perfetto_isystem_cflag, |
| rebase_path("open_csd/decoder/include", root_build_dir), |
| ] |
| defines = [ "ENABLE_LARGE_TRACE_SOURCES" ] |
| } |
| |
| source_set("open_csd") { |
| visibility = _buildtools_visibility |
| sources = [ |
| "open_csd/decoder/source/c_api/ocsd_c_api.cpp", |
| "open_csd/decoder/source/c_api/ocsd_c_api_custom_obj.cpp", |
| "open_csd/decoder/source/c_api/ocsd_c_api_custom_obj.h", |
| "open_csd/decoder/source/c_api/ocsd_c_api_obj.h", |
| "open_csd/decoder/source/ete/trc_cmp_cfg_ete.cpp", |
| "open_csd/decoder/source/etmv3/trc_cmp_cfg_etmv3.cpp", |
| "open_csd/decoder/source/etmv3/trc_pkt_decode_etmv3.cpp", |
| "open_csd/decoder/source/etmv3/trc_pkt_elem_etmv3.cpp", |
| "open_csd/decoder/source/etmv3/trc_pkt_proc_etmv3.cpp", |
| "open_csd/decoder/source/etmv3/trc_pkt_proc_etmv3_impl.cpp", |
| "open_csd/decoder/source/etmv3/trc_pkt_proc_etmv3_impl.h", |
| "open_csd/decoder/source/etmv4/trc_cmp_cfg_etmv4.cpp", |
| "open_csd/decoder/source/etmv4/trc_etmv4_stack_elem.cpp", |
| "open_csd/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp", |
| "open_csd/decoder/source/etmv4/trc_pkt_elem_etmv4i.cpp", |
| "open_csd/decoder/source/etmv4/trc_pkt_proc_etmv4i.cpp", |
| "open_csd/decoder/source/i_dec/trc_i_decode.cpp", |
| "open_csd/decoder/source/i_dec/trc_idec_arminst.cpp", |
| "open_csd/decoder/source/mem_acc/trc_mem_acc_base.cpp", |
| "open_csd/decoder/source/mem_acc/trc_mem_acc_bufptr.cpp", |
| "open_csd/decoder/source/mem_acc/trc_mem_acc_cache.cpp", |
| "open_csd/decoder/source/mem_acc/trc_mem_acc_cb.cpp", |
| "open_csd/decoder/source/mem_acc/trc_mem_acc_file.cpp", |
| "open_csd/decoder/source/mem_acc/trc_mem_acc_mapper.cpp", |
| "open_csd/decoder/source/ocsd_code_follower.cpp", |
| "open_csd/decoder/source/ocsd_dcd_tree.cpp", |
| "open_csd/decoder/source/ocsd_error.cpp", |
| "open_csd/decoder/source/ocsd_error_logger.cpp", |
| "open_csd/decoder/source/ocsd_gen_elem_list.cpp", |
| "open_csd/decoder/source/ocsd_gen_elem_stack.cpp", |
| "open_csd/decoder/source/ocsd_lib_dcd_register.cpp", |
| "open_csd/decoder/source/ocsd_msg_logger.cpp", |
| "open_csd/decoder/source/ocsd_version.cpp", |
| "open_csd/decoder/source/pkt_printers/gen_elem_printer.cpp", |
| "open_csd/decoder/source/pkt_printers/raw_frame_printer.cpp", |
| "open_csd/decoder/source/pkt_printers/trc_print_fact.cpp", |
| "open_csd/decoder/source/ptm/trc_cmp_cfg_ptm.cpp", |
| "open_csd/decoder/source/ptm/trc_pkt_decode_ptm.cpp", |
| "open_csd/decoder/source/ptm/trc_pkt_elem_ptm.cpp", |
| "open_csd/decoder/source/ptm/trc_pkt_proc_ptm.cpp", |
| "open_csd/decoder/source/stm/trc_pkt_decode_stm.cpp", |
| "open_csd/decoder/source/stm/trc_pkt_elem_stm.cpp", |
| "open_csd/decoder/source/stm/trc_pkt_proc_stm.cpp", |
| "open_csd/decoder/source/trc_component.cpp", |
| "open_csd/decoder/source/trc_core_arch_map.cpp", |
| "open_csd/decoder/source/trc_frame_deformatter.cpp", |
| "open_csd/decoder/source/trc_frame_deformatter_impl.h", |
| "open_csd/decoder/source/trc_gen_elem.cpp", |
| "open_csd/decoder/source/trc_printable_elem.cpp", |
| "open_csd/decoder/source/trc_ret_stack.cpp", |
| ] |
| |
| cflags = [ |
| "-Wno-switch", |
| "-Wno-deprecated-declarations", |
| ] |
| |
| configs -= [ |
| "//gn/standalone:extra_warnings", |
| "//gn/standalone:no_exceptions", |
| "//gn/standalone:rtti_cflags", |
| ] |
| include_dirs = [ "open_csd/decoder/include" ] |
| public_configs = [ ":open_csd_config" ] |
| } |
| } |