VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/VBoxClient/Makefile.kmk@ 82799

Last change on this file since 82799 was 82286, checked in by vboxsync, 5 years ago

Shared Clipboard/VBoxClient: Initial commit for experimental FUSE support.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.9 KB
Line 
1# $Id: Makefile.kmk 82286 2019-11-29 16:08:08Z vboxsync $
2## @file
3# Sub-Makefile for the VirtualBox Guest Addition X11 Client.
4#
5
6#
7# Copyright (C) 2006-2019 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17
18SUB_DEPTH = ../../../../..
19include $(KBUILD_PATH)/subheader.kmk
20
21#
22# VBoxClient - clipboard and seamless.
23#
24PROGRAMS += VBoxClient
25
26VBoxClient_TEMPLATE = NewVBoxGuestR3Exe
27VBoxClient_DEFS += VBOX_X11_CLIPBOARD VBOX_WITH_HGCM
28VBoxClient_DEFS += VBOX_BUILD_TARGET=\"$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)\"
29ifdef VBOX_WITH_DBUS
30 VBoxClient_DEFS += VBOX_WITH_DBUS
31endif
32VBoxClient_DEFS.linux += _GNU_SOURCE
33VBoxClient_INCS = $(VBOX_GRAPHICS_INCS)
34VBoxClient_SOURCES = \
35 main.cpp \
36 display-svga.cpp \
37 display-svga-x11.cpp \
38 seamless.cpp \
39 seamless-x11.cpp \
40 display.cpp \
41 hostversion.cpp
42
43VBoxClient_SOURCES.linux = \
44 chk_stubs.c
45VBoxClient_LIBPATH = \
46 $(VBOX_LIBPATH32_X11)
47VBoxClient_LIBS.freebsd = \
48 iconv
49VBoxClient_LIBS.linux = \
50 dl
51VBoxClient_LIBS.netbsd = \
52 crypt
53VBoxClient_LIBS.solaris = \
54 dl
55VBoxClient_LIBS = \
56 X11 Xrandr Xt Xext Xmu
57
58# XXX: -L comes from the template, but not rpath
59VBoxClient_LDFLAGS.netbsd = \
60 -Wl,-rpath /usr/X11R7/lib
61
62ifdef VBOX_WITH_DRAG_AND_DROP
63 ifdef VBOX_DND_WITH_XTEST
64 VBoxClient_DEFS += VBOX_DND_WITH_XTEST
65 VBoxClient_LIBS += \
66 Xtst
67 endif
68endif
69
70# This forces the memcpy references in the static libraries to go to
71# __wrap_memcpy, which we can wrap around memcpy@GLIBC_2.2.5. I do not know
72# how else to do that without recompiling or implementing our own memcpy.
73ifeq ($(KBUILD_TARGET),linux)
74VBoxClient_LDFLAGS.amd64 += \
75 -Wl,--wrap=memcpy
76endif
77
78ifdef VBOX_WITH_GUEST_PROPS
79VBoxClient_DEFS += VBOX_WITH_GUEST_PROPS
80endif
81
82ifdef VBOX_WITH_DRAG_AND_DROP
83VBoxClient_DEFS += \
84 VBOX_WITH_DRAG_AND_DROP \
85 $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
86VBoxClient_SOURCES += \
87 draganddrop.cpp
88VBoxClient_LIBS += \
89 $(VBOX_LIB_VBGL_R3) \
90 $(PATH_STAGE_LIB)/additions/VBoxDnDGuestR3Lib$(VBOX_SUFF_LIB)
91endif
92
93ifdef VBOX_WITH_SHARED_CLIPBOARD
94 VBoxClient_DEFS += \
95 VBOX_WITH_SHARED_CLIPBOARD \
96 $(if $(VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS),VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS,)
97 VBoxClient_SOURCES += \
98 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp \
99 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp \
100 clipboard.cpp
101 ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
102 VBoxClient_DEFS += VBOX_WITH_SHARED_CLIPBOARD_GUEST
103 VBoxClient_SOURCES += \
104 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp \
105 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardPath.cpp
106 ifdef VBOX_WITH_SHARED_CLIPBOARD_FUSE
107 VBoxClient_DEFS += VBOX_WITH_SHARED_CLIPBOARD_FUSE
108 # @todo Make this dynamic loading more generic.
109 VBoxClient_SOURCES += \
110 $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount/fuse.cpp \
111 clipboard-fuse.cpp
112 # @todo Ditto.
113 VBoxClient_INCS += \
114 $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount
115 endif
116 ifdef VBOX_WITH_LIBGVFS
117 VBOX_VBOXCLIENT_GVFS_PATH := gvfs-1.43.1
118 VBoxClient_SOURCES += \
119 clipboard-gvfs.c \
120 VBoxClient_SOURCES += \
121 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsafpconnection.c \
122 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsafpserver.c \
123 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsafputils.c \
124 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsafpvolume.c \
125 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsbackend.c \
126 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsdaemonutils.c \
127 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobcopy.c \
128 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobpush.c \
129 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobunmountmountable.c \
130 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfschannel.c \
131 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsdaemon.c \
132 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjob.c \
133 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobcloseread.c \
134 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobclosewrite.c \
135 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobcreatemonitor.c \
136 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobdbus.c \
137 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobdelete.c \
138 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobenumerate.c \
139 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjoberror.c \
140 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobmakedirectory.c \
141 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobmakesymlink.c \
142 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobmount.c \
143 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobmountmountable.c \
144 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobmove.c \
145 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobopenforread.c \
146 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobopenforwrite.c \
147 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobopeniconforread.c \
148 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobpollmountable.c \
149 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobprogress.c \
150 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobpull.c \
151 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobqueryattributes.c \
152 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobqueryfsinfo.c \
153 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobqueryinfo.c \
154 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobqueryinforead.c \
155 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobqueryinfowrite.c \
156 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobread.c \
157 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobseekread.c \
158 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobseekwrite.c \
159 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobsetattribute.c \
160 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobsetdisplayname.c \
161 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobsource.c \
162 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobstartmountable.c \
163 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobstopmountable.c \
164 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobtrash.c \
165 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobtruncate.c \
166 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobunmount.c \
167 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsjobwrite.c \
168 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfskeyring.c \
169 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsmonitor.c \
170 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfsreadchannel.c \
171 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon/gvfswritechannel.c \
172 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gvfsmonitorimpl.c \
173 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gmountoperationdbus.c \
174 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gmountsource.c \
175 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gmountspec.c \
176 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gmounttracker.c \
177 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gvfsdaemonprotocol.c \
178 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gvfsfileinfo.c \
179 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gvfsicon.c \
180 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gvfsmountinfo.c \
181 ${VBOX_VBOXCLIENT_GVFS_PATH}/common/gvfsutils.c
182 VBoxClient_SOURCES += \
183 ${VBOX_VBOXCLIENT_GVFS_PATH}/out/common/gvfsdbus.c
184 VBoxClient_CFLAGS += -Wno-sign-compare -Wno-unused-parameter -Wno-pedantic
185 VBoxClient_INCS += \
186 ${VBOX_VBOXCLIENT_GVFS_PATH}/common \
187 ${VBOX_VBOXCLIENT_GVFS_PATH}/daemon \
188 ${VBOX_VBOXCLIENT_GVFS_PATH}/out \
189 ${VBOX_VBOXCLIENT_GVFS_PATH}/out/common \
190 /usr/include/glib-2.0 \
191 /usr/lib/x86_64-linux-gnu/glib-2.0/include \
192 /usr/include/gio-unix-2.0
193 VBoxClient_LIBS += \
194 gio-2.0 \
195 glib-2.0 \
196 gobject-2.0
197 endif
198 endif
199endif
200
201if defined(VBOX_WITH_TESTCASES) && !defined(VBOX_ONLY_ADDITIONS) && !defined(VBOX_ONLY_SDK)
202 if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
203
204# Set this in LocalConfig.kmk if you are working on the X11 clipboard service
205# to automatically run the unit test at build time.
206# OTHERS += $(tstSeamlessX11-auto_0_OUTDIR)/tstSeamlessX11-auto.run
207
208 PROGRAMS += tstSeamlessX11-auto
209 tstSeamlessX11-auto_TEMPLATE = VBOXR3TSTEXE
210 tstSeamlessX11-auto_SOURCES = \
211 testcase/tstSeamlessX11-auto.cpp \
212 seamless-x11.cpp
213 tstSeamlessX11-auto_DEFS = TESTCASE
214 tstSeamlessX11-auto_LIBS = \
215 $(LIB_RUNTIME)
216
217 TESTING += $(tstSeamlessX11-auto_0_OUTDIR)/tstSeamlessX11-auto
218$$(tstSeamlessX11-auto_0_OUTDIR)/tstSeamlessX11-auto.run: \
219 $$(tstSeamlessX11-auto_1_STAGE_TARGET)
220 export VBOX_LOG_DEST=nofile; $(tstSeamlessX11-auto_1_STAGE_TARGET) quiet
221 $(QUIET)$(APPEND) -t "$@" "done"
222
223 #
224 # Additional testcase designed to be run manually, which initiates and starts the Linux
225 # guest client part of the seamless additions in the host, faking seamless events from
226 # the host and writing information about guest events to standard output.
227 #
228 PROGRAMS += tstSeamlessX11
229 tstSeamlessX11_TEMPLATE = VBOXR3TSTEXE
230 tstSeamlessX11_SOURCES = \
231 testcase/tstSeamlessX11.cpp \
232 seamless.cpp \
233 seamless-x11.cpp
234 tstSeamlessX11_LIBPATH = \
235 $(VBOX_LIBPATH_X11)
236 tstSeamlessX11_LIBS = \
237 $(LIB_RUNTIME) \
238 Xext \
239 Xmu \
240 X11
241 endif
242endif
243
244include $(FILE_KBUILD_SUB_FOOTER)
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette