Skip to content

Build Tdlib Cross Compile #18

Build Tdlib Cross Compile

Build Tdlib Cross Compile #18

name: Build Tdlib Cross Compile
on: [workflow_dispatch]
jobs:
build-tdlib-desktop:
name: Build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04, windows-latest, macOS-latest]
include:
- os: ubuntu-24.04
output-name: linux
- os: macOS-latest
output-name: macos
- os: windows-latest
output-name: windows
steps:
- name: Export Release Timestamp
run: echo "APP_VERSION=v$(date +'%Y.%m.%d.%H.%M.%S')" >> $GITHUB_ENV
- uses: actions/checkout@v3
with:
repository: tdlib/td
- name: Install Dependencies
continue-on-error: true
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt update -y
sudo apt-get install -y make git zlib1g-dev libssl-dev gperf cmake clang libc++-dev libc++abi-dev ninja-build zip
fi
if [ "$RUNNER_OS" == "macOS" ]; then
brew update
brew upgrade
xcode-select --install
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh
brew install gperf cmake openssl coreutils
fi
if [ "$RUNNER_OS" == "Windows" ]; then
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
git checkout 1b1ae50e1a69f7c659bd7d731e80b358d21c86ad
./bootstrap-vcpkg.bat
./vcpkg.exe install gperf:x64-windows openssl:x64-windows zlib:x64-windows
fi
shell: bash
- name: Compile Tdlib
continue-on-error: true
run: |
mkdir build
cd build
if [ "$RUNNER_OS" == "Linux" ]; then
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib ..
cmake --build .
fi
if [ "$RUNNER_OS" == "macOS" ]; then
cmake -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl/ -DCMAKE_INSTALL_PREFIX:PATH=../tdlib ..
cmake --build .
fi
if [ "$RUNNER_OS" == "Windows" ]; then
cmake -A x64 -DCMAKE_INSTALL_PREFIX:PATH=../tdlib -DCMAKE_TOOLCHAIN_FILE:FILEPATH=../vcpkg/scripts/buildsystems/vcpkg.cmake ..
cmake --build .
cd tdlib/bin
ls
mv libcrypto-1_1-x64.dll libcrypto-1_1.dll
mv libssl-1_1-x64.dll libssl-1_1.dll
7z a -tzip dlls.zip libcrypto-1_1.dll libssl-1_1.dll tdjson.dll zlib1.dll
fi
shell: bash
- name: Publish Release
uses: marvinpinto/action-automatic-releases@latest
continue-on-error: true
with:
repo_token: "${{ github.token }}"
automatic_release_tag: "latest-tdlib-${{ matrix.output-name }}"
prerelease: false
title: "Release Tdlib ${{ matrix.output-name }}"
files: |
tdlib/tg_cli
tdlib/libtdjson.*
# build-tdlib-android:
# name: Build Android
# runs-on: ubuntu-24.04
# steps:
# - name: Export Release Timestamp
# run: echo "APP_VERSION=v$(date +'%Y.%m.%d.%H.%M.%S')" >> $GITHUB_ENV
# - uses: actions/checkout@v3
# with:
# repository: tdlib/td
# - name: Install Dependencies
# continue-on-error: false
# run: |
# sudo apt update -y
# sudo apt-get install -y make git zlib1g-dev libssl-dev gperf cmake clang libc++-dev libc++abi-dev ninja-build zip
# shell: bash
# - name: Compile Tdlib
# continue-on-error: true
# run: |
# cd example/android/
# docker build --build-arg TDLIB_INTERFACE=JSON --build-arg OPENSSL_VERSION="openssl-3.4.0" --build-arg ANDROID_NDK_VERSION="27.2.12479018" --output tdlib .
# shell: bash
# - name: Publish Release
# uses: marvinpinto/action-automatic-releases@latest
# continue-on-error: true
# with:
# repo_token: "${{ github.token }}"
# automatic_release_tag: "latest-tdlib-android"
# prerelease: false
# title: "Release Tdlib Android"
# files: |
# example/android/tdlib/tdlib.zip