1Overview 2======== 3 4The FreeRDP iOS port allows users to enjoy FreeRDP features on Apple iOS devices. 5The application was written to be compatible with devices running iOS 4.3 or higher. 6 7Build requirements 8================== 9 10The following prerequisites are required in order to build the iOS port: 11 12- cmake version >= 2.8.9 13- latest Xcode installed (>= 4.6) 14- installed Provisioning Profile and iOS Developer Certificate for code signing 15 (not required for simulator builds) 16- pre-build static OpenSSL libraries (see below) 17 18FreeRDP requires OpenSSL libraries for building but they are not part of the iOS SDK and therefore they need to be pre-build manually. 19There are various versions and builds of static OpenSSL libraries floating around like iOSPorts. 20At 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. 21 22If you don't care about modifying the OpenSSL build you can run the following command in the FreeRDP root directory: 23 24./scripts/OpenSSL-DownloadAndBuild.command 25 26The output of the script will be found in external/openssl/. In case you want a 27different install/build directory you specify it as first parameter: 28 29./scripts/OpenSSL-DownloadAndBuild.command /tmp/ 30 31In the example above the output can then be found in /tmp/openssl. 32 33The script uses oldest iOS/iPhoneSimulator SDK found on the build machine per default. If it is required to build against a specific SDK version 34the 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. 35 36When the script is finished you will find libcrypto.a and libssl.at, both universal libraries containing all openssl/lib 37subfolder in the specified 38install directory (external per default) 39 40When the script finishes you will find libcrypto.a and libssl.a, both universal 41binary libraries containing arm and i386 targets in order to compile FreeRDP for 42iOS devices and the simulator, in the lib subfolder of your installation 43directory. 44 45If you build OpenSSL youself or with an install directory specified you need to set FREERDP_IOS_EXTERNAL_SSL_PATH when running cmake. 46 47 48Building 49======== 50 51Run the following commands in the top level FreeRDP directory: 52 53cmake -DCMAKE_TOOLCHAIN_FILE=cmake/iOSToolchain.cmake -GXcode 54 55This command will create a XCode project in the FreeRDP root folder called FreeRDP.xcodeproj. 56Open the project in XCode and modify, build or run the app. 57 58Alternatively you can also build the project from the command line using xcodebuild: 59 60xcodebuild -project FreeRDP.xcodeproj -configuration Debug -sdk iphoneos6.1 61 62or with cmake --build . in your build directory. 63 64Notes: 65 66* XCode, by default will build the application into its derived data location (usually in ~/Library/Developer/...). 67If you want to specify an output directory add CONFIGURATION_BUILD_DIR=<output-path-here> to the end of above command line. 68 69* If using XCode choose "Open Other" from the welcome screen, browse to the FreeRDP root directory and select FreeRDP.xcodeproj. Alternatively you can 70 also start it with "open FreeRDP.xcodeproj". 71 72* If you switch between platforms (OS and SIMULATOR) please remove CMakeCache.txt and CMakeFiles/ before calling cmake again. 73 Otherwise build errors might occur (this seems to be a bug with cmake or the cmake scripts). To switch between platforms do: 74 75 rm CMakeCache.txt 76 rm -rf CMakeFiles/ 77 78 before you run a new cmake command with the desired platform. 79 80 81cmake variables 82=============== 83 84CMAKE_TOOLCHAIN_FILE 85* the toolchain file to use must be cmake/iOSToolchain.cmake 86 87IOS_PLATFORM (OS (default), SIMULATOR) 88* 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) 89 90CMAKE_IOS_DEVELOPER_ROOT (used by toolchain file) 91* 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 92 93CMAKE_IOS_SDK_ROOT (used by toolchain file) 94* 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 95 96FREERDP_IOS_EXTERNAL_SSL_PATH (used by FindOpenSSL) 97* absolut root path to the pre-built static OpenSSL libraries 98 99CODE_SIGN_IDENTITY 100* specify the identity to sign the code with 101