VirtualBox

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

Last change on this file since 95259 was 95259, checked in by vboxsync, 3 years ago

src/*.kmk: Applied VBOX_WITH_AUTOMATIC_DEFS_QUOTING to some 9 makefiles where it was missing.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.9 KB
Line 
1# $Id: Makefile.kmk 95259 2022-06-13 15:32:38Z vboxsync $
2## @file
3# Sub-Makefile for the VirtualBox Guest Addition X11 Client.
4#
5
6#
7# Copyright (C) 2006-2022 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# Use header files from our tree for randr and xinerama. and don't link but rather dlopen libXrand
22# This is mostly because the GA build boxes can have a very old xrandr lib, so instead of linking we dlopen.
23VBOX_WITH_DISTRO_XRAND_XINERAMA=
24
25# We don't yet have a seamless mode compilation flag, so define it here unconditionally.
26VBOX_WITH_SEAMLESS:=1
27
28#
29# VBoxClient - clipboard and seamless.
30#
31PROGRAMS += VBoxClient
32#
33# Please make sure that you grep the source tree and modify all occurences accordingly
34# if you rename the following program name.
35#
36PROGRAMS.linux += VBoxDRMClient
37
38VBoxClient_TEMPLATE = NewVBoxGuestR3Exe
39VBoxClient_DEFS += VBOX_X11_CLIPBOARD VBOX_WITH_HGCM
40ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
41 VBoxClient_DEFS += VBOX_BUILD_TARGET="$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)"
42else
43 VBoxClient_DEFS += VBOX_BUILD_TARGET=\"$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)\"
44endif
45ifdef VBOX_WITH_DBUS
46 VBoxClient_DEFS += VBOX_WITH_DBUS
47endif
48
49VBoxClient_DEFS.linux += _GNU_SOURCE
50VBoxClient_INCS = $(VBOX_GRAPHICS_INCS)
51VBoxClient_INCS += ../x11include/panoramiXproto-1.1
52VBoxClient_INCS += ../x11include/libXrandr-1.5.2
53VBoxClient_INCS += ../x11include/randrproto-1.6.0
54VBoxClient_SOURCES = \
55 main.cpp \
56 logging.cpp
57
58VBoxDRMClient_TEMPLATE = NewVBoxGuestR3Exe
59ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
60 VBoxDRMClient_DEFS += VBOX_BUILD_TARGET="$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)"
61else
62 VBoxDRMClient_DEFS += VBOX_BUILD_TARGET=\"$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)\"
63endif
64VBoxDRMClient_SOURCES = \
65 display-drm.cpp \
66 display-ipc.cpp \
67 logging.cpp
68
69
70VBoxClient_SOURCES.linux = \
71 chk_stubs.c
72VBoxClient_LIBPATH = \
73 $(VBOX_LIBPATH32_X11)
74VBoxClient_LIBS.freebsd = \
75 iconv
76VBoxClient_LIBS.linux = \
77 dl
78VBoxClient_LIBS.netbsd = \
79 crypt
80VBoxClient_LIBS.solaris = \
81 dl
82VBoxClient_LIBS = \
83 X11 Xt Xext Xmu
84ifdef VBOX_WITH_DISTRO_XRAND_XINERAMA
85 VBoxClient_DEFS += WITH_DISTRO_XRAND_XINERAMA
86 VBoxClient_LIBS += Xrandr
87endif
88
89# XXX: -L comes from the template, but not rpath
90VBoxClient_LDFLAGS.netbsd = \
91 -Wl,-rpath /usr/X11R7/lib
92
93ifdef VBOX_WITH_DRAG_AND_DROP
94 ifdef VBOX_DND_WITH_XTEST
95 VBoxClient_DEFS += VBOX_DND_WITH_XTEST
96 VBoxClient_LIBS += \
97 Xtst
98 endif
99endif
100
101# This forces the memcpy references in the static libraries to go to
102# __wrap_memcpy, which we can wrap around memcpy@GLIBC_2.2.5. I do not know
103# how else to do that without recompiling or implementing our own memcpy.
104ifeq ($(KBUILD_TARGET),linux)
105 VBoxClient_LDFLAGS.amd64 += \
106 -Wl,--wrap=memcpy
107endif
108
109ifdef VBOX_WITH_GUEST_PROPS
110 VBoxClient_DEFS += VBOX_WITH_GUEST_PROPS
111 VBoxClient_SOURCES += \
112 hostversion.cpp
113 VBoxDRMClient_DEFS += VBOX_WITH_GUEST_PROPS
114endif
115
116ifdef VBOX_WITH_DRAG_AND_DROP
117 VBoxClient_DEFS += \
118 VBOX_WITH_DRAG_AND_DROP \
119 $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
120 VBoxClient_SOURCES += \
121 draganddrop.cpp
122 VBoxClient_LIBS += \
123 $(VBOX_LIB_VBGL_R3) \
124 $(PATH_STAGE_LIB)/additions/VBoxDnDGuestR3Lib$(VBOX_SUFF_LIB)
125endif
126
127ifdef VBOX_WITH_SEAMLESS
128 VBoxClient_DEFS += VBOX_WITH_SEAMLESS
129 VBoxClient_SOURCES += \
130 seamless.cpp \
131 seamless-x11.cpp
132endif
133
134ifdef VBOX_WITH_VMSVGA
135 VBoxClient_DEFS += VBOX_WITH_VMSVGA
136 VBoxClient_SOURCES += \
137 display.cpp \
138 display-svga-x11.cpp
139 VBoxClient_SOURCES.linux += \
140 display-svga-session.cpp \
141 display-ipc.cpp \
142 display-helper-gnome3.cpp \
143 display-helper-generic.cpp
144
145### include $(PATH_SUB_CURRENT)/helpers/Makefile.kmk
146endif
147
148ifdef VBOX_WITH_SHARED_CLIPBOARD
149 VBoxClient_DEFS += VBOX_WITH_SHARED_CLIPBOARD
150 VBoxClient_SOURCES += \
151 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp \
152 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp \
153 clipboard.cpp
154 ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
155 VBoxClient_DEFS += VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS VBOX_WITH_SHARED_CLIPBOARD_GUEST
156 VBoxClient_SOURCES += \
157 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp \
158 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/ClipboardPath.cpp
159 ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP
160 VBoxClient_DEFS += VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP
161 VBoxClient_SOURCES += \
162 $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-transfers-http.cpp
163 endif
164 ifdef VBOX_WITH_SHARED_CLIPBOARD_FUSE
165 VBoxClient_DEFS += VBOX_WITH_SHARED_CLIPBOARD_FUSE
166 # @todo Make this dynamic loading more generic.
167 VBoxClient_SOURCES += \
168 $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount/fuse.cpp \
169 clipboard-fuse.cpp
170 # @todo Ditto.
171 VBoxClient_INCS += \
172 $(PATH_ROOT)/src/VBox/ImageMounter/vboximg-mount
173 endif
174 endif
175endif
176
177if defined(VBOX_WITH_TESTCASES) && !defined(VBOX_ONLY_ADDITIONS) && !defined(VBOX_ONLY_SDK)
178 if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
179
180# Set this in LocalConfig.kmk if you are working on the X11 clipboard service
181# to automatically run the unit test at build time.
182# OTHERS += $(tstSeamlessX11-auto_0_OUTDIR)/tstSeamlessX11-auto.run
183
184 PROGRAMS += tstSeamlessX11-auto
185 tstSeamlessX11-auto_TEMPLATE = VBOXR3TSTEXE
186 tstSeamlessX11-auto_SOURCES = \
187 testcase/tstSeamlessX11-auto.cpp \
188 seamless-x11.cpp
189 tstSeamlessX11-auto_DEFS = TESTCASE
190 tstSeamlessX11-auto_LIBS = \
191 $(LIB_RUNTIME)
192
193 TESTING += $(tstSeamlessX11-auto_0_OUTDIR)/tstSeamlessX11-auto
194$$(tstSeamlessX11-auto_0_OUTDIR)/tstSeamlessX11-auto.run: \
195 $$(tstSeamlessX11-auto_1_STAGE_TARGET)
196 export VBOX_LOG_DEST=nofile; $(tstSeamlessX11-auto_1_STAGE_TARGET) quiet
197 $(QUIET)$(APPEND) -t "$@" "done"
198
199 #
200 # Additional testcase designed to be run manually, which initiates and starts the Linux
201 # guest client part of the seamless additions in the host, faking seamless events from
202 # the host and writing information about guest events to standard output.
203 #
204 PROGRAMS += tstSeamlessX11
205 tstSeamlessX11_TEMPLATE = VBOXR3TSTEXE
206 tstSeamlessX11_SOURCES = \
207 testcase/tstSeamlessX11.cpp \
208 seamless.cpp \
209 seamless-x11.cpp
210 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
211 tstSeamlessX11_DEFS += VBOX_BUILD_TARGET="$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)"
212 else
213 tstSeamlessX11_DEFS += VBOX_BUILD_TARGET=\"$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)\"
214 endif
215 tstSeamlessX11_LIBPATH = \
216 $(VBOX_LIBPATH_X11)
217 tstSeamlessX11_LIBS = \
218 $(LIB_RUNTIME) \
219 Xext \
220 Xmu \
221 X11
222 endif
223endif
224
225include $(FILE_KBUILD_SUB_FOOTER)
Note: See TracBrowser for help on using the repository browser.

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