diff options
Diffstat (limited to 'protocols/Telegram/tdlib/td/example/ios/build.sh')
-rw-r--r-- | protocols/Telegram/tdlib/td/example/ios/build.sh | 116 |
1 files changed, 66 insertions, 50 deletions
diff --git a/protocols/Telegram/tdlib/td/example/ios/build.sh b/protocols/Telegram/tdlib/td/example/ios/build.sh index 9970008a1c..cd11907b2d 100644 --- a/protocols/Telegram/tdlib/td/example/ios/build.sh +++ b/protocols/Telegram/tdlib/td/example/ios/build.sh @@ -1,74 +1,90 @@ -#/bin/sh -td_path=$(realpath ../..) +#!/bin/sh +cd $(dirname $0) +td_path=$(grealpath ../..) rm -rf build mkdir -p build cd build -platforms="macOS iOS watchOS tvOS" -for platform in $platforms; -do - echo "Platform = ${platform} Simulator = ${simulator}" - openssl_path=$(realpath ../third_party/openssl/${platform}) +set_cmake_options () { + # Set CMAKE options depending on platform passed $1 + openssl_path=$(grealpath ../third_party/openssl/$1) echo "OpenSSL path = ${openssl_path}" openssl_crypto_library="${openssl_path}/lib/libcrypto.a" openssl_ssl_library="${openssl_path}/lib/libssl.a" + options="" options="$options -DOPENSSL_FOUND=1" options="$options -DOPENSSL_CRYPTO_LIBRARY=${openssl_crypto_library}" - #options="$options -DOPENSSL_SSL_LIBRARY=${openssl_ssl_library}" + options="$options -DOPENSSL_SSL_LIBRARY=${openssl_ssl_library}" options="$options -DOPENSSL_INCLUDE_DIR=${openssl_path}/include" options="$options -DOPENSSL_LIBRARIES=${openssl_crypto_library};${openssl_ssl_library}" options="$options -DCMAKE_BUILD_TYPE=Release" +} + +platforms="macOS iOS watchOS tvOS" +#platforms="watchOS" +for platform in $platforms; +do + echo "Platform = ${platform}" if [[ $platform = "macOS" ]]; then + simulators="0" + else + simulators="0 1" + fi + + for simulator in $simulators; + do + if [[ $platform = "macOS" ]]; then + other_options="-DCMAKE_OSX_ARCHITECTURES='x86_64;arm64'" + else + if [[ $platform = "watchOS" ]]; then + ios_platform="WATCH" + elif [[ $platform = "tvOS" ]]; then + ios_platform="TV" + else + ios_platform="" + fi + + if [[ $simulator = "1" ]]; then + platform="${platform}-simulator" + ios_platform="${ios_platform}SIMULATOR" + else + ios_platform="${ios_platform}OS" + fi + + echo "iOS platform = ${ios_platform}" + other_options="-DIOS_PLATFORM=${ios_platform} -DCMAKE_TOOLCHAIN_FILE=${td_path}/CMake/iOS.cmake" + fi + + set_cmake_options $platform build="build-${platform}" install="install-${platform}" rm -rf $build mkdir -p $build mkdir -p $install cd $build - cmake $td_path $options -DCMAKE_INSTALL_PREFIX=../${install} + cmake $td_path $options $other_options -DCMAKE_INSTALL_PREFIX=../${install} make -j3 install || exit cd .. - mkdir -p $platform - cp $build/libtdjson.dylib $platform/libtdjson.dylib - install_name_tool -id @rpath/libtdjson.dylib $platform/libtdjson.dylib - else - simulators="0 1" - for simulator in $simulators; - do - build="build-${platform}" - install="install-${platform}" - if [[ $simulator = "1" ]]; then - build="${build}-simulator" - install="${install}-simulator" - ios_platform="SIMULATOR" - else - ios_platform="OS" - fi - if [[ $platform = "watchOS" ]]; then - ios_platform="WATCH${ios_platform}" - fi - if [[ $platform = "tvOS" ]]; then - ios_platform="TV${ios_platform}" - fi - echo $ios_platform - rm -rf $build - mkdir -p $build - mkdir -p $install - cd $build - cmake $td_path $options -DIOS_PLATFORM=${ios_platform} -DCMAKE_TOOLCHAIN_FILE=${td_path}/CMake/iOS.cmake -DCMAKE_INSTALL_PREFIX=../${install} - make -j3 install || exit - cd .. - done - lib="install-${platform}/lib/libtdjson.dylib" - lib_simulator="install-${platform}-simulator/lib/libtdjson.dylib" - mkdir -p $platform - lipo -create $lib $lib_simulator -o $platform/libtdjson.dylib - install_name_tool -id @rpath/libtdjson.dylib $platform/libtdjson.dylib - fi + install_name_tool -id @rpath/libtdjson.dylib ${install}/lib/libtdjson.dylib + mkdir -p ../tdjson/${platform}/include + rsync --recursive ${install}/include/ ../tdjson/${platform}/include/ + mkdir -p ../tdjson/${platform}/lib + cp ${install}/lib/libtdjson.dylib ../tdjson/${platform}/lib/ + done +done - mkdir -p ../tdjson/$platform/include - rsync --recursive ${install}/include/ ../tdjson/${platform}/include/ - mkdir -p ../tdjson/$platform/lib - cp $platform/libtdjson.dylib ../tdjson/$platform/lib/ +produced_dylibs=(install-*/lib/libtdjson.dylib) +xcodebuild_frameworks=() + +for dylib in "${produced_dylibs[@]}"; +do + xcodebuild_frameworks+=(-library $(grealpath "${dylib}")) done + +# Make xcframework +xcodebuild -create-xcframework \ + "${xcodebuild_frameworks[@]}" \ + -output "libtdjson.xcframework" + +rsync --recursive libtdjson.xcframework ../tdjson/ |