Difference between revisions of "Compiling ScummVM/Docker"

From ScummVM :: Wiki
Jump to navigation Jump to search
Line 174: Line 174:
The following should install all the necessary packages:
The following should install all the necessary packages:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt-get install docker.io git make m4 acl
apt-get install docker.io git
</syntaxhighlight>
</syntaxhighlight>


Line 182: Line 182:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git clone https://github.com/scummvm/scummvm.git
git clone https://github.com/scummvm/scummvm.git
git clone https://github.com/scummvm/dockerized-bb.git
</syntaxhighlight>
</syntaxhighlight>


=== Getting the docker images ===
=== Using the docker images ===
To fetch a toolchain image from the Docker Hub, issue the following command inside the dockerized-bb folder:
To fetch a toolchain image from the Docker Hub, issue the following command from the ScummVM source directory:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
make <toolchain>/pull
./devtools/docker.sh <toolchain>
</syntaxhighlight>
</syntaxhighlight>


where <toolchain> is the name of the toolchain you want to use. The following command can be used to fetch all toolchains at once:
where <toolchain> is the name of the toolchain you want to use, and <path-to-scummvm> is the path to the scummvm folder. This will fetch the requested toolchain from the Docker Hub if it isn't installed, mount the scummvm folder in the Docker image and launch a shell that can be used to build ScummVM for the relevant platform. Alternatively, you can use the following command to fetch updates for an already installed toolchain before launching the shell:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
make pull-toolchains
./devtools/docker.sh --update <toolchain>
</syntaxhighlight>
</syntaxhighlight>
=== Using the docker images ===
To fetch a toolchain image from the Docker Hub, issue the following command:
<syntaxhighlight lang="bash">
docker run -v <path-to-scummvm>:/data/scummvm -w /data/scummvm -it <toolchain> /bin/bash
</syntaxhighlight>
where <toolchain> is the name of the toolchain you want to use, and <path-to-scummvm> is the path to the scummvm folder. This will mount the scummvm folder in the Docker image and launch a shell that can be used to build ScummVM for the relevant platform.


Once in the Docker image, the following commands should be issued in order to build ScummVM:
Once in the Docker image, the following commands should be issued in order to build ScummVM:

Revision as of 21:38, 5 September 2021

Compiling ScummVM using Docker

The ScummVM buildbot uses Docker for building the toolchains. As such, this makes it possible for the individual toolchains to be used for local builds, avoiding the need to install the toolchain and required libraries manually.

The following toolchain images are available:

Name Target platform Required compiler flags Packaging command Notes
toolchains/amigaos4 AmigaOS 4 --host=ppc-amigaos --enable-plugins --default-dynamic --enable-detection-dynamic make amigaosdist
toolchains/android Android for ARMv7, AArch64, x86 and x86_64 --host=android-arm-v7a --enable-debug

--host=android-arm64-v8a --enable-debug

--host=android-x86 --enable-debug

--host=android-x86_64 --enable-debug

make androiddistdebug
toolchains/caanoo Caanoo --host=caanoo --enable-plugins --default-dynamic --enable-vkeybd make caanoo-bundle
toolchains/devkit3ds Nintendo 3DS --host=3ds --enable-plugins --default-dynamic make dist_3ds
toolchains/devkitnds Nintendo DS --host=ds --enable-plugins --default-dynamic make dsdist
toolchains/devkitppc Nintendo Wii and GameCube --host=wii --enable-plugins --default-dynamic --enable-vkeybd

--host=gamecube --enable-plugins --default-dynamic --enable-vkeybd

make wiidist
toolchains/devkitswitch Nintendo Switch --host=switch make switch_release
toolchains/dreamcast Dreamcast --host=dreamcast --enable-plugins --default-dynamic --enable-vkeybd make dcdist
toolchains/gcw0 GCW Zero --host=gcw0 --enable-plugins --default-dynamic --enable-vkeybd make gcw-opk
toolchains/iphone iOS 7 for AArch64 ? make ios7bundle Requires building the image from source.
toolchains/macosx-arm64 macOS for AArch64 ? make bundle Requires building the image from source.
toolchains/macosx-i386 macOS for x86 ? make bundle Requires building the image from source.
toolchains/macosx-x86_64 macOS for x86_64 ? make bundle Requires building the image from source.
toolchains/mxe Windows for x86 and x86_64 --host=i686-w64-mingw32.static --enable-debug --enable-updates

--host=x86_64-w64-mingw32.static --enable-debug --enable-updates

make win32dist-mingw DESTDIR=win32dist-mingw
toolchains/n64 Nintendo 64 --host=n64 --enable-vkeybd make n64-dist Requires building with a reduced number of engines.
toolchains/open2x GP2X --host=gp2x --enable-vkeybd make gp2x-bundle Requires building with a reduced number of engines.
toolchains/opendingux Dingux --host=dingux --enable-plugins --default-dynamic --enable-vkeybd --disable-theoradec make dingux-dist
toolchains/openpandora OpenPandora --host=openpandora --enable-plugins --default-dynamic --enable-vkeybd make op-pnd
toolchains/ps3 PlayStation 3 --host=ps3 make ps3pkg
toolchains/psp PlayStation Portable --host=psp --disable-debug --enable-plugins --default-dynamic Requires building with a reduced number of engines.
toolchains/raspberrypi Raspberry Pi --host=raspberrypi make dist-generic
toolchains/riscos RISC OS --host=arm-unknown-riscos

--host=arm-vfp-riscos

make riscosdist Requires building with a reduced number of engines.
toolchains/vita PlayStation Vita --host=psp2 make psp2vpk Requires building with a reduced number of engines.
toolchains/windows-9x Windows 95/98/ME --host=mingw32 --disable-windows-unicode make win32dist-mingw DESTDIR=win32dist-mingw

For more details on how to build ScummVM for a specific platform, see the relevant page from Compiling ScummVM.

Installing the needed packages

Debian-based distributions

The following should install all the necessary packages:

apt-get install docker.io git

Getting the source

  • Open a Terminal and type:
git clone https://github.com/scummvm/scummvm.git

Using the docker images

To fetch a toolchain image from the Docker Hub, issue the following command from the ScummVM source directory:

./devtools/docker.sh <toolchain>

where <toolchain> is the name of the toolchain you want to use, and <path-to-scummvm> is the path to the scummvm folder. This will fetch the requested toolchain from the Docker Hub if it isn't installed, mount the scummvm folder in the Docker image and launch a shell that can be used to build ScummVM for the relevant platform. Alternatively, you can use the following command to fetch updates for an already installed toolchain before launching the shell:

./devtools/docker.sh --update <toolchain>

Once in the Docker image, the following commands should be issued in order to build ScummVM:

./configure <configure-flags>
make -j$(nproc)

where <configure-flags> is the list of required compiler flags specified in the table at the top of the page. This should be followed by the packaging command if one is specified.

Once done, the exit command can be used to leave the Docker image.