2023-09-20 14:00:42 +02:00
|
|
|
# Tomb1Main building toolchain for Linux.
|
2021-12-04 21:20:29 +01:00
|
|
|
#
|
|
|
|
# This is a multi-stage Docker image. It is designed to keep the final image
|
|
|
|
# size low. Each stage builds an external dependency. The final stage takes the
|
|
|
|
# artifacts (binaries, includes etc.) from previous stages and installs all the
|
|
|
|
# tools necessary to build Tomb1Main.
|
|
|
|
|
2023-09-20 14:00:42 +02:00
|
|
|
FROM ubuntu:latest as base
|
2021-11-17 12:08:20 +01:00
|
|
|
|
2022-12-15 14:40:51 +01:00
|
|
|
# don't prompt during potential installation/update of tzinfo
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
ENV TZ=Europe/Warsaw
|
|
|
|
|
2021-11-17 12:08:20 +01:00
|
|
|
RUN apt-get update \
|
|
|
|
&& apt-get upgrade -y \
|
|
|
|
&& apt-get install -y \
|
|
|
|
git \
|
2021-12-04 21:20:29 +01:00
|
|
|
make
|
2021-11-20 22:40:57 +01:00
|
|
|
|
2022-12-15 14:40:51 +01:00
|
|
|
|
|
|
|
|
2021-12-04 21:20:29 +01:00
|
|
|
# libav
|
2023-09-21 17:38:17 +02:00
|
|
|
FROM base AS libav
|
2021-12-04 21:20:29 +01:00
|
|
|
RUN apt-get install -y \
|
2023-09-20 14:00:42 +02:00
|
|
|
nasm \
|
|
|
|
gcc \
|
|
|
|
zlib1g-dev
|
2021-12-04 18:45:39 +01:00
|
|
|
RUN git clone \
|
|
|
|
--depth 1 \
|
|
|
|
--branch "n4.4.1" \
|
|
|
|
https://github.com/FFmpeg/FFmpeg
|
2021-11-20 22:40:57 +01:00
|
|
|
RUN cd FFmpeg \
|
|
|
|
&& ./configure \
|
|
|
|
--arch=x86 \
|
2021-12-04 21:20:29 +01:00
|
|
|
--prefix=/ext/ \
|
2021-11-26 23:56:09 +01:00
|
|
|
--enable-gpl \
|
|
|
|
--enable-decoder=pcx \
|
|
|
|
--enable-decoder=png \
|
|
|
|
--enable-decoder=gif \
|
|
|
|
--enable-decoder=mjpeg \
|
|
|
|
--enable-decoder=mpeg4 \
|
2021-12-07 19:43:52 +01:00
|
|
|
--enable-decoder=mdec \
|
2021-11-26 23:56:09 +01:00
|
|
|
--enable-decoder=h264 \
|
|
|
|
--enable-decoder=h264_qsv \
|
|
|
|
--enable-decoder=libopenh264 \
|
|
|
|
--enable-decoder=png \
|
|
|
|
--enable-demuxer=mov \
|
|
|
|
--enable-demuxer=avi \
|
|
|
|
--enable-demuxer=h264 \
|
2021-12-07 19:43:52 +01:00
|
|
|
--enable-demuxer=str \
|
2021-11-26 23:56:09 +01:00
|
|
|
--enable-demuxer=image2 \
|
2021-11-20 22:40:57 +01:00
|
|
|
--enable-zlib \
|
|
|
|
--enable-static \
|
2021-12-07 13:58:37 +01:00
|
|
|
--enable-small \
|
|
|
|
--disable-debug \
|
2021-11-20 22:40:57 +01:00
|
|
|
--disable-ffplay \
|
|
|
|
--disable-ffprobe \
|
|
|
|
--disable-doc \
|
|
|
|
--disable-network \
|
|
|
|
--disable-htmlpages \
|
|
|
|
--disable-manpages \
|
|
|
|
--disable-podpages \
|
|
|
|
--disable-txtpages \
|
2021-12-04 19:19:04 +01:00
|
|
|
--disable-asm \
|
2021-11-20 22:40:57 +01:00
|
|
|
&& make -j 4 \
|
|
|
|
&& make install
|
|
|
|
|
2022-12-15 14:40:51 +01:00
|
|
|
|
2023-09-20 14:00:42 +02:00
|
|
|
|
2021-11-19 22:14:03 +01:00
|
|
|
# SDL
|
2023-09-21 17:38:17 +02:00
|
|
|
FROM base AS sdl
|
2022-12-15 14:40:51 +01:00
|
|
|
RUN git clone https://github.com/libsdl-org/SDL -b SDL2
|
2023-09-20 14:00:42 +02:00
|
|
|
RUN apt-get install -y \
|
|
|
|
libgl1-mesa-dev \
|
|
|
|
libglu1-mesa-dev \
|
|
|
|
libpulse-dev \
|
|
|
|
automake \
|
|
|
|
gcc \
|
|
|
|
libxext-dev
|
2021-11-19 22:14:03 +01:00
|
|
|
RUN cd SDL \
|
|
|
|
&& aclocal -I acinclude \
|
|
|
|
&& autoconf \
|
2023-09-20 14:00:42 +02:00
|
|
|
&& mkdir sdl_build \
|
|
|
|
&& cd sdl_build \
|
2021-11-19 22:14:03 +01:00
|
|
|
&& ../configure \
|
2021-12-04 21:20:29 +01:00
|
|
|
--prefix=/ext/ \
|
2021-11-19 22:14:03 +01:00
|
|
|
--enable-shared \
|
2021-12-07 12:54:44 +01:00
|
|
|
--enable-static \
|
2021-11-19 22:14:03 +01:00
|
|
|
&& make -j 4 \
|
|
|
|
&& make install
|
|
|
|
|
2022-12-15 14:40:51 +01:00
|
|
|
|
|
|
|
|
2021-12-04 21:20:29 +01:00
|
|
|
# Tomb1Main
|
2023-09-20 14:00:42 +02:00
|
|
|
FROM base
|
2021-12-04 21:20:29 +01:00
|
|
|
|
2021-11-17 12:08:20 +01:00
|
|
|
# set the build dir - actual files are mounted with a Docker volume
|
|
|
|
RUN mkdir /app
|
|
|
|
WORKDIR /app
|
|
|
|
|
2023-09-20 14:00:42 +02:00
|
|
|
# package dependencies
|
|
|
|
RUN apt-get install -y \
|
|
|
|
zlib1g-dev \
|
|
|
|
libgl1-mesa-dev
|
2021-12-04 21:20:29 +01:00
|
|
|
|
2023-09-20 14:00:42 +02:00
|
|
|
# tooling dependencies
|
2021-12-07 12:54:26 +01:00
|
|
|
# configure pkgconfig manually
|
|
|
|
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=967969
|
|
|
|
ENV PKG_CONFIG_LIBDIR=/ext/lib/
|
|
|
|
ENV PKG_CONFIG_PATH=/ext/lib/pkgconfig/
|
2022-12-15 12:10:51 +01:00
|
|
|
RUN apt-get install -y \
|
2021-12-07 12:54:26 +01:00
|
|
|
pkg-config \
|
2021-12-04 21:20:29 +01:00
|
|
|
upx \
|
2023-09-20 14:00:42 +02:00
|
|
|
git \
|
2021-12-04 21:20:29 +01:00
|
|
|
python3-pip \
|
|
|
|
&& python3 -m pip install \
|
|
|
|
pyjson5 \
|
|
|
|
meson \
|
|
|
|
ninja
|
|
|
|
|
2023-09-20 14:00:42 +02:00
|
|
|
# manually built dependencies
|
|
|
|
COPY --from=libav /ext/ /ext/
|
|
|
|
COPY --from=sdl /ext/ /ext/
|
|
|
|
|
|
|
|
ENTRYPOINT ["/app/docker/game-linux/entrypoint-linux.sh"]
|