Build Tdlib Cross Compile #9
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# name: Build Tdlib Cross Compile | |
# on: [workflow_dispatch] | |
# jobs: | |
# build-tdlib-desktop: | |
# name: Build | |
# runs-on: ${{ matrix.os }} | |
# strategy: | |
# matrix: | |
# os: [ubuntu-20.04, windows-latest, macOS-latest] | |
# include: | |
# - os: ubuntu-20.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/.* | |
# # build-tdlib-mobile: | |
# # name: Build | |
# # runs-on: ubuntu-20.04 | |
# # strategy: | |
# # matrix: | |
# # os: [ubuntu-20.04, macOS-latest] | |
# # include: | |
# # - os: ubuntu-20.04 | |
# # output-name: android | |
# # - os: macOS-latest | |
# # output-name: ios | |
# # 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 .. | |
# # cmake --build . | |
# # fi | |
# # if [ "$RUNNER_OS" == "macOS" ]; then | |
# # cmake -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ .. | |
# # cmake --build . | |
# # fi | |
# # if [ "$RUNNER_OS" == "Windows" ]; then | |
# # cmake -A x64 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=../vcpkg/scripts/buildsystems/vcpkg.cmake .. | |
# # cmake --build . --config Release | |
# # 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: | | |
# # build/libtdjson.*.* | |
name: Build Tdlib Cross Platform | |
on: [workflow_dispatch] | |
jobs: | |
build-android: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: tdlib/td | |
- name: setup | |
run: | | |
sudo apt-get install -y make git zlib1g-dev libssl-dev gperf cmake clang libc++-dev libc++abi-dev ninja-build | |
- name: download ndk | |
run: | | |
mkdir /opt/android-ndk-tmp | |
cd /opt/android-ndk-tmp | |
wget -q https://dl.google.com/android/repository/android-ndk-r20-linux-x86_64.zip | |
unzip -q android-ndk-r20-linux-x86_64.zip | |
mv ./android-ndk-r20 /opt/android-ndk | |
cd /opt/android-ndk | |
rm -rf /opt/android-ndk-tmp | |
export PATH=$PATH:/opt/android-ndk | |
- name: setup td | |
run: | | |
cd example | |
curl https://github.com/tdlib/td/files/4746919/libtdjsonandroid.zip -o libtdjsonandroid.zip -L | |
unzip -o libtdjsonandroid.zip | |
mv libtdjsonandroid/* . | |
rmdir libtdjsonandroid | |
rm libtdjsonandroid.zip | |
chmod +x build.sh | |
chmod +x export.sh | |
chmod +x build-all.sh | |
chmod +x third_party/crypto/build.sh | |
chmod +x third_party/crypto/build-all.sh | |
sed -i '3s/.*/set(TD_DIR ${CMAKE_CURRENT_SOURCE_DIR}\/..)/' CMakeLists.txt | |
curl https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1g.tar.gz -o third_party/crypto/openssl-OpenSSL_1_1_1g.tar.gz -L | |
sed -i '5s/.*/cmake .. -DCMAKE_TOOLCHAIN_FILE=\/opt\/android-ndk\/build\/cmake\/android.toolchain.cmake -DCMAKE_BUILD_TYPE=MinSizeRel -GNinja -DANDROID_ABI=${ABI} || exit 1/' build.sh | |
sed -i '1s/.*/#!\/bin\/bash/' third_party/crypto/build.sh | |
sed -i '21s/.*/HOST_ARCH=linux-x86_64/' third_party/crypto/build.sh | |
sed -i '20s/.*/export ANDROID_NDK=\/opt\/android-ndk/' third_party/crypto/build.sh | |
- name: build ssl | |
run: | | |
export ANDROID_NDK_HOME=/opt/android-ndk | |
export ANDROID_NDK_ROOT=/opt/android-ndk | |
cd example/third_party/crypto | |
./build-all.sh | |
- name: build | |
run: | | |
cd example | |
./export.sh | |
# - name: fake build | |
# run: | | |
# mkdir -p example/libs | |
# mkdir -p example/libs/arm64-v8a | |
# mkdir -p example/libs/armeabi-v7a | |
# mkdir -p example/libs/x86 | |
# mkdir -p example/libs/x86_64 | |
# echo arm64-v8a > example/libs/arm64-v8a/libtdjsonandroid.so | |
# echo arm64-v8a > example/libs/arm64-v8a/libtdjsonandroid.so.debug | |
# echo armeabi-v7a > example/libs/armeabi-v7a/libtdjsonandroid.so | |
# echo armeabi-v7a > example/libs/armeabi-v7a/libtdjsonandroid.so.debug | |
# echo x86 > example/libs/x86/libtdjsonandroid.so | |
# echo x86 > example/libs/x86/libtdjsonandroid.so.debug | |
# echo x86_64 > example/libs/x86_64/libtdjsonandroid.so | |
# echo x86_64 > example/libs/x86_64/libtdjsonandroid.so.debug | |
- name: zip | |
run: | | |
cd example/libs | |
zip libtdjson.zip arm64-v8a/libtdjsonandroid.so armeabi-v7a/libtdjsonandroid.so x86/libtdjsonandroid.so x86_64/libtdjsonandroid.so | |
# - name: Release | |
# uses: ncipollo/release-action@v1 | |
# with: | |
# tag: android-${{ env.td_version }}-${{ env.td_commit_hash }} | |
# name: Android ${{ env.td_version }}-${{ env.td_commit_hash }} | |
# body: https://github.com/tdlib/td/tree/${{ env.td_commit_hash }} | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# artifacts: 'td/example/libs/libs.zip' | |
- 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/libs/libtdjson.zip | |
build-macos-intel: | |
runs-on: macos-11 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: tdlib/td | |
- name: setup | |
run: | | |
brew install gperf cmake coreutils | |
- name: setup td | |
run: | | |
cd example/ios | |
sed -i '.bak' '11s/.*/platforms="macOS"/' build-openssl.sh | |
sed -i '.bak' '24s/.*/platforms="macOS"/' build.sh | |
- name: build ssl | |
run: | | |
cd example/ios | |
./build-openssl.sh | |
- name: build | |
run: | | |
cd example/ios | |
./build.sh | |
# - name: fake build | |
# run: | | |
# mkdir -p example/ios/tdjson/macOS/lib/ | |
# cd example/ios/tdjson/macOS/lib/ | |
# echo "libtdjson" > libtdjson.dylib | |
- name: zip | |
run: | | |
cd example/ios/tdjson/macOS/lib/ | |
zip libtdjson.zip libtdjson.dylib | |
- name: Publish Release | |
uses: marvinpinto/action-automatic-releases@latest | |
continue-on-error: true | |
with: | |
repo_token: "${{ github.token }}" | |
automatic_release_tag: "latest-tdlib-macos" | |
prerelease: false | |
title: "Release Tdlib MacOs" | |
files: | | |
example/ios/tdjson/macOS/lib/libtdjson.zip | |
build-ios: | |
runs-on: macos-11 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: tdlib/td | |
- name: setup | |
run: | | |
brew install gperf cmake coreutils | |
- name: setup td | |
run: | | |
mkdir native-build | |
cd native-build | |
cmake .. | |
cmake --build . --target prepare_cross_compiling | |
cd ../example/ios | |
sed -i '.bak' '11s/.*/platforms="iOS"/' build-openssl.sh | |
sed -i '.bak' '24s/.*/platforms="iOS"/' build.sh | |
- name: build ssl | |
run: | | |
cd example/ios | |
./build-openssl.sh | |
- name: build | |
run: | | |
cd example/ios | |
./build.sh | |
# - name: fake build | |
# run: | | |
# mkdir -p example/ios/tdjson/iOS/lib/ | |
# cd example/ios/tdjson/iOS/lib/ | |
# echo "libtdjson" > libtdjson.dylib | |
- name: zip | |
run: | | |
cd example/ios/tdjson/iOS/lib/ | |
zip libtdjson.zip libtdjson.dylib | |
- name: Publish Release | |
uses: marvinpinto/action-automatic-releases@latest | |
continue-on-error: true | |
with: | |
repo_token: "${{ github.token }}" | |
automatic_release_tag: "latest-tdlib-ios" | |
prerelease: false | |
title: "Release Tdlib Ios" | |
files: | | |
example/ios/tdjson/iOS/lib/libtdjson.zip | |
build-linux-x64: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: tdlib/td | |
- name: setup | |
run: | | |
sudo apt-get install make git zlib1g-dev libssl-dev gperf php-cli cmake g++ | |
- name: build | |
run: | | |
rm -rf build | |
mkdir build | |
cd build | |
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib .. | |
cmake --build . | |
- name: zip | |
run: | | |
cd tdlib/lib | |
zip libtdjson.zip libtdjson.so | |
- name: Publish Release | |
uses: marvinpinto/action-automatic-releases@latest | |
continue-on-error: true | |
with: | |
repo_token: "${{ github.token }}" | |
automatic_release_tag: "latest-tdlib-linux" | |
prerelease: false | |
title: "Release Tdlib Linux" | |
files: | | |
tdlib/lib/libtdjson.zip | |
build-windows-x64: | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: tdlib/td | |
- name: setup vcpkg | |
run: | | |
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 | |
- name: build | |
run: | | |
mkdir build | |
cd build | |
cmake -A x64 -DCMAKE_INSTALL_PREFIX:PATH=../tdlib -DCMAKE_TOOLCHAIN_FILE:FILEPATH=../vcpkg/scripts/buildsystems/vcpkg.cmake .. | |
cmake --build . --target install --config Release | |
# - name: fake build | |
# run: | | |
# mkdir -p tdlib/bin | |
# echo test > tdlib/bin/libcrypto-1_1-x64.dll | |
# echo test > tdlib/bin/libssl-1_1-x64.dll | |
# echo test > tdlib/bin/tdjson.dll | |
# echo test > tdlib/bin/zlib1.dll | |
- name: zip | |
run: | | |
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 libtdjson.zip libcrypto-1_1.dll libssl-1_1.dll tdjson.dll zlib1.dll | |
- name: Publish Release | |
uses: marvinpinto/action-automatic-releases@latest | |
continue-on-error: true | |
with: | |
repo_token: "${{ github.token }}" | |
automatic_release_tag: "latest-tdlib-windows" | |
prerelease: false | |
title: "Release Tdlib Windows" | |
files: | | |
tdlib/bin/libtdjson.zip |