mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-02-20 15:17:41 +00:00
Added support for AVIF, HEIF and JPEG XL on macOS.
This commit is contained in:
parent
5971aefb83
commit
c26982be3e
2
.github/workflows/mac.yml
vendored
2
.github/workflows/mac.yml
vendored
@ -64,7 +64,7 @@ jobs:
|
||||
- name: First set up.
|
||||
run: |
|
||||
sudo chown -R `whoami`:admin /usr/local/share
|
||||
brew install automake ninja pkg-config
|
||||
brew install automake ninja pkg-config nasm meson
|
||||
|
||||
# Disable spotlight.
|
||||
sudo mdutil -a -i off
|
||||
|
@ -202,6 +202,11 @@ def removeDir(folder):
|
||||
return 'if exist ' + folder + ' rmdir /Q /S ' + folder + '\nif exist ' + folder + ' exit /b 1'
|
||||
return 'rm -rf ' + folder
|
||||
|
||||
def setVar(key, value):
|
||||
if win:
|
||||
return 'SET ' + key + '="' + value + '"';
|
||||
return key + '="' + value + '"';
|
||||
|
||||
def filterByPlatform(commands):
|
||||
commands = commands.split('\n')
|
||||
result = ''
|
||||
@ -690,10 +695,9 @@ mac:
|
||||
""")
|
||||
|
||||
stage('dav1d', """
|
||||
win:
|
||||
git clone -b 1.2.1 --depth 1 https://code.videolan.org/videolan/dav1d.git
|
||||
cd dav1d
|
||||
|
||||
win:
|
||||
if "%X8664%" equ "x64" (
|
||||
SET "TARGET=x86_64"
|
||||
) else (
|
||||
@ -709,7 +713,7 @@ win:
|
||||
echo system = 'windows' >> %FILE%
|
||||
echo cpu_family = '%TARGET%' >> %FILE%
|
||||
echo cpu = '%TARGET%' >> %FILE%
|
||||
echo endian = 'little'>> %FILE%
|
||||
echo endian = 'little' >> %FILE%
|
||||
|
||||
depends:python/Scripts/activate.bat
|
||||
%THIRDPARTY_DIR%\\python\\Scripts\\activate.bat
|
||||
@ -723,12 +727,55 @@ release:
|
||||
win:
|
||||
copy %LIBS_DIR%\\local\\lib\\libdav1d.a %LIBS_DIR%\\local\\lib\\dav1d.lib
|
||||
deactivate
|
||||
mac:
|
||||
buildOneArch() {
|
||||
arch=$1
|
||||
folder=`pwd`/$2
|
||||
|
||||
TARGET="\'${arch}\'"
|
||||
MIN="\'${MIN_VER}\'"
|
||||
FILE=cross-file.txt
|
||||
echo "[binaries]" > $FILE
|
||||
echo "c = ['clang', '-arch', ${TARGET}]" >> $FILE
|
||||
echo "cpp = ['clang++', '-arch', ${TARGET}]" >> $FILE
|
||||
echo "ar = 'ar'" >> $FILE
|
||||
echo "strip = 'strip'" >> $FILE
|
||||
echo "[built-in options]" >> $FILE
|
||||
echo "c_args = [${MIN}]" >> $FILE
|
||||
echo "cpp_args = [${MIN}]" >> $FILE
|
||||
echo "c_link_args = [${MIN}]" >> $FILE
|
||||
echo "cpp_link_args = [${MIN}]" >> $FILE
|
||||
echo "[host_machine]" >> $FILE
|
||||
echo "system = 'darwin'" >> $FILE
|
||||
echo "subsystem = 'macos'" >> $FILE
|
||||
echo "cpu_family = ${TARGET}" >> $FILE
|
||||
echo "cpu = ${TARGET}" >> $FILE
|
||||
echo "endian = 'little'" >> $FILE
|
||||
|
||||
meson setup \\
|
||||
--cross-file $FILE \\
|
||||
--prefix ${USED_PREFIX} \\
|
||||
--default-library=static \\
|
||||
--buildtype=minsize \\
|
||||
-Denable_tools=false \\
|
||||
-Denable_tests=false \\
|
||||
${folder}
|
||||
meson compile -C ${folder}
|
||||
meson install -C ${folder}
|
||||
|
||||
mv ${USED_PREFIX}/lib/libdav1d.a ${folder}/libdav1d.a
|
||||
}
|
||||
|
||||
buildOneArch arm64 build.arm64
|
||||
buildOneArch x86_64 build
|
||||
|
||||
lipo -create build.arm64/libdav1d.a build/libdav1d.a -output ${USED_PREFIX}/lib/libdav1d.a
|
||||
""")
|
||||
|
||||
stage('libavif', """
|
||||
win:
|
||||
git clone -b v0.11.1 --depth 1 https://github.com/AOMediaCodec/libavif.git
|
||||
cd libavif
|
||||
win:
|
||||
cmake . ^
|
||||
-A %WIN32X64% ^
|
||||
-DCMAKE_INSTALL_PREFIX=%LIBS_DIR%/local ^
|
||||
@ -743,12 +790,22 @@ win:
|
||||
release:
|
||||
cmake --build . --config Release
|
||||
cmake --install . --config Release
|
||||
mac:
|
||||
cmake . \\
|
||||
-D CMAKE_OSX_ARCHITECTURES="x86_64;arm64" \\
|
||||
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET \\
|
||||
-D CMAKE_INSTALL_PREFIX:STRING=$USED_PREFIX \\
|
||||
-D BUILD_SHARED_LIBS=OFF \\
|
||||
-D AVIF_ENABLE_WERROR=OFF \\
|
||||
-D AVIF_CODEC_DAV1D=ON
|
||||
cmake --build . --config MinSizeRel $MAKE_THREADS_CNT
|
||||
cmake --install . --config MinSizeRel
|
||||
""")
|
||||
|
||||
stage('libde265', """
|
||||
win:
|
||||
git clone --depth 1 -b v1.0.12 https://github.com/strukturag/libde265.git
|
||||
cd libde265
|
||||
win:
|
||||
cmake . ^
|
||||
-A %WIN32X64% ^
|
||||
-DCMAKE_INSTALL_PREFIX=%LIBS_DIR%/local ^
|
||||
@ -768,12 +825,63 @@ win:
|
||||
release:
|
||||
cmake --build . --config Release
|
||||
cmake --install . --config Release
|
||||
mac:
|
||||
cmake . \\
|
||||
-D CMAKE_OSX_ARCHITECTURES="x86_64;arm64" \\
|
||||
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET \\
|
||||
-D CMAKE_INSTALL_PREFIX:STRING=$USED_PREFIX \\
|
||||
-D DISABLE_SSE=ON \\
|
||||
-D BUILD_SHARED_LIBS=OFF \\
|
||||
-D ENABLE_DECODER=ON \\
|
||||
-D ENABLE_ENCODER=OFF
|
||||
cmake --build . --config MinSizeRel $MAKE_THREADS_CNT
|
||||
cmake --install . --config MinSizeRel
|
||||
""")
|
||||
|
||||
stage('libwebp', """
|
||||
git clone -b v1.3.2 https://github.com/webmproject/libwebp.git
|
||||
cd libwebp
|
||||
win:
|
||||
nmake /f Makefile.vc CFG=debug-static OBJDIR=out RTLIBCFG=static all
|
||||
nmake /f Makefile.vc CFG=release-static OBJDIR=out RTLIBCFG=static all
|
||||
copy out\\release-static\\$X8664\\lib\\libwebp.lib out\\release-static\\$X8664\\lib\\webp.lib
|
||||
copy out\\release-static\\$X8664\\lib\\libwebpdemux.lib out\\release-static\\$X8664\\lib\\webpdemux.lib
|
||||
copy out\\release-static\\$X8664\\lib\\libwebpmux.lib out\\release-static\\$X8664\\lib\\webpmux.lib
|
||||
mac:
|
||||
buildOneArch() {
|
||||
arch=$1
|
||||
folder=$2
|
||||
|
||||
CFLAGS=$UNGUARDED cmake -B $folder -G Ninja . \\
|
||||
-D CMAKE_BUILD_TYPE=Release \\
|
||||
-D CMAKE_INSTALL_PREFIX=$USED_PREFIX \\
|
||||
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET \\
|
||||
-D CMAKE_OSX_ARCHITECTURES=$arch \\
|
||||
-D WEBP_BUILD_ANIM_UTILS=OFF \\
|
||||
-D WEBP_BUILD_CWEBP=OFF \\
|
||||
-D WEBP_BUILD_DWEBP=OFF \\
|
||||
-D WEBP_BUILD_GIF2WEBP=OFF \\
|
||||
-D WEBP_BUILD_IMG2WEBP=OFF \\
|
||||
-D WEBP_BUILD_VWEBP=OFF \\
|
||||
-D WEBP_BUILD_WEBPMUX=OFF \\
|
||||
-D WEBP_BUILD_WEBPINFO=OFF \\
|
||||
-D WEBP_BUILD_EXTRAS=OFF
|
||||
cmake --build $folder $MAKE_THREADS_CNT
|
||||
}
|
||||
buildOneArch arm64 build.arm64
|
||||
buildOneArch x86_64 build
|
||||
|
||||
lipo -create build.arm64/libsharpyuv.a build/libsharpyuv.a -output build/libsharpyuv.a
|
||||
lipo -create build.arm64/libwebp.a build/libwebp.a -output build/libwebp.a
|
||||
lipo -create build.arm64/libwebpdemux.a build/libwebpdemux.a -output build/libwebpdemux.a
|
||||
lipo -create build.arm64/libwebpmux.a build/libwebpmux.a -output build/libwebpmux.a
|
||||
cmake --install build
|
||||
""")
|
||||
|
||||
stage('libheif', """
|
||||
win:
|
||||
git clone --depth 1 -b v1.16.2 https://github.com/strukturag/libheif.git
|
||||
cd libheif
|
||||
win:
|
||||
%THIRDPARTY_DIR%\\msys64\\usr\\bin\\sed.exe -i 's/LIBHEIF_EXPORTS/LIBDE265_STATIC_BUILD/g' libheif/CMakeLists.txt
|
||||
%THIRDPARTY_DIR%\\msys64\\usr\\bin\\sed.exe -i 's/HAVE_VISIBILITY/LIBHEIF_STATIC_BUILD/g' libheif/CMakeLists.txt
|
||||
cmake . ^
|
||||
@ -797,12 +905,55 @@ win:
|
||||
release:
|
||||
cmake --build . --config Release
|
||||
cmake --install . --config Release
|
||||
mac:
|
||||
cmake . \\
|
||||
-D CMAKE_OSX_ARCHITECTURES="x86_64;arm64" \\
|
||||
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET \\
|
||||
-D CMAKE_INSTALL_PREFIX:STRING=$USED_PREFIX \\
|
||||
-D BUILD_SHARED_LIBS=OFF \\
|
||||
-D ENABLE_PLUGIN_LOADING=OFF \\
|
||||
-D WITH_AOM_ENCODER=OFF \\
|
||||
-D WITH_AOM_DECODER=OFF \\
|
||||
-D WITH_X265=OFF \\
|
||||
-D WITH_SvtEnc=OFF \\
|
||||
-D WITH_RAV1E=OFF \\
|
||||
-D WITH_DAV1D=ON \\
|
||||
-D WITH_LIBDE265=ON \\
|
||||
-D LIBDE265_INCLUDE_DIR=$USED_PREFIX/include/ \\
|
||||
-D LIBDE265_LIBRARY=$USED_PREFIX/lib/libde265.a \\
|
||||
-D LIBSHARPYUV_INCLUDE_DIR=$USED_PREFIX/include/webp/ \\
|
||||
-D LIBSHARPYUV_LIBRARY=$USED_PREFIX/lib/libsharpyuv.a \\
|
||||
-D WITH_EXAMPLES=OFF
|
||||
cmake --build . --config MinSizeRel $MAKE_THREADS_CNT
|
||||
cmake --install . --config MinSizeRel
|
||||
""")
|
||||
|
||||
stage('libjxl', """
|
||||
win:
|
||||
git clone -b v0.8.2 --depth 1 --recursive --shallow-submodules https://github.com/libjxl/libjxl.git
|
||||
cd libjxl
|
||||
""" + setVar("cmake_defines", ' '.join("""
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DBUILD_TESTING=OFF
|
||||
-DJPEGXL_ENABLE_FUZZERS=OFF
|
||||
-DJPEGXL_ENABLE_DEVTOOLS=OFF
|
||||
-DJPEGXL_ENABLE_TOOLS=OFF
|
||||
-DJPEGXL_ENABLE_DOXYGEN=OFF
|
||||
-DJPEGXL_ENABLE_MANPAGES=OFF
|
||||
-DJPEGXL_ENABLE_EXAMPLES=OFF
|
||||
-DJPEGXL_ENABLE_JNI=OFF
|
||||
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF
|
||||
-DJPEGXL_ENABLE_SJPEG=OFF
|
||||
-DJPEGXL_ENABLE_OPENEXR=OFF
|
||||
-DJPEGXL_ENABLE_SKCMS=ON
|
||||
-DJPEGXL_BUNDLE_SKCMS=ON
|
||||
-DJPEGXL_ENABLE_VIEWERS=OFF
|
||||
-DJPEGXL_ENABLE_TCMALLOC=OFF
|
||||
-DJPEGXL_ENABLE_PLUGINS=OFF
|
||||
-DJPEGXL_ENABLE_COVERAGE=OFF
|
||||
-DJPEGXL_ENABLE_PROFILER=OFF
|
||||
-DJPEGXL_WARNINGS_AS_ERRORS=OFF
|
||||
""".replace('\n', '').split())) + """
|
||||
win:
|
||||
cmake . ^
|
||||
-A %WIN32X64% ^
|
||||
-DCMAKE_INSTALL_PREFIX=%LIBS_DIR%/local ^
|
||||
@ -813,31 +964,20 @@ win:
|
||||
-DCMAKE_CXX_FLAGS_DEBUG="/MTd /Zi /Ob0 /Od /RTC1" ^
|
||||
-DCMAKE_C_FLAGS_RELEASE="/MT /O2 /Ob2 /DNDEBUG" ^
|
||||
-DCMAKE_CXX_FLAGS_RELEASE="/MT /O2 /Ob2 /DNDEBUG" ^
|
||||
-DBUILD_SHARED_LIBS=OFF ^
|
||||
-DBUILD_TESTING=OFF ^
|
||||
-DJPEGXL_ENABLE_FUZZERS=OFF ^
|
||||
-DJPEGXL_ENABLE_DEVTOOLS=OFF ^
|
||||
-DJPEGXL_ENABLE_TOOLS=OFF ^
|
||||
-DJPEGXL_ENABLE_DOXYGEN=OFF ^
|
||||
-DJPEGXL_ENABLE_MANPAGES=OFF ^
|
||||
-DJPEGXL_ENABLE_EXAMPLES=OFF ^
|
||||
-DJPEGXL_ENABLE_JNI=OFF ^
|
||||
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF ^
|
||||
-DJPEGXL_ENABLE_SJPEG=OFF ^
|
||||
-DJPEGXL_ENABLE_OPENEXR=OFF ^
|
||||
-DJPEGXL_ENABLE_SKCMS=ON ^
|
||||
-DJPEGXL_BUNDLE_SKCMS=ON ^
|
||||
-DJPEGXL_ENABLE_VIEWERS=OFF ^
|
||||
-DJPEGXL_ENABLE_TCMALLOC=OFF ^
|
||||
-DJPEGXL_ENABLE_PLUGINS=OFF ^
|
||||
-DJPEGXL_ENABLE_COVERAGE=OFF ^
|
||||
-DJPEGXL_ENABLE_PROFILER=OFF ^
|
||||
-DJPEGXL_WARNINGS_AS_ERRORS=OFF
|
||||
%cmake_defines%
|
||||
cmake --build . --config Debug
|
||||
cmake --install . --config Debug
|
||||
release:
|
||||
cmake --build . --config Release
|
||||
cmake --install . --config Release
|
||||
mac:
|
||||
cmake . \\
|
||||
-D CMAKE_OSX_ARCHITECTURES="x86_64;arm64" \\
|
||||
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET \\
|
||||
-D CMAKE_INSTALL_PREFIX:STRING=$USED_PREFIX \\
|
||||
${cmake_defines}
|
||||
cmake --build . --config MinSizeRel $MAKE_THREADS_CNT
|
||||
cmake --install . --config MinSizeRel
|
||||
""")
|
||||
|
||||
stage('libvpx', """
|
||||
@ -906,46 +1046,6 @@ depends:yasm/yasm
|
||||
make install
|
||||
""")
|
||||
|
||||
stage('libwebp', """
|
||||
git clone -b v1.3.2 https://github.com/webmproject/libwebp.git
|
||||
cd libwebp
|
||||
win:
|
||||
nmake /f Makefile.vc CFG=debug-static OBJDIR=out RTLIBCFG=static all
|
||||
nmake /f Makefile.vc CFG=release-static OBJDIR=out RTLIBCFG=static all
|
||||
copy out\\release-static\\$X8664\\lib\\libwebp.lib out\\release-static\\$X8664\\lib\\webp.lib
|
||||
copy out\\release-static\\$X8664\\lib\\libwebpdemux.lib out\\release-static\\$X8664\\lib\\webpdemux.lib
|
||||
copy out\\release-static\\$X8664\\lib\\libwebpmux.lib out\\release-static\\$X8664\\lib\\webpmux.lib
|
||||
mac:
|
||||
buildOneArch() {
|
||||
arch=$1
|
||||
folder=$2
|
||||
|
||||
CFLAGS=$UNGUARDED cmake -B $folder -G Ninja . \\
|
||||
-D CMAKE_BUILD_TYPE=Release \\
|
||||
-D CMAKE_INSTALL_PREFIX=$USED_PREFIX \\
|
||||
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET \\
|
||||
-D CMAKE_OSX_ARCHITECTURES=$arch \\
|
||||
-D WEBP_BUILD_ANIM_UTILS=OFF \\
|
||||
-D WEBP_BUILD_CWEBP=OFF \\
|
||||
-D WEBP_BUILD_DWEBP=OFF \\
|
||||
-D WEBP_BUILD_GIF2WEBP=OFF \\
|
||||
-D WEBP_BUILD_IMG2WEBP=OFF \\
|
||||
-D WEBP_BUILD_VWEBP=OFF \\
|
||||
-D WEBP_BUILD_WEBPMUX=OFF \\
|
||||
-D WEBP_BUILD_WEBPINFO=OFF \\
|
||||
-D WEBP_BUILD_EXTRAS=OFF
|
||||
cmake --build $folder $MAKE_THREADS_CNT
|
||||
}
|
||||
buildOneArch arm64 build.arm64
|
||||
buildOneArch x86_64 build
|
||||
|
||||
lipo -create build.arm64/libsharpyuv.a build/libsharpyuv.a -output build/libsharpyuv.a
|
||||
lipo -create build.arm64/libwebp.a build/libwebp.a -output build/libwebp.a
|
||||
lipo -create build.arm64/libwebpdemux.a build/libwebpdemux.a -output build/libwebpdemux.a
|
||||
lipo -create build.arm64/libwebpmux.a build/libwebpmux.a -output build/libwebpmux.a
|
||||
cmake --install build
|
||||
""")
|
||||
|
||||
stage('nv-codec-headers', """
|
||||
win:
|
||||
git clone https://github.com/FFmpeg/nv-codec-headers.git
|
||||
|
@ -13,7 +13,7 @@ You will require **api_id** and **api_hash** to access the Telegram API servers.
|
||||
Go to ***BuildPath*** and run
|
||||
|
||||
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
brew install git automake cmake wget pkg-config gnu-tar ninja
|
||||
brew install git automake cmake wget pkg-config gnu-tar ninja nasm meson
|
||||
|
||||
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user