Prusa-Firmware/README.md

126 lines
4.4 KiB
Markdown

# Prusa Firmware MK3
This repository contains the source code and the development versions of the firmware running on the [Original Prusa i3](https://prusa3d.com/) MK3S/MK3/MK2.5S/MK2.5 line of printers.
The latest official builds can be downloaded from [Prusa Drivers](https://www.prusa3d.com/drivers/). Pre-built development releases are also [available here](https://github.com/prusa3d/Prusa-Firmware/releases).
The firmware for the Original Prusa i3 printers is proudly based on [Marlin 1.0.x](https://github.com/MarlinFirmware/Marlin/) by Scott Lahteine (@thinkyhead) et al. and is distributed under the terms of the [GNU GPL 3 license](LICENSE).
This repository contains _development material only!_
# Build
## Linux
There are two ways to build Prusa-Firmware on Linux: using [CMake](#cmake) (recommended for developers) or with [PF-build](#pf-build) which is more user-friendly for casual users.
### CMake
#### Quick-start
The workflow should be pretty straightforward for anyone with development experience. After installing git and a recent version of python 3 all you have to do is:
# clone the repository
git clone https://github.com/prusa3d/Prusa-Firmware
cd Prusa-Firmware
# automatically setup dependencies
./utils/bootstrap.py
# configure and build
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../cmake/AvrGcc.cmake
ninja
#### Detailed CMake guide
Building with cmake requires:
- cmake >= 3.22.5
- ninja >= 1.10.2 (optional, but recommended)
Python >= 3.6 is also required with the following modules:
- pyelftools (package `python3-pyelftools`)
- polib (package `python3-polib`)
- regex (package `python3-regex`)
Additionally `gettext` is required for translators.
Assuming a recent Debian/Ubuntu distribution, install the dependencies globally with:
sudo apt-get install cmake ninja python3-pyelftools python3-polib python3-regex gettext
Prusa-Firmware depends on a pinned version of `avr-gcc` and the external `prusa3dboards` package. These can be setup using `./utils/bootstrap.py`:
# automatically setup dependencies
./utils/bootstrap.py
which will download and unpack them inside the `.dependencies` directory. `./utils/bootstrap.py` will also install `cmake`, `ninja` and the required python packages if missing, although installing those through is system's package manager is usually preferred.
You can then proceed by creating a build directory, configure for AVR and build:
# configure
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../cmake/AvrGcc.cmake
# build
ninja
By default all variants are built. There are several ways to restrict the build for development. During configuration you can set:
- `cmake -DFW_VARIANTS=variant`: comma-separated list of variants to build. This is the file name as present in `Firmware/variants` without the final `.h`.
- `cmake -DMAIN_LANGUAGES=languages`: comma-separated list of ISO language codes to include as main translations.
- `cmake -DCOMMUNITY_LANGUAGES=languages`: comma-separated list of ISO language codes to include as community translations.
When building the following targets are available:
- `ninja ALL_MULTILANG`: build all multi-language targets (default)
- `ninja ALL_ENGLISH`: build all single-language targets
- `ninja VARIANT_EN-only`: build the single-language version of `VARIANT`
- `ninja VARIANT_Multilang`: build the multi-language version of `VARIANT`
- `ninja check_lang`: build and check all language translations
- `ninja check_lang_ISO`: build and check all variants with language `ISO`
- `ninja check_lang_VARIANT`: build and check all languages for `VARIANT`
- `ninja check_lang_VARIANT_ISO`: build and check language `ISO` for `VARIANT`
#### Automated tests
Automated tests are built with cmake by configuring for the current host:
# clone the repository
git clone https://github.com/prusa3d/Prusa-Firmware
cd Prusa-Firmware
# automatically setup dependencies
./utils/bootstrap.py
# configure and build
mkdir build
cd build
cmake .. -G Ninja
ninja
# run the tests
ctest
### PF-build
PF-build is recommended for users without development experience. Download or clone the repository,
then run PF-build and simply follow the instructions:
cd Prusa-Firmware
./PF-build.sh
PF-build currently assumes a Debian/Ubuntu (or derivative) distribution.
## Windows
### VSCode
TODO
### Arduino (Legacy)
TODO
### PF-build with WSL
TODO