diff --git a/docs/README.android b/docs/README.android index a4241e4f3..8b2fb4ad0 100644 --- a/docs/README.android +++ b/docs/README.android @@ -13,17 +13,19 @@ Build requirements For the Android port some additional dependencies need to be fulfilled: * for JNI -- CMake >= 3.0 (install CMake from Android SDK. It is part of the SDK Tools) +- CMake >= 3.13 (install CMake from Android SDK. It is part of the SDK Tools) - Android NDK (>= r15c) * for the Java GUI - Android SDK -FreeRDP requires openssl libraries for building but they are not part of the -Android NDK and therefore they need to be prebuild manually. +* FreeRDP requires openssl libraries for building but they are not part of the + Android NDK and therefore they need to be prebuild manually. -For jpeg support https://github.com/akallabeth/jpeg8d has been tested and used. -However, any other static builds should work as well. +* [optional] cJSON is required for logging in to Azure accounts +* [optional] Kerberos authentication is supported by MIT or Heimdal kerberos libraries +* [optional] For jpeg support https://github.com/akallabeth/jpeg8d has been tested and used. + However, any other static builds should work as well. Build native libraries: ====================== diff --git a/docs/README.building b/docs/README.building new file mode 100644 index 000000000..d54a92ef7 --- /dev/null +++ b/docs/README.building @@ -0,0 +1,121 @@ +FreeRDP has a few dependencies that are required for proper operation: + +1. SSL + +RDP requires a secure tunnel and utilizes TLS for this. We do not implement this +ourselves but reuse existing libraries: + +We support + +* OpenSSL our main development SSL library +* LibreSSL (supported by community) +* MBedTLS (supported by community) + +2. Kerberos + +Authentication to many services requires kerberos (especially if smartcards are in use) + +We support: + +* MIT +* Heimdal + +3. JSON + +Azure logon requires HTTP/JSON messages to be parsed. + +We support: + +* cJSON + +4. H264 + +RDP GFX modes (anything newer Windows 8.1 / Server 2012) supports a graphics mode based +on the H264 codec + +We support + +* OpenH264 +* FFMPEG (x264 or OpenH264) + +There are some platform specific implementations too (e.g. mediacodec on android) but these +two are the options that are always required. + +5. Graphics scaling support + +High DPI support and smart-sizing option require bitmaps to be scaled by the client. + +We support + +* Swscale +* Cairo + +6. Audio encoders/decoders + +Sound and Microphone options allow transmission of data in compressed formats. +The most widely supported formats are uncompressed PCM (all systems support that) +and compressed AAC (windows 8 or newer). Some other codecs are supported as well (GSM) +but do not provide the same quality as the afore mentioned ones. + +We support + +* FAAC / FAAD2 / soxr (encoder/decoder/resampling) +* FFMPEG +* GSM (older low bandwidth codec) + +7. Smartcard + +To utilize smartcards for authentication/redirection + +We support + +* PCSC +* pkcs11 + +PCSC is required for smartcard redirection, pkcs11 for NLA smartcard logon support + +8. Unicode + +Most of the protocol preferably uses UCS-2/UTF16 for strings. To convert to/from UTF-8 a +unicode support library is required: + +* Windows natively supports these (well, it is a microsoft protocol after all ;)) +* ICU on linux/unix and android +* On Apple (iOS/Mac) we use native NSString unicode conversion routines + +9. USB redirection + +The protocol has an extension (channel) to allow low level USB redirection + +We support + +* libusb 1 + +10. Platform support (mainly linux, for others the platform SDK is usually enough) + +* SDL2 for the SDL client (all platforms) +* CUPS (linux/apple) for printing support +* libsystemd (linux) for journald logging support +* PAM headers/libraries (server side authentication) +* FUSE/FUSE3 for file clipboard support (linux/mac os) +* Wayland for wlfreerdp +* X11 development headers for X11 client +* ALSA development headers/libraris +* PULSE development headers/libraries +* OSS development headers/libraries + +11. Building recommendations + +* Use Ninja to speed up your builds +* For release builds add -DCMAKE_BUILD_TYPE=Release (or RelWithDebInfo for less optimized but with debug symbols) +* -DWITH_VERBOSE_WINPR_ASSERT=OFF reduces the size of the build considerably but removes lots + of santity checks in code. Recommended for stable builds, for builds not from stable releases + it is recommended to keep -DWITH_VERBOSE_WINPR_ASSERT=ON to have useful information on crashes. + +12. Example build instructions: + +Assume we have the source checked out to /tmp/freerdp/src and we want to install to /tmp/freerdp/install: +(on windows this needs to be called from a visual studio command prompt or a cmd that has run vcvarsall.bat, paths obviously need to be adjusted) + +cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DWITH_VERBOSE_WINPR_ASSERT=OFF -DCMAKE_PREFIX_PATH=/tmp/freerdp/install -B /tmp/freerdp/build -S /tmp/freerdp/src +cmake --build /tmp/freerdp/build --target install diff --git a/docs/README.ios b/docs/README.ios index 4f225bdf5..979e115d8 100644 --- a/docs/README.ios +++ b/docs/README.ios @@ -9,7 +9,7 @@ Build requirements The following prerequisites are required in order to build the iOS port: -- cmake version >= 2.8.9 +- cmake version >= 3.13 - latest Xcode installed (>= 4.6) - installed Provisioning Profile and iOS Developer Certificate for code signing (not required for simulator builds) @@ -44,6 +44,10 @@ directory. If you build OpenSSL youself or with an install directory specified you need to set FREERDP_IOS_EXTERNAL_SSL_PATH when running cmake. +Additional (optional) libraries that are required: + +* cJSON for Azure logon support +* MIT or Heimdal kerberos for kerberos support Building ========