Skip to main content
The FreeRDP iOS port supports Apple iOS devices. It was originally written to be compatible with iOS 4.3 and higher.
More documentation may be found at the FreeRDP Compilation wiki.

Requirements

  • CMake >= 3.13
  • Xcode >= 4.6 (latest version recommended)
  • An iOS Developer Certificate and Provisioning Profile for code signing — not required for simulator builds
  • Pre-built static OpenSSL libraries (see below)

Building OpenSSL

FreeRDP requires OpenSSL, which is not part of the iOS SDK and must be built separately. The repository ships a convenience script. Run it from the FreeRDP root directory:
The output is placed in external/openssl/ by default. To use a different directory pass it as the first argument:
The script produces universal static libraries (libcrypto.a and libssl.a) covering arm64 (device) and i386 (simulator) targets.
If you build OpenSSL yourself or with a custom install directory, set FREERDP_IOS_EXTERNAL_SSL_PATH when running CMake to point to the root of the pre-built libraries.

SDK version control

The script uses the oldest iOS/iPhoneSimulator SDK found on the build machine by default. You can override this with environment variables before running the script:

Build

1

Clone the repository

2

Build OpenSSL static libraries

3

Generate the Xcode project

This creates FreeRDP.xcodeproj in the current directory.
4

Open in Xcode and build

Then use Product > Build inside Xcode, or build from the command line:
Alternatively, once CMake has generated the project you can also build with:

CMake variables

CI preload configuration

The repository ships ci/cmake-preloads/config-ios.txt with the settings used in CI:

Switching between device and simulator

When switching between IOS_PLATFORM=OS and IOS_PLATFORM=SIMULATOR, you must delete CMake’s cache before reconfiguring, otherwise build errors will occur:
Then run cmake again with the desired platform.

Output location

Xcode builds the application into its derived data location by default (usually ~/Library/Developer/...). To specify a custom output directory, add CONFIGURATION_BUILD_DIR=<path> to the xcodebuild command: