mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-08 22:57:52 +00:00
Merge pull request #627 from vovasty/ios-build
build instruction for iOS
This commit is contained in:
commit
47a0ebdc91
@ -187,7 +187,14 @@ endif()
|
|||||||
# TODO: once CMake 3.1+ becomes mainstream, see e.g. http://stackoverflow.com/a/29871891/673826
|
# TODO: once CMake 3.1+ becomes mainstream, see e.g. http://stackoverflow.com/a/29871891/673826
|
||||||
# use imported Threads::Threads instead
|
# use imported Threads::Threads instead
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
find_package ( Threads REQUIRED )
|
if (IOS)
|
||||||
|
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
||||||
|
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||||
|
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
||||||
|
set(CMAKE_USE_PTHREADS_INIT 1)
|
||||||
|
else()
|
||||||
|
find_package ( Threads REQUIRED )
|
||||||
|
endif()
|
||||||
if(THREADS_HAVE_PTHREAD_ARG) # compile time flag
|
if(THREADS_HAVE_PTHREAD_ARG) # compile time flag
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
||||||
endif()
|
endif()
|
||||||
|
85
docs/build_notes_ios.md
Normal file
85
docs/build_notes_ios.md
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
Building on iOS
|
||||||
|
===================
|
||||||
|
|
||||||
|
How to build i2pd for iOS 9 and iOS Simulator 386/x64
|
||||||
|
|
||||||
|
Prerequisites
|
||||||
|
--------------
|
||||||
|
|
||||||
|
XCode7+, cmake 3.2+
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
--------------
|
||||||
|
- precompiled openssl
|
||||||
|
- precompiled boost with modules `filesystem`, `program_options`, `date_time` and `system`
|
||||||
|
- ios-cmake toolchain from https://github.com/vovasty/ios-cmake.git
|
||||||
|
|
||||||
|
Building
|
||||||
|
------------------------
|
||||||
|
Assume you have folder structure
|
||||||
|
|
||||||
|
```
|
||||||
|
lib
|
||||||
|
libboost_date_time.a
|
||||||
|
libboost_filesystem.a
|
||||||
|
libboost_program_options.a
|
||||||
|
libboost_system.a
|
||||||
|
libboost.a
|
||||||
|
libcrypto.a
|
||||||
|
libssl.a
|
||||||
|
include
|
||||||
|
boost
|
||||||
|
openssl
|
||||||
|
ios-cmake
|
||||||
|
i2pd
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p build/simulator/lib build/ios/lib include/i2pd
|
||||||
|
|
||||||
|
pushd build/simulator && \
|
||||||
|
cmake -DIOS_PLATFORM=SIMULATOR \
|
||||||
|
-DPATCH=/usr/bin/patch \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=../../ios-cmake/toolchain/iOS.cmake \
|
||||||
|
-DWITH_STATIC=yes \
|
||||||
|
-DWITH_BINARY=no \
|
||||||
|
-DBoost_INCLUDE_DIR=../../include \
|
||||||
|
-DOPENSSL_INCLUDE_DIR=../../include \
|
||||||
|
-DBoost_LIBRARY_DIR=../../lib \
|
||||||
|
-DOPENSSL_SSL_LIBRARY=../../lib/libssl.a \
|
||||||
|
-DOPENSSL_CRYPTO_LIBRARY=../../lib/libcrypto.a \
|
||||||
|
../../i2pd/build && \
|
||||||
|
make -j16 VERBOSE=1 && \
|
||||||
|
popd
|
||||||
|
|
||||||
|
pushd build/ios
|
||||||
|
cmake -DIOS_PLATFORM=OS \
|
||||||
|
-DPATCH=/usr/bin/patch \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=../../ios-cmake/toolchain/iOS.cmake \
|
||||||
|
-DWITH_STATIC=yes \
|
||||||
|
-DWITH_BINARY=no \
|
||||||
|
-DBoost_INCLUDE_DIR=../../include \
|
||||||
|
-DOPENSSL_INCLUDE_DIR=../../include \
|
||||||
|
-DBoost_LIBRARY_DIR=../../lib \
|
||||||
|
-DOPENSSL_SSL_LIBRARY=../../lib/libssl.a \
|
||||||
|
-DOPENSSL_CRYPTO_LIBRARY=../../lib/libcrypto.a \
|
||||||
|
../../i2pd/build && \
|
||||||
|
make -j16 VERBOSE=1 && \
|
||||||
|
popd
|
||||||
|
|
||||||
|
libtool -static -o lib/libi2pdclient.a build/*/libi2pdclient.a
|
||||||
|
libtool -static -o lib/libi2pd.a build/*/libi2pd.a
|
||||||
|
|
||||||
|
cp i2pd/*.h include/i2pd
|
||||||
|
```
|
||||||
|
|
||||||
|
Include into project
|
||||||
|
---------------------------
|
||||||
|
1. add all libraries in `lib` folder to `Project linked frameworks`.
|
||||||
|
2. add `libc++` and `libz` libraries from system libraries to `Project linked frameworks`.
|
||||||
|
3. add path to i2p headers to your `Headers search paths`
|
||||||
|
|
||||||
|
Alternatively you may use swift wrapper https://github.com/vovasty/SwiftyI2P.git
|
Loading…
Reference in New Issue
Block a user