-
Notifications
You must be signed in to change notification settings - Fork 333
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1446 from cloudflare/jsnell/workerd-perfetto
Experimental perfetto support for workerd
- Loading branch information
Showing
16 changed files
with
480 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
# Copyright (C) 2019 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. | ||
|
||
# Noop function used to override rules we don't want to support in standalone. | ||
def _noop_override(**kwargs): | ||
pass | ||
|
||
PERFETTO_CONFIG = struct( | ||
# This is used to refer to deps within perfetto's BUILD files. | ||
# In standalone and bazel-based embedders use '//', because perfetto has its | ||
# own repository, and //xxx would be relative to @perfetto//xxx. | ||
# In Google internal builds, instead, this is set to //third_party/perfetto, | ||
# because perfetto doesn't have its own repository there. | ||
root = "//", | ||
|
||
# These variables map dependencies to perfetto third-party projects. This is | ||
# to allow perfetto embedders (e.g. gapid) and google internal builds to | ||
# override paths and target names to their own third_party. | ||
deps = struct( | ||
# Target exposing the build config header. It should be a valid | ||
# cc_library dependency as it will become a dependency of every | ||
# perfetto_cc_library target. It needs to expose a | ||
# "perfetto_build_flags.h" file that can be included via: | ||
# #include "perfetto_build_flags.h". | ||
build_config = ["//:build_config_hdr"], | ||
|
||
# Target exposing the PERFETTO_VERSION_STRING() and | ||
# PERFETTO_VERSION_SCM_REVISION() macros. This is overridden in google | ||
# internal builds. | ||
version_header = ["//:cc_perfetto_version_header"], | ||
|
||
# Target exposing platform-specific functionality for base. This is | ||
# overriden in Google internal builds. | ||
base_platform = ["//:perfetto_base_default_platform"], | ||
|
||
zlib = ["@perfetto_dep_zlib//:zlib"], | ||
jsoncpp = ["@perfetto_dep_jsoncpp//:jsoncpp"], | ||
linenoise = ["@perfetto_dep_linenoise//:linenoise"], | ||
sqlite = ["@perfetto_dep_sqlite//:sqlite"], | ||
sqlite_ext_percentile = ["@perfetto_dep_sqlite_src//:percentile_ext"], | ||
protoc = ["@com_google_protobuf//:protoc"], | ||
protoc_lib = ["@com_google_protobuf//:protoc_lib"], | ||
protobuf_lite = ["@com_google_protobuf//:protobuf_lite"], | ||
protobuf_full = ["@com_google_protobuf//:protobuf"], | ||
protobuf_descriptor_proto = ["@com_google_protobuf//:descriptor_proto"], | ||
|
||
# The Python targets are empty on the standalone build because we assume | ||
# any relevant deps are installed on the system or are not applicable. | ||
protobuf_py = [], | ||
pandas_py = [], | ||
tp_vendor_py = [], | ||
|
||
# There are multiple configurations for the function name demangling | ||
# logic in trace processor: | ||
# (1) The following defaults include a subset of demangling sources | ||
# from llvm-project. This is the most complete implementation. | ||
# (2) You can avoid the llvm dependency by setting "llvm_demangle = []" | ||
# here and PERFETTO_LLVM_DEMANGLE to false in your | ||
# perfetto_build_flags.h. Then the implementation will use a | ||
# demangler from the c++ runtime, which will most likely handle | ||
# only itanium mangling, and is unavailable on some platforms (e.g. | ||
# Windows, where it becomes a nop). | ||
# (3) You can override the whole demangle_wrapper below, and provide | ||
# your own demangling implementation. | ||
demangle_wrapper = [ "//:src_trace_processor_demangle" ], | ||
llvm_demangle = ["@perfetto_dep_llvm_demangle//:llvm_demangle"], | ||
), | ||
|
||
# This struct allows embedders to customize the cc_opts for Perfetto | ||
# 3rd party dependencies. They only have an effect if the dependencies are | ||
# initialized with the Perfetto build files (i.e. via perfetto_deps()). | ||
deps_copts = struct( | ||
zlib = [], | ||
jsoncpp = [], | ||
linenoise = [], | ||
sqlite = [], | ||
llvm_demangle = [], | ||
), | ||
|
||
# Allow Bazel embedders to change the visibility of "public" targets. | ||
# This variable has been introduced to limit the change to Bazel and avoid | ||
# making the targets fully public in the google internal tree. | ||
public_visibility = [ | ||
"//visibility:public", | ||
], | ||
|
||
# Allow Bazel embedders to change the visibility of the proto targets. | ||
# This variable has been introduced to limit the change to Bazel and avoid | ||
# making the targets public in the google internal tree. | ||
proto_library_visibility = "//visibility:private", | ||
|
||
# Allow Bazel embedders to change the visibility of the Go protos. | ||
# Go protos have all sorts of strange behaviour in Google3 so need special | ||
# handling as the rules for other languages do not work for Go. | ||
go_proto_library_visibility = "//visibility:private", | ||
|
||
# This struct allows the embedder to customize copts and other args passed | ||
# to rules like cc_binary. Prefixed rules (e.g. perfetto_cc_binary) will | ||
# look into this struct before falling back on native.cc_binary(). | ||
# This field is completely optional, the embedder can omit the whole | ||
# |rule_overrides| or invidivual keys. They are assigned to None or noop | ||
# actions here just for documentation purposes. | ||
rule_overrides = struct( | ||
proto_library = None, | ||
|
||
cc_binary = None, | ||
cc_library = None, | ||
cc_proto_library = None, | ||
|
||
# Supporting java rules pulls in the JDK and generally is not something | ||
# we need for most embedders. | ||
java_proto_library = _noop_override, | ||
java_lite_proto_library = _noop_override, | ||
|
||
py_binary = None, | ||
py_library = None, | ||
py_proto_library = None, | ||
|
||
go_proto_library = None, | ||
|
||
jspb_proto_library = None, | ||
), | ||
|
||
# The default copts which we use to compile C++ code. | ||
default_copts = [ | ||
"-std=c++17", | ||
] | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
17 changes: 17 additions & 0 deletions
17
patches/perfetto/0001-Rename-ui-build-to-ui-build.sh-to-allow-bazel-build-.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
From ce2bc7a2ee9ce1a52f2c17b3b9a83329b58bf2f7 Mon Sep 17 00:00:00 2001 | ||
From: James M Snell <[email protected]> | ||
Date: Tue, 5 Dec 2023 08:04:46 -0800 | ||
Subject: [PATCH] Rename ui/build to ui/build.sh to allow bazel build to work | ||
|
||
--- | ||
ui/{build => build.sh} | 0 | ||
1 file changed, 0 insertions(+), 0 deletions(-) | ||
rename ui/{build => build.sh} (100%) | ||
|
||
diff --git a/ui/build b/ui/build.sh | ||
similarity index 100% | ||
rename from ui/build | ||
rename to ui/build.sh | ||
-- | ||
2.40.1 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.