lvgl-bindings

lvgl-bindings — Automated C header parser & binding generator.

lvgl-bindings Automated binding generator parsing LVGL C headers into native CPython extensions, MicroPython usermods, and CircuitPython modules.

Live Pure-Python Device

Single Pipeline, Three Target Interpreters

Automated C header parser ensuring 100% API parity.
Generator Pipeline Architecture — single source of truth

📥 Input Source

LVGL C Headers (lvgl.h, lv_conf.h)
            │
            ▼
[ binding/gen_binding.py --target {mp,cp,cpython} ]

📤 Output Binding Trees

├── generated/lvgl_micropython.c
├── generated/lvgl_circuitpython.{c,h}
└── generated/lvgl_python.c (CPython/Pyodide)

Named in the spirit of gen_mpy.py from LVGL's original lv_binding_micropython generator — gen_binding.py is a ground-up, multi-target rewrite, not a fork, so it doesn't share that file's name.

Downstream Binding Consumers

lvgl-micropython

Consumes generated/lvgl_micropython.c for MicroPython MCU firmware builds.

lvgl-circuitpython

Consumes generated/lvgl_circuitpython.{c,h} for CircuitPython out-of-tree native extensions.

lvgl-python

Consumes generated/lvgl_python.c for CPython binary wheels and Pyodide WebAssembly packages.