1*4882a593Smuzhiyun################################################################################ 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# freerdp 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun################################################################################ 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunFREERDP_VERSION = 2.8.0 8*4882a593SmuzhiyunFREERDP_SITE = https://pub.freerdp.com/releases 9*4882a593SmuzhiyunFREERDP_DEPENDENCIES = libglib2 openssl zlib 10*4882a593SmuzhiyunFREERDP_LICENSE = Apache-2.0 11*4882a593SmuzhiyunFREERDP_LICENSE_FILES = LICENSE 12*4882a593SmuzhiyunFREERDP_CPE_ID_VENDOR = freerdp 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunFREERDP_INSTALL_STAGING = YES 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunFREERDP_CONF_OPTS = -DWITH_MANPAGES=OFF -Wno-dev -DWITH_GSTREAMER_0_10=OFF 17*4882a593Smuzhiyun 18*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_FREERDP_GSTREAMER1),y) 19*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=ON 20*4882a593SmuzhiyunFREERDP_DEPENDENCIES += gstreamer1 gst1-plugins-base 21*4882a593Smuzhiyunelse 22*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=OFF 23*4882a593Smuzhiyunendif 24*4882a593Smuzhiyun 25*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_CUPS),y) 26*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_CUPS=ON 27*4882a593SmuzhiyunFREERDP_DEPENDENCIES += cups 28*4882a593Smuzhiyunelse 29*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_CUPS=OFF 30*4882a593Smuzhiyunendif 31*4882a593Smuzhiyun 32*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_FFMPEG),y) 33*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_FFMPEG=ON 34*4882a593SmuzhiyunFREERDP_DEPENDENCIES += ffmpeg 35*4882a593Smuzhiyunelse 36*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_FFMPEG=OFF 37*4882a593Smuzhiyunendif 38*4882a593Smuzhiyun 39*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y) 40*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_ALSA=ON 41*4882a593SmuzhiyunFREERDP_DEPENDENCIES += alsa-lib 42*4882a593Smuzhiyunelse 43*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_ALSA=OFF 44*4882a593Smuzhiyunendif 45*4882a593Smuzhiyun 46*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBEXECINFO),y) 47*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-lexecinfo 48*4882a593SmuzhiyunFREERDP_DEPENDENCIES += libexecinfo 49*4882a593Smuzhiyunendif 50*4882a593Smuzhiyun 51*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBUSB),y) 52*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DCHANNEL_URBDRC=ON 53*4882a593SmuzhiyunFREERDP_DEPENDENCIES += libusb 54*4882a593Smuzhiyunelse 55*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DCHANNEL_URBDRC=OFF 56*4882a593Smuzhiyunendif 57*4882a593Smuzhiyun 58*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_PULSEAUDIO),y) 59*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_PULSE=ON 60*4882a593SmuzhiyunFREERDP_DEPENDENCIES += pulseaudio 61*4882a593Smuzhiyunelse 62*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_PULSE=OFF 63*4882a593Smuzhiyunendif 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun# For the systemd journal 66*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_SYSTEMD),y) 67*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_LIBSYSTEMD=ON 68*4882a593SmuzhiyunFREERDP_DEPENDENCIES += systemd 69*4882a593Smuzhiyunelse 70*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_LIBSYSTEMD=OFF 71*4882a593Smuzhiyunendif 72*4882a593Smuzhiyun 73*4882a593Smuzhiyunifeq ($(BR2_ARM_CPU_HAS_NEON),y) 74*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_NEON=ON 75*4882a593Smuzhiyunelse 76*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_NEON=OFF 77*4882a593Smuzhiyunendif 78*4882a593Smuzhiyun 79*4882a593Smuzhiyunifeq ($(BR2_X86_CPU_HAS_SSE2),y) 80*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_SSE2=ON 81*4882a593Smuzhiyunelse 82*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_SSE2=OFF 83*4882a593Smuzhiyunendif 84*4882a593Smuzhiyun 85*4882a593Smuzhiyunifeq ($(BR2_arm)$(BR2_armeb),y) 86*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DARM_FP_ABI=$(GCC_TARGET_FLOAT_ABI) 87*4882a593Smuzhiyunendif 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun#--------------------------------------- 90*4882a593Smuzhiyun# Enabling server and/or client 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun# Clients and server interface must always be enabled to build the 93*4882a593Smuzhiyun# corresponding libraries. 94*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_SERVER_INTERFACE=ON 95*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_CLIENT_INTERFACE=ON 96*4882a593Smuzhiyun 97*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_FREERDP_SERVER),y) 98*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_SERVER=ON 99*4882a593Smuzhiyunendif 100*4882a593Smuzhiyun 101*4882a593Smuzhiyunifneq ($(BR2_PACKAGE_FREERDP_CLIENT_X11)$(BR2_PACKAGE_FREERDP_CLIENT_WL),) 102*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_CLIENT=ON 103*4882a593Smuzhiyunendif 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun#--------------------------------------- 106*4882a593Smuzhiyun# Libraries for client and/or server 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun# The FreeRDP buildsystem uses non-orthogonal options. For example it 109*4882a593Smuzhiyun# is not possible to build the server and the wayland client without 110*4882a593Smuzhiyun# also building the X client. That's because the dependencies of the 111*4882a593Smuzhiyun# server (the X libraries) are a superset of those of the X client. 112*4882a593Smuzhiyun# So, as soon as FreeRDP is configured for the server and the wayland 113*4882a593Smuzhiyun# client, it will believe it also has to build the X client, because 114*4882a593Smuzhiyun# the libraries it needs are enabled. 115*4882a593Smuzhiyun# 116*4882a593Smuzhiyun# Furthermore, the shadow server is always built, even if there's nothing 117*4882a593Smuzhiyun# it can serve (i.e. the X libs are disabled). 118*4882a593Smuzhiyun# 119*4882a593Smuzhiyun# So, we do not care whether we build too much; we remove, as 120*4882a593Smuzhiyun# post-install hooks, whatever we do not want. 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun# If Xorg is enabled, and the server or the X client are, then libX11 123*4882a593Smuzhiyun# and libXext are forcibly enabled at the Kconfig level. However, if 124*4882a593Smuzhiyun# Xorg is enabled but neither the server nor the X client are, then 125*4882a593Smuzhiyun# there's nothing that guarantees those two libs are enabled. So we 126*4882a593Smuzhiyun# really must check for them. 127*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBX11)$(BR2_PACKAGE_XLIB_LIBXEXT),yy) 128*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libX11 xlib_libXext 129*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_X11=ON 130*4882a593Smuzhiyunelse 131*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_X11=OFF 132*4882a593Smuzhiyunendif 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun# The following libs are either optional or mandatory only for either 135*4882a593Smuzhiyun# the server or the client. A mandatory library for either one is 136*4882a593Smuzhiyun# selected from Kconfig, so we can make it conditional here 137*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) 138*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XCURSOR=ON 139*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXcursor 140*4882a593Smuzhiyunelse 141*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XCURSOR=OFF 142*4882a593Smuzhiyunendif 143*4882a593Smuzhiyun 144*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) 145*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XDAMAGE=ON 146*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXdamage 147*4882a593Smuzhiyunelse 148*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XDAMAGE=OFF 149*4882a593Smuzhiyunendif 150*4882a593Smuzhiyun 151*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) 152*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XFIXES=ON 153*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXfixes 154*4882a593Smuzhiyunelse 155*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XFIXES=OFF 156*4882a593Smuzhiyunendif 157*4882a593Smuzhiyun 158*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) 159*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XI=ON 160*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXi 161*4882a593Smuzhiyunelse 162*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XI=OFF 163*4882a593Smuzhiyunendif 164*4882a593Smuzhiyun 165*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) 166*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XINERAMA=ON 167*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXinerama 168*4882a593Smuzhiyunelse 169*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XINERAMA=OFF 170*4882a593Smuzhiyunendif 171*4882a593Smuzhiyun 172*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y) 173*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XKBFILE=ON 174*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libxkbfile 175*4882a593Smuzhiyunelse 176*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XKBFILE=OFF 177*4882a593Smuzhiyunendif 178*4882a593Smuzhiyun 179*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) 180*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XRANDR=ON 181*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXrandr 182*4882a593Smuzhiyunelse 183*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XRANDR=OFF 184*4882a593Smuzhiyunendif 185*4882a593Smuzhiyun 186*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) 187*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XRENDER=ON 188*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXrender 189*4882a593Smuzhiyunelse 190*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XRENDER=OFF 191*4882a593Smuzhiyunendif 192*4882a593Smuzhiyun 193*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXTST),y) 194*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XTEST=ON 195*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXtst 196*4882a593Smuzhiyunelse 197*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XTEST=OFF 198*4882a593Smuzhiyunendif 199*4882a593Smuzhiyun 200*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXV),y) 201*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XV=ON 202*4882a593SmuzhiyunFREERDP_DEPENDENCIES += xlib_libXv 203*4882a593Smuzhiyunelse 204*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_XV=OFF 205*4882a593Smuzhiyunendif 206*4882a593Smuzhiyun 207*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_FREERDP_CLIENT_WL),y) 208*4882a593SmuzhiyunFREERDP_DEPENDENCIES += wayland libxkbcommon 209*4882a593SmuzhiyunFREERDP_CONF_OPTS += \ 210*4882a593Smuzhiyun -DWITH_WAYLAND=ON \ 211*4882a593Smuzhiyun -DWAYLAND_SCANNER=$(HOST_DIR)/bin/wayland-scanner 212*4882a593Smuzhiyunelse 213*4882a593SmuzhiyunFREERDP_CONF_OPTS += -DWITH_WAYLAND=OFF 214*4882a593Smuzhiyunendif 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun#--------------------------------------- 217*4882a593Smuzhiyun# Post-install hooks to cleanup and install missing stuff 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun# Shadow server is always installed, no matter what, so we manually 220*4882a593Smuzhiyun# remove it if the user does not want the server. 221*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_FREERDP_SERVER),) 222*4882a593Smuzhiyundefine FREERDP_RM_SHADOW_SERVER 223*4882a593Smuzhiyun rm -f $(TARGET_DIR)/usr/bin/freerdp-shadow 224*4882a593Smuzhiyunendef 225*4882a593SmuzhiyunFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_SHADOW_SERVER 226*4882a593Smuzhiyunendif # ! server 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun# X client is always built as soon as a client is enabled and the 229*4882a593Smuzhiyun# necessary libs are enabled (e.g. because of the server), so manually 230*4882a593Smuzhiyun# remove it if the user does not want it. 231*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_FREERDP_CLIENT_X11),) 232*4882a593Smuzhiyundefine FREERDP_RM_CLIENT_X11 233*4882a593Smuzhiyun rm -f $(TARGET_DIR)/usr/bin/xfreerdp 234*4882a593Smuzhiyun rm -f $(TARGET_DIR)/usr/lib/libxfreerdp-client* 235*4882a593Smuzhiyunendef 236*4882a593SmuzhiyunFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_CLIENT_X11 237*4882a593Smuzhiyundefine FREERDP_RM_CLIENT_X11_LIB 238*4882a593Smuzhiyun rm -f $(STAGING_DIR)/usr/lib/libxfreerdp-client* 239*4882a593Smuzhiyunendef 240*4882a593SmuzhiyunFREERDP_POST_INSTALL_STAGING_HOOKS += FREERDP_RM_CLIENT_X11_LIB 241*4882a593Smuzhiyunendif # ! X client 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun# Wayland client is always built as soon as wayland is enabled, so 244*4882a593Smuzhiyun# manually remove it if the user does not want it. 245*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_FREERDP_CLIENT_WL),) 246*4882a593Smuzhiyundefine FREERDP_RM_CLIENT_WL 247*4882a593Smuzhiyun rm -f $(TARGET_DIR)/usr/bin/wlfreerdp 248*4882a593Smuzhiyunendef 249*4882a593SmuzhiyunFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_CLIENT_WL 250*4882a593Smuzhiyunendif 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun# Remove static libraries in unusual dir 253*4882a593Smuzhiyundefine FREERDP_CLEANUP 254*4882a593Smuzhiyun rm -rf $(TARGET_DIR)/usr/lib/freerdp 255*4882a593Smuzhiyunendef 256*4882a593SmuzhiyunFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_CLEANUP 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun# Install the server key and certificate, so that a client can connect. 259*4882a593Smuzhiyun# A user can override them with its own in a post-build script, if needed. 260*4882a593Smuzhiyun# We install them even if the server is not enabled, since another server 261*4882a593Smuzhiyun# can be built and linked with libfreerdp (e.g. weston with the RDP 262*4882a593Smuzhiyun# backend). Key and cert are installed world-readable, so non-root users 263*4882a593Smuzhiyun# can start a server. 264*4882a593Smuzhiyundefine FREERDP_INSTALL_KEYS 265*4882a593Smuzhiyun $(INSTALL) -m 0644 -D $(@D)/server/Sample/server.key \ 266*4882a593Smuzhiyun $(TARGET_DIR)/etc/freerdp/keys/server.key 267*4882a593Smuzhiyun $(INSTALL) -m 0644 -D $(@D)/server/Sample/server.crt \ 268*4882a593Smuzhiyun $(TARGET_DIR)/etc/freerdp/keys/server.crt 269*4882a593Smuzhiyunendef 270*4882a593SmuzhiyunFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_INSTALL_KEYS 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun$(eval $(cmake-package)) 273