2019-01-07 21:51:22 +01:00
|
|
|
# Godot engine build containers
|
|
|
|
|
2021-02-15 01:26:43 +01:00
|
|
|
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.
|
2019-01-07 21:51:22 +01:00
|
|
|
|
2021-02-15 01:26:43 +01:00
|
|
|
The in-container build scripts are in a separate repository:
|
|
|
|
https://github.com/godotengine/godot-build-scripts
|
2019-01-07 21:51:22 +01:00
|
|
|
|
2021-02-09 12:05:06 +01:00
|
|
|
|
2021-02-15 01:26:43 +01:00
|
|
|
## 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
|
|
|
|
|
2022-06-27 16:29:29 +02:00
|
|
|
These containers have been tested under Fedora 36 (other distros/releases may work too).
|
2021-02-15 01:26:43 +01:00
|
|
|
|
2022-06-27 16:29:29 +02:00
|
|
|
The tool used to build and manage the containers is `podman` (install it with `dnf -y podman`).
|
2021-02-15 01:26:43 +01:00
|
|
|
|
2022-06-27 16:29:29 +02:00
|
|
|
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).
|
2021-02-15 01:26:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
2022-06-27 16:29:29 +02:00
|
|
|
The `build.sh` script included is used to build the containers themselves.
|
2021-02-15 01:26:43 +01:00
|
|
|
|
2022-08-26 15:39:52 +02:00
|
|
|
The two arguments can take any value and are meant to convey what Godot branch
|
2024-07-19 15:47:34 +02:00
|
|
|
you are building for (e.g. `4.3`) and what Linux distribution the `Dockerfile.base`
|
2024-06-19 15:23:30 +02:00
|
|
|
is based on (e.g. `f40` for Fedora 40).
|
2021-02-15 01:26:43 +01:00
|
|
|
|
2022-06-27 16:29:29 +02:00
|
|
|
Run the command using:
|
2021-02-15 01:26:43 +01:00
|
|
|
|
2024-07-19 15:47:34 +02:00
|
|
|
./build.sh 4.3 f40
|
2021-02-15 01:26:43 +01:00
|
|
|
|
2024-07-19 15:47:34 +02:00
|
|
|
The above will generate images using the tag '4.3-f40'.
|
2022-08-26 15:39:52 +02:00
|
|
|
You can then specify it in the `build.sh` of
|
|
|
|
[godot-build-scripts](https://github.com/godotengine/godot-build-scripts).
|
2021-02-15 01:26:43 +01:00
|
|
|
|
2023-09-04 10:16:33 +02:00
|
|
|
|
2021-02-15 01:26:43 +01:00
|
|
|
### 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:
|
|
|
|
|
Update to Fedora 39, update all toolchains
- Base image: Fedora 39
- SCons: 4.5.2
- Linux: GCC 10.2.0 built against glibc 2.19, binutils 2.35.1
- Windows: MinGW 11.0.0, GCC 13.2.1, binutils 2.40
- Web: Emscripten 3.1.39
- Android: Android NDK 23.2.8568313, build-tools 33.0.2, platform android-33, CMake 3.22.1, JDK 17
CMake 3.22.1, JDK 17
- macOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), MacOSX SDK 14.0
- iOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), iPhoneOS SDK 17.0
Switches macOS/iOS builds to use Apple Clang, to maximize compatibility with
upstream Xcode.
Also add gettext which is needed by Godot build scripts to compile PO files
to MO.
2023-09-04 10:10:35 +02:00
|
|
|
podman_build linux
|
|
|
|
podman_build windows
|
|
|
|
podman_build web
|
|
|
|
podman_build android
|
2021-02-15 01:26:43 +01:00
|
|
|
...
|
|
|
|
|
|
|
|
|
2022-06-27 16:29:29 +02:00
|
|
|
## Image sizes
|
2021-02-15 01:26:43 +01:00
|
|
|
|
|
|
|
These are the expected container image sizes, so you can plan your disk usage in advance:
|
|
|
|
|
Update to Fedora 39, update all toolchains
- Base image: Fedora 39
- SCons: 4.5.2
- Linux: GCC 10.2.0 built against glibc 2.19, binutils 2.35.1
- Windows: MinGW 11.0.0, GCC 13.2.1, binutils 2.40
- Web: Emscripten 3.1.39
- Android: Android NDK 23.2.8568313, build-tools 33.0.2, platform android-33, CMake 3.22.1, JDK 17
CMake 3.22.1, JDK 17
- macOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), MacOSX SDK 14.0
- iOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), iPhoneOS SDK 17.0
Switches macOS/iOS builds to use Apple Clang, to maximize compatibility with
upstream Xcode.
Also add gettext which is needed by Godot build scripts to compile PO files
to MO.
2023-09-04 10:10:35 +02:00
|
|
|
REPOSITORY TAG SIZE
|
2024-07-19 15:47:34 +02:00
|
|
|
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
|
2021-07-13 08:28:01 +02:00
|
|
|
|
|
|
|
In addition to this, generating containers will also require some host disk space
|
Update to Fedora 39, update all toolchains
- Base image: Fedora 39
- SCons: 4.5.2
- Linux: GCC 10.2.0 built against glibc 2.19, binutils 2.35.1
- Windows: MinGW 11.0.0, GCC 13.2.1, binutils 2.40
- Web: Emscripten 3.1.39
- Android: Android NDK 23.2.8568313, build-tools 33.0.2, platform android-33, CMake 3.22.1, JDK 17
CMake 3.22.1, JDK 17
- macOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), MacOSX SDK 14.0
- iOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), iPhoneOS SDK 17.0
Switches macOS/iOS builds to use Apple Clang, to maximize compatibility with
upstream Xcode.
Also add gettext which is needed by Godot build scripts to compile PO files
to MO.
2023-09-04 10:10:35 +02:00
|
|
|
(up to 10 GB) for the dependencies (Xcode).
|
2022-06-27 16:54:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
## Toolchains
|
|
|
|
|
2024-06-19 15:23:30 +02:00
|
|
|
These are the toolchains currently in use for Godot 4.3 and later:
|
2022-06-27 16:54:06 +02:00
|
|
|
|
2024-06-19 15:23:30 +02:00
|
|
|
- Base image: Fedora 40
|
2024-07-19 15:47:34 +02:00
|
|
|
- SCons: 4.8.0
|
2023-11-01 14:54:17 +01:00
|
|
|
- Linux: GCC 13.2.0 built against glibc 2.28, binutils 2.40, from our own [Linux SDK](https://github.com/godotengine/buildroot)
|
2024-07-19 15:47:34 +02:00
|
|
|
- Windows:
|
|
|
|
* x86_64/x86_32: MinGW 11.0.1, GCC 14.1.1, binutils 2.41
|
|
|
|
* arm64: llvm-mingw 20240619, LLVM 18.1.8
|
2024-07-24 13:10:43 +02:00
|
|
|
- Web: Emscripten 3.1.64
|
2024-01-30 19:56:32 +01:00
|
|
|
- Android: Android NDK 23.2.8568313, build-tools 34.0.0, platform android-34, CMake 3.22.1, JDK 17
|
2024-07-19 15:47:34 +02:00
|
|
|
- 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
|