summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/example/ios/build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/tdlib/td/example/ios/build.sh')
-rw-r--r--protocols/Telegram/tdlib/td/example/ios/build.sh116
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/