From 15fc17066bd7c25d693c508daac4fbcb9e67e294 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 6 Sep 2019 08:24:37 +0300 Subject: [PATCH] Added Github CI for Windows and MacOS. Added new build status badges. --- .github/workflows/mac.yml | 432 ++++++++++++++++++++++++++++++++++++++ .github/workflows/win.yml | 342 ++++++++++++++++++++++++++++++ README.md | 2 + 3 files changed, 776 insertions(+) create mode 100644 .github/workflows/mac.yml create mode 100644 .github/workflows/win.yml diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml new file mode 100644 index 000000000..ebfb141e6 --- /dev/null +++ b/.github/workflows/mac.yml @@ -0,0 +1,432 @@ +name: MacOS. + +on: + push: + paths-ignore: + - 'docs/**' + - '*.md' + pull_request: + paths-ignore: + - 'docs/**' + - '*.md' + +jobs: + + macos: + name: MacOS + runs-on: macos-latest + + strategy: + matrix: + defines: + - "" + env: + MIN_MAC: "-mmacosx-version-min=10.12" + UNGUARDED: "-Werror=unguarded-availability-new" + GIT: "https://github.com" + PREFIX: "/usr/local/macos" + MACOSX_DEPLOYMENT_TARGET: "10.12" + XZ: "xz-5.0.5" + QT: "5_12_5" + OPENSSL_VER: "1_1_1" + QT_PREFIX: "/usr/local/desktop-app/Qt-5.12.5" + LIBICONV_VER: "libiconv-1.15" + UPLOAD_ARTIFACT: "false" + MANUAL_CACHING: "1" + DOC_PATH: "docs/building-xcode.md" + steps: + - name: Get repository name. + run: echo ::set-env name=REPO_NAME::${GITHUB_REPOSITORY##*/} + + - name: Clone. + uses: actions/checkout@v1 + with: + submodules: recursive + + - name: First set up. + run: | + cd .. + mv $REPO_NAME temp + mkdir $REPO_NAME + mv temp $REPO_NAME/$REPO_NAME + cd $REPO_NAME + + brew install automake fdk-aac lame libass libtool libvorbis libvpx \ + ninja opus sdl shtool texi2html theora x264 xvid yasm pkg-config + + sudo xcode-select -s /Applications/Xcode.app/Contents/Developer + + xcodebuild -version > CACHE_KEY.txt + echo $MIN_MAC >> CACHE_KEY.txt + echo $PREFIX >> CACHE_KEY.txt + echo $MANUAL_CACHING >> CACHE_KEY.txt + echo ::set-env name=CACHE_KEY::`md5 -q CACHE_KEY.txt` + + echo ::add-path::$PWD/Libraries/depot_tools + + mkdir -p Libraries/macos + cd Libraries/macos + echo ::set-env name=LibrariesPath::`pwd` + + - name: Range-v3. + run: | + echo "Find necessary branch from doc." + cloneRange=$(grep -A 1 "range-v3" $REPO_NAME/$DOC_PATH | sed -n 1p) + cd $LibrariesPath + echo $cloneRange + eval $cloneRange + + - name: Patches. + run: | + echo "Find necessary commit from doc." + checkoutCommit=$(grep -A 1 "cd patches" $REPO_NAME/$DOC_PATH | sed -n 2p) + cd $LibrariesPath + git clone $GIT/desktop-app/patches.git + cd Patches + eval $checkoutCommit + + - name: XZ. + run: | + cd $LibrariesPath + + wget https://tukaani.org/xz/$XZ.tar.gz + tar -xvzf $XZ.tar.gz + cd $XZ + CFLAGS="$MIN_MAC" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX + make -j$(nproc) + sudo make install + + - name: Zlib. + run: | + cd $LibrariesPath + + git clone $GIT/desktop-app/zlib.git + cd zlib + CFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure + make -j$(nproc) + sudo make install + + - name: OpenSSL cache. + id: cache-openssl + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/openssl_${{ env.OPENSSL_VER }} + key: ${{ runner.OS }}-${{ env.OPENSSL_VER }}-${{ env.CACHE_KEY }} + - name: OpenSSL. + if: steps.cache-openssl.outputs.cache-hit != 'true' + run: | + cd $LibrariesPath + + git clone $GIT/openssl/openssl openssl_$OPENSSL_VER + cd openssl_$OPENSSL_VER + git checkout OpenSSL_"$OPENSSL_VER"-stable + ./Configure \ + --prefix=$PREFIX \ + darwin64-x86_64-cc \ + -static \ + $MIN_MAC + make build_libs -j$(nproc) + + - name: Opus cache. + id: cache-opus + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/opus + key: ${{ runner.OS }}-opus-${{ env.CACHE_KEY }} + - name: Opus. + if: steps.cache-opus.outputs.cache-hit != 'true' + run: | + cd $LibrariesPath + + git clone $GIT/xiph/opus + cd opus + git checkout v1.3 + ./autogen.sh + CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX + make -j$(nproc) + - name: Opus install. + run: | + cd $LibrariesPath/opus + sudo make install + + - name: Libiconv cache. + id: cache-libiconv + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/${{ env.LIBICONV_VER }} + key: ${{ runner.OS }}-${{ env.LIBICONV_VER }}-${{ env.CACHE_KEY }} + - name: Libiconv. + if: steps.cache-libiconv.outputs.cache-hit != 'true' + run: | + cd $LibrariesPath + + wget https://ftp.gnu.org/pub/gnu/libiconv/"$LIBICONV_VER".tar.gz + tar -xvzf "$LIBICONV_VER".tar.gz + cd $LIBICONV_VER + CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --enable-static --prefix=$PREFIX + make -j$(nproc) + - name: Libiconv install. + run: | + cd $LibrariesPath/$LIBICONV_VER + sudo make install + + - name: FFmpeg cache. + id: cache-ffmpeg + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/ffmpeg + key: ${{ runner.OS }}-ffmpeg-${{ env.CACHE_KEY }} + - name: FFmpeg. + if: steps.cache-ffmpeg.outputs.cache-hit != 'true' + run: | + cd $LibrariesPath + + git clone $GIT/FFmpeg/FFmpeg.git ffmpeg + cd ffmpeg + git checkout release/3.4 + CFLAGS=`freetype-config --cflags` + LDFLAGS=`freetype-config --libs` + PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/X11/lib/pkgconfig + + ./configure --prefix=/usr/local \ + --extra-cflags="$MIN_MAC $UNGUARDED" \ + --extra-cxxflags="$MIN_MAC $UNGUARDED" \ + --extra-ldflags="$MIN_MAC" \ + --enable-protocol=file --enable-libopus \ + --disable-programs \ + --disable-doc \ + --disable-network \ + --disable-everything \ + --enable-hwaccel=h264_videotoolbox \ + --enable-hwaccel=hevc_videotoolbox \ + --enable-hwaccel=mpeg1_videotoolbox \ + --enable-hwaccel=mpeg2_videotoolbox \ + --enable-hwaccel=mpeg4_videotoolbox \ + --enable-decoder=aac \ + --enable-decoder=aac_at \ + --enable-decoder=aac_fixed \ + --enable-decoder=aac_latm \ + --enable-decoder=aasc \ + --enable-decoder=alac \ + --enable-decoder=alac_at \ + --enable-decoder=flac \ + --enable-decoder=gif \ + --enable-decoder=h264 \ + --enable-decoder=hevc \ + --enable-decoder=mp1 \ + --enable-decoder=mp1float \ + --enable-decoder=mp2 \ + --enable-decoder=mp2float \ + --enable-decoder=mp3 \ + --enable-decoder=mp3adu \ + --enable-decoder=mp3adufloat \ + --enable-decoder=mp3float \ + --enable-decoder=mp3on4 \ + --enable-decoder=mp3on4float \ + --enable-decoder=mpeg4 \ + --enable-decoder=msmpeg4v2 \ + --enable-decoder=msmpeg4v3 \ + --enable-decoder=opus \ + --enable-decoder=pcm_alaw \ + --enable-decoder=pcm_alaw_at \ + --enable-decoder=pcm_f32be \ + --enable-decoder=pcm_f32le \ + --enable-decoder=pcm_f64be \ + --enable-decoder=pcm_f64le \ + --enable-decoder=pcm_lxf \ + --enable-decoder=pcm_mulaw \ + --enable-decoder=pcm_mulaw_at \ + --enable-decoder=pcm_s16be \ + --enable-decoder=pcm_s16be_planar \ + --enable-decoder=pcm_s16le \ + --enable-decoder=pcm_s16le_planar \ + --enable-decoder=pcm_s24be \ + --enable-decoder=pcm_s24daud \ + --enable-decoder=pcm_s24le \ + --enable-decoder=pcm_s24le_planar \ + --enable-decoder=pcm_s32be \ + --enable-decoder=pcm_s32le \ + --enable-decoder=pcm_s32le_planar \ + --enable-decoder=pcm_s64be \ + --enable-decoder=pcm_s64le \ + --enable-decoder=pcm_s8 \ + --enable-decoder=pcm_s8_planar \ + --enable-decoder=pcm_u16be \ + --enable-decoder=pcm_u16le \ + --enable-decoder=pcm_u24be \ + --enable-decoder=pcm_u24le \ + --enable-decoder=pcm_u32be \ + --enable-decoder=pcm_u32le \ + --enable-decoder=pcm_u8 \ + --enable-decoder=pcm_zork \ + --enable-decoder=vorbis \ + --enable-decoder=wavpack \ + --enable-decoder=wmalossless \ + --enable-decoder=wmapro \ + --enable-decoder=wmav1 \ + --enable-decoder=wmav2 \ + --enable-decoder=wmavoice \ + --enable-encoder=libopus \ + --enable-parser=aac \ + --enable-parser=aac_latm \ + --enable-parser=flac \ + --enable-parser=h264 \ + --enable-parser=hevc \ + --enable-parser=mpeg4video \ + --enable-parser=mpegaudio \ + --enable-parser=opus \ + --enable-parser=vorbis \ + --enable-demuxer=aac \ + --enable-demuxer=flac \ + --enable-demuxer=gif \ + --enable-demuxer=h264 \ + --enable-demuxer=hevc \ + --enable-demuxer=m4v \ + --enable-demuxer=mov \ + --enable-demuxer=mp3 \ + --enable-demuxer=ogg \ + --enable-demuxer=wav \ + --enable-muxer=ogg \ + --enable-muxer=opus + + make -j$(nproc) + - name: FFmpeg install. + run: | + cd $LibrariesPath/ffmpeg + sudo make install + + - name: OpenAL Soft. + run: | + cd $LibrariesPath + + git clone $GIT/kcat/openal-soft.git + cd openal-soft + git checkout openal-soft-1.19.1 + cd build + + CFLAGS="$UNGUARDED" CPPFLAGS="$UNGUARDED" cmake \ + -D CMAKE_INSTALL_PREFIX:PATH=$PREFIX \ + -D ALSOFT_EXAMPLES=OFF \ + -D LIBTYPE:STRING=STATIC \ + -D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET .. + + make -j$(nproc) + sudo make install + + - name: Crashpad cache. + id: cache-crashpad + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/crashpad + key: ${{ runner.OS }}-crashpad-${{ env.CACHE_KEY }}-${{ hashFiles('**/crashpad.diff') }}-${{ hashFiles('**/mini_chromium.diff') }} + - name: Crashpad. + if: steps.cache-crashpad.outputs.cache-hit != 'true' + run: | + cd Libraries + echo Install GYP for Crashpad. + git clone https://chromium.googlesource.com/external/gyp + git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git + cd gyp + git checkout 9f2a7bb1 + git apply $LibrariesPath/patches/gyp.diff + ./setup.py build + sudo ./setup.py install + + cd $LibrariesPath + + git clone https://chromium.googlesource.com/crashpad/crashpad.git + cd crashpad + git checkout feb3aa3923 + git apply ../patches/crashpad.diff + cd third_party/mini_chromium + git clone https://chromium.googlesource.com/chromium/mini_chromium + cd mini_chromium + git checkout 7c5b0c1ab4 + git apply ../../../../patches/mini_chromium.diff + cd ../../gtest + git clone https://chromium.googlesource.com/external/github.com/google/googletest gtest + cd gtest + git checkout d62d6c6556 + cd ../../.. + + build/gyp_crashpad.py -Dmac_deployment_target=10.10 + ninja -C out/Debug + + - name: Qt 5.12.5 cache. + id: cache-qt + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/qt-cache + key: ${{ runner.OS }}-qt-${{ env.CACHE_KEY }}-${{ hashFiles('**/qtbase_5_12_5.diff') }} + - name: Use cached Qt 5.12.5. + if: steps.cache-qt.outputs.cache-hit == 'true' + run: | + cd $LibrariesPath + mv qt-cache Qt-5.12.5 + sudo mkdir -p $QT_PREFIX + sudo mv -f Qt-5.12.5 /usr/local/desktop-app/ + - name: Build Qt 5.12.5. + if: steps.cache-qt.outputs.cache-hit != 'true' + run: | + cd $LibrariesPath + + git clone git://code.qt.io/qt/qt5.git qt$QT + cd qt$QT + perl init-repository --module-subset=qtbase,qtimageformats + git checkout v5.12.5 + git submodule update qtbase + git submodule update qtimageformats + cd qtbase + git apply ../../patches/qtbase_$QT.diff + cd .. + + ./configure \ + -prefix "$QT_PREFIX" \ + -debug \ + -force-debug-info \ + -opensource \ + -confirm-license \ + -static \ + -opengl desktop \ + -no-openssl \ + -securetransport \ + -nomake examples \ + -nomake tests \ + -platform macx-clang + + make -j$(nproc) + sudo make install + + make clean + cp -r $QT_PREFIX $LibrariesPath/qt-cache + + - name: Build Telegram Desktop. + run: | + cd $REPO_NAME/Telegram + + DEFINE="" + if [ -n "${{ matrix.defines }}" ]; then + DEFINE="-D ${{ matrix.defines }}=ON" + echo Define from matrix: $DEFINE + fi + + ./configure.sh -D TDESKTOP_API_TEST=ON -D DESKTOP_APP_USE_PACKAGED=OFF $DEFINE + + cd ../out + + xcoderun='xcodebuild build -project Telegram.xcodeproj -scheme Telegram -destination "platform=macOS,arch=x86_64" -configuration Debug' + bash -c "$xcoderun" || bash -c "$xcoderun" || bash -c "$xcoderun" + + - name: Move artifact. + if: env.UPLOAD_ARTIFACT == 'true' + run: | + cd $REPO_NAME/out/Debug + mkdir artifact + mv Telegram.app artifact/ + mv Updater artifact/ + - uses: actions/upload-artifact@master + if: env.UPLOAD_ARTIFACT == 'true' + name: Upload artifact. + with: + name: Telegram + path: $REPO_NAME\out\Debug\artifact\ \ No newline at end of file diff --git a/.github/workflows/win.yml b/.github/workflows/win.yml new file mode 100644 index 000000000..46b83e924 --- /dev/null +++ b/.github/workflows/win.yml @@ -0,0 +1,342 @@ +name: Windows. + +on: + push: + paths-ignore: + - 'docs/**' + - '*.md' + pull_request: + paths-ignore: + - 'docs/**' + - '*.md' + +jobs: + + windows: + name: Windows + runs-on: windows-latest + + strategy: + matrix: + defines: + - "" + env: + SDK: "10.0.18362.0" + VC: "call vcvars32.bat && cd Libraries" + PY2: 'C:\hostedtoolcache\windows\Python\2.7.16\x64' + GIT: "https://github.com" + QT: "5_12_5" + OPENSSL_VER: "1_1_1" + UPLOAD_ARTIFACT: "false" + MANUAL_CACHING: "1" + DOC_PATH: "docs/building-msvc.md" + steps: + - name: Get repository name. + shell: bash + run: echo ::set-env name=REPO_NAME::${GITHUB_REPOSITORY##*/} + + - name: Clone. + uses: actions/checkout@v1 + with: + submodules: recursive + + - name: Set up environment variables. + shell: cmd + run: | + cd .. + move %REPO_NAME% temp + mkdir %REPO_NAME% + move temp %REPO_NAME%/%REPO_NAME% + cd %REPO_NAME% + + echo ::add-path::C:\Strawberry\perl\bin\ + echo ::add-path::"%programfiles%\NASM" + + C: + cd "%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\" + echo ::add-path::%cd% + + call vcvars32.bat + D: + cd %GITHUB_WORKSPACE% + msbuild -version > CACHE_KEY.txt + echo %MANUAL_CACHING% >> CACHE_KEY.txt + + mkdir Libraries + cd Libraries + echo ::set-env name=LibrariesPath::%cd% + + - name: Generate cache key. + shell: bash + run: | + echo ::set-env name=CACHE_KEY::`md5sum CACHE_KEY.txt | awk '{ print $1 }'` + + - name: Choco installs. + run: | + choco install --no-progress -y nasm yasm jom ninja + + - name: Range-v3. + shell: bash + run: | + echo "Find necessary branch from doc." + cloneRange=$(grep -A 1 "range-v3" $REPO_NAME/$DOC_PATH | sed -n 1p) + cd $LibrariesPath + echo $cloneRange + eval $cloneRange + + - name: Patches. + shell: bash + run: | + echo "Find necessary commit from doc." + checkoutCommit=$(grep -A 1 "cd patches" $REPO_NAME/$DOC_PATH | sed -n 2p) + cd $LibrariesPath + git clone $GIT/desktop-app/patches.git + cd Patches + eval $checkoutCommit + + - name: LZMA. + shell: cmd + run: | + %VC% + + git clone %GIT%/telegramdesktop/lzma.git + cd lzma + cd C\Util\LzmaLib + msbuild -m LzmaLib.sln /property:Configuration=Debug + + - name: OpenSSL cache. + id: cache-openssl + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/openssl_${{ env.OPENSSL_VER }} + key: ${{ runner.OS }}-${{ env.CACHE_KEY }}-${{ env.OPENSSL_VER }} + - name: OpenSSL. + if: steps.cache-openssl.outputs.cache-hit != 'true' + shell: cmd + run: | + %VC% + + git clone %GIT%/openssl/openssl.git openssl_%OPENSSL_VER% + cd openssl_%OPENSSL_VER% + git checkout OpenSSL_%OPENSSL_VER%-stable + perl Configure no-shared debug-VC-WIN32 + nmake + mkdir out32.dbg + move libcrypto.lib out32.dbg + move libssl.lib out32.dbg + move ossl_static.pdb out32.dbg\ossl_static + nmake clean + move out32.dbg\ossl_static out32.dbg\ossl_static.pdb + perl Configure no-shared VC-WIN32 + nmake + mkdir out32 + move libcrypto.lib out32 + move libssl.lib out32 + move ossl_static.pdb out32 + + rmdir /S /Q test + + - name: Zlib. + shell: cmd + run: | + %VC% + + git clone %GIT%/telegramdesktop/zlib.git + cd zlib + git checkout tdesktop + cd contrib\vstudio\vc14 + msbuild -m zlibstat.vcxproj /property:Configuration=Debug + + - name: OpenAL Soft cache. + id: cache-openal + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/openal-soft + key: ${{ runner.OS }}-openal-soft-${{ env.CACHE_KEY }} + - name: OpenAL Soft. + shell: cmd + if: steps.cache-openal.outputs.cache-hit != 'true' + run: | + %VC% + + git clone %GIT%/telegramdesktop/openal-soft.git + cd openal-soft + git checkout fix_capture + cd build + cmake ^ + -G "Visual Studio 16 2019" ^ + -A Win32 ^ + -D LIBTYPE:STRING=STATIC ^ + -D FORCE_STATIC_VCRT:STRING=ON .. + + msbuild -m OpenAL.vcxproj /property:Configuration=Debug + + - name: Breakpad cache. + id: cache-breakpad + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/breakpad + key: ${{ runner.OS }}-breakpad-${{ env.CACHE_KEY }}-${{ hashFiles('**/breakpad.diff') }} + - name: Breakpad. + env: + GYP_MSVS_OVERRIDE_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\' + GYP_MSVS_VERSION: 2019 + shell: cmd + if: steps.cache-breakpad.outputs.cache-hit != 'true' + run: | + cd %LibrariesPath% + + git clone %GIT%/telegramdesktop/gyp.git + cd gyp + SET PATH=%PY2%;%cd%;%PATH% + git checkout tdesktop + + cd %LibrariesPath% + + git clone %GIT%/google/breakpad + cd breakpad + git checkout a1dbcdcb43 + git apply ../patches/breakpad.diff + cd src + git clone %GIT%/google/googletest testing + cd client\windows + call gyp --no-circular-check breakpad_client.gyp --format=ninja + cd ..\.. + ninja -C out/Debug common crash_generation_client exception_handler + ninja -C out/Release common crash_generation_client exception_handler + cd tools\windows\dump_syms + call gyp dump_syms.gyp + + call vcvars32.bat + msbuild -m dump_syms.vcxproj /property:Configuration=Release + + - name: Opus cache. + id: cache-opus + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/opus + key: ${{ runner.OS }}-opus-${{ env.CACHE_KEY }} + - name: Opus. + shell: cmd + run: | + %VC% + + git clone %GIT%/telegramdesktop/opus.git + cd opus + git checkout tdesktop + cd win32\VS2015 + msbuild -m opus.sln /property:Configuration=Debug /property:Platform="Win32" + msbuild -m opus.sln /property:Configuration=Release /property:Platform="Win32" + + - name: FFmpeg cache. + id: cache-ffmpeg + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/ffmpeg + key: ${{ runner.OS }}-ffmpeg-${{ env.CACHE_KEY }}-${{ hashFiles('**/build_ffmpeg_win.sh') }} + - name: FFmpeg. + if: steps.cache-ffmpeg.outputs.cache-hit != 'true' + shell: cmd + run: | + %VC% + choco install --no-progress -y msys2 + + git clone %GIT%/FFmpeg/FFmpeg.git ffmpeg + cd ffmpeg + git checkout release/3.4 + set CHERE_INVOKING=enabled_from_arguments + set MSYS2_PATH_TYPE=inherit + call c:\tools\msys64\usr\bin\bash --login ../../%REPO_NAME%/Telegram/Patches/build_ffmpeg_win.sh + + - name: Qt 5.12.5 cache. + id: cache-qt + uses: actions/cache@v1 + with: + path: ${{ env.LibrariesPath }}/Qt-5.12.5 + key: ${{ runner.OS }}-qt-${{ env.CACHE_KEY }}-${{ hashFiles('**/qtbase_5_12_5.diff') }} + - name: Configure Qt 5.12.5. + if: steps.cache-qt.outputs.cache-hit != 'true' + shell: cmd + run: | + %VC% + + git clone git://code.qt.io/qt/qt5.git qt_%QT% + cd qt_%QT% + perl init-repository --module-subset=qtbase,qtimageformats + git checkout v5.12.5 + git submodule update qtbase + git submodule update qtimageformats + cd qtbase + git apply ../../patches/qtbase_%QT%.diff + cd .. + + SET SSL=%LibrariesPath%\openssl_1_1_1 + SET LIBS=libcrypto.lib Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib + + configure ^ + -prefix "%LibrariesPath%\Qt-5.12.5" ^ + -debug ^ + -force-debug-info ^ + -opensource ^ + -confirm-license ^ + -static ^ + -static-runtime -I "%SSL%\include" ^ + -no-opengl ^ + -openssl-linked ^ + OPENSSL_LIBS_DEBUG="%SSL%\out32.dbg\libssl.lib %SSL%\out32.dbg\%LIBS%" ^ + OPENSSL_LIBS_RELEASE="%SSL%\out32\libssl.lib %SSL%\out32\%LIBS%" ^ + -mp ^ + -nomake examples ^ + -nomake tests ^ + -platform win32-msvc + - name: Build Qt 5.12.5. + if: steps.cache-qt.outputs.cache-hit != 'true' + shell: cmd + run: | + %VC% + cd qt_%QT% + + jom -j%NUMBER_OF_PROCESSORS% + jom -j%NUMBER_OF_PROCESSORS% install + + cd .. + rmdir /S /Q qt_%QT% + + - name: Read defines. + shell: bash + run: | + DEFINE="" + if [ -n "${{ matrix.defines }}" ]; then + DEFINE="-D ${{ matrix.defines }}=ON" + echo Define from matrix: $DEFINE + fi + echo "::set-env name=TDESKTOP_BUILD_DEFINE::$DEFINE" + + - name: Build Telegram Desktop. + shell: cmd + run: | + cd %REPO_NAME%\Telegram + + call configure.bat ^ + -D TDESKTOP_API_TEST=ON ^ + -D DESKTOP_APP_USE_PACKAGED=OFF ^ + %TDESKTOP_BUILD_DEFINE% ^ + -DCMAKE_SYSTEM_VERSION=%SDK% + + call vcvars32.bat + cd ..\out + msbuild -m Telegram.sln /nologo /p:Configuration=Debug,Platform=Win32 + + - name: Move artifact. + if: env.UPLOAD_ARTIFACT == 'true' + run: | + cd %REPO_NAME%\out\Debug + mkdir artifact + move Telegram.exe artifact/ + move Updater.exe artifact/ + - uses: actions/upload-artifact@master + name: Upload artifact. + if: env.UPLOAD_ARTIFACT == 'true' + with: + name: Telegram + path: ${{ env.REPO_NAME }}\out\Debug\artifact\ \ No newline at end of file diff --git a/README.md b/README.md index 7e733e36b..6abdcc5ee 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ This is the complete source code and the build instructions for the alpha version of the official desktop client for the [Telegram][telegram] messenger, based on the [Telegram API][telegram_api] and the [MTProto][telegram_proto] secure protocol. [![Version](https://badge.fury.io/gh/telegramdesktop%2Ftdesktop.svg)](https://github.com/telegramdesktop/tdesktop/releases) +[![Build Status](https://github.com/telegramdesktop/tdesktop/workflows/Windows./badge.svg)](https://github.com/telegramdesktop/tdesktop/actions) +[![Build Status](https://github.com/telegramdesktop/tdesktop/workflows/MacOS./badge.svg)](https://github.com/telegramdesktop/tdesktop/actions) [![Build Status](https://travis-ci.org/telegramdesktop/tdesktop.svg?branch=dev)](https://travis-ci.org/telegramdesktop/tdesktop) [![Build status](https://ci.appveyor.com/api/projects/status/uiw2y768iy4i5bu8/branch/dev?svg=true)](https://ci.appveyor.com/project/telegramdesktop/tdesktop)