
------------------------------------------------------------
 About this README
------------------------------------------------------------

This README is intended to provide quick and to-the-point documentation for
technical users intending to compile parts of Guacamole themselves.

Distribution-specific packages are available from the files section of the main
project page:
 
    http://sourceforge.net/projects/guacamole/files/

Distribution-specific documentation is provided on the Guacamole wiki:

    http://guac-dev.org/


------------------------------------------------------------
 What is libguac-client-rdp?
------------------------------------------------------------

libguac-client-rdp is a protocol support plugin for the Guacamole proxy (guacd)
which provides support for RDP, the proprietary remote desktop protocol used
by Windows Remote Deskop / Terminal Services, via the libfreerdp library.


------------------------------------------------------------
 Compiling and installing libguac-client-rdp
------------------------------------------------------------

Please note that distribution-specific pre-compiled packages are available from
the files section of the main project site:

    http://sourceforge.net/projects/guacamole/files/

libguac-client-rdp is built using the popular GNU Automake, and thus provides
the standard configure script.

1) Run configure

    $ ./configure

    Assuming all dependencies have been installed, this should succeed without
    errors.

2) Run make

    $ make

    libguac-client-rdp will now compile.

3) Install (as root)

    # make install

    libguac-client-rdp will install to your /usr/local/lib directory by default.
    You can change the install location by using the --prefix option for
    configure.

    You will need to run ldconfig (as root) so that guacd can find the library
    when needed:

    # ldconfig


------------------------------------------------------------
 Reporting problems
------------------------------------------------------------

Please report any bugs encountered by opening a new ticket at the Trac system
hosted at:
    
    http://guac-dev.org/trac/

