summaryrefslogtreecommitdiff
path: root/net-misc/freerdp
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /net-misc/freerdp
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.xz
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'net-misc/freerdp')
-rw-r--r--net-misc/freerdp/Manifest4
-rw-r--r--net-misc/freerdp/files/freerdp-1.1-CVE-2014-0250.patch308
-rw-r--r--net-misc/freerdp/files/freerdp-1.1-cmake-3.1.patch68
-rw-r--r--net-misc/freerdp/files/freerdp-1.1.0_beta1-avx.patch61
-rw-r--r--net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-cmake.patch25
-rw-r--r--net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-ffmpeg.patch127
-rw-r--r--net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-uclibc.patch66
-rw-r--r--net-misc/freerdp/files/freerdp-armfp.patch84
-rw-r--r--net-misc/freerdp/files/freerdp-cmake-3.1.patch98
-rw-r--r--net-misc/freerdp/freerdp-1.1.0_beta1_p20130710-r1.ebuild105
-rw-r--r--net-misc/freerdp/freerdp-1.1.0_beta1_p20130710-r2.ebuild114
-rw-r--r--net-misc/freerdp/freerdp-1.1.0_beta1_p20150312.ebuild112
-rw-r--r--net-misc/freerdp/freerdp-1.2.0_beta1_pre20141115.ebuild106
-rw-r--r--net-misc/freerdp/freerdp-1.2.1_pre20150326.ebuild108
-rw-r--r--net-misc/freerdp/freerdp-9999.1.ebuild106
-rw-r--r--net-misc/freerdp/metadata.xml16
16 files changed, 1508 insertions, 0 deletions
diff --git a/net-misc/freerdp/Manifest b/net-misc/freerdp/Manifest
new file mode 100644
index 00000000000..3faf65cf1b8
--- /dev/null
+++ b/net-misc/freerdp/Manifest
@@ -0,0 +1,4 @@
+DIST freerdp-1.1.0_beta1_p20130710.tar.gz 6682149 SHA256 0d0d2eec7e78b61458415ee98ad54379b31e9fc269b8bacf3e939bd048ac5e61 SHA512 89ec08acff5c9bbafe107cd079005146b6c4447fbe3172d8f774a20ab6b5e1f24abdeab2d7cb0d7694251aaea2924b0a10f1c0b4b660994cdfa51e8428b90440 WHIRLPOOL 2f7c04bde54293fc8fc85ba03baf7dc64e5da4cecdc87aaaa2ff316127abc43f0b56d70e14652f97f2e97a8f43bee8880837a94230448397dfad5f4ddbd055b1
+DIST freerdp-1.1.0_beta1_p20150312.tar.gz 6703421 SHA256 b8d439c00d39c7cd673781962c3b04d7bd501dcdb76af8be7051e4afb6d16f01 SHA512 293c6ad5827f0bd4c71e70571c1ca37916a6ef0193a55afe1a624a94ba1419501304d77584c739e7b9c624aee64475cd13e8f5e035d89404f7dded87c004261c WHIRLPOOL f560e98c54f526d6042b22b61ee45eb323796c4230cd22ec03aa8f55b5c76647318ba618198a25654e33912eb3394714704a5be9f2d48dd09a4f219701973899
+DIST freerdp-1.2.0_beta1_pre20141115.tar.gz 6096004 SHA256 a9dcd76946878cecddafc79a14794e7f57cb32397b5bc45af9d866d8d76bb421 SHA512 8fdbfba86df2cbb6c980e940df66bf30cd8d06e66df18656e18a120eabdd2b17e78c7612f1349589fcd8d3b37066b3956e0ef977d069f2abde653b4824fee61b WHIRLPOOL 0c0bb6c2a9e0b0efd072d0c46ded4790b69df649fe1e18bd907458e238a8149314ca47e5166523044c14a520e8f1d0d5b910e294c4ee670c1562c7980036cbb0
+DIST freerdp-1.2.1_pre20150326.tar.gz 6146857 SHA256 c0646f224ea30a485e165fb31eb8a039af2ca3f257cdf784b319e1b5c13e0425 SHA512 ca1499d56ecb9c9bc624de2ecc976eb9633b795050ac01e16fcc9e0a8951d274cc63644a0e2b830e75f66de894f6a22274864fd20a9351834f6d664874e65ec8 WHIRLPOOL 1ff6ce70d454a7e0cbb3cd4fbafe1fb4191dadc3b2f8a6dbff10d8c725b8fc2838a863837d9b01f6daa670483fe40266fb57569904ad8ac8503549d6605c9e64
diff --git a/net-misc/freerdp/files/freerdp-1.1-CVE-2014-0250.patch b/net-misc/freerdp/files/freerdp-1.1-CVE-2014-0250.patch
new file mode 100644
index 00000000000..ce4d3d98909
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-1.1-CVE-2014-0250.patch
@@ -0,0 +1,308 @@
+From 5ad707ddf33d1d785a8ca1fbeec91d2eee985820 Mon Sep 17 00:00:00 2001
+From: Hardening <rdp.effort@gmail.com>
+Date: Fri, 6 Jun 2014 23:24:16 +0200
+Subject: [PATCH] Fix CVE-2014-0250
+
+This patch fixes CVE-2014-0250 by checking width, height and bpp when
+receiving a new pointer.
+---
+ client/X11/xf_cliprdr.c | 11 +++++--
+ libfreerdp/core/fastpath.c | 2 +-
+ libfreerdp/core/orders.c | 21 ++++++++++++
+ libfreerdp/core/surface.c | 6 ++++
+ libfreerdp/core/update.c | 82 +++++++++++++++++++++++++++++++++++++++-------
+ libfreerdp/core/update.h | 2 +-
+ libfreerdp/core/window.c | 5 +++
+ 7 files changed, 114 insertions(+), 15 deletions(-)
+
+diff --git a/client/X11/xf_cliprdr.c b/client/X11/xf_cliprdr.c
+index 19c4332..8fb49f9 100644
+--- a/client/X11/xf_cliprdr.c
++++ b/client/X11/xf_cliprdr.c
+@@ -914,7 +914,7 @@ static void xf_cliprdr_process_unicodetext(clipboardContext* cb, BYTE* data, int
+ crlf2lf(cb->data, &cb->data_length);
+ }
+
+-static void xf_cliprdr_process_dib(clipboardContext* cb, BYTE* data, int size)
++static BOOL xf_cliprdr_process_dib(clipboardContext* cb, BYTE* data, int size)
+ {
+ wStream* s;
+ UINT16 bpp;
+@@ -926,12 +926,18 @@ static void xf_cliprdr_process_dib(clipboardContext* cb, BYTE* data, int size)
+ if (size < 40)
+ {
+ DEBUG_X11_CLIPRDR("dib size %d too short", size);
+- return;
++ return FALSE;
+ }
+
+ s = Stream_New(data, size);
+ Stream_Seek(s, 14);
+ Stream_Read_UINT16(s, bpp);
++ if ((bpp < 1) || (bpp > 32))
++ {
++ fprintf(stderr, "%s: invalid bpp value %d", __FUNCTION__, bpp);
++ return FALSE;
++ }
++
+ Stream_Read_UINT32(s, ncolors);
+ offset = 14 + 40 + (bpp <= 8 ? (ncolors == 0 ? (1 << bpp) : ncolors) * 4 : 0);
+ Stream_Free(s, FALSE);
+@@ -949,6 +955,7 @@ static void xf_cliprdr_process_dib(clipboardContext* cb, BYTE* data, int size)
+ cb->data = Stream_Buffer(s);
+ cb->data_length = Stream_GetPosition(s);
+ Stream_Free(s, FALSE);
++ return TRUE;
+ }
+
+ static void xf_cliprdr_process_html(clipboardContext* cb, BYTE* data, int size)
+diff --git a/libfreerdp/core/fastpath.c b/libfreerdp/core/fastpath.c
+index 8448160..dcc7117 100644
+--- a/libfreerdp/core/fastpath.c
++++ b/libfreerdp/core/fastpath.c
+@@ -254,7 +254,7 @@ static int fastpath_recv_update(rdpFastPath* fastpath, BYTE updateCode, UINT32 s
+ break;
+
+ case FASTPATH_UPDATETYPE_COLOR:
+- if (!update_read_pointer_color(s, &pointer->pointer_color))
++ if (!update_read_pointer_color(s, &pointer->pointer_color, 24))
+ return -1;
+ IFCALL(pointer->PointerColor, context, &pointer->pointer_color);
+ break;
+diff --git a/libfreerdp/core/orders.c b/libfreerdp/core/orders.c
+index e5cc520..f22407f 100644
+--- a/libfreerdp/core/orders.c
++++ b/libfreerdp/core/orders.c
+@@ -1830,6 +1830,11 @@ BOOL update_read_cache_bitmap_order(wStream* s, CACHE_BITMAP_ORDER* cache_bitmap
+ Stream_Read_UINT8(s, cache_bitmap->bitmapWidth); /* bitmapWidth (1 byte) */
+ Stream_Read_UINT8(s, cache_bitmap->bitmapHeight); /* bitmapHeight (1 byte) */
+ Stream_Read_UINT8(s, cache_bitmap->bitmapBpp); /* bitmapBpp (1 byte) */
++ if ((cache_bitmap->bitmapBpp < 1) || (cache_bitmap->bitmapBpp > 32))
++ {
++ fprintf(stderr, "%s: invalid bitmap bpp %d\n", __FUNCTION__, cache_bitmap->bitmapBpp);
++ return FALSE;
++ }
+ Stream_Read_UINT16(s, cache_bitmap->bitmapLength); /* bitmapLength (2 bytes) */
+ Stream_Read_UINT16(s, cache_bitmap->cacheIndex); /* cacheIndex (2 bytes) */
+
+@@ -2068,6 +2073,11 @@ BOOL update_read_cache_bitmap_v3_order(wStream* s, CACHE_BITMAP_V3_ORDER* cache_
+ bitmapData = &cache_bitmap_v3->bitmapData;
+
+ Stream_Read_UINT8(s, bitmapData->bpp);
++ if ((bitmapData->bpp < 1) || (bitmapData->bpp > 32))
++ {
++ fprintf(stderr, "%s: invalid bpp value %d", __FUNCTION__, bitmapData->bpp);
++ return FALSE;
++ }
+ Stream_Seek_UINT8(s); /* reserved1 (1 byte) */
+ Stream_Seek_UINT8(s); /* reserved2 (1 byte) */
+ Stream_Read_UINT8(s, bitmapData->codecID); /* codecID (1 byte) */
+@@ -2672,6 +2682,11 @@ BOOL update_read_create_nine_grid_bitmap_order(wStream* s, CREATE_NINE_GRID_BITM
+ return FALSE;
+
+ Stream_Read_UINT8(s, create_nine_grid_bitmap->bitmapBpp); /* bitmapBpp (1 byte) */
++ if ((create_nine_grid_bitmap->bitmapBpp < 1) || (create_nine_grid_bitmap->bitmapBpp > 32))
++ {
++ fprintf(stderr, "%s: invalid bpp value %d", __FUNCTION__, create_nine_grid_bitmap->bitmapBpp);
++ return FALSE;
++ }
+ Stream_Read_UINT16(s, create_nine_grid_bitmap->bitmapId); /* bitmapId (2 bytes) */
+
+ nineGridInfo = &(create_nine_grid_bitmap->nineGridInfo);
+@@ -2707,6 +2722,12 @@ BOOL update_read_stream_bitmap_first_order(wStream* s, STREAM_BITMAP_FIRST_ORDER
+
+ Stream_Read_UINT8(s, stream_bitmap_first->bitmapFlags); /* bitmapFlags (1 byte) */
+ Stream_Read_UINT8(s, stream_bitmap_first->bitmapBpp); /* bitmapBpp (1 byte) */
++ if ((stream_bitmap_first->bitmapBpp < 1) || (stream_bitmap_first->bitmapBpp > 32))
++ {
++ fprintf(stderr, "%s: invalid bpp value %d", __FUNCTION__, stream_bitmap_first->bitmapBpp);
++ return FALSE;
++ }
++
+ Stream_Read_UINT16(s, stream_bitmap_first->bitmapType); /* bitmapType (2 bytes) */
+ Stream_Read_UINT16(s, stream_bitmap_first->bitmapWidth); /* bitmapWidth (2 bytes) */
+ Stream_Read_UINT16(s, stream_bitmap_first->bitmapHeight); /* bitmapHeigth (2 bytes) */
+diff --git a/libfreerdp/core/surface.c b/libfreerdp/core/surface.c
+index 7d0fb22..992a3dd 100644
+--- a/libfreerdp/core/surface.c
++++ b/libfreerdp/core/surface.c
+@@ -38,6 +38,12 @@ static int update_recv_surfcmd_surface_bits(rdpUpdate* update, wStream* s, UINT3
+ Stream_Read_UINT16(s, cmd->destRight);
+ Stream_Read_UINT16(s, cmd->destBottom);
+ Stream_Read_UINT8(s, cmd->bpp);
++ if ((cmd->bpp < 1) || (cmd->bpp > 32))
++ {
++ fprintf(stderr, "%s: invalid bpp value %d", __FUNCTION__, cmd->bpp);
++ return FALSE;
++ }
++
+ Stream_Seek(s, 2); /* reserved1, reserved2 */
+ Stream_Read_UINT8(s, cmd->codecID);
+ Stream_Read_UINT16(s, cmd->width);
+diff --git a/libfreerdp/core/update.c b/libfreerdp/core/update.c
+index c4eaede..27c36e3 100644
+--- a/libfreerdp/core/update.c
++++ b/libfreerdp/core/update.c
+@@ -219,16 +219,32 @@ BOOL update_read_pointer_system(wStream* s, POINTER_SYSTEM_UPDATE* pointer_syste
+ return TRUE;
+ }
+
+-BOOL update_read_pointer_color(wStream* s, POINTER_COLOR_UPDATE* pointer_color)
++BOOL update_read_pointer_color(wStream* s, POINTER_COLOR_UPDATE* pointer_color, int xorBpp)
+ {
++ BYTE *newMask;
++ int scanlineSize;
++
+ if (Stream_GetRemainingLength(s) < 14)
+ return FALSE;
+
+ Stream_Read_UINT16(s, pointer_color->cacheIndex); /* cacheIndex (2 bytes) */
+ Stream_Read_UINT16(s, pointer_color->xPos); /* xPos (2 bytes) */
+ Stream_Read_UINT16(s, pointer_color->yPos); /* yPos (2 bytes) */
++
++ /**
++ * As stated in 2.2.9.1.1.4.4 Color Pointer Update:
++ * The maximum allowed pointer width/height is 96 pixels if the client indicated support
++ * for large pointers by setting the LARGE_POINTER_FLAG (0x00000001) in the Large
++ * Pointer Capability Set (section 2.2.7.2.7). If the LARGE_POINTER_FLAG was not
++ * set, the maximum allowed pointer width/height is 32 pixels.
++ *
++ * So we check for a maximum of 96 for CVE-2014-0250.
++ */
+ Stream_Read_UINT16(s, pointer_color->width); /* width (2 bytes) */
+ Stream_Read_UINT16(s, pointer_color->height); /* height (2 bytes) */
++ if ((pointer_color->width > 96) || (pointer_color->height > 96))
++ return FALSE;
++
+ Stream_Read_UINT16(s, pointer_color->lengthAndMask); /* lengthAndMask (2 bytes) */
+ Stream_Read_UINT16(s, pointer_color->lengthXorMask); /* lengthXorMask (2 bytes) */
+
+@@ -245,26 +261,65 @@ BOOL update_read_pointer_color(wStream* s, POINTER_COLOR_UPDATE* pointer_color)
+
+ if (pointer_color->lengthXorMask > 0)
+ {
++ /**
++ * Spec states that:
++ *
++ * xorMaskData (variable): A variable-length array of bytes. Contains the 24-bpp, bottom-up
++ * XOR mask scan-line data. The XOR mask is padded to a 2-byte boundary for each encoded
++ * scan-line. For example, if a 3x3 pixel cursor is being sent, then each scan-line will consume 10
++ * bytes (3 pixels per scan-line multiplied by 3 bytes per pixel, rounded up to the next even
++ * number of bytes).
++ *
++ * In fact instead of 24-bpp, the bpp parameter is given by the containing packet.
++ */
+ if (Stream_GetRemainingLength(s) < pointer_color->lengthXorMask)
+ return FALSE;
+
+- if (!pointer_color->xorMaskData)
+- pointer_color->xorMaskData = malloc(pointer_color->lengthXorMask);
+- else
+- pointer_color->xorMaskData = realloc(pointer_color->xorMaskData, pointer_color->lengthXorMask);
++ scanlineSize = (7 + xorBpp * pointer_color->width) / 8;
++ scanlineSize = ((scanlineSize + 1) / 2) * 2;
++ if (scanlineSize * pointer_color->height != pointer_color->lengthXorMask)
++ {
++ fprintf(stderr, "%s: invalid lengthXorMask: width=%d height=%d, %d instead of %d\n", __FUNCTION__,
++ pointer_color->width, pointer_color->height,
++ pointer_color->lengthXorMask, scanlineSize * pointer_color->height);
++ return FALSE;
++ }
++
++ newMask = realloc(pointer_color->xorMaskData, pointer_color->lengthXorMask);
++ if (!newMask)
++ return FALSE;
++
++ pointer_color->xorMaskData = newMask;
+
+ Stream_Read(s, pointer_color->xorMaskData, pointer_color->lengthXorMask);
+ }
+
+ if (pointer_color->lengthAndMask > 0)
+ {
++ /**
++ * andMaskData (variable): A variable-length array of bytes. Contains the 1-bpp, bottom-up
++ * AND mask scan-line data. The AND mask is padded to a 2-byte boundary for each encoded
++ * scan-line. For example, if a 7x7 pixel cursor is being sent, then each scan-line will consume 2
++ * bytes (7 pixels per scan-line multiplied by 1 bpp, rounded up to the next even number of
++ * bytes).
++ */
+ if (Stream_GetRemainingLength(s) < pointer_color->lengthAndMask)
+ return FALSE;
+
+- if (!pointer_color->andMaskData)
+- pointer_color->andMaskData = malloc(pointer_color->lengthAndMask);
+- else
+- pointer_color->andMaskData = realloc(pointer_color->andMaskData, pointer_color->lengthAndMask);
++ scanlineSize = ((7 + pointer_color->width) / 8);
++ scanlineSize = ((1 + scanlineSize) / 2) * 2;
++ if (scanlineSize * pointer_color->height != pointer_color->lengthAndMask)
++ {
++ fprintf(stderr, "%s: invalid lengthAndMask: %d instead of %d\n", __FUNCTION__,
++ pointer_color->lengthAndMask, scanlineSize * pointer_color->height);
++ return FALSE;
++ }
++
++ newMask = realloc(pointer_color->andMaskData, pointer_color->lengthAndMask);
++ if (!newMask)
++ return FALSE;
++
++ pointer_color->andMaskData = newMask;
+
+ Stream_Read(s, pointer_color->andMaskData, pointer_color->lengthAndMask);
+ }
+@@ -281,7 +336,12 @@ BOOL update_read_pointer_new(wStream* s, POINTER_NEW_UPDATE* pointer_new)
+ return FALSE;
+
+ Stream_Read_UINT16(s, pointer_new->xorBpp); /* xorBpp (2 bytes) */
+- return update_read_pointer_color(s, &pointer_new->colorPtrAttr); /* colorPtrAttr */
++ if ((pointer_new->xorBpp < 1) || (pointer_new->xorBpp > 32))
++ {
++ fprintf(stderr, "%s: invalid xorBpp %d\n", __FUNCTION__, pointer_new->xorBpp);
++ return FALSE;
++ }
++ return update_read_pointer_color(s, &pointer_new->colorPtrAttr, pointer_new->xorBpp); /* colorPtrAttr */
+ }
+
+ BOOL update_read_pointer_cached(wStream* s, POINTER_CACHED_UPDATE* pointer_cached)
+@@ -320,7 +380,7 @@ BOOL update_recv_pointer(rdpUpdate* update, wStream* s)
+ break;
+
+ case PTR_MSG_TYPE_COLOR:
+- if (!update_read_pointer_color(s, &pointer->pointer_color))
++ if (!update_read_pointer_color(s, &pointer->pointer_color, 24))
+ return FALSE;
+ IFCALL(pointer->PointerColor, context, &pointer->pointer_color);
+ break;
+diff --git a/libfreerdp/core/update.h b/libfreerdp/core/update.h
+index c3088f2..d6c2d59 100644
+--- a/libfreerdp/core/update.h
++++ b/libfreerdp/core/update.h
+@@ -53,7 +53,7 @@ BOOL update_recv(rdpUpdate* update, wStream* s);
+
+ BOOL update_read_pointer_position(wStream* s, POINTER_POSITION_UPDATE* pointer_position);
+ BOOL update_read_pointer_system(wStream* s, POINTER_SYSTEM_UPDATE* pointer_system);
+-BOOL update_read_pointer_color(wStream* s, POINTER_COLOR_UPDATE* pointer_color);
++BOOL update_read_pointer_color(wStream* s, POINTER_COLOR_UPDATE* pointer_color, int xorBpp);
+ BOOL update_read_pointer_new(wStream* s, POINTER_NEW_UPDATE* pointer_new);
+ BOOL update_read_pointer_cached(wStream* s, POINTER_CACHED_UPDATE* pointer_cached);
+
+diff --git a/libfreerdp/core/window.c b/libfreerdp/core/window.c
+index 7422f5b..c10fa33 100644
+--- a/libfreerdp/core/window.c
++++ b/libfreerdp/core/window.c
+@@ -35,6 +35,11 @@ BOOL update_read_icon_info(wStream* s, ICON_INFO* icon_info)
+ Stream_Read_UINT16(s, icon_info->cacheEntry); /* cacheEntry (2 bytes) */
+ Stream_Read_UINT8(s, icon_info->cacheId); /* cacheId (1 byte) */
+ Stream_Read_UINT8(s, icon_info->bpp); /* bpp (1 byte) */
++ if ((icon_info->bpp < 1) || (icon_info->bpp > 32))
++ {
++ fprintf(stderr, "%s: invalid bpp %d\n", __FUNCTION__, icon_info->bpp);
++ return FALSE;
++ }
+ Stream_Read_UINT16(s, icon_info->width); /* width (2 bytes) */
+ Stream_Read_UINT16(s, icon_info->height); /* height (2 bytes) */
+
+--
+1.9.3
+
diff --git a/net-misc/freerdp/files/freerdp-1.1-cmake-3.1.patch b/net-misc/freerdp/files/freerdp-1.1-cmake-3.1.patch
new file mode 100644
index 00000000000..aedfeb07a26
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-1.1-cmake-3.1.patch
@@ -0,0 +1,68 @@
+From 1b663ceffe51008af7ae9749e5b7999b2f7d6698 Mon Sep 17 00:00:00 2001
+From: Bernhard Miklautz <bernhard.miklautz@shacknet.at>
+Date: Fri, 12 Dec 2014 18:26:45 +0100
+Subject: [PATCH] build: cmake 3.1 compatibility
+
+* fix problem with REMOVE_DUPLICATES on undefined lists
+* since 3.1 file(GLOB FILEPATHS RELATIVE .. returns single / instead of // as
+ previously - necessary adoptions for regex and matches done. Should
+ work with all cmake versions.
+
+Tested with 3.1.0-rc3
+---
+ channels/CMakeLists.txt | 4 ++--
+ channels/client/CMakeLists.txt | 2 ++
+ client/CMakeLists.txt | 4 ++--
+ server/CMakeLists.txt | 4 ++--
+ third-party/CMakeLists.txt | 6 +++---
+ 5 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/channels/CMakeLists.txt b/channels/CMakeLists.txt
+index c4e6048..540b1ac 100644
+--- a/channels/CMakeLists.txt
++++ b/channels/CMakeLists.txt
+@@ -253,8 +253,8 @@ set(FILENAME "ChannelOptions.cmake")
+ file(GLOB FILEPATHS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/${FILENAME}")
+
+ foreach(FILEPATH ${FILEPATHS})
+- if(${FILEPATH} MATCHES "^([^/]*)//${FILENAME}")
+- string(REGEX REPLACE "^([^/]*)//${FILENAME}" "\\1" DIR ${FILEPATH})
++ if(${FILEPATH} MATCHES "^([^/]*)/+${FILENAME}")
++ string(REGEX REPLACE "^([^/]*)/+${FILENAME}" "\\1" DIR ${FILEPATH})
+ set(CHANNEL_OPTION)
+ include(${FILEPATH})
+ if(${CHANNEL_OPTION})
+diff --git a/channels/client/CMakeLists.txt b/channels/client/CMakeLists.txt
+index 049bc7b..2db18e8 100644
+--- a/channels/client/CMakeLists.txt
++++ b/channels/client/CMakeLists.txt
+@@ -24,7 +24,9 @@ set(${MODULE_PREFIX}_SRCS
+ ${CMAKE_CURRENT_SOURCE_DIR}/addin.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/addin.h)
+
++if(CHANNEL_STATIC_CLIENT_ENTRIES)
+ list(REMOVE_DUPLICATES CHANNEL_STATIC_CLIENT_ENTRIES)
++endif()
+
+ foreach(STATIC_ENTRY ${CHANNEL_STATIC_CLIENT_ENTRIES})
+ foreach(STATIC_MODULE ${CHANNEL_STATIC_CLIENT_MODULES})
+diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt
+index 09b1fd4..610f35e 100644
+--- a/third-party/CMakeLists.txt
++++ b/third-party/CMakeLists.txt
+@@ -22,11 +22,11 @@
+ file(GLOB all_valid_subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/CMakeLists.txt")
+
+ foreach(dir ${all_valid_subdirs})
+- if(${dir} MATCHES "^([^/]*)//CMakeLists.txt")
+- string(REGEX REPLACE "^([^/]*)//CMakeLists.txt" "\\1" dir_trimmed ${dir})
++ if(${dir} MATCHES "^([^/]*)/+CMakeLists.txt")
++ string(REGEX REPLACE "^([^/]*)/+CMakeLists.txt" "\\1" dir_trimmed ${dir})
+ message(STATUS "Adding third-party component ${dir_trimmed}")
+ add_subdirectory(${dir_trimmed})
+ endif()
+ endforeach(dir)
+
+-set(THIRD_PARTY_INCLUDES ${THIRD_PARTY_INCLUDES} PARENT_SCOPE)
+\ No newline at end of file
++set(THIRD_PARTY_INCLUDES ${THIRD_PARTY_INCLUDES} PARENT_SCOPE)
diff --git a/net-misc/freerdp/files/freerdp-1.1.0_beta1-avx.patch b/net-misc/freerdp/files/freerdp-1.1.0_beta1-avx.patch
new file mode 100644
index 00000000000..8a07e8a6d30
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-1.1.0_beta1-avx.patch
@@ -0,0 +1,61 @@
+commit 81580f10d910a8e88bc09c1fc692a2e14161ffa1
+Author: Bernhard Miklautz <bernhard.miklautz@shacknet.at>
+Date: Thu Mar 14 23:18:21 2013 +0100
+
+ winpr/sysinfo: fixed build and detection when build with AVX
+
+diff --git a/winpr/libwinpr/sysinfo/sysinfo.c b/winpr/libwinpr/sysinfo/sysinfo.c
+index 947dc24..59200cc 100644
+--- a/winpr/libwinpr/sysinfo/sysinfo.c
++++ b/winpr/libwinpr/sysinfo/sysinfo.c
+@@ -662,32 +662,29 @@ BOOL IsProcessorFeaturePresentEx(DWORD ProcessorFeature)
+ case PF_EX_AVX_AES:
+ {
+ if ((c & C_BITS_AVX) != C_BITS_AVX)
+- ret = FALSE;
++ break;
+
+- int e, f;
+- xgetbv(0, e, f);
++ int e, f;
++ xgetbv(0, e, f);
+
+- if ((e & E_BITS_AVX) == E_BITS_AVX)
++ if ((e & E_BITS_AVX) == E_BITS_AVX)
++ {
++ switch (ProcessorFeature)
+ {
+- switch (ProcessorFeature)
+- {
+- case: PF_EX_AVX:
+- ret = TRUE;
+- break;
+- case: PF_EX_FMA:
+- if (c & C_BIT_FMA)
+- ret = TRUE;
+- break;
+- case: PF_EX_AVX_AES:
+- if (c & C_BIT_AVX_AES)
+- ret = TRUE;
+- break;
+- {
++ case PF_EX_AVX:
+ ret = TRUE;
+ break;
+- }
+- }
+- }
++ case PF_EX_FMA:
++ if (c & C_BIT_FMA)
++ ret = TRUE;
++ break;
++ case PF_EX_AVX_AES:
++ if (c & C_BIT_AVX_AES)
++ ret = TRUE;
++ break;
++ }
++ }
++ }
+ break;
+ #endif //__AVX__
+ default:
diff --git a/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-cmake.patch b/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-cmake.patch
new file mode 100644
index 00000000000..4ab536a5057
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-cmake.patch
@@ -0,0 +1,25 @@
+From a668a644889bd58405b92c72a91c308c2bad8022 Mon Sep 17 00:00:00 2001
+From: Bernhard Miklautz <bernhard.miklautz@thincast.com>
+Date: Tue, 11 Nov 2014 14:40:31 +0100
+Subject: [PATCH] Don't include CMakeDetermineSystem
+
+According to [1] this is an cmake "internal" module and shouldn't be
+included directly.
+
+[1] http://public.kitware.com/Bug/view.php?id=13796#c31892
+---
+ CMakeLists.txt | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 79f17bd..5f6859c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -44,7 +44,6 @@ include(CheckCmakeCompat)
+ include(CheckIncludeFiles)
+ include(CheckLibraryExists)
+ include(CheckStructHasMember)
+-include(CMakeDetermineSystem)
+ include(FindPkgConfig)
+ include(TestBigEndian)
+
diff --git a/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-ffmpeg.patch b/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-ffmpeg.patch
new file mode 100644
index 00000000000..0e08c604308
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-ffmpeg.patch
@@ -0,0 +1,127 @@
+From bf065f3e892e0a94e442de9a7155a7ac170f2add Mon Sep 17 00:00:00 2001
+From: eroen <eroen@falcon.eroen.eu>
+Date: Thu, 21 Nov 2013 11:35:53 +0100
+Subject: [PATCH 1/3] ffmpeg-2 -- AVCODEC_MAX_AUDIO_FRAME_SIZE
+
+deprecated:
+http://git.videolan.org/?p=ffmpeg.git;a=commit;h=0eea212943544d40f99b05571aa7159d78667154
+
+broken with libavcodec 54
+---
+ channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c b/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
+index adf8e04..0d5b956 100644
+--- a/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
++++ b/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
+@@ -43,6 +43,12 @@
+ #define AVMEDIA_TYPE_AUDIO 1
+ #endif
+
++#if LIBAVCODEC_VERSION_MAJOR < 54
++#define MAX_AUDIO_FRAME_SIZE AVCODEC_MAX_AUDIO_FRAME_SIZE
++#else
++#define MAX_AUDIO_FRAME_SIZE 192000
++#endif
++
+ typedef struct _TSMFFFmpegDecoder
+ {
+ ITSMFDecoder iface;
+@@ -351,7 +357,7 @@ static BOOL tsmf_ffmpeg_decode_audio(ITSMFDecoder* decoder, const BYTE* data, UI
+ #endif
+
+ if (mdecoder->decoded_size_max == 0)
+- mdecoder->decoded_size_max = AVCODEC_MAX_AUDIO_FRAME_SIZE + 16;
++ mdecoder->decoded_size_max = MAX_AUDIO_FRAME_SIZE + 16;
+ mdecoder->decoded_data = malloc(mdecoder->decoded_size_max);
+ ZeroMemory(mdecoder->decoded_data, mdecoder->decoded_size_max);
+ /* align the memory for SSE2 needs */
+@@ -363,7 +369,7 @@ static BOOL tsmf_ffmpeg_decode_audio(ITSMFDecoder* decoder, const BYTE* data, UI
+ while (src_size > 0)
+ {
+ /* Ensure enough space for decoding */
+- if (mdecoder->decoded_size_max - mdecoder->decoded_size < AVCODEC_MAX_AUDIO_FRAME_SIZE)
++ if (mdecoder->decoded_size_max - mdecoder->decoded_size < MAX_AUDIO_FRAME_SIZE)
+ {
+ mdecoder->decoded_size_max = mdecoder->decoded_size_max * 2 + 16;
+ mdecoder->decoded_data = realloc(mdecoder->decoded_data, mdecoder->decoded_size_max);
+--
+1.8.4
+
+
+From cbcf0de3fac985afaeeef7daf104c94ad8cdca26 Mon Sep 17 00:00:00 2001
+From: eroen <eroen@falcon.eroen.eu>
+Date: Thu, 21 Nov 2013 13:14:04 +0100
+Subject: [PATCH 2/3] ffmpeg-2 -- dsp_mask
+
+deprecated:
+http://git.videolan.org/?p=ffmpeg.git;a=commit;h=95510be8c35753da8f48062b28b65e7acdab965f
+
+broken with libavcodec 55
+---
+ channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c b/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
+index 0d5b956..1f99ec3 100644
+--- a/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
++++ b/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
+@@ -104,6 +104,7 @@ static BOOL tsmf_ffmpeg_init_audio_stream(ITSMFDecoder* decoder, const TS_AM_MED
+ mdecoder->codec_context->channels = media_type->Channels;
+ mdecoder->codec_context->block_align = media_type->BlockAlign;
+
++#if LIBAVCODEC_VERSION_MAJOR < 55
+ #ifdef AV_CPU_FLAG_SSE2
+ mdecoder->codec_context->dsp_mask = AV_CPU_FLAG_SSE2 | AV_CPU_FLAG_MMX2;
+ #else
+@@ -113,6 +114,13 @@ static BOOL tsmf_ffmpeg_init_audio_stream(ITSMFDecoder* decoder, const TS_AM_MED
+ mdecoder->codec_context->dsp_mask = FF_MM_SSE2 | FF_MM_MMX2;
+ #endif
+ #endif
++#else /* LIBAVCODEC_VERSION_MAJOR < 55 */
++#ifdef AV_CPU_FLAG_SSE2
++ av_set_cpu_flags_mask(AV_CPU_FLAG_SSE2 | AV_CPU_FLAG_MMX2);
++#else
++ av_set_cpu_flags_mask(FF_MM_SSE2 | FF_MM_MMX2);
++#endif
++#endif /* LIBAVCODEC_VERSION_MAJOR < 55 */
+
+ return TRUE;
+ }
+--
+1.8.4
+
+
+From 6fe23e1a3860528a8ecdfc8e9ccfdbd0e3945869 Mon Sep 17 00:00:00 2001
+From: eroen <eroen@falcon.eroen.eu>
+Date: Thu, 21 Nov 2013 13:26:03 +0100
+Subject: [PATCH 3/3] ffmpeg-2 -- CodecID
+
+deprecated:
+http://git.videolan.org/?p=ffmpeg.git;a=commit;h=104e10fb426f903ba9157fdbfe30292d0e4c3d72
+
+broken with libavcodec 55
+---
+ channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c b/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
+index 1f99ec3..09b4f68 100644
+--- a/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
++++ b/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c
+@@ -54,7 +54,11 @@
+ ITSMFDecoder iface;
+
+ int media_type;
++#if LIBAVCODEC_VERSION_MAJOR < 55
+ enum CodecID codec_id;
++#else
++ enum AVCodecID codec_id;
++#endif
+ AVCodecContext* codec_context;
+ AVCodec* codec;
+ AVFrame* frame;
+--
+1.8.4
+
diff --git a/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-uclibc.patch b/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-uclibc.patch
new file mode 100644
index 00000000000..f4f28b28702
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-1.1.0_beta1_p20130710-uclibc.patch
@@ -0,0 +1,66 @@
+https://bugs.gentoo.org/show_bug.cgi?id=497808
+https://github.com/FreeRDP/FreeRDP/pull/2024
+
+--- FreeRDP-780d451afad21a22d2af6bd030ee71311856f038/channels/drive/client/drive_file.c
++++ FreeRDP-780d451afad21a22d2af6bd030ee71311856f038-uclibc/channels/drive/client/drive_file.c
+@@ -436,7 +436,11 @@ BOOL drive_file_set_information(DRIVE_FI
+ int status;
+ char* fullpath;
+ struct STAT st;
++#if defined(__linux__) && !defined(ANDROID)
++ struct timespec tv[2];
++#else
+ struct timeval tv[2];
++#endif
+ UINT64 LastWriteTime;
+ UINT32 FileAttributes;
+ UINT32 FileNameLength;
+@@ -457,14 +461,21 @@ BOOL drive_file_set_information(DRIVE_FI
+ return FALSE;
+
+ tv[0].tv_sec = st.st_atime;
+- tv[0].tv_usec = 0;
+- tv[1].tv_sec = (LastWriteTime > 0 ? FILE_TIME_RDP_TO_SYSTEM(LastWriteTime) : st.st_mtime);
+- tv[1].tv_usec = 0;
++ tv[1].tv_sec = (LastWriteTime > 0 ? FILE_TIME_RDP_TO_SYSTEM(LastWriteTime) : st.st_mtime);
++
+ #ifndef WIN32
+-/* TODO on win32 */
++/* TODO on win32 */
+ #ifdef ANDROID
++ tv[0].tv_usec = 0;
++ tv[1].tv_usec = 0;
+ utimes(file->fullpath, tv);
++#elif defined (__linux__)
++ tv[0].tv_nsec = 0;
++ tv[1].tv_nsec = 0;
++ futimens(file->fd, tv);
+ #else
++ tv[0].tv_usec = 0;
++ tv[1].tv_usec = 0;
+ futimes(file->fd, tv);
+ #endif
+
+--- FreeRDP-780d451afad21a22d2af6bd030ee71311856f038/winpr/libwinpr/synch/event.c
++++ FreeRDP-780d451afad21a22d2af6bd030ee71311856f038-uclibc/winpr/libwinpr/synch/event.c
+@@ -115,6 +115,20 @@ HANDLE OpenEventA(DWORD dwDesiredAccess,
+ return NULL;
+ }
+
++#ifdef HAVE_EVENTFD_H
++#if defined(__UCLIBC__)
++static int eventfd_read(int fd, eventfd_t* value)
++{
++ return (read(fd, value, sizeof(*value)) == sizeof(*value)) ? 0 : -1;
++}
++
++static int eventfd_write(int fd, eventfd_t value)
++{
++ return (write(fd, &value, sizeof(value)) == sizeof(value)) ? 0 : -1;
++}
++#endif
++#endif
++
+ BOOL SetEvent(HANDLE hEvent)
+ {
+ ULONG Type;
diff --git a/net-misc/freerdp/files/freerdp-armfp.patch b/net-misc/freerdp/files/freerdp-armfp.patch
new file mode 100644
index 00000000000..1a367d5600c
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-armfp.patch
@@ -0,0 +1,84 @@
+From 2355b54f8516a6e1c600df8f26ac7d56916bfd99 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Fri, 1 May 2015 17:35:21 -0400
+Subject: [PATCH] Remove the ARM_FP_ABI option
+
+It's unclear why this option would be necessary, and it causes problems
+when people do not match it to their toolchain and CFLAGS.
+
+To set the float abi, either use a toolchain with an appropriate default
+or set the float-abi option in the CFLAGS environment variable.
+
+This should resolve #2586.
+---
+ cmake/ConfigOptions.cmake | 6 ------
+ libfreerdp/CMakeLists.txt | 4 ++--
+ packaging/deb/freerdp-nightly/rules | 7 -------
+ 3 files changed, 2 insertions(+), 15 deletions(-)
+
+diff --git a/cmake/ConfigOptions.cmake b/cmake/ConfigOptions.cmake
+index b51a46b..cef6ba6 100644
+--- a/cmake/ConfigOptions.cmake
++++ b/cmake/ConfigOptions.cmake
+@@ -29,12 +29,6 @@ if(TARGET_ARCH MATCHES "ARM")
+ else()
+ option(WITH_NEON "Enable NEON optimization." OFF)
+ endif()
+- if (NOT DEFINED ARM_FP_ABI)
+- set(ARM_FP_ABI "softfp" CACHE STRING "Floating point ABI to use on arm")
+- else()
+- set(ARM_FP_ABI ${ARM_FP_API} CACHE STRING "Floating point ABI to use on arm")
+- endif()
+- mark_as_advanced(ARM_FP_ABI)
+ else()
+ if(NOT APPLE)
+ option(WITH_IPP "Use Intel Performance Primitives." OFF)
+diff --git a/libfreerdp/CMakeLists.txt b/libfreerdp/CMakeLists.txt
+index a1cbd9d..112b75a 100644
+--- a/libfreerdp/CMakeLists.txt
++++ b/libfreerdp/CMakeLists.txt
+@@ -156,7 +156,7 @@ if(WITH_SSE2)
+ endif()
+
+ if(WITH_NEON)
+- set_source_files_properties(${CODEC_NEON_SRCS} PROPERTIES COMPILE_FLAGS "-mfpu=neon -mfloat-abi=${ARM_FP_ABI} -Wno-unused-variable" )
++ set_source_files_properties(${CODEC_NEON_SRCS} PROPERTIES COMPILE_FLAGS "-mfpu=neon -Wno-unused-variable" )
+ set(CODEC_SRCS ${CODEC_SRCS} ${CODEC_NEON_SRCS})
+ endif()
+
+@@ -236,7 +236,7 @@ if(WITH_SSE2)
+ endif()
+ elseif(WITH_NEON)
+ if(CMAKE_COMPILER_IS_GNUCC)
+- set(OPTIMIZATION "${OPTIMIZATION} -mfpu=neon -mfloat-abi=${ARM_FP_ABI}")
++ set(OPTIMIZATION "${OPTIMIZATION} -mfpu=neon")
+ endif()
+ # TODO: Add MSVC equivalent
+ endif()
+diff --git a/packaging/deb/freerdp-nightly/rules b/packaging/deb/freerdp-nightly/rules
+index 4366f63..44ceb56 100755
+--- a/packaging/deb/freerdp-nightly/rules
++++ b/packaging/deb/freerdp-nightly/rules
+@@ -1,11 +1,5 @@
+ #!/usr/bin/make -f
+
+-DEB_HOST_ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
+-ifneq (,$(filter armhf,$(DEB_HOST_ARCH)))
+-ARM_FLOAT_ABI = -DARM_FP_ABI=hard
+-else
+-ARM_FLOAT_ABI =
+-endif
+ NULL =
+
+ DEB_CMAKE_EXTRA_FLAGS := -DCMAKE_SKIP_RPATH=FALSE \
+@@ -26,7 +20,6 @@ DEB_CMAKE_EXTRA_FLAGS := -DCMAKE_SKIP_RPATH=FALSE \
+ -DCMAKE_INSTALL_PREFIX=/opt/freerdp-nightly/ \
+ -DCMAKE_INSTALL_INCLUDEDIR=include \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+- $(ARM_FLOAT_ABI) \
+ $(NULL)
+
+ %:
+--
+2.5.0
+
diff --git a/net-misc/freerdp/files/freerdp-cmake-3.1.patch b/net-misc/freerdp/files/freerdp-cmake-3.1.patch
new file mode 100644
index 00000000000..462fb56396f
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-cmake-3.1.patch
@@ -0,0 +1,98 @@
+From 1b663ceffe51008af7ae9749e5b7999b2f7d6698 Mon Sep 17 00:00:00 2001
+From: Bernhard Miklautz <bernhard.miklautz@shacknet.at>
+Date: Fri, 12 Dec 2014 18:26:45 +0100
+Subject: [PATCH] build: cmake 3.1 compatibility
+
+* fix problem with REMOVE_DUPLICATES on undefined lists
+* since 3.1 file(GLOB FILEPATHS RELATIVE .. returns single / instead of // as
+ previously - necessary adoptions for regex and matches done. Should
+ work with all cmake versions.
+
+Tested with 3.1.0-rc3
+---
+ channels/CMakeLists.txt | 4 ++--
+ channels/client/CMakeLists.txt | 2 ++
+ client/CMakeLists.txt | 4 ++--
+ server/CMakeLists.txt | 4 ++--
+ third-party/CMakeLists.txt | 6 +++---
+ 5 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/channels/CMakeLists.txt b/channels/CMakeLists.txt
+index c4e6048..540b1ac 100644
+--- a/channels/CMakeLists.txt
++++ b/channels/CMakeLists.txt
+@@ -253,8 +253,8 @@ set(FILENAME "ChannelOptions.cmake")
+ file(GLOB FILEPATHS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/${FILENAME}")
+
+ foreach(FILEPATH ${FILEPATHS})
+- if(${FILEPATH} MATCHES "^([^/]*)//${FILENAME}")
+- string(REGEX REPLACE "^([^/]*)//${FILENAME}" "\\1" DIR ${FILEPATH})
++ if(${FILEPATH} MATCHES "^([^/]*)/+${FILENAME}")
++ string(REGEX REPLACE "^([^/]*)/+${FILENAME}" "\\1" DIR ${FILEPATH})
+ set(CHANNEL_OPTION)
+ include(${FILEPATH})
+ if(${CHANNEL_OPTION})
+diff --git a/channels/client/CMakeLists.txt b/channels/client/CMakeLists.txt
+index 049bc7b..2db18e8 100644
+--- a/channels/client/CMakeLists.txt
++++ b/channels/client/CMakeLists.txt
+@@ -24,7 +24,9 @@ set(${MODULE_PREFIX}_SRCS
+ ${CMAKE_CURRENT_SOURCE_DIR}/addin.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/addin.h)
+
++if(CHANNEL_STATIC_CLIENT_ENTRIES)
+ list(REMOVE_DUPLICATES CHANNEL_STATIC_CLIENT_ENTRIES)
++endif()
+
+ foreach(STATIC_ENTRY ${CHANNEL_STATIC_CLIENT_ENTRIES})
+ foreach(STATIC_MODULE ${CHANNEL_STATIC_CLIENT_MODULES})
+diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
+index 14ed363..b8b7699 100644
+--- a/client/CMakeLists.txt
++++ b/client/CMakeLists.txt
+@@ -63,8 +63,8 @@ set(FILENAME "ModuleOptions.cmake")
+ file(GLOB FILEPATHS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/${FILENAME}")
+
+ foreach(FILEPATH ${FILEPATHS})
+- if(${FILEPATH} MATCHES "^([^/]*)//${FILENAME}")
+- string(REGEX REPLACE "^([^/]*)//${FILENAME}" "\\1" FREERDP_CLIENT ${FILEPATH})
++ if(${FILEPATH} MATCHES "^([^/]*)/+${FILENAME}")
++ string(REGEX REPLACE "^([^/]*)/+${FILENAME}" "\\1" FREERDP_CLIENT ${FILEPATH})
+ set(FREERDP_CLIENT_ENABLED 0)
+ include(${FILEPATH})
+ if(FREERDP_CLIENT_ENABLED)
+diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt
+index cda14ba..ee9458e 100644
+--- a/server/CMakeLists.txt
++++ b/server/CMakeLists.txt
+@@ -48,8 +48,8 @@ set(FILENAME "ModuleOptions.cmake")
+ file(GLOB FILEPATHS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/${FILENAME}")
+
+ foreach(FILEPATH ${FILEPATHS})
+- if(${FILEPATH} MATCHES "^([^/]*)//${FILENAME}")
+- string(REGEX REPLACE "^([^/]*)//${FILENAME}" "\\1" FREERDP_SERVER ${FILEPATH})
++ if(${FILEPATH} MATCHES "^([^/]*)/+${FILENAME}")
++ string(REGEX REPLACE "^([^/]*)/+${FILENAME}" "\\1" FREERDP_SERVER ${FILEPATH})
+ set(FREERDP_SERVER_ENABLED 0)
+ include(${FILEPATH})
+ if(FREERDP_SERVER_ENABLED)
+diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt
+index 09b1fd4..610f35e 100644
+--- a/third-party/CMakeLists.txt
++++ b/third-party/CMakeLists.txt
+@@ -22,11 +22,11 @@
+ file(GLOB all_valid_subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/CMakeLists.txt")
+
+ foreach(dir ${all_valid_subdirs})
+- if(${dir} MATCHES "^([^/]*)//CMakeLists.txt")
+- string(REGEX REPLACE "^([^/]*)//CMakeLists.txt" "\\1" dir_trimmed ${dir})
++ if(${dir} MATCHES "^([^/]*)/+CMakeLists.txt")
++ string(REGEX REPLACE "^([^/]*)/+CMakeLists.txt" "\\1" dir_trimmed ${dir})
+ message(STATUS "Adding third-party component ${dir_trimmed}")
+ add_subdirectory(${dir_trimmed})
+ endif()
+ endforeach(dir)
+
+-set(THIRD_PARTY_INCLUDES ${THIRD_PARTY_INCLUDES} PARENT_SCOPE)
+\ No newline at end of file
++set(THIRD_PARTY_INCLUDES ${THIRD_PARTY_INCLUDES} PARENT_SCOPE)
diff --git a/net-misc/freerdp/freerdp-1.1.0_beta1_p20130710-r1.ebuild b/net-misc/freerdp/freerdp-1.1.0_beta1_p20130710-r1.ebuild
new file mode 100644
index 00000000000..a9b21ea503e
--- /dev/null
+++ b/net-misc/freerdp/freerdp-1.1.0_beta1_p20130710-r1.ebuild
@@ -0,0 +1,105 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit cmake-utils vcs-snapshot
+
+if [[ ${PV} != 9999* ]]; then
+ COMMIT="780d451afad21a22d2af6bd030ee71311856f038"
+ SRC_URI="https://github.com/FreeRDP/FreeRDP/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="alpha amd64 arm ppc ppc64 x86"
+else
+ inherit git-2
+ SRC_URI=""
+ EGIT_REPO_URI="git://github.com/FreeRDP/FreeRDP.git
+ https://github.com/FreeRDP/FreeRDP.git"
+ KEYWORDS=""
+fi
+
+DESCRIPTION="Free implementation of the Remote Desktop Protocol"
+HOMEPAGE="http://www.freerdp.com/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="alsa +channels +client cups debug directfb doc ffmpeg gstreamer jpeg
+ pulseaudio server smartcard cpu_flags_x86_sse2 test X xinerama xv"
+
+RDEPEND="
+ dev-libs/openssl
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ client? (
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ xinerama? ( x11-libs/libXinerama )
+ xv? ( x11-libs/libXv )
+ )
+ )
+ directfb? ( dev-libs/DirectFB )
+ ffmpeg? ( virtual/ffmpeg )
+ gstreamer? (
+ media-libs/gstreamer:0.10
+ media-libs/gst-plugins-base:0.10
+ x11-libs/libXrandr
+ )
+ jpeg? ( virtual/jpeg )
+ pulseaudio? ( media-sound/pulseaudio )
+ server? (
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ xinerama? ( x11-libs/libXinerama )
+ )
+ )
+ smartcard? ( sys-apps/pcsc-lite )
+ X? (
+ x11-libs/libX11
+ x11-libs/libxkbfile
+ )
+"
+DEPEND="${RDEPEND}
+ <dev-util/cmake-3.1
+ client? ( X? ( doc? (
+ app-text/docbook-xml-dtd:4.1.2
+ app-text/xmlto
+ ) ) )
+"
+
+DOCS=( README )
+
+PATCHES=(
+ "${FILESDIR}/${P}-ffmpeg.patch"
+ "${FILESDIR}/${PN}-1.1-CVE-2014-0250.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_with alsa ALSA)
+ $(cmake-utils_use_with channels CHANNELS)
+ $(cmake-utils_use_with client CLIENT)
+ $(cmake-utils_use_with cups CUPS)
+ $(cmake-utils_use_with debug DEBUG_ALL)
+ $(cmake-utils_use_with doc MANPAGES)
+ $(cmake-utils_use_with directfb DIRECTFB)
+ $(cmake-utils_use_with ffmpeg FFMPEG)
+ $(cmake-utils_use_with gstreamer GSTREAMER)
+ $(cmake-utils_use_with jpeg JPEG)
+ $(cmake-utils_use_with pulseaudio PULSE)
+ $(cmake-utils_use_with server SERVER)
+ $(cmake-utils_use_with smartcard PCSC)
+ $(cmake-utils_use_with cpu_flags_x86_sse2 SSE2)
+ $(cmake-utils_use_with X X11)
+ $(cmake-utils_use_with xinerama XINERAMA)
+ $(cmake-utils_use_with xv XV)
+ $(cmake-utils_use_build test TESTING)
+ )
+ cmake-utils_src_configure
+}
diff --git a/net-misc/freerdp/freerdp-1.1.0_beta1_p20130710-r2.ebuild b/net-misc/freerdp/freerdp-1.1.0_beta1_p20130710-r2.ebuild
new file mode 100644
index 00000000000..b97b3dbf0f5
--- /dev/null
+++ b/net-misc/freerdp/freerdp-1.1.0_beta1_p20130710-r2.ebuild
@@ -0,0 +1,114 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit cmake-utils vcs-snapshot
+
+if [[ ${PV} != 9999* ]]; then
+ COMMIT="780d451afad21a22d2af6bd030ee71311856f038"
+ SRC_URI="https://github.com/FreeRDP/FreeRDP/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~x86"
+else
+ inherit git-2
+ SRC_URI=""
+ EGIT_REPO_URI="git://github.com/FreeRDP/FreeRDP.git
+ https://github.com/FreeRDP/FreeRDP.git"
+ KEYWORDS=""
+fi
+
+DESCRIPTION="Free implementation of the Remote Desktop Protocol"
+HOMEPAGE="http://www.freerdp.com/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="alsa +client cups debug directfb doc ffmpeg gstreamer jpeg
+ pulseaudio server smartcard cpu_flags_x86_sse2 test usb X xinerama xv"
+
+RDEPEND="
+ dev-libs/openssl
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ client? (
+ usb? (
+ virtual/libudev:0=
+ sys-apps/util-linux:0=
+ dev-libs/dbus-glib:0=
+ virtual/libusb:1=
+ )
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ xinerama? ( x11-libs/libXinerama )
+ xv? ( x11-libs/libXv )
+ )
+ )
+ directfb? ( dev-libs/DirectFB )
+ ffmpeg? ( virtual/ffmpeg )
+ gstreamer? (
+ media-libs/gstreamer:0.10
+ media-libs/gst-plugins-base:0.10
+ x11-libs/libXrandr
+ )
+ jpeg? ( virtual/jpeg )
+ pulseaudio? ( media-sound/pulseaudio )
+ server? (
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ xinerama? ( x11-libs/libXinerama )
+ )
+ )
+ smartcard? ( sys-apps/pcsc-lite )
+ X? (
+ x11-libs/libX11
+ x11-libs/libxkbfile
+ )
+"
+DEPEND="${RDEPEND}
+ <dev-util/cmake-3.1
+ virtual/pkgconfig
+ client? ( X? ( doc? (
+ app-text/docbook-xml-dtd:4.1.2
+ app-text/xmlto
+ ) ) )
+"
+
+DOCS=( README )
+
+PATCHES=(
+ "${FILESDIR}/${P}-ffmpeg.patch"
+ "${FILESDIR}/${PN}-1.1-CVE-2014-0250.patch"
+ "${FILESDIR}/${P}-uclibc.patch"
+ "${FILESDIR}/${P}-cmake.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_with alsa ALSA)
+ $(cmake-utils_use_with client CLIENT)
+ $(cmake-utils_use_with cups CUPS)
+ $(cmake-utils_use_with debug DEBUG_ALL)
+ $(cmake-utils_use_with doc MANPAGES)
+ $(cmake-utils_use_with directfb DIRECTFB)
+ $(cmake-utils_use_with ffmpeg FFMPEG)
+ $(cmake-utils_use_with gstreamer GSTREAMER)
+ $(cmake-utils_use_with jpeg JPEG)
+ $(cmake-utils_use_with pulseaudio PULSE)
+ $(cmake-utils_use_with server SERVER)
+ $(cmake-utils_use_with smartcard PCSC)
+ $(cmake-utils_use_with cpu_flags_x86_sse2 SSE2)
+ $(cmake-utils_use usb CHANNEL_URBDRC)
+ $(cmake-utils_use_with X X11)
+ $(cmake-utils_use_with xinerama XINERAMA)
+ $(cmake-utils_use_with xv XV)
+ $(cmake-utils_use_build test TESTING)
+ )
+ cmake-utils_src_configure
+}
diff --git a/net-misc/freerdp/freerdp-1.1.0_beta1_p20150312.ebuild b/net-misc/freerdp/freerdp-1.1.0_beta1_p20150312.ebuild
new file mode 100644
index 00000000000..baa511f4365
--- /dev/null
+++ b/net-misc/freerdp/freerdp-1.1.0_beta1_p20150312.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit cmake-utils vcs-snapshot
+
+if [[ ${PV} != 9999* ]]; then
+ COMMIT="770c67d340d5f0a7b48d53a1ae0fc23aff748fc4"
+ SRC_URI="https://github.com/FreeRDP/FreeRDP/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~x86"
+else
+ inherit git-2
+ SRC_URI=""
+ EGIT_REPO_URI="git://github.com/FreeRDP/FreeRDP.git
+ https://github.com/FreeRDP/FreeRDP.git"
+ KEYWORDS=""
+fi
+
+DESCRIPTION="Free implementation of the Remote Desktop Protocol"
+HOMEPAGE="http://www.freerdp.com/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="alsa +client cups debug directfb doc ffmpeg gstreamer jpeg
+ pulseaudio server smartcard cpu_flags_x86_sse2 test usb X xinerama xv"
+
+RDEPEND="
+ dev-libs/openssl
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ client? (
+ usb? (
+ virtual/libudev:0=
+ sys-apps/util-linux:0=
+ dev-libs/dbus-glib:0=
+ virtual/libusb:1=
+ )
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ xinerama? ( x11-libs/libXinerama )
+ xv? ( x11-libs/libXv )
+ )
+ )
+ directfb? ( dev-libs/DirectFB )
+ ffmpeg? ( virtual/ffmpeg )
+ gstreamer? (
+ media-libs/gstreamer:0.10
+ media-libs/gst-plugins-base:0.10
+ x11-libs/libXrandr
+ )
+ jpeg? ( virtual/jpeg )
+ pulseaudio? ( media-sound/pulseaudio )
+ server? (
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ xinerama? ( x11-libs/libXinerama )
+ )
+ )
+ smartcard? ( sys-apps/pcsc-lite )
+ X? (
+ x11-libs/libX11
+ x11-libs/libxkbfile
+ )
+"
+DEPEND="${RDEPEND}
+ <dev-util/cmake-3.1
+ virtual/pkgconfig
+ client? ( X? ( doc? (
+ app-text/docbook-xml-dtd:4.1.2
+ app-text/xmlto
+ ) ) )
+"
+
+DOCS=( README )
+
+PATCHES=(
+ "${FILESDIR}/${PN}-1.1.0_beta1_p20130710-uclibc.patch"
+ "${FILESDIR}/${PN}-1.1.0_beta1_p20130710-cmake.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_with alsa ALSA)
+ $(cmake-utils_use_with client CLIENT)
+ $(cmake-utils_use_with cups CUPS)
+ $(cmake-utils_use_with debug DEBUG_ALL)
+ $(cmake-utils_use_with doc MANPAGES)
+ $(cmake-utils_use_with directfb DIRECTFB)
+ $(cmake-utils_use_with ffmpeg FFMPEG)
+ $(cmake-utils_use_with gstreamer GSTREAMER)
+ $(cmake-utils_use_with jpeg JPEG)
+ $(cmake-utils_use_with pulseaudio PULSE)
+ $(cmake-utils_use_with server SERVER)
+ $(cmake-utils_use_with smartcard PCSC)
+ $(cmake-utils_use_with cpu_flags_x86_sse2 SSE2)
+ $(cmake-utils_use usb CHANNEL_URBDRC)
+ $(cmake-utils_use_with X X11)
+ $(cmake-utils_use_with xinerama XINERAMA)
+ $(cmake-utils_use_with xv XV)
+ $(cmake-utils_use_build test TESTING)
+ )
+ cmake-utils_src_configure
+}
diff --git a/net-misc/freerdp/freerdp-1.2.0_beta1_pre20141115.ebuild b/net-misc/freerdp/freerdp-1.2.0_beta1_pre20141115.ebuild
new file mode 100644
index 00000000000..52eb9bd6959
--- /dev/null
+++ b/net-misc/freerdp/freerdp-1.2.0_beta1_pre20141115.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit cmake-utils vcs-snapshot
+
+if [[ ${PV} != 9999* ]]; then
+ COMMIT="7a6c6b7436c2fcb02a38bf89e0b3efcdb43f2ef5"
+ SRC_URI="https://github.com/FreeRDP/FreeRDP/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+else
+ inherit git-r3
+ SRC_URI=""
+ EGIT_REPO_URI="git://github.com/FreeRDP/FreeRDP.git
+ https://github.com/FreeRDP/FreeRDP.git"
+fi
+
+DESCRIPTION="Free implementation of the Remote Desktop Protocol"
+HOMEPAGE="http://www.freerdp.com/"
+
+LICENSE="Apache-2.0"
+SLOT="0/1.2"
+IUSE="alsa +client cups debug doc ffmpeg gstreamer jpeg
+ pulseaudio server smartcard cpu_flags_x86_sse2 test usb wayland X xinerama xv"
+
+RDEPEND="
+ dev-libs/openssl
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ client? (
+ usb? (
+ virtual/libudev:0=
+ sys-apps/util-linux:0=
+ dev-libs/dbus-glib:0=
+ virtual/libusb:1=
+ )
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ xinerama? ( x11-libs/libXinerama )
+ xv? ( x11-libs/libXv )
+ )
+ )
+ ffmpeg? ( virtual/ffmpeg )
+ gstreamer? (
+ media-libs/gstreamer:1.0
+ media-libs/gst-plugins-base:1.0
+ x11-libs/libXrandr
+ )
+ jpeg? ( virtual/jpeg )
+ pulseaudio? ( media-sound/pulseaudio )
+ server? (
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ xinerama? ( x11-libs/libXinerama )
+ )
+ )
+ smartcard? ( sys-apps/pcsc-lite )
+ wayland? ( dev-libs/wayland )
+ X? (
+ x11-libs/libX11
+ x11-libs/libxkbfile
+ )
+"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ client? ( X? ( doc? (
+ app-text/docbook-xml-dtd:4.1.2
+ app-text/xmlto
+ ) ) )
+"
+
+DOCS=( README )
+PATCHES=( "${FILESDIR}/freerdp-cmake-3.1.patch" )
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_with alsa ALSA)
+ $(cmake-utils_use_with client CLIENT)
+ $(cmake-utils_use_with cups CUPS)
+ $(cmake-utils_use_with debug DEBUG_ALL)
+ $(cmake-utils_use_with doc MANPAGES)
+ $(cmake-utils_use_with ffmpeg FFMPEG)
+ $(cmake-utils_use_with gstreamer GSTREAMER_1_0)
+ $(cmake-utils_use_with jpeg JPEG)
+ $(cmake-utils_use_with pulseaudio PULSE)
+ $(cmake-utils_use_with server SERVER)
+ $(cmake-utils_use_with smartcard PCSC)
+ $(cmake-utils_use_with cpu_flags_x86_sse2 SSE2)
+ $(cmake-utils_use usb CHANNEL_URBDRC)
+ $(cmake-utils_use_with X X11)
+ $(cmake-utils_use_with xinerama XINERAMA)
+ $(cmake-utils_use_with xv XV)
+ $(cmake-utils_use_build test TESTING)
+ $(cmake-utils_use_with wayland WAYLAND)
+ )
+ cmake-utils_src_configure
+}
diff --git a/net-misc/freerdp/freerdp-1.2.1_pre20150326.ebuild b/net-misc/freerdp/freerdp-1.2.1_pre20150326.ebuild
new file mode 100644
index 00000000000..4c23a3255b6
--- /dev/null
+++ b/net-misc/freerdp/freerdp-1.2.1_pre20150326.ebuild
@@ -0,0 +1,108 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit cmake-utils vcs-snapshot
+
+if [[ ${PV} != 9999* ]]; then
+ COMMIT="aa2181dcf2dd98693767ba738c5b2ad8c3d742d4"
+ SRC_URI="https://github.com/FreeRDP/FreeRDP/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="alpha amd64 arm ppc ppc64 x86"
+else
+ inherit git-r3
+ SRC_URI=""
+ EGIT_REPO_URI="git://github.com/FreeRDP/FreeRDP.git
+ https://github.com/FreeRDP/FreeRDP.git"
+fi
+
+DESCRIPTION="Free implementation of the Remote Desktop Protocol"
+HOMEPAGE="http://www.freerdp.com/"
+
+LICENSE="Apache-2.0"
+SLOT="0/1.2"
+IUSE="alsa +client cpu_flags_x86_sse2 cups debug doc ffmpeg gstreamer jpeg
+ neon pulseaudio server smartcard test usb wayland X xinerama xv"
+
+RDEPEND="
+ dev-libs/openssl:0
+ sys-libs/zlib:0
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ client? (
+ usb? (
+ virtual/libudev:0=
+ sys-apps/util-linux:0=
+ dev-libs/dbus-glib:0=
+ virtual/libusb:1=
+ )
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ xinerama? ( x11-libs/libXinerama )
+ xv? ( x11-libs/libXv )
+ )
+ )
+ ffmpeg? ( virtual/ffmpeg )
+ gstreamer? (
+ media-libs/gstreamer:1.0
+ media-libs/gst-plugins-base:1.0
+ x11-libs/libXrandr
+ )
+ jpeg? ( virtual/jpeg:0 )
+ pulseaudio? ( media-sound/pulseaudio )
+ server? (
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ xinerama? ( x11-libs/libXinerama )
+ )
+ )
+ smartcard? ( sys-apps/pcsc-lite )
+ wayland? ( dev-libs/wayland )
+ X? (
+ x11-libs/libX11
+ x11-libs/libxkbfile
+ )
+"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ client? ( X? ( doc? (
+ app-text/docbook-xml-dtd:4.1.2
+ app-text/xmlto
+ ) ) )
+"
+
+DOCS=( README )
+
+PATCHES=( "${FILESDIR}/freerdp-armfp.patch" )
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_with alsa ALSA)
+ $(cmake-utils_use_with client CLIENT)
+ $(cmake-utils_use_with cups CUPS)
+ $(cmake-utils_use_with debug DEBUG_ALL)
+ $(cmake-utils_use_with doc MANPAGES)
+ $(cmake-utils_use_with ffmpeg FFMPEG)
+ $(cmake-utils_use_with gstreamer GSTREAMER_1_0)
+ $(cmake-utils_use_with jpeg JPEG)
+ $(cmake-utils_use_with neon NEON)
+ $(cmake-utils_use_with pulseaudio PULSE)
+ $(cmake-utils_use_with server SERVER)
+ $(cmake-utils_use_with smartcard PCSC)
+ $(cmake-utils_use_with cpu_flags_x86_sse2 SSE2)
+ $(cmake-utils_use usb CHANNEL_URBDRC)
+ $(cmake-utils_use_with X X11)
+ $(cmake-utils_use_with xinerama XINERAMA)
+ $(cmake-utils_use_with xv XV)
+ $(cmake-utils_use_build test TESTING)
+ $(cmake-utils_use_with wayland WAYLAND)
+ )
+ cmake-utils_src_configure
+}
diff --git a/net-misc/freerdp/freerdp-9999.1.ebuild b/net-misc/freerdp/freerdp-9999.1.ebuild
new file mode 100644
index 00000000000..131105eda55
--- /dev/null
+++ b/net-misc/freerdp/freerdp-9999.1.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit cmake-utils vcs-snapshot
+
+if [[ ${PV} != 9999* ]]; then
+ COMMIT="aa2181dcf2dd98693767ba738c5b2ad8c3d742d4"
+ SRC_URI="https://github.com/FreeRDP/FreeRDP/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~x86"
+else
+ inherit git-r3
+ SRC_URI=""
+ EGIT_REPO_URI="git://github.com/FreeRDP/FreeRDP.git
+ https://github.com/FreeRDP/FreeRDP.git"
+fi
+
+DESCRIPTION="Free implementation of the Remote Desktop Protocol"
+HOMEPAGE="http://www.freerdp.com/"
+
+LICENSE="Apache-2.0"
+SLOT="0/1.2"
+IUSE="alsa +client cpu_flags_x86_sse2 cups debug doc ffmpeg gstreamer jpeg
+ neon pulseaudio server smartcard test usb wayland X xinerama xv"
+
+RDEPEND="
+ dev-libs/openssl:0
+ sys-libs/zlib:0
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ client? (
+ usb? (
+ virtual/libudev:0=
+ sys-apps/util-linux:0=
+ dev-libs/dbus-glib:0=
+ virtual/libusb:1=
+ )
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ xinerama? ( x11-libs/libXinerama )
+ xv? ( x11-libs/libXv )
+ )
+ )
+ ffmpeg? ( virtual/ffmpeg )
+ gstreamer? (
+ media-libs/gstreamer:1.0
+ media-libs/gst-plugins-base:1.0
+ x11-libs/libXrandr
+ )
+ jpeg? ( virtual/jpeg:0 )
+ pulseaudio? ( media-sound/pulseaudio )
+ server? (
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ xinerama? ( x11-libs/libXinerama )
+ )
+ )
+ smartcard? ( sys-apps/pcsc-lite )
+ wayland? ( dev-libs/wayland )
+ X? (
+ x11-libs/libX11
+ x11-libs/libxkbfile
+ )
+"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ client? ( X? ( doc? (
+ app-text/docbook-xml-dtd:4.1.2
+ app-text/xmlto
+ ) ) )
+"
+
+DOCS=( README )
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_with alsa ALSA)
+ $(cmake-utils_use_with client CLIENT)
+ $(cmake-utils_use_with cups CUPS)
+ $(cmake-utils_use_with debug DEBUG_ALL)
+ $(cmake-utils_use_with doc MANPAGES)
+ $(cmake-utils_use_with ffmpeg FFMPEG)
+ $(cmake-utils_use_with gstreamer GSTREAMER_1_0)
+ $(cmake-utils_use_with jpeg JPEG)
+ $(cmake-utils_use_with neon NEON)
+ $(cmake-utils_use_with pulseaudio PULSE)
+ $(cmake-utils_use_with server SERVER)
+ $(cmake-utils_use_with smartcard PCSC)
+ $(cmake-utils_use_with cpu_flags_x86_sse2 SSE2)
+ $(cmake-utils_use usb CHANNEL_URBDRC)
+ $(cmake-utils_use_with X X11)
+ $(cmake-utils_use_with xinerama XINERAMA)
+ $(cmake-utils_use_with xv XV)
+ $(cmake-utils_use_build test TESTING)
+ $(cmake-utils_use_with wayland WAYLAND)
+ )
+ cmake-utils_src_configure
+}
diff --git a/net-misc/freerdp/metadata.xml b/net-misc/freerdp/metadata.xml
new file mode 100644
index 00000000000..cf9652841d2
--- /dev/null
+++ b/net-misc/freerdp/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>floppym@gentoo.org</email>
+ <name>Mike Gilbert</name>
+ </maintainer>
+ <use>
+ <flag name="channels">Build virtual channel plugins</flag>
+ <flag name="client">Build client binaries</flag>
+ <flag name="server">Build server binaries</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">FreeRDP/FreeRDP</remote-id>
+ </upstream>
+</pkgmetadata>