Version bump, use clang and native+LTO for most builds

This commit is contained in:
DataHoarder 2022-04-28 15:44:50 +02:00
parent 260758de55
commit 99efe345d1
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk
2 changed files with 46 additions and 19 deletions

View file

@ -1,6 +1,23 @@
FROM debian:bullseye
ARG ZIMG_TAG=release-3.0.3
COPY docker/x265-multilib.sh /x265-multilib.sh
RUN DEBIAN_FRONTEND=noninteractive apt update && \
DEBIAN_FRONTEND=noninteractive apt install -y ca-certificates gpg curl
COPY docker/clang.list /etc/apt/sources.list.d/clang.list
RUN curl https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
DEBIAN_FRONTEND=noninteractive apt update && \
DEBIAN_FRONTEND=noninteractive apt install -y \
python3-pip python3-numpy python3-opencv python3-dev git nscd \
autoconf automake libtool pkg-config meson cmake yasm nasm gcc g++ clang ccache \
libnuma-dev libavcodec-dev libavformat-dev libswscale-dev libavresample-dev libavutil-dev libass-dev libfftw3-3 libfftw3-dev && \
pip3 install Cython && \
pip3 install git+https://github.com/FichteFoll/Sushi.git@master
ARG ZIMG_TAG=release-3.0.4
ARG VS_TAG=R54
@ -10,25 +27,20 @@ ARG X264_REPO=https://code.videolan.org/videolan/x264.git
ARG X265_TAG=3.5
ARG X265_REPO=https://bitbucket.org/multicoreware/x265_git.git
ARG AOM_TAG=v3.2.0
ARG AOM_TAG=v3.3.0
ARG AOM_REPO=https://aomedia.googlesource.com/aom.git
RUN DEBIAN_FRONTEND=noninteractive apt update && \
DEBIAN_FRONTEND=noninteractive apt install -y \
python3-pip python3-numpy python3-opencv python3-dev git nscd \
autoconf automake libtool pkg-config meson cmake yasm nasm gcc g++ clang ccache curl \
libnuma-dev libavcodec-dev libavformat-dev libswscale-dev libavresample-dev libavutil-dev libass-dev libfftw3-3 libfftw3-dev && \
pip3 install Cython && \
pip3 install git+https://github.com/FichteFoll/Sushi.git@master
ARG SVT_TAG=v1.0.0
ARG SVT_REPO=https://gitlab.com/AOMediaCodec/SVT-AV1.git
ARG MAGICK_TAG=7.1.0-31
COPY docker/x265-multilib.sh /x265-multilib.sh
RUN git clone --branch "${X265_TAG}" --depth 1 "${X265_REPO}" /src/x265 && cd /src/x265 && \
cd build/linux && \
MAKEFLAGS=-j$(nproc) /x265-multilib.sh && \
cp 8bit/x265 /usr/bin/x265 && \
cd / && rm -r /src/x265 /x265-multilib.sh
ENV CC=clang
ENV CXX=clang++
ENV CFLAGS "-O3 -march=native -flto"
ENV CPPFLAGS "$CFLAGS"
ENV CXXFLAGS "-O3 -march=native -flto"
ENV LDFLAGS "-flto"
RUN git clone --branch "master" --depth 1 https://github.com/l-smash/l-smash /src/l-smash && cd /src/l-smash && \
CFLAGS="-fPIC" ./configure --enable-shared --prefix=/usr && \
@ -37,7 +49,7 @@ RUN git clone --branch "master" --depth 1 https://github.com/l-smash/l-smash /sr
cd / && rm -r /src/l-smash
RUN git clone --branch "${X264_TAG}" --depth 1 "${X264_REPO}" /src/x264 && cd /src/x264 && \
./configure --enable-shared --enable-static --bit-depth=all --chroma-format=all --enable-lto --enable-pic --prefix=/usr && \
CC=gcc CXX=g++ CFLAGS="-O3 -march=native" CPPFLAGS="-O3 -march=native" CXXFLAGS="-O3 -march=native" LDFLAGS="" ./configure --enable-shared --enable-static --bit-depth=all --chroma-format=all --enable-lto --enable-pic --prefix=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/x264
@ -45,11 +57,24 @@ RUN git clone --branch "${X264_TAG}" --depth 1 "${X264_REPO}" /src/x264 && cd /s
RUN git clone --branch "${AOM_TAG}" --depth 1 "${AOM_REPO}" /src/aom && cd /src/aom && \
sed -i 's/MAX_NUM_THREADS 64/MAX_NUM_THREADS 128/' aom_util/aom_thread.h && \
mkdir b && cd b && \
cmake .. -DENABLE_CCACHE=ON -DCMAKE_BUILD_TYPE=Release -DCONFIG_AV1_ENCODER=1 -DENABLE_DOCS=OFF -DENABLE_EXAMPLES=ON -DBUILD_SHARED_LIBS=ON -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
cmake .. -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DENABLE_CCACHE=ON -DCMAKE_BUILD_TYPE=Release -DCONFIG_AV1_ENCODER=1 -DENABLE_DOCS=OFF -DENABLE_EXAMPLES=ON -DBUILD_SHARED_LIBS=ON -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/aom
RUN git clone --branch "${SVT_TAG}" --depth 1 "${SVT_REPO}" /src/svt-av1 && cd /src/svt-av1 && \
mkdir b && cd b && \
cmake .. -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DSVT_AV1_LTO=ON -DNATIVE=ON -DENABLE_AVX512=ON -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/svt-av1
RUN git clone --branch "${X265_TAG}" --depth 1 "${X265_REPO}" /src/x265 && cd /src/x265 && \
cd build/linux && \
MAKEFLAGS=-j$(nproc) /x265-multilib.sh && \
cp 8bit/x265 /usr/bin/x265 && \
cd / && rm -r /src/x265 /x265-multilib.sh
RUN git clone --branch "${ZIMG_TAG}" --depth 1 https://github.com/sekrit-twc/zimg.git /src/zimg && cd /src/zimg && \
./autogen.sh && \
./configure --enable-example --enable-simd --enable-shared --enable-static --prefix=/usr && \
@ -65,7 +90,7 @@ RUN curl "https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-$(dpkg --print-arch
cp ./qt-faststart /usr/bin/ && \
cd / && rm -r /src/ffmpeg*
RUN git clone --branch "7.1.0-16" --depth 1 https://github.com/ImageMagick/ImageMagick /src/imagemagick && cd /src/imagemagick && \
RUN git clone --branch "${MAGICK_TAG}" --depth 1 https://github.com/ImageMagick/ImageMagick /src/imagemagick && cd /src/imagemagick && \
./configure --with-magick-plus-plus --prefix=/usr && \
make -j$(nproc) && \
make install && \

2
docker/clang.list Normal file
View file

@ -0,0 +1,2 @@
deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye main
deb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye main