Commit efb0651e authored by Jeremy Bicha's avatar Jeremy Bicha

Imported Upstream version 1.0.0

parent 91aa0275
......@@ -5,15 +5,10 @@ config.h
install_manifest.txt
CTestTestfile.cmake
freerdp.pc
*.cmake
/**/*.cmake
/**/**/*.cmake
/**/**/**/*.cmake
/**/**/**/**/*.cmake
# Make
Makefile
cmake_install.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
# Eclipse
*.project
......@@ -48,3 +43,7 @@ client/test/freerdp-test
client/DirectFB/dfreerdp
server/test/tfreerdp-server
server/X11/xfreerdp-server
# Other
*~
......@@ -36,12 +36,12 @@ include(FindOptionalPackage)
include(CheckCCompilerFlag)
include(GNUInstallDirsWrapper)
# Soname versioning - 0.0.0 since it is not being managed yet
# Soname versioning
set(FREERDP_VERSION_MAJOR "1")
set(FREERDP_VERSION_MINOR "0")
set(FREERDP_VERSION_PATCH "0")
set(FREERDP_VERSION_REVISION "0")
set(FREERDP_VERSION "${FREERDP_VERSION_MAJOR}.${FREERDP_VERSION_MINOR}")
set(FREERDP_VERSION_FULL "${FREERDP_VERSION}.${FREERDP_VERSION_PATCH}")
set(FREERDP_VERSION_FULL "${FREERDP_VERSION}.${FREERDP_VERSION_REVISION}")
# Default to release build type
if(NOT CMAKE_BUILD_TYPE)
......
2012-01-16 Version 1.0.0
License:
FreeRDP 1.0 is the first release of FreeRDP under the Apache License 2.0.
The FreeRDP 1.x series is a rewrite, meaning there is no continuity with
the previous FreeRDP 0.x series which were released under GPLv2.
New Features:
* RemoteFX
* Both encoder and decoder
* SSE2 and NEON optimization
* NSCodec
* RemoteApp
* Working, minor glitches
* Multimedia Redirection
* ffmpeg support
* Network Level Authentication (NLA)
* NTLMv2
* Certificate validation
* FIPS-compliant RDP security
* new build system (cmake)
* added official logo and icon
New Architecture:
* libfreerdp-core
* core protocol
* highly portable
* both client and server
* libfreerdp-cache
* caching operations
* libfreerdp-codec
* bitmap decompression
* codec encoding/decoding
* libfreerdp-kbd
* keyboard mapping
* libfreerdp-channels
* virtual channel management
* client and server side support
* libfreerdp-gdi
* extensively unit tested
* portable software GDI implementation
* libfreerdp-rail
* RemoteApp library
* libfreerdp-utils
* shared utility library
FreeRDP Clients:
* client/X11 (xfreerdp)
* official client
* RemoteApp support
* X11 GDI implementation
* client/DirectFB (dfreerdp)
* DirectFB support
* software-based GDI (libfreerdp-gdi)
* client/Windows (wfreerdp)
* Native Win32 support
FreeRDP Servers (experimental):
* server/X11 (xfreerdp-server)
* RemoteFX-only
* no authentication
* highly experimental
* keyboard and mouse input supported
Virtual Channels:
* cliprdr (Clipboard Redirection)
* rail (RemoteApp)
* drdynvc (Dynamic Virtual Channels)
* audin (Audio Input Redirection)
* alsa support
* pulse support
* tsmf (Multimedia Redirection)
* alsa support
* pulse support
* ffmpeg support
* rdpdr (Device Redirection)
* disk (Disk Redirection)
* parallel (Parallel Port Redirection)
* serial (Serial Port Redirection)
* printer (Printer Redirection)
* CUPS support
* smartcard (Smartcard Redirection)
* rdpsnd (Sound Redirection)
* alsa support
* pulse support
FreeRDP: A Remote Desktop Protocol Client
=========================================
FreeRDP: A Remote Desktop Protocol Implementation
=================================================
FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) following the Microsoft Open Specifications.
FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license.
Enjoy the freedom of using your software wherever you want, the way you want it, in a world where
interoperability can finally liberate your computing experience.
Resources
---------
Website: http://www.freerdp.com/
Wiki: http://www.freerdp.com/wiki/
Sources: http://www.freerdp.com/git/
Wiki: https://github.com/FreeRDP/FreeRDP/wiki
Sources: https://github.com/FreeRDP/FreeRDP/
API doc: http://www.freerdp.com/api/
IRC channel: #freerdp @ irc.freenode.net
......@@ -20,10 +22,13 @@ Microsoft Open Specifications
Information regarding the Microsoft Open Specifications can be found at:
http://www.microsoft.com/openspecifications/
A list of reference documentation is maintained here:
https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation
Compilation
-----------
Instructions on how to get started compiling FreeRDP can be found on the wiki:
http://www.freerdp.com/wiki/doku.php?id=compilation
https://github.com/FreeRDP/FreeRDP/wiki/Compilation
/**
* FreeRDP: A Remote Desktop Protocol client.
* Audio Input Reirection Virtual Channel
* Audio Input Redirection Virtual Channel
*
* Copyright 2010-2011 Vic Lee
*
......
/**
* FreeRDP: A Remote Desktop Protocol client.
* Audio Input Reirection Virtual Channel
* Audio Input Redirection Virtual Channel
*
* Copyright 2010-2011 Vic Lee
*
......
......@@ -237,8 +237,8 @@ void wf_gdi_patblt(rdpContext* context, PATBLT_ORDER* patblt)
COLORREF org_textcolor;
wfInfo* wfi = ((wfContext*) context)->wfi;
fgcolor = freerdp_color_convert_rgb(patblt->foreColor, wfi->srcBpp, 24, wfi->clrconv);
bgcolor = freerdp_color_convert_rgb(patblt->backColor, wfi->srcBpp, 24, wfi->clrconv);
fgcolor = freerdp_color_convert_bgr(patblt->foreColor, wfi->srcBpp, 32, wfi->clrconv);
bgcolor = freerdp_color_convert_bgr(patblt->backColor, wfi->srcBpp, 32, wfi->clrconv);
brush = wf_create_brush(wfi, &patblt->brush, fgcolor, wfi->srcBpp);
org_bkmode = SetBkMode(wfi->drawing->hdc, OPAQUE);
......@@ -279,7 +279,7 @@ void wf_gdi_opaque_rect(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect)
uint32 brush_color;
wfInfo* wfi = ((wfContext*) context)->wfi;
brush_color = freerdp_color_convert_var_rgb(opaque_rect->color, wfi->srcBpp, 32, wfi->clrconv);
brush_color = freerdp_color_convert_var_bgr(opaque_rect->color, wfi->srcBpp, 24, wfi->clrconv);
rect.left = opaque_rect->nLeftRect;
rect.top = opaque_rect->nTopRect;
......@@ -306,7 +306,7 @@ void wf_gdi_multi_opaque_rect(rdpContext* context, MULTI_OPAQUE_RECT_ORDER* mult
{
rectangle = &multi_opaque_rect->rectangles[i];
brush_color = freerdp_color_convert_var_rgb(multi_opaque_rect->color, wfi->srcBpp, 32, wfi->clrconv);
brush_color = freerdp_color_convert_var_bgr(multi_opaque_rect->color, wfi->srcBpp, 32, wfi->clrconv);
rect.left = rectangle->left;
rect.top = rectangle->top;
......@@ -332,7 +332,7 @@ void wf_gdi_line_to(rdpContext* context, LINE_TO_ORDER* line_to)
uint32 pen_color;
wfInfo* wfi = ((wfContext*) context)->wfi;
pen_color = freerdp_color_convert_rgb(line_to->penColor, wfi->srcBpp, wfi->dstBpp, wfi->clrconv);
pen_color = freerdp_color_convert_bgr(line_to->penColor, wfi->srcBpp, wfi->dstBpp, wfi->clrconv);
pen = CreatePen(line_to->penStyle, line_to->penWidth, pen_color);
......@@ -364,7 +364,7 @@ void wf_gdi_polyline(rdpContext* context, POLYLINE_ORDER* polyline)
uint32 pen_color;
wfInfo* wfi = ((wfContext*) context)->wfi;
pen_color = freerdp_color_convert_rgb(polyline->penColor, wfi->srcBpp, wfi->dstBpp, wfi->clrconv);
pen_color = freerdp_color_convert_bgr(polyline->penColor, wfi->srcBpp, wfi->dstBpp, wfi->clrconv);
hpen = CreatePen(0, 1, pen_color);
org_rop2 = wf_set_rop2(wfi->drawing->hdc, polyline->bRop2);
......@@ -430,7 +430,7 @@ void wf_gdi_surface_bits(rdpContext* context, SURFACE_BITS_COMMAND* surface_bits
tx = message->tiles[i]->x + surface_bits_command->destLeft;
ty = message->tiles[i]->y + surface_bits_command->destTop;
freerdp_image_convert(message->tiles[i]->data, wfi->tile->pdata, 64, 64, 32, 24, wfi->clrconv);
freerdp_image_convert(message->tiles[i]->data, wfi->tile->pdata, 64, 64, 32, 32, wfi->clrconv);
for (j = 0; j < message->num_rects; j++)
{
......
......@@ -168,6 +168,8 @@ boolean wf_pre_connect(freerdp* instance)
settings->order_support[NEG_ELLIPSE_SC_INDEX] = false;
settings->order_support[NEG_ELLIPSE_CB_INDEX] = false;
settings->glyph_cache = false;
wfi->cursor = g_default_cursor;
wfi->fullscreen = settings->fullscreen;
......@@ -175,8 +177,8 @@ boolean wf_pre_connect(freerdp* instance)
wfi->sw_gdi = settings->sw_gdi;
wfi->clrconv = (HCLRCONV) xzalloc(sizeof(CLRCONV));
wfi->clrconv->alpha = 1;
wfi->clrconv->palette = NULL;
wfi->clrconv->alpha = 0;
instance->context->cache = cache_new(settings);
......@@ -570,7 +572,7 @@ static DWORD WINAPI kbd_thread_func(LPVOID lpParam)
if (hook_handle)
{
while( (status = GetMessage( &msg, NULL, 0, 0 )) != 0)
while ((status = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (status == -1)
{
......@@ -598,6 +600,14 @@ INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
WSADATA wsa_data;
WNDCLASSEX wnd_cls;
if (NULL == getenv("HOME"))
{
char home[MAX_PATH * 2] = "HOME=";
strcat(home, getenv("HOMEDRIVE"));
strcat(home, getenv("HOMEPATH"));
_putenv(home);
}
if (WSAStartup(0x101, &wsa_data) != 0)
return 1;
......
......@@ -421,7 +421,7 @@ void xf_gdi_scrblt(rdpContext* context, SCRBLT_ORDER* scrblt)
}
}
gdi_InvalidateRegion(xfi->hdc, scrblt->nXSrc, scrblt->nYSrc, scrblt->nWidth, scrblt->nHeight);
gdi_InvalidateRegion(xfi->hdc, scrblt->nLeftRect, scrblt->nTopRect, scrblt->nWidth, scrblt->nHeight);
}
XSetFunction(xfi->display, xfi->gc, GXcopy);
......@@ -432,11 +432,12 @@ void xf_gdi_opaque_rect(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect)
uint32 color;
xfInfo* xfi = ((xfContext*) context)->xfi;
color = freerdp_color_convert_var_rgb(opaque_rect->color, xfi->srcBpp, 32, xfi->clrconv);
color = freerdp_color_convert_var(opaque_rect->color, xfi->srcBpp, 32, xfi->clrconv);
XSetFunction(xfi->display, xfi->gc, GXcopy);
XSetFillStyle(xfi->display, xfi->gc, FillSolid);
XSetForeground(xfi->display, xfi->gc, color);
XFillRectangle(xfi->display, xfi->drawing, xfi->gc,
opaque_rect->nLeftRect, opaque_rect->nTopRect,
opaque_rect->nWidth, opaque_rect->nHeight);
......@@ -461,7 +462,7 @@ void xf_gdi_multi_opaque_rect(rdpContext* context, MULTI_OPAQUE_RECT_ORDER* mult
DELTA_RECT* rectangle;
xfInfo* xfi = ((xfContext*) context)->xfi;
color = freerdp_color_convert_var_rgb(multi_opaque_rect->color, xfi->srcBpp, 32, xfi->clrconv);
color = freerdp_color_convert_var(multi_opaque_rect->color, xfi->srcBpp, 32, xfi->clrconv);
XSetFunction(xfi->display, xfi->gc, GXcopy);
XSetFillStyle(xfi->display, xfi->gc, FillSolid);
......@@ -504,24 +505,25 @@ void xf_gdi_line_to(rdpContext* context, LINE_TO_ORDER* line_to)
if (xfi->drawing == xfi->primary)
{
int width, height;
if (xfi->remote_app != true)
{
int width, height;
XDrawLine(xfi->display, xfi->drawable, xfi->gc,
line_to->nXStart, line_to->nYStart, line_to->nXEnd, line_to->nYEnd);
}
width = line_to->nXStart - line_to->nXEnd;
height = line_to->nYStart - line_to->nYEnd;
width = line_to->nXStart - line_to->nXEnd;
height = line_to->nYStart - line_to->nYEnd;
if (width < 0)
width *= (-1);
if (width < 0)
width *= (-1);
if (height < 0)
height *= (-1);
if (height < 0)
height *= (-1);
gdi_InvalidateRegion(xfi->hdc, line_to->nXStart, line_to->nYStart, width, height);
gdi_InvalidateRegion(xfi->hdc, line_to->nXStart, line_to->nYStart, width, height);
}
}
XSetFunction(xfi->display, xfi->gc, GXcopy);
......
......@@ -243,8 +243,13 @@ void xf_Glyph_BeginDraw(rdpContext* context, int x, int y, int width, int height
{
xfInfo* xfi = ((xfContext*) context)->xfi;
bgcolor = freerdp_color_convert_rgb(bgcolor, xfi->srcBpp, 32, xfi->clrconv);
fgcolor = freerdp_color_convert_rgb(fgcolor, xfi->srcBpp, 32, xfi->clrconv);
bgcolor = (xfi->clrconv->invert)?
freerdp_color_convert_var_bgr(bgcolor, xfi->srcBpp, 32, xfi->clrconv):
freerdp_color_convert_var_rgb(bgcolor, xfi->srcBpp, 32, xfi->clrconv);
fgcolor = (xfi->clrconv->invert)?
freerdp_color_convert_var_bgr(fgcolor, xfi->srcBpp, 32, xfi->clrconv):
freerdp_color_convert_var_rgb(fgcolor, xfi->srcBpp, 32, xfi->clrconv);
XSetFunction(xfi->display, xfi->gc, GXcopy);
XSetFillStyle(xfi->display, xfi->gc, FillSolid);
......
......@@ -57,6 +57,13 @@ void xf_rail_paint(xfInfo* xfi, rdpRail* rail, sint32 uleft, sint32 utop, uint32
window = window_list_get_next(rail->list);
xfw = (xfWindow*) window->extra;
// RDP can have zero width or height windows. X cannot, so we ignore these.
if (window->windowWidth == 0 || window->windowHeight == 0)
{
continue;
}
wleft = window->windowOffsetX;
wtop = window->windowOffsetY;
wright = window->windowOffsetX + window->windowWidth - 1;
......@@ -333,6 +340,15 @@ void xf_rail_end_local_move(xfInfo* xfi, rdpWindow *window)
y = xfw->top + xfw->local_move.window_y;
input->MouseEvent(input, PTR_FLAGS_BUTTON1, x, y);
// Proactively update the RAIL window dimensions. There is a race condition where
// we can start to receive GDI orders for the new window dimensions before we
// receive the RAIL ORDER for the new window size. This avoids that race condition.
window->windowOffsetX = xfw->left;
window->windowOffsetY = xfw->top;
window->windowWidth = xfw->width;
window->windowHeight = xfw->height;
xfw->local_move.state = LMS_TERMINATING;
}
......
......@@ -4,7 +4,7 @@
<refentryinfo>
<date>2011-08-27</date>
<author>
<authorblurb><para>The FreeRDP-Team</para></authorblurb>
<authorblurb><para>The FreeRDP Team</para></authorblurb>
</author>
</refentryinfo>
<refmeta>
......@@ -15,7 +15,7 @@
</refmeta>
<refnamediv>
<refname><application>xfreerdp</application></refname>
<refpurpose>X11 frontend to libFreeRDP</refpurpose>
<refpurpose>FreeRDP X11 client</refpurpose>
</refnamediv>
<refsynopsisdiv>
<refsynopsisdivinfo>
......@@ -31,10 +31,9 @@
</refsect1info>
<title>DESCRIPTION</title>
<para>
<command>xfreerdp</command> is a frontend to libFreeRDP,
which implements a client to the Remote Desktop Protocol (RDP).
RDP is used in a number of Microsoft products including Microsoft Windows
versions starting from NT Terminal Server. RDP is also implemented by xrdp and VirtualBox.
<command>xfreerdp</command> is an X11 Remote Desktop Protocol (RDP)
client which is part of the FreeRDP project. An RDP server is built-in
to many editions of Windows. Alternative servers included xrdp and VRDP (VirtualBox).
</para>
</refsect1>
<refsect1>
......@@ -103,7 +102,7 @@
<term>-g <replaceable class="parameter">geometry</replaceable></term>
<listitem>
<para>
Sets the size of the FreeRDP-window (and of the remote desktop, when establishing a new connection).
Sets the size of the FreeRDP window (and of the remote desktop, when establishing a new connection).
<replaceable class="parameter">geometry</replaceable> can have one of the following forms:
<itemizedlist>
<listitem>
......@@ -143,7 +142,6 @@
<listitem>
<para>
Don't send mouse motion events.
<!-- TODO: what is this good for? -->
</para>
</listitem>
</varlistentry>
......@@ -225,7 +223,7 @@
<replaceable class="parameter">num</replaceable> - A hexadecimal number that
represents a bit-mask, were numbers mean the following
<footnote><para>Taken from <ulink url="http://msdn.microsoft.com/en-us/library/cc240476%28v=prot.10%29.aspx">
MS-RDPBCGR Scetion 2.2.1.11.1.1.1 - Extended Info Packet</ulink></para></footnote>:
MS-RDPBCGR Section 2.2.1.11.1.1.1 - Extended Info Packet</ulink></para></footnote>:
<itemizedlist>
<listitem>
<para>1: Disable desktop wallpaper.</para>
......@@ -271,7 +269,6 @@
<listitem>
<para>
initialize a RemoteApp connection. This implies -g workarea.
FIXME: How to do RemoteApp
</para>
</listitem>
</varlistentry>
......@@ -280,7 +277,6 @@
<listitem>
<para>
load an extension
FIXME: How to do this
</para>
</listitem>
</varlistentry>
......@@ -302,6 +298,14 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--gdi</term>
<listitem>
<para>
GDI rendering backend. <replaceable class="parameter">backend</replaceable> can be either sw (software) or hw (hardware).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--no-osb</term>
<listitem>
......@@ -310,12 +314,19 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--no-bmp-cache</term>
<listitem>
<para>
Disable bitmap cache.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--plugin</term>
<listitem>
<para>
load a plugin
FIXME: How to do this
</para>
</listitem>
</varlistentry>
......@@ -327,6 +338,62 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--rfx-mode</term>
<listitem>
<para>
RemoteFX operational flags. <replaceable class="parameter">flags</replaceable> can be either v[ideo], i[mage]), default is video.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--nsc</term>
<listitem>
<para>
Enable NSCodec.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--disable-wallpaper</term>
<listitem>
<para>
Disable wallpaper.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--composition</term>
<listitem>
<para>
Enable composition (RDVH only, not to be confused with remote composition).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--disable-full-window-drag</term>
<listitem>
<para>
Disable full window drag.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--disable-menu-animations</term>
<listitem>
<para>
Disable menu animations.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--disable-theming</term>
<listitem>
<para>
Disable theming.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--no-rdp</term>
<listitem>
......@@ -359,6 +426,22 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--ntlm</term>
<listitem>
<para>
force NTLM protocol version. <replaceable class="parameter">version</replaceable> can be one of 1 or 2.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--ignore-certificate</term>
<listitem>
<para>
ignore verification of logon certificate.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>--version</term>
<listitem>
......@@ -369,25 +452,6 @@
</varlistentry>
</variablelist>
</refsect1>
<!-- refsect1>
<title>USAGE</title>
<para>
<command>foo</command> -f foo.conf -d2 foodata.foo
</para>
</refsect1 -->
<!-- refsect1>
<title>CAVEATS</title>
<para>
Other programs named <command>foo</command> may exist and actually
do something!
</para>
</refsect1 -->
<!-- refsect1>
<title>BUGS</title>
<para>
None. Program does nothing.
</para>
</refsect1 -->
<refsect1>
<title>LINKS</title>
<para>
......
......@@ -293,17 +293,16 @@ void xf_create_window(xfInfo* xfi)
if (xfi->instance->settings->window_title != NULL)
{
win_title = xmalloc(sizeof(xfi->instance->settings->window_title));
sprintf(win_title, "%s", xfi->instance->settings->window_title);
win_title = xstrdup(xfi->instance->settings->window_title);
}
else if (xfi->instance->settings->port == 3389)
{
win_title = xmalloc(sizeof("FreeRDP: ") + strlen(xfi->instance->settings->hostname));
win_title = xmalloc(1 + sizeof("FreeRDP: ") + strlen(xfi->instance->settings->hostname));
sprintf(win_title, "FreeRDP: %s", xfi->instance->settings->hostname);
}
else
{
win_title = xmalloc(sizeof("FreeRDP: ") + strlen(xfi->instance->settings->hostname) + sizeof(":00000"));
win_title = xmalloc(1 + sizeof("FreeRDP: ") + strlen(xfi->instance->settings->hostname) + sizeof(":00000"));
sprintf(win_title, "FreeRDP: %s:%i", xfi->instance->settings->hostname, xfi->instance->settings->port);
}
......@@ -456,7 +455,8 @@ boolean xf_pre_connect(freerdp* instance)
xfInfo* xfi;
boolean bitmap_cache;
rdpSettings* settings;
int arg_parse_result;
xfi = (xfInfo*) xzalloc(sizeof(xfInfo));
((xfContext*) instance->context)->xfi = xfi;
......@@ -464,11 +464,15 @@ boolean xf_pre_connect(freerdp* instance)
xfi->context = (xfContext*) instance->context;
xfi->context->settings = instance->settings;
xfi->instance = instance;
if (freerdp_parse_args(instance->settings, instance->context->argc, instance->context->argv,
xf_process_plugin_args, instance->context->channels, xf_process_client_args, xfi) < 0)
arg_parse_result = freerdp_parse_args(instance->settings, instance->context->argc,instance->context->argv,
xf_process_plugin_args, instance->context->channels, xf_process_client_args, xfi);
if (arg_parse_result < 0)
{
printf("failed to parse arguments.\n");
if (arg_parse_result == FREERDP_ARGS_PARSE_FAILURE)
printf("failed to parse arguments.\n");
exit(XF_EXIT_PARSE_ARGUMENTS);
}
......
# - Find XSHM
# Find the XSHM libraries
#
# This module defines the following variables:
# XSHM_FOUND - true if XSHM_INCLUDE_DIR & XSHM_LIBRARY are found
# XSHM_LIBRARIES - Set when XSHM_LIBRARY is found
# XSHM_INCLUDE_DIRS - Set when XSHM_INCLUDE_DIR is found
#
# XSHM_INCLUDE_DIR - where to find XShm.h, etc.
# XSHM_LIBRARY - the XSHM library
#
#=============================================================================
# Copyright 2011 O.S. Systems Software Ltda.
# Copyright 2011 Otavio Salvador <otavio@ossystems.com.br>
# Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#=============================================================================
find_path(XSHM_INCLUDE_DIR NAMES XShm.h
PATH_SUFFIXES X11/extensions
DOC "The XShm include directory"
)
find_library(XSHM_LIBRARY NAMES Xext
DOC "The XShm library"
)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XSHM DEFAULT_MSG XSHM_LIBRARY XSHM_INCLUDE_DIR)
if(XSHM_FOUND)
set( XSHM_LIBRARIES ${XSHM_LIBRARY} )
set( XSHM_INCLUDE_DIRS ${XSHM_INCLUDE_DIR} )
endif()
mark_as_advanced(XSHM_INCLUDE_DIR XSHM_LIBRARY)
# - Find XTEST
# Find the XTEST libraries
#
# This module defines the following variables:
# XTEST_FOUND - true if XTEST_INCLUDE_DIR & XTEST_LIBRARY are found
# XTEST_LIBRARIES - Set when XTEST_LIBRARY is found
# XTEST_INCLUDE_DIRS - Set when XTEST_INCLUDE_DIR is found
#