xref: /OK3568_Linux_fs/buildroot/package/freerdp/freerdp.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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