mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
[documentation] add overall building/dependency info
This commit is contained in:
committed by
Martin Fleisz
parent
b54d2c1db3
commit
5a20beb25c
@@ -13,17 +13,19 @@ Build requirements
|
|||||||
For the Android port some additional dependencies need to be fulfilled:
|
For the Android port some additional dependencies need to be fulfilled:
|
||||||
|
|
||||||
* for JNI
|
* 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)
|
- Android NDK (>= r15c)
|
||||||
|
|
||||||
* for the Java GUI
|
* for the Java GUI
|
||||||
- Android SDK
|
- Android SDK
|
||||||
|
|
||||||
FreeRDP requires openssl libraries for building but they are not part of the
|
* FreeRDP requires openssl libraries for building but they are not part of the
|
||||||
Android NDK and therefore they need to be prebuild manually.
|
Android NDK and therefore they need to be prebuild manually.
|
||||||
|
|
||||||
For jpeg support https://github.com/akallabeth/jpeg8d has been tested and used.
|
* [optional] cJSON is required for logging in to Azure accounts
|
||||||
However, any other static builds should work as well.
|
* [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:
|
Build native libraries:
|
||||||
======================
|
======================
|
||||||
|
|||||||
121
docs/README.building
Normal file
121
docs/README.building
Normal 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
|
||||||
@@ -9,7 +9,7 @@ Build requirements
|
|||||||
|
|
||||||
The following prerequisites are required in order to build the iOS port:
|
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)
|
- latest Xcode installed (>= 4.6)
|
||||||
- installed Provisioning Profile and iOS Developer Certificate for code signing
|
- installed Provisioning Profile and iOS Developer Certificate for code signing
|
||||||
(not required for simulator builds)
|
(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.
|
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
|
Building
|
||||||
========
|
========
|
||||||
|
|||||||
Reference in New Issue
Block a user