select() has the major drawback that it cannot handle file descriptor
that are bigger than 1024. This patch makes use of poll() instead of
select() when poll() support is available.
This patch adds an option to compile freerdp in a valgrind compliant way.
The purpose is to ease memchecking when connecting with TLS. We mark bytes
retrieved from SSL_read() as plainly defined to prevent the undefined contamination.
With the patch and the option activated you get a single warning at connection
during the handshake, and nothing after.
Split version numbers into:
FREERDP_API_VERSION - the version of the API which is major.minor
FREERDP_VERSION - version of a release consisting of major.minor.revision (e.g. 1.1.0)
FREERDP_VERSION_FULL - like FREERDP_VERSION but with an optional "build" suffix (e.g 1.1.0-dev)
Currently not working are rename and setting of read only attribute and file times.
In addition it also adds the ability to staticly link plugins into the binary, so you get one big exe and need no dlls. I have only tested this on windows (only disk plugin so far).
I use the following options for cmake for static binary:
cmake -DWITH_MONOLITHIC_BUILD=ON -DMSVC_RUNTIME=static -DBUILD_SHARED_LIBS=OFF -DWITH_RDPDR=ON -DOPENSSL_INCLUDE_DIR=\opensslpath\inc32 -DOPENSSL_LIBRARIES="\opensslpath\out32.dbg\ssleay32.lib;d:\path\out32.dbg\libeay32.lib" -G "Visual Studio 9 2008" .
Important notice: Openssl need to be compiled with the same static runtime. Currently missing is a switch to link different openssl libraries for debug and release builds.
Now --version prints something like "This is FreeRDP version 1.0.1 (git
1.0.1-710-g90ec2)". Having a git commit id helps to identify builds and eases
debuggin.
The downside is that GetGitRevisionDescription retriggers a cmake
re-configuration after each git commit. But thats the only way to get correct
version informations without having git hooks or similar.
GetGitRevisionDescription is based on Ryan Pavlik cmake Modules.
To check if something should be en- or disabled WITH_XXX
should be used and not XXX_FOUND.
If XXX_FOUND is used and something gets disabled afterwards (by setting
WITH_XXX to OFF) it will be compiled in as long as XXX_FOUND is found in
cmake's cache file. So disabling a feature, or option, without
clearing the CMakeCache.txt might result in builds with unwanted
configuration.