67 lines
1.5 KiB
Markdown
67 lines
1.5 KiB
Markdown
# LVGL Rust to WASM
|
|
|
|
Example of LVGL in Rust compiling to WASM. The same project can run natively and in the browser.
|
|
|
|
Access the web live version [here](https://rafaelcaricio.github.io/lvgl-rs-wasm).
|
|
|
|
![Project Running Natively](docs/images/native.png)
|
|
|
|
## Setup
|
|
|
|
- Install Emscripten
|
|
```
|
|
# Get the emsdk repo
|
|
git clone https://github.com/emscripten-core/emsdk.git
|
|
|
|
# Enter that directory
|
|
cd emsdk
|
|
|
|
# Download and install the latest SDK tools.
|
|
./emsdk install latest
|
|
|
|
# Make the "latest" SDK "active" for the current user. (writes .emscripten file)
|
|
./emsdk activate latest
|
|
|
|
# Activate PATH and other environment variables in the current terminal
|
|
source ./emsdk_env.sh
|
|
```
|
|
https://emscripten.org/docs/getting_started/downloads.html
|
|
|
|
- Compile SDL2:
|
|
```
|
|
$ embuilder.py build sdl2
|
|
```
|
|
|
|
## Compiling
|
|
|
|
Compile the Web version:
|
|
```
|
|
make web
|
|
```
|
|
|
|
Compile the native version:
|
|
```
|
|
make native
|
|
```
|
|
|
|
## Running
|
|
|
|
To access the web version you need to serve the static files as web pages locally. We use `python3` for that. If you
|
|
have [Python 3](https://www.python.org/downloads/) installed, you can run:
|
|
```
|
|
make serve
|
|
```
|
|
|
|
Now you can access locally the project running at http://localhost:8000/lvgl_example.html .
|
|
|
|
For running natively, you can do:
|
|
```
|
|
cargo +nightly run --release
|
|
```
|
|
|
|
|
|
# References
|
|
- https://gregkatz.github.io/2017-05-20-rust-emscripten.html
|
|
- https://dev.to/kibebr/i-made-a-game-in-c-run-in-a-web-browser-and-so-can-you-4deb
|
|
- https://puddleofcode.com/story/definitive-guide-to-rust-sdl2-and-emscriptem
|
|
|