Update iOS example README.md.

GitOrigin-RevId: df6d7bd81c1d1fdb915cb4bdc6edc80d93bcfed0
This commit is contained in:
levlam 2018-02-15 00:41:26 +03:00
parent 1424b2037e
commit 1d28119f4a
4 changed files with 57 additions and 43 deletions

View File

@ -60,7 +60,8 @@ cmake --build .
<a name="installing-dependencies"></a> <a name="installing-dependencies"></a>
### Installing dependencies ### Installing dependencies
#### OS X <a name="macos"></a>
#### macOS
* Install the latest Xcode command line tools. * Install the latest Xcode command line tools.
* Install other dependencies, for example, using [Homebrew](https://brew.sh): * Install other dependencies, for example, using [Homebrew](https://brew.sh):
``` ```
@ -71,6 +72,7 @@ brew install gperf cmake openssl
cmake -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ .. cmake -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ ..
``` ```
<a name="windows"></a>
#### Windows #### Windows
* Download and install [gperf](https://sourceforge.net/projects/gnuwin32/files/gperf/3.0.1/). Add the path to gperf to the PATH environment variable. * Download and install [gperf](https://sourceforge.net/projects/gnuwin32/files/gperf/3.0.1/). Add the path to gperf to the PATH environment variable.
* Install [vcpkg](https://github.com/Microsoft/vcpkg#quick-start). * Install [vcpkg](https://github.com/Microsoft/vcpkg#quick-start).
@ -83,6 +85,7 @@ C:\src\vcpkg> .\vcpkg install openssl zlib
cmake -DCMAKE_TOOLCHAIN_FILE=C:\src\vcpkg\scripts\buildsystems\vcpkg.cmake .. cmake -DCMAKE_TOOLCHAIN_FILE=C:\src\vcpkg\scripts\buildsystems\vcpkg.cmake ..
``` ```
<a name="linux"></a>
#### Linux #### Linux
* Install all dependencies using your package manager. * Install all dependencies using your package manager.

View File

@ -1,29 +1,39 @@
# Build for iOS # Build for iOS
Bellow are instructions for building TdLib for iOS, watchOS and also macOS. Below are instructions for building TDLib for iOS, watchOS, tvOS, and also macOS.
If you need just macOS build take a look [here](https://github.com/tdlib/td#os-x). If you need only a macOS build, take a look at our build instructions for [macOS](https://github.com/tdlib/td#macos).
For example of usage take a look [here](https://github.com/tdlib/td/tree/master/example/swift). For example of usage take a look at our [Swift example](https://github.com/tdlib/td/tree/master/example/swift).
## Build OpenSSL To compile `TDLib` you will need to:
First, you should build OpenSSL library for ios * Install the latest Xcode command line tools.
* Install other build dependencies, for example, using [Homebrew](https://brew.sh):
``` ```
brew install gperf cmake
```
* If you don't want to build `TDLib` for macOS, you can pregenerate required source code files using CMake prepare_cross_compiling target:
```
cd <path to TDLib sources>
mkdir native-build
cd native-build
cmake ..
cmake --build . --target prepare_cross_compiling
```
* Build OpenSSL for iOS, watchOS, tvOS and macOS:
```
cd <path to TDLib sources>/example/ios
./build-openssl.sh ./build-openssl.sh
``` ```
In this example we are using scripts from [Python Apple support](https://github.com/pybee/Python-Apple-support), but any other OpenSSL builds should work too. Here we use scripts from [Python Apple support](https://github.com/pybee/Python-Apple-support), but any other OpenSSL builds should work too.
Libraries will be stored in `third_party/openssl/<platfrom>`. The next script will rely on this location. Built libraries should be stored in `third_party/openssl/<platform>`, because the next script will rely on this location.
* Build TDLib for iOS, watchOS, tvOS and macOS:
## Build TdLib
Run:
``` ```
cd <path to TDLib sources>/example/ios
./build.sh ./build.sh
``` ```
This may take a while, because TdLib will be build about 8 times. This may take a while, because TDLib will be built about 10 times.
As an upside resulting library for iOS will work on any architecture (arv7, armv7s, arm64) and even on a simulator. Resulting library for iOS will work on any architecture (arv7, armv7s, arm64) and even on a simulator.
We use [CMake/iOS.cmake](https://github.com/tdlib/td/blob/master/CMake/iOS.cmake) toolchain, other toolchains We use [CMake/iOS.cmake](https://github.com/tdlib/td/blob/master/CMake/iOS.cmake) toolchain, other toolchains may work too.
may work too.
Libraries will be store in `tdjson` directory.
Built libraries will be store in `tdjson` directory.

View File

@ -1,21 +1,22 @@
#!/bin/sh #!/bin/sh
git clone https://github.com/pybee/Python-Apple-support git clone https://github.com/pybee/Python-Apple-support
cd Python-Apple-support cd Python-Apple-support
git checkout 2.7 git checkout 2.7
cd .. cd ..
#TODO: change openssl version #TODO: change openssl version
platforms="macOS iOS watchOS tvOS" platforms="macOS iOS watchOS tvOS"
#platforms="macOS"
for platform in $platforms; for platform in $platforms;
do do
echo $platform echo $platform
cd Python-Apple-support cd Python-Apple-support
#NB: -j will fail #NB: -j will fail
make OpenSSL-$platform make OpenSSL-$platform
cd .. cd ..
rm -rf third_party/openssl/$platform rm -rf third_party/openssl/$platform
mkdir -p third_party/openssl/$platform/lib mkdir -p third_party/openssl/$platform/lib
cp ./Python-Apple-support/build/$platform/libcrypto.a third_party/openssl/$platform/lib/ cp ./Python-Apple-support/build/$platform/libcrypto.a third_party/openssl/$platform/lib/
cp ./Python-Apple-support/build/$platform/libssl.a third_party/openssl/$platform/lib/ cp ./Python-Apple-support/build/$platform/libssl.a third_party/openssl/$platform/lib/
cp -r ./Python-Apple-support/build/$platform/Support/OpenSSL/Headers/ third_party/openssl/$platform/include cp -r ./Python-Apple-support/build/$platform/Support/OpenSSL/Headers/ third_party/openssl/$platform/include
done done

View File

@ -10,12 +10,14 @@ for platform in $platforms;
do do
echo "Platform = ${platform} Simulator = ${simulator}" echo "Platform = ${platform} Simulator = ${simulator}"
openssl_path=$(realpath ../third_party/openssl/${platform}) openssl_path=$(realpath ../third_party/openssl/${platform})
echo $openssl_path echo "OpenSSL path = ${openssl_path}"
openssl_crypto_library="${openssl_path}/lib/libcrypto.a"
openssl_ssl_library="${openssl_path}/lib/libssl.a"
options="$options -DOPENSSL_FOUND=1" options="$options -DOPENSSL_FOUND=1"
options="$options -DOPENSSL_CRYPTO_LIBRARY=${openssl_path}/lib/libcrypto.a" options="$options -DOPENSSL_CRYPTO_LIBRARY=${openssl_crypto_library}"
#options="$options -DOPENSSL_SSL_LIBRARY=${openssl_path}/lib/libssl.a" #options="$options -DOPENSSL_SSL_LIBRARY=${openssl_ssl_library}"
options="$options -DOPENSSL_INCLUDE_DIR=${openssl_path}/include" options="$options -DOPENSSL_INCLUDE_DIR=${openssl_path}/include"
options="$options -DOPENSSL_LIBRARIES=${openssl_path}/lib/libcrypto.a;${openssl_path}/lib/libssl.a" options="$options -DOPENSSL_LIBRARIES=${openssl_crypto_library};${openssl_ssl_library}"
options="$options -DCMAKE_BUILD_TYPE=Release" options="$options -DCMAKE_BUILD_TYPE=Release"
if [[ $platform = "macOS" ]]; then if [[ $platform = "macOS" ]]; then
build="build-${platform}" build="build-${platform}"
@ -54,9 +56,7 @@ do
mkdir -p $build mkdir -p $build
mkdir -p $install mkdir -p $install
cd $build cd $build
echo "A"
cmake $td_path $options -DIOS_PLATFORM=${ios_platform} -DCMAKE_TOOLCHAIN_FILE=${td_path}/CMake/iOS.cmake -DCMAKE_INSTALL_PREFIX=../${install} cmake $td_path $options -DIOS_PLATFORM=${ios_platform} -DCMAKE_TOOLCHAIN_FILE=${td_path}/CMake/iOS.cmake -DCMAKE_INSTALL_PREFIX=../${install}
echo "B"
make -j3 install || exit make -j3 install || exit
cd .. cd ..
done done