diff --git a/packages/react-native/ReactCommon/cxxreact/TraceSection.h b/packages/react-native/ReactCommon/cxxreact/TraceSection.h index 54de4fce40a..8b5cf045dd1 100644 --- a/packages/react-native/ReactCommon/cxxreact/TraceSection.h +++ b/packages/react-native/ReactCommon/cxxreact/TraceSection.h @@ -12,7 +12,23 @@ #endif #ifdef WITH_PERFETTO + +// clang-format off +// Windows.h macro fail, 'interface' clashes with a function in perfetto.h +#ifdef interface +#pragma push_macro("interface") +#undef interface +#define __RCT_INTERFACE_PUSHED +#endif + #include + +#ifdef __RCT_INTERFACE_PUSHED +#undef __RCT_INTERFACE_PUSHED +#pragma pop_macro("interface") +#endif +// clang-format on + #include #endif diff --git a/packages/react-native/ReactCommon/reactperflogger/reactperflogger/FuseboxPerfettoDataSource.cpp b/packages/react-native/ReactCommon/reactperflogger/reactperflogger/FuseboxPerfettoDataSource.cpp index b2860e61887..516a703b2b0 100644 --- a/packages/react-native/ReactCommon/reactperflogger/reactperflogger/FuseboxPerfettoDataSource.cpp +++ b/packages/react-native/ReactCommon/reactperflogger/reactperflogger/FuseboxPerfettoDataSource.cpp @@ -7,7 +7,9 @@ #ifdef WITH_PERFETTO +#if defined(__ANDROID__) #include +#endif // __ANDROID__ #include #include #include @@ -27,6 +29,7 @@ const int SAMPLING_HZ = 1000; using perfetto::TrackEvent; +#if defined(__ANDROID__) std::string getApplicationId() { pid_t pid = getpid(); char path[64] = {0}; @@ -40,6 +43,7 @@ std::string getApplicationId() { } return ""; } +#endif // __ANDROID__ uint64_t hermesToPerfettoTime(int64_t hermesTs) { return (hermesTs / 1000); @@ -130,6 +134,7 @@ void FuseboxPerfettoDataSource::OnStop(const StopArgs& a) { std::string trace = stream.str(); logHermesProfileToFusebox(trace); +#if defined(__ANDROID__) // XXX: Adjust the package ID. Writing to other global tmp directories // seems to fail. std::string appId = getApplicationId(); @@ -137,6 +142,7 @@ void FuseboxPerfettoDataSource::OnStop(const StopArgs& a) { ANDROID_LOG_INFO, "FuseboxTracer", "Application ID: %s", appId.c_str()); FuseboxTracer::getFuseboxTracer().stopTracingAndWriteToFile( "/data/data/" + appId + "/cache/hermes_trace.json"); +#endif // __ANDROID__ } } // namespace facebook::react