| Overview |
| ======== |
| |
| The FreeRDP iOS port allows users to enjoy FreeRDP features on Apple iOS devices. |
| The application was written to be compatible with devices running iOS 4.3 or higher. |
| |
| Build requirements |
| ================== |
| |
| The following prerequisites are required in order to build the iOS port: |
| |
| - cmake version >= 2.8.9 |
| - latest Xcode installed (>= 4.6) |
| - installed Provisioning Profile and iOS Developer Certificate for code signing |
| (not required for simulator builds) |
| - pre-build static OpenSSL libraries (see below) |
| |
| FreeRDP requires OpenSSL libraries for building but they are not part of the iOS SDK and therefore they need to be pre-build manually. |
| There are various versions and builds of static OpenSSL libraries floating around like iOSPorts. |
| At the time of writing we have tested and used a small script (OpenSSL-DownloadAndBuild.command) that downloads and builds armv7, armv7s and i386 versions of the OpenSSL 1.0.0e libraries. |
| |
| If you don't care about modifying the OpenSSL build you can run the following command in the FreeRDP root directory: |
| |
| ./scripts/OpenSSL-DownloadAndBuild.command |
| |
| The output of the script will be found in external/openssl/. In case you want a |
| different install/build directory you specify it as first parameter: |
| |
| ./scripts/OpenSSL-DownloadAndBuild.command /tmp/ |
| |
| In the example above the output can then be found in /tmp/openssl. |
| |
| The script uses oldest iOS/iPhoneSimulator SDK found on the build machine per default. If it is required to build against a specific SDK version |
| the variable SDK_VERSION can be used to specify it. The minimum SDK version that should be used can be set with MIN_SDK_VERSION within the script. |
| |
| When the script is finished you will find libcrypto.a and libssl.at, both universal libraries containing all openssl/lib |
| subfolder in the specified |
| install directory (external per default) |
| |
| When the script finishes you will find libcrypto.a and libssl.a, both universal |
| binary libraries containing arm and i386 targets in order to compile FreeRDP for |
| iOS devices and the simulator, in the lib subfolder of your installation |
| directory. |
| |
| If you build OpenSSL youself or with an install directory specified you need to set FREERDP_IOS_EXTERNAL_SSL_PATH when running cmake. |
| |
| |
| Building |
| ======== |
| |
| Run the following commands in the top level FreeRDP directory: |
| |
| cmake -DCMAKE_TOOLCHAIN_FILE=cmake/iOSToolchain.cmake -GXcode |
| |
| This command will create a XCode project in the FreeRDP root folder called FreeRDP.xcodeproj. |
| Open the project in XCode and modify, build or run the app. |
| |
| Alternatively you can also build the project from the command line using xcodebuild: |
| |
| xcodebuild -project FreeRDP.xcodeproj -configuration Debug -sdk iphoneos6.1 |
| |
| or with cmake --build . in your build directory. |
| |
| Notes: |
| |
| * XCode, by default will build the application into its derived data location (usually in ~/Library/Developer/...). |
| If you want to specify an output directory add CONFIGURATION_BUILD_DIR=<output-path-here> to the end of above command line. |
| |
| * If using XCode choose "Open Other" from the welcome screen, browse to the FreeRDP root directory and select FreeRDP.xcodeproj. Alternatively you can |
| also start it with "open FreeRDP.xcodeproj". |
| |
| * If you switch between platforms (OS and SIMULATOR) please remove CMakeCache.txt and CMakeFiles/ before calling cmake again. |
| Otherwise build errors might occur (this seems to be a bug with cmake or the cmake scripts). To switch between platforms do: |
| |
| rm CMakeCache.txt |
| rm -rf CMakeFiles/ |
| |
| before you run a new cmake command with the desired platform. |
| |
| |
| cmake variables |
| =============== |
| |
| CMAKE_TOOLCHAIN_FILE |
| * the toolchain file to use must be cmake/iOSToolchain.cmake |
| |
| IOS_PLATFORM (OS (default), SIMULATOR) |
| * the platform for which to build iFreeRDP. OS compiles for iOS devices (using armv7 and armv7s ABIs) and SIMULATOR compiles for the iOS Simulator (i386) |
| |
| CMAKE_IOS_DEVELOPER_ROOT (used by toolchain file) |
| * absolute path to the iOS developer platform (i.e. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer) the toolchain file will usually auto-detect the correct Developer platform depending on IOS_PLATFORM |
| |
| CMAKE_IOS_SDK_ROOT (used by toolchain file) |
| * absolute path to the iOS SDK (i.e. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk) the toolchain file will usually auto-detect the correct SDK, depending on IOS_PLATFORM |
| |
| FREERDP_IOS_EXTERNAL_SSL_PATH (used by FindOpenSSL) |
| * absolut root path to the pre-built static OpenSSL libraries |
| |
| CODE_SIGN_IDENTITY |
| * specify the identity to sign the code with |
| |