Godot engine build containers
Go to file
Rémi Verschelde 610584dd29
Merge pull request #146 from godotengine/emscripten-3.1.64
Web: Update to Emscripten 3.1.64
2024-07-24 15:57:08 +02:00
files/patches Remove unused MSVC image, not needed in 4.x and not functional 2023-09-04 12:38:19 +02:00
.gitignore
Dockerfile.android Redo .NET 8.0, SCons 4.6.0, and Android API 34 updates lost in #138 2024-02-08 17:29:08 +01:00
Dockerfile.base Update to Emscripten 3.1.63, SCons 4.8.0 2024-07-19 16:25:06 +02:00
Dockerfile.ios Update various toolchains for 4.3 2024-06-19 15:23:33 +02:00
Dockerfile.linux Update various toolchains for 4.3 2024-02-08 17:14:28 +01:00
Dockerfile.osx Update various toolchains for 4.3 2024-06-19 15:23:33 +02:00
Dockerfile.web Web: Update to Emscripten 3.1.64 2024-07-24 13:10:43 +02:00
Dockerfile.windows Add pre-built MinGW/LLVM toolchain to the Windows build container to support ARM64 Windows builds. (#144) 2024-07-19 13:59:55 +02:00
Dockerfile.xcode Update to Fedora 39, update all toolchains 2023-10-24 11:24:52 +02:00
README.md Web: Update to Emscripten 3.1.64 2024-07-24 13:10:43 +02:00
build.sh Merge pull request #141 from godotengine/4.3-toolchains-update-3 2024-06-20 10:02:35 +02:00
setup.sh setup: Check for `podman` with `command` instead of `which` 2023-11-11 19:51:28 +01:00
upload.sh Drop now unused MSVC / VS 2017 container 2023-09-25 11:16:27 +02:00

README.md

Godot engine build containers

This repository contains the Dockerfiles for the official Godot engine builds. These containers should help you build Godot for all platforms supported on any machine that can run Docker containers.

The in-container build scripts are in a separate repository: https://github.com/godotengine/godot-build-scripts

Introduction

These scripts build a number of containers which are then used to build final Godot tools, templates and server packages for several platforms.

Once these containers are built, they can be used to compile different Godot versions without the need of recreating them.

The upload.sh file is meant to be used by Godot Release Team and is not documented here.

Requirements

These containers have been tested under Fedora 36 (other distros/releases may work too).

The tool used to build and manage the containers is podman (install it with dnf -y podman).

We currently use podman as root to build and use these containers. Documenting a workflow to configure the host OS to be able to do all this without root would be welcome (but back when we tried we ran into performance issues).

Usage

The build.sh script included is used to build the containers themselves.

The two arguments can take any value and are meant to convey what Godot branch you are building for (e.g. 4.3) and what Linux distribution the Dockerfile.base is based on (e.g. f40 for Fedora 40).

Run the command using:

./build.sh 4.3 f40

The above will generate images using the tag '4.3-f40'. You can then specify it in the build.sh of godot-build-scripts.

Selecting which images to build

If you don't need to build all versions or you want to try with a single target OS first, you can comment out the corresponding lines from the script:

podman_build linux
podman_build windows
podman_build web
podman_build android
...

Image sizes

These are the expected container image sizes, so you can plan your disk usage in advance:

REPOSITORY                         TAG                SIZE
localhost/godot-fedora             4.3-f40            1.01 GB
localhost/godot-linux              4.3-f40            2.80 GB
localhost/godot-windows            4.3-f40            2.46 GB
localhost/godot-web                4.3-f40            2.41 GB
localhost/godot-android            4.3-f40            4.29 GB
localhost/godot-osx                4.3-f40            4.78 GB
localhost/godot-ios                4.3-f40            5.49 GB

In addition to this, generating containers will also require some host disk space (up to 10 GB) for the dependencies (Xcode).

Toolchains

These are the toolchains currently in use for Godot 4.3 and later:

  • Base image: Fedora 40
  • SCons: 4.8.0
  • Linux: GCC 13.2.0 built against glibc 2.28, binutils 2.40, from our own Linux SDK
  • Windows:
    • x86_64/x86_32: MinGW 11.0.1, GCC 14.1.1, binutils 2.41
    • arm64: llvm-mingw 20240619, LLVM 18.1.8
  • Web: Emscripten 3.1.64
  • Android: Android NDK 23.2.8568313, build-tools 34.0.0, platform android-34, CMake 3.22.1, JDK 17
  • macOS: Xcode 15.4 with Apple Clang (LLVM 16.0.0), MacOSX SDK 14.5
  • iOS: Xcode 15.4 with Apple Clang (LLVM 16.0.0), iPhoneOS SDK 17.5