Files
bun.sh/scripts/generate-perf-trace-events.sh
Jarred Sumner f3da1b80bc Use macOS signpost api for tracing (#14871)
Co-authored-by: Jarred-Sumner <Jarred-Sumner@users.noreply.github.com>
Co-authored-by: Don Isaac <donald.isaac@gmail.com>
Co-authored-by: DonIsaac <DonIsaac@users.noreply.github.com>
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2025-03-31 04:13:11 -07:00

31 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# This file is not run often, so we don't need to make it part of the build system.
# We do this because the event names have to be compile-time constants.
export TRACE_EVENTS=$(rg 'bun\.perf\.trace\("([^"]*)"\)' -t zig --json \
| jq -r 'select(.type == "match")' \
| jq -r '.data.submatches[].match.text' \
| cut -d'"' -f2 \
| sort \
| uniq)
echo "// Generated with scripts/generate-perf-trace-events.sh" > src/bun.js/bindings/generated_perf_trace_events.h
echo "// clang-format off" >> src/bun.js/bindings/generated_perf_trace_events.h
echo "#define FOR_EACH_TRACE_EVENT(macro) \\" >> src/bun.js/bindings/generated_perf_trace_events.h
i=0
for event in $TRACE_EVENTS; do
echo " macro($event, $((i++))) \\" >> src/bun.js/bindings/generated_perf_trace_events.h
done
echo " // end" >> src/bun.js/bindings/generated_perf_trace_events.h
echo "Generated src/bun.js/bindings/generated_perf_trace_events.h"
echo "// Generated with scripts/generate-perf-trace-events.sh" > src/generated_perf_trace_events.zig
echo "pub const PerfEvent = enum(i32) {" >> src/generated_perf_trace_events.zig
for event in $TRACE_EVENTS; do
echo " @\"$event\"," >> src/generated_perf_trace_events.zig
done
echo "};" >> src/generated_perf_trace_events.zig
echo "Generated src/generated_perf_trace_events.zig"