diff --git a/.gitmodules b/.gitmodules index 63b264efb..c3618c2c8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -91,3 +91,6 @@ [submodule "Telegram/ThirdParty/wayland-protocols"] path = Telegram/ThirdParty/wayland-protocols url = https://github.com/gitlab-freedesktop-mirrors/wayland-protocols.git +[submodule "Telegram/ThirdParty/kimageformats"] + path = Telegram/ThirdParty/kimageformats + url = https://github.com/KDE/kimageformats.git diff --git a/Telegram/ThirdParty/kimageformats b/Telegram/ThirdParty/kimageformats new file mode 160000 index 000000000..dfbc6e0f8 --- /dev/null +++ b/Telegram/ThirdParty/kimageformats @@ -0,0 +1 @@ +Subproject commit dfbc6e0f8c08370e54d4700a98316f1ae161e772 diff --git a/Telegram/build/docker/centos_env/Dockerfile b/Telegram/build/docker/centos_env/Dockerfile index 9554421bc..ce79ff959 100644 --- a/Telegram/build/docker/centos_env/Dockerfile +++ b/Telegram/build/docker/centos_env/Dockerfile @@ -51,6 +51,17 @@ RUN git clone {{ GIT }}/desktop-app/patches.git \ && git checkout 355c563138 \ && rm -rf .git +FROM builder AS nasm +RUN git clone -b nasm-2.15.05 --depth=1 {{ GIT }}/netwide-assembler/nasm.git \ + && cd nasm \ + && ./autogen.sh \ + && ./configure \ + && make -j$(nproc) \ + && mkdir -p "{{ LibrariesPath }}/nasm-cache/usr/local/bin" \ + && install -c nasm "{{ LibrariesPath }}/nasm-cache/usr/local/bin/nasm" \ + && cd .. \ + && rm -rf nasm + FROM builder AS extra-cmake-modules RUN git clone -b v5.98.0 --depth=1 {{ GIT }}/KDE/extra-cmake-modules.git \ && cd extra-cmake-modules \ @@ -102,6 +113,41 @@ RUN git clone -b 0.4.17 --depth=1 {{ GIT }}/libproxy/libproxy.git \ && cd .. \ && rm -rf libproxy +FROM builder AS lcms2 +RUN git clone -b lcms2.13.1 --depth=1 {{ GIT }}/mm2/Little-CMS.git \ + && cd Little-CMS \ + && meson build \ + --buildtype=release \ + --default-library=both \ + && meson compile -C build \ + && DESTDIR="{{ LibrariesPath }}/lcms2-cache" meson install -C build \ + && cd .. \ + && rm -rf Little-CMS + +FROM builder AS brotli +RUN git clone -b v1.0.9 --depth=1 {{ GIT }}/google/brotli.git \ + && cd brotli \ + && cmake -GNinja -B build . \ + -DCMAKE_BUILD_TYPE=Release \ + -DBROTLI_DISABLE_TESTS=ON \ + && cmake --build build --parallel \ + && DESTDIR="{{ LibrariesPath }}/brotli-cache" cmake --install build \ + && cd .. \ + && rm -rf brotli + +FROM builder AS highway +RUN git clone -b 1.0.1 --depth=1 {{ GIT }}/google/highway.git \ + && cd highway \ + && cmake -GNinja -B build . \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTING=OFF \ + -DHWY_ENABLE_CONTRIB=OFF \ + -DHWY_ENABLE_EXAMPLES=OFF \ + && cmake --build build --parallel \ + && DESTDIR="{{ LibrariesPath }}/highway-cache" cmake --install build \ + && cd .. \ + && rm -rf highway + FROM builder AS mozjpeg RUN git clone -b v4.0.3 --depth=1 {{ GIT }}/mozilla/mozjpeg.git \ && cd mozjpeg \ @@ -125,6 +171,33 @@ RUN git clone -b v1.3.1 --depth=1 {{ GIT }}/xiph/opus.git \ && cd .. \ && rm -rf opus +FROM builder AS dav1d +COPY --link --from=nasm {{ LibrariesPath }}/nasm-cache / + +RUN git clone -b 1.0.0 --depth=1 {{ GIT }}/videolan/dav1d.git \ + && cd dav1d \ + && meson build \ + --buildtype=release \ + --default-library=both \ + -Denable_tools=false \ + -Denable_tests=false \ + && meson compile -C build \ + && DESTDIR="{{ LibrariesPath }}/dav1d-cache" meson install -C build \ + && cd .. \ + && rm -rf dav1d + +FROM builder AS libde265 +RUN git clone -b v1.0.8 --depth=1 {{ GIT }}/strukturag/libde265.git \ + && cd libde265 \ + && cmake -GNinja . \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DENABLE_SDL=OFF \ + && cmake --build . --parallel \ + && DESTDIR="{{ LibrariesPath }}/libde265-cache" cmake --install . \ + && cd .. \ + && rm -rf libde265 + FROM builder AS libvpx RUN git clone -b v1.11.0 --depth=1 {{ GIT }}/webmproject/libvpx.git \ && cd libvpx \ @@ -141,6 +214,64 @@ RUN git clone -b v1.11.0 --depth=1 {{ GIT }}/webmproject/libvpx.git \ && cd .. \ && rm -rf libvpx +FROM builder AS libavif +COPY --link --from=dav1d {{ LibrariesPath }}/dav1d-cache / + +RUN git clone -b v0.10.1 --depth=1 {{ GIT }}/AOMediaCodec/libavif.git \ + && cd libavif \ + && cmake -GNinja -B build . \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DAVIF_CODEC_DAV1D=ON \ + && cmake --build build --parallel \ + && DESTDIR="{{ LibrariesPath }}/libavif-cache" cmake --install build \ + && cd .. \ + && rm -rf libavif + +FROM builder AS libheif +COPY --link --from=libde265 {{ LibrariesPath }}/libde265-cache / + +RUN git clone -b v1.13.0 --depth=1 {{ GIT }}/strukturag/libheif.git \ + && cd libheif \ + && cmake -GNinja -B build . \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DWITH_X265=OFF \ + -DWITH_AOM=OFF \ + -DWITH_RAV1E=OFF \ + -DWITH_DAV1D=OFF \ + -DWITH_EXAMPLES=OFF \ + && cmake --build build --parallel \ + && DESTDIR="{{ LibrariesPath }}/libheif-cache" cmake --install build \ + && cd .. \ + && rm -rf libheif + +FROM builder AS libjxl +COPY --link --from=lcms2 {{ LibrariesPath }}/lcms2-cache / +COPY --link --from=brotli {{ LibrariesPath }}/brotli-cache / +COPY --link --from=highway {{ LibrariesPath }}/highway-cache / + +RUN git clone -b v0.7rc --depth=1 {{ GIT }}/libjxl/libjxl.git \ + && cd libjxl \ + && cmake -GNinja -B build . \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTING=OFF \ + -DJPEGXL_ENABLE_DEVTOOLS=OFF \ + -DJPEGXL_ENABLE_TOOLS=OFF \ + -DJPEGXL_ENABLE_DOXYGEN=OFF \ + -DJPEGXL_ENABLE_MANPAGES=OFF \ + -DJPEGXL_ENABLE_BENCHMARK=OFF \ + -DJPEGXL_ENABLE_EXAMPLES=OFF \ + -DJPEGXL_ENABLE_JNI=OFF \ + -DJPEGXL_ENABLE_SJPEG=OFF \ + -DJPEGXL_ENABLE_OPENEXR=OFF \ + -DJPEGXL_ENABLE_SKCMS=OFF \ + && cmake --build build --parallel \ + && DESTDIR="{{ LibrariesPath }}/libjxl-cache" cmake --install build \ + && cd .. \ + && rm -rf libjxl + FROM builder AS rnnoise RUN git clone -b master --depth=1 {{ GIT }}/desktop-app/rnnoise \ && cd rnnoise \ @@ -682,9 +813,17 @@ COPY --link --from=libffi {{ LibrariesPath }}/libffi-cache / COPY --link --from=zlib {{ LibrariesPath }}/zlib-cache / COPY --link --from=xz {{ LibrariesPath }}/xz-cache / COPY --link --from=libproxy {{ LibrariesPath }}/libproxy-cache / +COPY --link --from=lcms2 {{ LibrariesPath }}/lcms2-cache / +COPY --link --from=brotli {{ LibrariesPath }}/brotli-cache / +COPY --link --from=highway {{ LibrariesPath }}/highway-cache / COPY --link --from=mozjpeg {{ LibrariesPath }}/mozjpeg-cache / COPY --link --from=opus {{ LibrariesPath }}/opus-cache / +COPY --link --from=dav1d {{ LibrariesPath }}/dav1d-cache / +COPY --link --from=libde265 {{ LibrariesPath }}/libde265-cache / COPY --link --from=libvpx {{ LibrariesPath }}/libvpx-cache / +COPY --link --from=libavif {{ LibrariesPath }}/libavif-cache / +COPY --link --from=libheif {{ LibrariesPath }}/libheif-cache / +COPY --link --from=libjxl {{ LibrariesPath }}/libjxl-cache / COPY --link --from=rnnoise {{ LibrariesPath }}/rnnoise-cache / COPY --link --from=xcb {{ LibrariesPath }}/xcb-cache / COPY --link --from=xcb-wm {{ LibrariesPath }}/xcb-wm-cache / diff --git a/cmake b/cmake index b9f1b6036..c79563ea3 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit b9f1b6036329e44ec61f51f0b363fe2319158b84 +Subproject commit c79563ea343075d97d30fe3a6598775538676515 diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 640eb8d1d..8da9dfda8 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -93,8 +93,10 @@ parts: - clang - python3 - libasound2-dev + - libavif-dev - libglib2.0-dev - libglibmm-2.4-dev + - libheif-dev - libopus-dev - libpulse-dev - libwayland-dev @@ -105,8 +107,10 @@ parts: - zlib1g-dev stage-packages: - libasound2 + - libavif13 - libglib2.0-0 - libglibmm-2.4-1v5 + - libheif1 - libopus0 - libpulse0 - libwayland-client0 @@ -155,6 +159,7 @@ parts: - desktop-qt - ffmpeg - kcoreaddons + - libjxl - mozjpeg - openal - openssl @@ -252,6 +257,40 @@ parts: - extra-cmake-modules - desktop-qt + libjxl: + source: https://github.com/libjxl/libjxl.git + source-depth: 1 + source-tag: v0.7rc + plugin: cmake + build-packages: + - libbrotli-dev + - libhwy-dev + - liblcms2-dev + stage-packages: + - libbrotli1 + - libhwy0 + - liblcms2-2 + cmake-parameters: + - -DCMAKE_BUILD_TYPE=Release + - -DCMAKE_INSTALL_PREFIX=/usr + - -DBUILD_TESTING=OFF + - -DJPEGXL_ENABLE_DEVTOOLS=OFF + - -DJPEGXL_ENABLE_TOOLS=OFF + - -DJPEGXL_ENABLE_DOXYGEN=OFF + - -DJPEGXL_ENABLE_MANPAGES=OFF + - -DJPEGXL_ENABLE_BENCHMARK=OFF + - -DJPEGXL_ENABLE_EXAMPLES=OFF + - -DJPEGXL_ENABLE_JNI=OFF + - -DJPEGXL_ENABLE_SJPEG=OFF + - -DJPEGXL_ENABLE_OPENEXR=OFF + - -DJPEGXL_ENABLE_SKCMS=OFF + prime: + - -./usr/bin + - -./usr/include + - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgocnfig + - -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/*.so + - -./usr/share + mozjpeg: source: https://github.com/mozilla/mozjpeg.git source-depth: 1