Mirror of godotengine/buildroot
Find a file
Rémi Verschelde 1ef5a740a0
Merge pull request #13 from Calinou/readme-remove-tuxfamily-link
Remove TuxFamily link in README
2025-06-22 12:37:10 +02:00
arch Build with 16K page sizes in mind on aarch64 2023-12-12 17:15:33 +01:00
board toradex_apalis_imx6_defconfig: add download hashes for linux/uboot 2023-12-03 23:08:53 +01:00
boot boot/arm-trusted-firmware: set BUILD_STRING to package version 2023-11-08 14:37:12 +01:00
configs toradex_apalis_imx6_defconfig: add download hashes for linux/uboot 2023-12-03 23:08:53 +01:00
docs docs/website: fix favicon 2023-11-30 23:41:46 +01:00
fs fs/cpio: allow users to provide their own dracut modules 2023-02-06 22:46:35 +01:00
linux {linux, linux-headers}: bump 4.{14, 19}.x / 5.{4, 10, 15}.x / 6.{1, 5, 6}.x series 2023-11-30 23:59:15 +01:00
package Add Scons4 to the SDK 2023-12-12 17:15:33 +01:00
support Downgrade to glibc 2.28 2023-12-12 17:15:33 +01:00
system package/systemd: bump linux-headers dependency to 4.14 2023-08-02 21:18:16 +02:00
toolchain toolchain/helpers.mk: strengthen uClibc locale check 2023-08-30 23:44:24 +02:00
utils utils/add-custom-hashes: add script to manage global patch dir hashes 2023-11-13 19:52:52 +01:00
.checkpackageignore package/gsl: fix musl build on m68k 2023-12-01 21:02:44 +01:00
.clang-format .clang-format: initial import from Linux 5.15.6 2022-01-01 15:01:13 +01:00
.defconfig arch: remove support for sh64 2016-09-08 22:15:15 +02:00
.flake8 Revert ".flake8: fix check for 80/132 columns" 2021-01-02 17:38:20 +01:00
.gitignore update gitignore 2013-05-04 12:41:55 +02:00
.gitlab-ci.yml support/misc/gitlab-ci.yml.in: retry a job only if it failed due to a runner issue 2023-08-27 10:09:37 +02:00
.shellcheckrc utils/check-package: improve shellcheck reproducibility 2022-07-25 23:52:47 +02:00
build-sdk.sh Fix SDK build script typos 2023-12-12 17:15:33 +01:00
CHANGES Update for 2023.08.4 2023-12-04 14:06:08 +01:00
clean-linux-toolchain.sh Fix autotools in build container 2024-08-29 17:43:42 +02:00
config-godot-aarch64 Add back the helper scripts 2023-12-12 17:15:33 +01:00
config-godot-armv7 Switch to neon-fp-armv8 2024-01-17 14:40:47 +01:00
config-godot-i686 Add back the helper scripts 2023-12-12 17:15:33 +01:00
config-godot-x86_64 Add back the helper scripts 2023-12-12 17:15:33 +01:00
Config.in pkg-download: add option to enforce hash checking 2023-11-10 14:30:35 +01:00
Config.in.legacy boot/lpc32xxcdl: remove package 2023-08-10 19:41:42 +02:00
COPYING COPYING: add exception about patch licensing 2016-02-26 19:50:13 +01:00
DEVELOPERS package/opencv4-contrib: properly note dependencies between modules 2023-10-26 13:04:22 +02:00
Dockerfile.linux-builder Switch to neon-fp-armv8 2024-01-17 14:40:47 +01:00
Makefile Update for 2023.08.4 2023-12-04 14:06:08 +01:00
Makefile.legacy Remove BR2_DEPRECATED 2016-10-15 23:14:45 +02:00
README.md Remove TuxFamily link in README 2025-05-07 00:03:06 +02:00
README.upstream Add Godot specific README 2023-12-12 17:15:33 +01:00

Godot buildroot

This repository contains the Godot buildroot to generate toolchains for building the Godot engine in a portable way for Linux. Using these toolchains is the best way to distribute Linux builds of your custom-compiled Godot game.

You will only need this if you built the engine manually. If you use official templates you will not need this

The toolchain current contains the following:

  • gcc-13.2.0
  • glibc-2.28
  • pulseaudio
  • alsa
  • X client libraries
  • udev
  • libGL
  • fontconfig
  • speechd

Using the SDKs

This section is first because there's a lot of stuff below and this is likely what you came here for. Don't forget to check out the Obtaining an SDK section below!

The first part of an SDK filename referes to the architecture that this SDK will generate binaries for. If you want to ship your game to both 32bit and 64bit Intel/AMD users you will need both x86_64-godot-linux-gnu_sdk-buildroot.tar.gz and i686-godot-linux-gnu_sdk-buildroot.tar.gz.

Unpack the toolchain anywhere you like and run the relocate-sdk.sh script within. This needs to happen every time you move the toolchain to a different directory, but only needs to happen once after installation.

After this you can build the engine more-or-less like normal. For instance:

export PATH=/path/to/sdk/bin:$PATH
scons -j16

For other build-time options please see Compiling for Linux.

Obtaining an SDK

Downloading a pre-built SDK

Pre-built toolchains are available on GitHub Releases.

Using buildroot to generate SDKs

Building a toolchain for local use

Using this method will create a toolchain you yourself can use to create Godot releases that will work on any Linux system currently in use. However the toolchain you generate will not be portable to older Linuxes. If you plan to distribute the toolchain itself use the podman method below

The basic steps for building a toolchain are:

  • copy config-godot-<arch> to .config
  • run make olddefconfig
  • run make clean sdk

Afterwards the SDK will be in output/images/<arch>-godot-linux-gnu_sdk-buildroot.tar.gz.

NOTE: that make clean sdk will delete old builds. Move them out of the way first!

Building a toolchain for distribution

This method uses a Alma Linux 8 container to make the buildroot itself portable so it can be distributed to other users. This is also the way the downloads above are generated.

  • run ./build-sdk.sh <arch> for instance x86_64

The toolchain will appear in the godot-toolchains directory

Modifying the toolchain

For detailed information please see https://buildroot.org however a short version is here:

NOTE: re-running the build-sdk.sh script will overwrite your changes by default. Take care

  • Copy the architecture you would like to change to .config for instance cp config-godot-x86_64 .config
  • Run make menuconfig
  • Make your changes

At this point your changes exist in .config. Make a backup. If you're building for local use just run make clean sdk, if you're using the container approach copy your .config file to the arch config like config-godot-x64_64

Making Pull Requests for this repository

First of all: Thanks for wanting to help! Second of all: Since we support multiple architectures make sure that you make the same changes to all architectures and PR them together. If you specifically want to make a change to one architecture please note that clearly in the PR message.

Thanks!