# 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 = "9b678b6d5a40ce01607d8c3b1b1416437c8416c4" 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://0002-Do-not-install-tools-a-CMake-targets.patch \ file://0001-Fix-compilation-error.patch \ file://CVE-2024-32661.patch \ file://CVE-2026-22854.patch \ file://CVE-2026-22855.patch \ file://CVE-2026-22852.patch \ file://CVE-2026-23530.patch \ file://CVE-2026-23532.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" CVE_STATUS[CVE-2026-22853] = "cpe-incorrect: the vulnerability was introduced in 3.9.0" # avoid http://errors.yoctoproject.org/Errors/Details/852862/ # fixed in freerdp3 with https://github.com/FreeRDP/FreeRDP/pull/10553 CFLAGS += "-std=gnu17"