-
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/guppyscreen.git
cd 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.
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.
Start here
Get perfect prints
- Calibrate step by step (A→Z)
- Perfect first layer (Axis Twist + KAMP)
- Auto Z-offset: the load-sensor caveat
- Square parts (Skew Correction)
- Quieter steppers (TMC Autotune)
Using the screen
- Screen tour
- Beeps & songs (buzzer)
- Fix layer shift after pause
- Camera: better image
- Camera: H.264 stream
- Troubleshooting