1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# Copyright (C) 2010-2012 O.S. Systems Software Ltda. All Rights Reserved
# Released under the MIT license
DESCRIPTION = "FreeRDP RDP client & server library"
HOMEPAGE = "http://www.freerdp.com"
DEPENDS = "openssl libusb1"
SECTION = "net"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
inherit pkgconfig cmake gitpkgv ptest
RDEPENDS:${PN}-ptest += "coreutils pcsc-lite-lib"
PE = "1"
PKGV = "${GITPKGVTAG}"
SRCREV = "efa899d3deb8595a29fabb2a2251722f9d7e0d7f"
SRC_URI = "git://github.com/FreeRDP/FreeRDP.git;branch=stable-2.0;protocol=https \
file://run-ptest \
file://winpr-makecert-Build-with-install-RPATH.patch \
file://0001-Fixed-compilation-warnings.patch \
file://0001-Fix-const-qualifier-error.patch \
file://0002-Do-not-install-tools-a-CMake-targets.patch \
file://0001-Fixed-compilation-warnings-in-ainput-channel.patch \
file://CVE-2024-32661.patch \
file://CVE-2026-22854.patch \
file://CVE-2026-22855.patch \
"
EXTRA_OECMAKE += " \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DWITH_FFMPEG=OFF \
-DWITH_CUNIT=OFF \
-DWITH_NEON=OFF \
-DBUILD_STATIC_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDANT_CODE=ON \
-DWITH_MANPAGES=OFF \
-DPROXY_PLUGINDIR=${libdir}/freerdp/proxy/plugins \
"
PACKAGECONFIG ??= " \
${@bb.utils.filter('DISTRO_FEATURES', 'directfb pam pulseaudio wayland x11', d)}\
${@bb.utils.contains('PTEST_ENABLED', '1', 'test', '', d)} \
alsa gstreamer cups pcsc server \
"
X11_DEPS = "virtual/libx11 libxinerama libxext libxcursor libxv libxi libxrender libxfixes libxdamage libxrandr libxkbfile"
PACKAGECONFIG[x11] = "-DWITH_X11=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XCURSOR=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_XFIXES=ON -DWITH_XDAMAGE=ON -DWITH_XRANDR=ON -DWITH_XKBFILE=ON,-DWITH_X11=OFF,${X11_DEPS}"
PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland wayland-native libxkbcommon"
PACKAGECONFIG[directfb] = "-DWITH_DIRECTFB=ON,-DWITH_DIRECTFB=OFF,directfb"
PACKAGECONFIG[pam] = "-DWITH_PAM=ON,-DWITH_PAM=OFF,libpam"
PACKAGECONFIG[pcsc] = "-DWITH_PCSC=ON,-DWITH_PCSC=OFF,pcsc-lite"
PACKAGECONFIG[pulseaudio] = "-DWITH_PULSEAUDIO=ON,-DWITH_PULSEAUDIO=OFF,pulseaudio"
PACKAGECONFIG[gstreamer] = "-DWITH_GSTREAMER_1_0=ON,-DWITH_GSTREAMER_1_0=OFF,gstreamer1.0 gstreamer1.0-plugins-base"
PACKAGECONFIG[cups] = "-DWITH_CUPS=ON,-DWITH_CUPS=OFF,cups"
PACKAGECONFIG[server] = "-DWITH_SERVER=ON,-DWITH_SERVER=OFF"
PACKAGECONFIG[alsa] = "-DWITH_ALSA=ON,-DWITH_ALSA=OFF,alsa-lib"
PACKAGECONFIG[test] = "-DBUILD_TESTING=ON,-DBUILD_TESTING=OFF"
PACKAGES =+ "libfreerdp"
LEAD_SONAME = "libfreerdp.so"
FILES:libfreerdp = "${libdir}/lib*${SOLIBS}"
PACKAGES_DYNAMIC += "^libfreerdp-plugin-.*"
do_configure:prepend() {
sed -i 's,CMAKE_CURRENT_SOURCE_DIR,"${PTEST_PATH}/test_data",' ${S}/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c
sed -i 's,\${CMAKE_CURRENT_SOURCE_DIR},"${PTEST_PATH}/test_data",' ${S}/libfreerdp/crypto/test/CMakeLists.txt
sed -i 's,\${CMAKE_CURRENT_SOURCE_DIR},${PTEST_PATH}/test_data,' ${S}/winpr/libwinpr/utils/test/CMakeLists.txt
}
do_configure:append() {
sed -i -e 's|${WORKDIR}||g' ${B}/buildflags.h
}
# we will need winpr-makecert to generate TLS certificates
do_install:append () {
install -d ${D}${bindir}
install -m755 winpr/tools/makecert-cli/winpr-makecert ${D}${bindir}
rm -rf ${D}${libdir}/freerdp
}
do_install_ptest() {
install -d ${D}${PTEST_PATH}/test_data
cp -r ${B}/Testing ${D}${PTEST_PATH}
install -m 0644 ${S}/libfreerdp/codec/test/progressive.bmp ${D}${PTEST_PATH}/test_data/
install -m 0644 ${S}/libfreerdp/crypto/test/Test_x509_cert_info.pem ${D}${PTEST_PATH}/test_data/
install -m 0644 ${S}/winpr/libwinpr/utils/test/lodepng_32bit.png ${D}${PTEST_PATH}/test_data/
install -m 0644 ${S}/winpr/libwinpr/utils/test/lodepng_32bit.bmp ${D}${PTEST_PATH}/test_data/
}
python populate_packages:prepend () {
freerdp_root = d.expand('${libdir}/freerdp')
do_split_packages(d, freerdp_root, r'^(audin_.*)\.so$',
output_pattern='libfreerdp-plugin-%s',
description='FreeRDP plugin %s',
prepend=True, extra_depends='libfreerdp-plugin-audin')
do_split_packages(d, freerdp_root, r'^(rdpsnd_.*)\.so$',
output_pattern='libfreerdp-plugin-%s',
description='FreeRDP plugin %s',
prepend=True, extra_depends='libfreerdp-plugin-rdpsnd')
do_split_packages(d, freerdp_root, r'^(tsmf_.*)\.so$',
output_pattern='libfreerdp-plugin-%s',
description='FreeRDP plugin %s',
prepend=True, extra_depends='libfreerdp-plugin-tsmf')
do_split_packages(d, freerdp_root, r'^([^-]*)\.so$',
output_pattern='libfreerdp-plugin-%s',
description='FreeRDP plugin %s',
prepend=True, extra_depends='')
}
CVE_STATUS[CVE-2024-32662] = "fixed-version: 2.x is not affected, bug was introduced in 3.0.0"
CVE_STATUS[CVE-2025-68118] = "not-applicable-platform: Windows-only vulnerability"
# avoid http://errors.yoctoproject.org/Errors/Details/852862/
# fixed in freerdp3 with https://github.com/FreeRDP/FreeRDP/pull/10553
CFLAGS += "-std=gnu17"
|