tree: 768b488ffbff4ae10e62f1e985b62e8e1a791e6f [path history] [tgz]
  1. templates/
  2. .gitignore
  3. __init__.py
  4. aosp.toml
  5. build-android-turnip.sh
  6. build-fuchsia-turnip.sh
  7. fuchsia.toml
  8. generate_python_build.py
  9. lint.sh
  10. meson2python.py
  11. meson_build_state.py
  12. meson_common.py
  13. meson_impl.py
  14. meson_to_hermetic.py
  15. README.md
  16. requirements.txt
  17. setup-venv.sh
meson_to_hermetic/README.md

meson_to_hermetic: automated build system generation

Goal: ease the integration of Mesa as a component inside larger projects like Android (AOSP).

How: parse the meson build tree into a python build script, which can be used together with configuration and options to generate other kinds of build scripts.

Status: useful, but rough. Supports Android (Soong) and Fuchsia (Bazel).

Python Dependencies

  • Python 3.11+
    • See requirements.txt
    • Ruff

Environment Setup

  1. Open a terminal within mesa3d/meson_to_hermetic
  2. Run the setup-venv.sh file to automatically create a python3 venv and install dependencies.

Linting the code

  1. Before pushing code for review; run lint.sh to automatically lint all of the python scripts.
    • IMPORTANT: Run the lint.sh from the meson_to_hermetic directory.

1 - Generate python from meson

generate_python_build.py: reads meson.build files (following subdir() commands) and uses meson2python to transform the meson into python.

meson2python.py: passes meson.build input and the meson grammar to python lark to perform lexing and parsing; then transforms the parse tree into valid python. The result is one large python script.

2 - Generate Android.bp from python

meson_android.py defines the meson API entry points and emits Android.bp build constructs. A config file is read to determine some build parameters such as cpu_family (similar to meson's cross file).

Limitations

Meson build options must be set by modifying the defaults in meson_options.txt.