Skip to content

Build the Fantom tester with platform build modes - #59975

Open
javache wants to merge 1 commit into
react:mainfrom
javache:export-D131472773
Open

javache wants to merge 1 commit into
react:mainfrom
javache:export-D131472773

Conversation

@javache

@javache javache commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Summary:
Build the Fantom native tester and Hermes compiler with the standard Linux and macOS build modes instead of the previous per-platform mode set, matching how other internal test runners build their native binaries.

  • Linux uses the dev-nosan, opt, dev-asan, dev-tsan, dev-cov and opt-cov modes, linked statically because the runner copies the binaries out of the build output directory.
  • macOS uses the macOS platform mode plus separate production, sanitizer and coverage modes. Each mode file is now passed as its own argument; joining them into one space-separated argument made Buck fail to resolve the flag file. The macOS modes do not set the dev/opt build mode constraint, so the runner sets it explicitly; otherwise optimized macOS builds were compiled with REACT_NATIVE_DEBUG.
  • Optimized builds also apply the Hermes opt mode.
  • The coverage modes already set the dev/opt build mode, so the explicit build mode modifier is no longer needed.
  • C++ coverage is merged with the LLVM tools that match the compiler used by the new modes.
  • ReactHost installs the TurboModule binding through the runtime-aware provider overload, since the macOS build treats the deprecated overload as an error.
  • This drops Windows support: there is no standard Windows build mode to replace the previous one, so the runner now throws on Windows.

Changelog: [Internal]

Differential Revision: D131472773

Summary:
Build the Fantom native tester and Hermes compiler with the standard Linux and macOS build modes instead of the previous per-platform mode set, matching how other internal test runners build their native binaries.

- Linux uses the `dev-nosan`, `opt`, `dev-asan`, `dev-tsan`, `dev-cov` and `opt-cov` modes, linked statically because the runner copies the binaries out of the build output directory.
- macOS uses the macOS platform mode plus separate production, sanitizer and coverage modes. Each mode file is now passed as its own argument; joining them into one space-separated argument made Buck fail to resolve the flag file. The macOS modes do not set the dev/opt build mode constraint, so the runner sets it explicitly; otherwise optimized macOS builds were compiled with `REACT_NATIVE_DEBUG`.
- Optimized builds also apply the Hermes opt mode.
- The coverage modes already set the dev/opt build mode, so the explicit build mode modifier is no longer needed.
- C++ coverage is merged with the LLVM tools that match the compiler used by the new modes.
- `ReactHost` installs the TurboModule binding through the runtime-aware provider overload, since the macOS build treats the deprecated overload as an error.
- This drops Windows support: there is no standard Windows build mode to replace the previous one, so the runner now throws on Windows.

Changelog: [Internal]

Differential Revision: D131472773
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Nov 12, 2026
@meta-codesync

meta-codesync Bot commented Nov 12, 2026

Copy link
Copy Markdown

@javache has exported this pull request. If you are a Meta employee, you can view the originating Diff in D131472773.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant