Configuration Reference#
pyodide-build reads configuration from multiple sources. This page documents all available settings.
Precedence#
Configuration is resolved in this order (highest priority first):
Environment variables
pyproject.tomlunder[tool.pyodide.build]Cross-build environment defaults
Built-in defaults
pyproject.toml#
Add configuration under [tool.pyodide.build]:
[tool.pyodide.build]
cflags = "-O2"
cxxflags = "-O2"
ldflags = "-s SIDE_MODULE=1 -O2"
xbuildenv_path = "/path/to/xbuildenv"
User-overridable settings#
These keys can be set in pyproject.toml under [tool.pyodide.build] or via environment variables:
pyproject.toml key |
Env variable |
Description |
|---|---|---|
|
|
C compiler flags |
|
|
C++ compiler flags |
|
|
Linker flags |
|
|
Rust compiler flags |
|
|
Required Rust nightly toolchain |
|
|
Path to the Meson cross file |
|
|
Path to the cross-build environment |
|
|
Space-separated PEP 508 build requirements to ignore |
|
|
Skip Emscripten version compatibility check ( |
|
|
URL override for the cross-build environment archive |
|
|
Use the legacy |
Run pyodide config list to see all available variables and their current values.
Environment variables#
Querying configuration#
Use pyodide config to inspect active values:
# List all settings
pyodide config list
# Get a specific value
pyodide config get cflags
pyodide config get meson_cross_file
pyodide config get rust_toolchain
See the CLI Reference for details.
Flags automatically filtered#
pyodide-build’s compiler wrapper automatically removes flags that are incompatible with Emscripten/WebAssembly. The following is a non-exhaustive list; if you find a flag that is incorrectly filtered or should be filtered but is not, please open an issue.
Filtered flag |
Reason |
|---|---|
|
Threading is not supported |
|
macOS-specific linker flags |
|
x86 SIMD flags (not applicable to Wasm) |
|
GCC-specific flag not supported by Clang |
|
Not supported in Emscripten |
|
System library paths (not valid for cross-compilation) |
These flags are stripped silently — you do not need to remove them from your build scripts.