kopia lustrzana https://github.com/mikaelnousiainen/RS41ng
Create a Docker container for building RS41ng (#11)
* Create a Docker container to build on any compatible platform * Add newlines to the end of the newly-created files. * Remove outdated IDE-suggested comment * Cleaned up and adjusted the Docker build environment Co-authored-by: Mikael Nousiainen <mikael.nousiainen@iki.fi>pull/37/head
rodzic
b0602f8b18
commit
1b6ff19a95
|
@ -0,0 +1,15 @@
|
||||||
|
FROM fedora:36
|
||||||
|
|
||||||
|
RUN dnf install -y \
|
||||||
|
gcc-c++ \
|
||||||
|
arm-none-eabi-gcc-cs \
|
||||||
|
arm-none-eabi-gcc-cs-c++ \
|
||||||
|
arm-none-eabi-binutils-cs \
|
||||||
|
arm-none-eabi-newlib \
|
||||||
|
libbsd-devel \
|
||||||
|
cmake
|
||||||
|
|
||||||
|
COPY docker_build.sh /build.sh
|
||||||
|
RUN chmod +x /build.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash", "/build.sh"]
|
19
README.md
19
README.md
|
@ -156,6 +156,25 @@ Note that the code uses `strlcpy()` also in the test code, which requires `libbs
|
||||||
```
|
```
|
||||||
3. The firmware will be stored in file `build/src/RS41ng.elf`
|
3. The firmware will be stored in file `build/src/RS41ng.elf`
|
||||||
|
|
||||||
|
### Building the firmware with Docker
|
||||||
|
|
||||||
|
Using Docker to build the firmware is usually the easiest option, because it provides a stable Fedora Linux-based
|
||||||
|
build environment on any platform. It should work on Windows and Mac operating systems too.
|
||||||
|
|
||||||
|
The Docker environment can also help address issues with the build process, including the `strlcpy()` errors observed on certain Linux distributions.
|
||||||
|
|
||||||
|
1. Install Docker if not already installed
|
||||||
|
2. Set the current directory to the RS41ng source directory
|
||||||
|
3. Build the RS41ng compiler Docker image using the following command. It is necessary to build the Docker image only once.
|
||||||
|
```
|
||||||
|
docker build -t rs41ng_compiler .
|
||||||
|
```
|
||||||
|
4. Build the firmware using the following command. If you need to rebuild the firmware, simply run the command again.
|
||||||
|
```
|
||||||
|
docker run --rm -it -v $(pwd):/usr/local/src/RS41ng rs41ng_compiler
|
||||||
|
```
|
||||||
|
5. The firmware will be stored in file `build/src/RS41ng.elf`
|
||||||
|
|
||||||
## Flashing the firmware
|
## Flashing the firmware
|
||||||
|
|
||||||
Hardware requirements:
|
Hardware requirements:
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Script to compile RS41ng on any platform using Docker
|
||||||
|
# This script is copied into the Docker image when it is built.
|
||||||
|
# If you plan to change this script, please make sure to rebuild the Docker image.
|
||||||
|
|
||||||
|
set -e # Exit if failed
|
||||||
|
|
||||||
|
SOURCE_PATH="/usr/local/src/RS41ng"
|
||||||
|
|
||||||
|
# Sanity check
|
||||||
|
if [ ! -d "${SOURCE_PATH}" ]
|
||||||
|
then
|
||||||
|
echo "Source directory does not exist, please run the Docker command given in README to mount the source directory"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build RS41ng
|
||||||
|
cd "${SOURCE_PATH}"
|
||||||
|
rm -rf build
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make -j$(nproc)
|
||||||
|
|
||||||
|
echo "RS41ng build complete"
|
Ładowanie…
Reference in New Issue