-
Notifications
You must be signed in to change notification settings - Fork 0
Building from Source
GuppyScreen uses a plain Makefile. There are three practical targets: the SDL simulator (x86
desktop), the MIPS/mipsel build (the Ender-3 V3 KE hardware), and an aarch64 build (other
boards; produced by CI). Dependencies are git submodules plus a vendored wpa_supplicant.
- A C++17 toolchain (GCC/G++ 7.2+),
make, andcmake - Git (the project uses submodules)
- For the simulator: SDL2 development headers
- For the MIPS/aarch64 cross-builds: Docker (uses a prebuilt toolchain image — see below)
git clone --recurse-submodules https://github.com/coreflake1/NebulaOS-guppyscreen.git
cd NebulaOS-guppyscreenSubmodules: lvgl (LVGL v8), lv_drivers, libhv, spdlog. wpa_supplicant is vendored in-tree.
(cd lv_drivers && git apply ../patches/0001-lv_driver_fb_ioctls.patch)
(cd spdlog && git apply ../patches/0002-spdlog_fmt_initializer_list.patch)
(cd lvgl && git apply ../patches/0003-lvgl-dpi-text-scale.patch)| Patch | Purpose |
|---|---|
0001-lv_driver_fb_ioctls.patch |
Framebuffer ioctls the KE display needs |
0002-spdlog_fmt_initializer_list.patch |
spdlog/fmt compatibility fix |
0003-lvgl-dpi-text-scale.patch |
DPI text-scaling adjustment |
make wpaclient
make libhv.a
make libspdlog.aInstall SDL2 headers, then build with the simulator flags (no CROSS_COMPILE):
# Fedora / Nobara: sudo dnf install sdl2-compat-devel
# Debian / Ubuntu: sudo apt install libsdl2-dev
# Arch: sudo pacman -S sdl2
make -j"$(nproc)" \
CFLAGS="-O3 -g0 -MD -MP -I./ -I./lvgl/ -I/usr/include/SDL2 -D_GNU_SOURCE=1 -Wno-incompatible-pointer-types" \
LDFLAGS="-lm -Llibhv/lib -Lspdlog/build -l:libhv.a -latomic -lpthread -Lwpa_supplicant/wpa_supplicant/ -l:libwpa_client.a -lstdc++fs -l:libspdlog.a"
-Wno-incompatible-pointer-typesis required on GCC 14+ due to an upstream strictness issue inlv_touch_calibration; it is unrelated to this fork's changes.
To build the small-screen layout in the simulator, add GUPPY_SMALL_SCREEN=1 to the make invocation.
Output: build/bin/guppyscreen. See Development and Simulator to run it.
Quick note before you start: this section is for standalone development. Neither this repo's CI nor
a normal NebulaOS build use the guppydev image below anymore — both moved to
NebulaOS-firmware's unified build image (see its
Build Environment doc and
CI). guppydev still works fine for local, standalone iteration if you'd rather not pull the
full unified image.
The MIPS toolchain ships in a container image. This repo provides its own toolchain image via
docker/Dockerfile,
published as ghcr.io/coreflake1/guppydev. Run the provided script inside that container; it
rebuilds each dependency for MIPS and then builds GuppyScreen with GUPPY_SMALL_SCREEN=1:
docker run --rm -it -v "$PWD":/work -w /work ghcr.io/coreflake1/guppydev:latest \
bash scripts/build-mips.shTo build the toolchain image yourself instead of pulling it:
docker build -t ghcr.io/coreflake1/guppydev:latest docker/-
scripts/build-mips.shdefaultsCROSS_COMPILEtomipsel-linux-(matches the toolchain on the image'sPATH). CI uses the fuller triplemipsel-buildroot-linux-musl-. - The script backs up any existing native dependency archives, rebuilds
libhv,spdlog, andlibwpa_clientfor MIPS, then restores the native archives on exit. - Output:
build/bin/guppyscreen, verified asELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked(~6.5 MB, noNEEDEDentries).
Docker is used only to provide the cross-compilation toolchain (the app itself is built by make,
not in a container). The image is defined by docker/Dockerfile:
-
Base: Ubuntu 22.04 +
build-essential,cmake,git. -
MIPS: Bootlin
mips32el--musl--stable-2024.02-1(gcc 12.3.0) — provides both themipsel-buildroot-linux-musl-andmipsel-linux-prefixes. -
aarch64: Arm GNU
gcc-arm-10.2-2020.11(aarch64-none-linux-gnu-, gcc 10.2.1). - Both toolchains are downloaded from their official sources and verified by SHA256 at build time.
It is published to ghcr.io/coreflake1/guppydev (:latest and the pinned :2024.02). This is a
from-source replacement for the upstream ballaswag/guppydev image, which it reproduces faithfully
(same base, toolchains, paths, and PATH ordering).
-
make buildruns the full sequence: clean + rebuildwpaclient,libhv.a,libspdlog.a, then the app. -
make cleanremovesbuild/. - For native (non-cross) builds the Makefile auto-adds
-DSIMULATORand links-lSDL2. DefiningCROSS_COMPILEswitches to a static cross build (-static). - The
GUPPY_SMALL_SCREENdefine selects thematerial_46asset set and the small-screen layout paths.
See Releases and Deployment for packaging the result into a release tarball.
Get started
Get great prints
- Calibration walkthrough (A→Z)
- Axis Twist Compensation
- Adaptive meshing + purge
- Square parts (Skew Correction)
- Quieter steppers (TMC Autotune)
Using the screen
Help
- Build from source
- Dev & simulator
- Architecture
- Configuration
- Releases & deployment
- Contributing
- Publishing this wiki
NebulaOS-specific