[documentation] add overall building/dependency info

This commit is contained in:
akallabeth 2023-03-14 08:19:19 +01:00 committed by Martin Fleisz
parent b54d2c1db3
commit 5a20beb25c
3 changed files with 133 additions and 6 deletions

View File

@ -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:
======================

121
docs/README.building Normal file
View File

@ -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

View File

@ -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
========