VirtualBox

source: vbox/trunk/src/VBox/Additions/linux/Makefile.kmk@ 68308

Last change on this file since 68308 was 68044, checked in by vboxsync, 7 years ago

bugref:3809: Linux installer maintenance
Try to fix dependencies on driver sources in Additions installer make file.

This change tries to duplicate the way dependencies on kernel module sources
are handled in the Linux host installer make file to ensure that the
Additions installer is always rebuilt when one of the source files changes.
There are lots of other clean-ups in the host make file which would be
worth copying, but I will put that off for whenever I need to change related
parts of the Additions make file.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 17.7 KB
Line 
1# $Id: Makefile.kmk 68044 2017-07-19 12:04:01Z vboxsync $
2## @file
3# Makefile for the linux guest additions base directory.
4#
5
6#
7# Copyright (C) 2006-2016 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# Include sub-makefiles.
23#
24include $(PATH_SUB_CURRENT)/sharedfolders/Makefile.kmk
25include $(PATH_SUB_CURRENT)/drm/Makefile.kmk
26ifdef VBOX_WITH_LIGHTDM_GREETER
27 include $(PATH_SUB_CURRENT)/lightdm-greeter/Makefile.kmk
28endif
29
30
31#
32# Globals
33#
34
35# Basic path components
36VBOX_LNX_ADD_PACKAGE_NAME := VBoxGuestAdditions
37VBOX_LNX_ADD_INST_OUT_DIR := $(PATH_TARGET)/Additions/Installer/linux/
38VBOX_LNX_ADD_INST_DBG_DIR := $(VBOX_LNX_ADD_INST_OUT_DIR)debug/
39VBOX_LNX_ADD_INST_STAGE_DIR := $(VBOX_LNX_ADD_INST_OUT_DIR)install/
40
41# Installation paths for binaries and files
42VBOX_LNX_ADD_INST_BIN_DIR := $(VBOX_LNX_ADD_INST_OUT_DIR)bin/
43VBOX_LNX_ADD_INST_SBIN_DIR := $(VBOX_LNX_ADD_INST_OUT_DIR)sbin/
44VBOX_LNX_ADD_INST_LIB_DIR := $(VBOX_LNX_ADD_INST_OUT_DIR)lib/
45VBOX_LNX_ADD_INST_OTHER_DIR := $(VBOX_LNX_ADD_INST_OUT_DIR)other/
46VBOX_LNX_ADD_INST_KMOD_DIR_BASE := $(VBOX_LNX_ADD_INST_OUT_DIR)src/
47# This is a symbolic link, so no trailing slash.
48VBOX_LNX_ADD_INST_KMOD_PATH := $(VBOX_LNX_ADD_INST_KMOD_DIR_BASE)vboxguest-$(VBOX_VERSION_STRING)
49VBOX_LNX_ADD_INST_INIT_DIR := $(VBOX_LNX_ADD_INST_OUT_DIR)init/
50
51VBOX_LNX_ADD_ARCH_INST_DIRS := \
52 $(VBOX_LNX_ADD_INST_OUT_DIR) \
53 $(VBOX_LNX_ADD_INST_BIN_DIR) \
54 $(VBOX_LNX_ADD_INST_SBIN_DIR) \
55 $(if $(VBOX_WITH_CROGL),$(VBOX_LNX_ADD_INST_LIB_DIR),) \
56 $(VBOX_LNX_ADD_INST_INIT_DIR)
57
58# Installation paths for debug symbols
59VBOX_LNX_ADD_DBG_BIN_DIR := $(VBOX_LNX_ADD_INST_DBG_DIR)bin/
60VBOX_LNX_ADD_DBG_SBIN_DIR := $(VBOX_LNX_ADD_INST_DBG_DIR)sbin/
61VBOX_LNX_ADD_DBG_LIB_DIR := $(VBOX_LNX_ADD_INST_DBG_DIR)lib/
62VBOX_LNX_ADD_DBG_OTHER_DIR := $(VBOX_LNX_ADD_INST_DBG_DIR)other/
63
64VBOX_LNX_ADD_DBG_DIRS := \
65 $(VBOX_LNX_ADD_DBG_BIN_DIR) \
66 $(VBOX_LNX_ADD_DBG_SBIN_DIR) \
67 $(if $(VBOX_WITH_CROGL),$(VBOX_LNX_ADD_DBG_LIB_DIR),) \
68 $(VBOX_LNX_ADD_DBG_OTHER_DIR)
69
70# Script source directories
71VBOX_PATH_LNX_ADD_INST := $(PATH_SUB_CURRENT)/installer/
72VBOX_REL_LNX_ADD_INST := $(subst $(PATH_ROOT)/src/VBox, ../..,$(VBOX_PATH_LNX_ADD_INST))
73VBOX_PATH_X11_ADD_INST := $(PATH_ROOT)/src/VBox/Additions/x11/Installer/
74VBOX_REL_X11_ADD_INST := $(subst $(PATH_ROOT)/src/VBox, ../..,$(VBOX_PATH_X11_ADD_INST))
75VBOX_PATH_LNX_INST_SRC := $(PATH_ROOT)/src/VBox/Installer/linux/
76VBOX_REL_LNX_INST_SRC := $(subst $(PATH_ROOT)/src/VBox, ../..,$(VBOX_PATH_LNX_INST_SRC))
77VBOX_PATH_LNX_HOST_DRV := $(PATH_ROOT)/src/VBox/HostDrivers/linux/
78VBOX_REL_LNX_HOST_DRV := $(subst $(PATH_ROOT)/src/VBox, ../..,$(VBOX_PATH_LNX_HOST_DRV))
79
80# Unset this to speed up things during makefile hacking.
81VBOX_LNX_ADD_INST_DEP_ON_MAKEFILE := $(MAKEFILE_CURRENT)
82
83
84#
85# Targets
86#
87VBOX_SELINUX_CMPLD := $(PATH_SUB_CURRENT)/selinux-fedora/vbox_x11.pp
88VBOX_LNX_ADD_ARCHIVE.x86 := $(PATH_OUT_BASE)/linux.x86/$(KBUILD_TYPE)/bin/additions/VBoxGuestAdditions-x86.tar.bz2
89VBOX_LNX_ADD_ARCHIVE.amd64 := $(PATH_OUT_BASE)/linux.amd64/$(KBUILD_TYPE)/bin/additions/VBoxGuestAdditions-amd64.tar.bz2
90ifndef VBOX_WITH_COMBINED_LINUX_GUEST_PACKAGE
91 VBOX_LNX_ADD_ARCHIVES := $(PATH_STAGE_BIN)/additions/VBoxGuestAdditions-$(KBUILD_TARGET_ARCH).tar.bz2
92else
93 VBOX_LNX_ADD_ARCHIVES := \
94 $(VBOX_LNX_ADD_ARCHIVE.x86) \
95 $(VBOX_LNX_ADD_ARCHIVE.amd64)
96endif
97BLDDIRS += \
98 $(VBOX_LNX_ADD_ARCH_INST_DIRS) \
99 $(VBOX_LNX_ADD_DBG_DIRS) \
100 $(VBOX_LNX_ADD_INST_STAGE_DIR)
101
102# Use VBOX_WITHOUT_LINUX_GUEST_PACKAGE to skip building the .run installer.
103# This will only take effect if you also use VBOX_WITHOUT_ADDITIONS_ISO.
104PACKING += \
105 $(if-expr !defined(VBOX_WITHOUT_LINUX_GUEST_PACKAGE), $(PATH_STAGE_BIN)/additions/VBoxLinuxAdditions.run,) \
106 $(VBOX_LNX_ADD_ARCHIVES) \
107 $(PATH_STAGE_BIN)/additions/VBoxGuestAdditions-dbg.tar.bz2
108OTHER_CLEAN += \
109 $(PACKING) \
110 $(VBOX_LNX_ADD_INST_KMOD_PATH) \
111 $(foreach file, $(VBOX_LNX_ADD_ARCHIVES), $(VBOX_LNX_ADD_INST_STAGE_DIR)$(subst -r$(VBOX_SVN_REV),,$(notdir $(file))))
112
113
114#
115# Files to install
116#
117VBOX_LNX_ADD_STRIP_BIN += \
118 VBoxControl \
119 VBoxClient
120
121VBOX_LNX_ADD_STRIP_SBIN += \
122 VBoxService \
123 $(if $(VBOX_WITH_LIGHTDM_GREETER),vbox-greeter)
124
125ifdef VBOX_WITH_CROGL
126VBOX_LNX_ADD_STRIP_LIB += \
127 VBoxOGLarrayspu.so \
128 VBoxOGLcrutil.so \
129 VBoxOGLerrorspu.so \
130 VBoxOGLfeedbackspu.so \
131 VBoxOGLpackspu.so \
132 VBoxOGLpassthroughspu.so \
133 VBoxOGL.so \
134 VBoxEGL.so
135endif
136
137VBOX_LNX_ADD_STRIP_MOD = \
138 vboxmouse_drv_70.so \
139 vboxmouse_drv_71.so \
140 vboxmouse_drv_13.so \
141 vboxmouse_drv_14.so \
142 vboxmouse_drv_15.so \
143 vboxmouse_drv_16.so \
144 $(addsuffix .so,$(filter-out %_32,$(filter vboxvideo_drv_%,$(DLLS)))) \
145 $(if $(VBOX_WITH_PAM),pam_vbox.so,) \
146 mount.vboxsf
147
148VBOX_LNX_ADD_MOD = \
149 98vboxadd-xclient \
150 x11config.sh
151
152VBOX_LNX_ADD_STRIP_OBJ = \
153 vboxmouse_drv.o \
154 vboxvideo_drv.o
155
156VBOX_LNX_ADD_INIT = \
157 vboxadd \
158 vboxadd-service \
159 vboxadd-x11
160
161#
162# All the files that go into the archive
163#
164VBOX_LNX_ADD_INST_FILES := \
165 $(addprefix $(VBOX_LNX_ADD_INST_BIN_DIR),$(VBOX_LNX_ADD_STRIP_BIN)) \
166 $(addprefix $(VBOX_LNX_ADD_INST_BIN_DIR),$(VBOX_LNX_ADD_BIN)) \
167 $(addprefix $(VBOX_LNX_ADD_INST_SBIN_DIR),$(VBOX_LNX_ADD_STRIP_SBIN)) \
168 $(addprefix $(VBOX_LNX_ADD_INST_LIB_DIR),$(VBOX_LNX_ADD_STRIP_LIB)) \
169 $(addprefix $(VBOX_LNX_ADD_INST_OTHER_DIR),$(VBOX_LNX_ADD_STRIP_MOD)) \
170 $(addprefix $(VBOX_LNX_ADD_INST_OTHER_DIR),$(VBOX_LNX_ADD_MOD)) \
171 $(addprefix $(VBOX_LNX_ADD_INST_OTHER_DIR),$(VBOX_LNX_ADD_STRIP_OBJ)) \
172 $(addprefix $(VBOX_LNX_ADD_INST_INIT_DIR),$(VBOX_LNX_ADD_INIT))
173
174VBOX_LNX_ADD_DBG_FILES := \
175 $(addprefix $(VBOX_LNX_ADD_DBG_BIN_DIR),$(VBOX_LNX_ADD_STRIP_BIN)) \
176 $(addprefix $(VBOX_LNX_ADD_DBG_SBIN_DIR),$(VBOX_LNX_ADD_STRIP_SBIN)) \
177 $(addprefix $(VBOX_LNX_ADD_DBG_LIB_DIR),$(VBOX_LNX_ADD_STRIP_LIB)) \
178 $(addprefix $(VBOX_LNX_ADD_DBG_OTHER_DIR),$(VBOX_LNX_ADD_STRIP_MOD))
179
180ifdef VBOX_WITH_LIGHTDM_GREETER_PACKING
181VBOX_LNX_ADD_INST_FILES += \
182 $(addprefix $(VBOX_LNX_ADD_INST_SBIN_DIR),vbox-greeter)
183endif
184
185# Cleanup of the installer directory files
186OTHER_CLEAN += $(VBOX_LNX_ADD_INST_FILES) $(VBOX_LNX_ADD_DBG_FILES)
187
188# pattern rules for copying the debug info from the VBOX_LNX_ADD_STRIP_* files to the installation directory
189$(addprefix $(VBOX_LNX_ADD_DBG_BIN_DIR),$(VBOX_LNX_ADD_STRIP_BIN)): \
190 $(VBOX_LNX_ADD_DBG_BIN_DIR)% : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
191 $(call MSG_TOOL,copydbg,$<,$@)
192 $(QUIET)objcopy --only-keep-debug $< $@
193
194$(addprefix $(VBOX_LNX_ADD_DBG_SBIN_DIR),$(VBOX_LNX_ADD_STRIP_SBIN)): \
195 $(VBOX_LNX_ADD_DBG_SBIN_DIR)% : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
196 $(call MSG_TOOL,copydbg,$<,$@)
197 $(QUIET)objcopy --only-keep-debug $< $@
198
199$(addprefix $(VBOX_LNX_ADD_DBG_LIB_DIR),$(VBOX_LNX_ADD_STRIP_LIB)): \
200 $(VBOX_LNX_ADD_DBG_LIB_DIR)% : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
201 $(call MSG_TOOL,copydbg,$<,$@)
202 $(QUIET)objcopy --only-keep-debug $< $@
203
204$(addprefix $(VBOX_LNX_ADD_DBG_OTHER_DIR),$(VBOX_LNX_ADD_STRIP_MOD)): \
205 $(VBOX_LNX_ADD_DBG_OTHER_DIR)% : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
206 $(call MSG_TOOL,copydbg,$<,$@)
207 $(QUIET)objcopy --only-keep-debug $< $@
208
209# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_BIN files to the installation directory
210$(addprefix $(VBOX_LNX_ADD_INST_BIN_DIR),$(VBOX_LNX_ADD_STRIP_BIN)): \
211 $(VBOX_LNX_ADD_INST_BIN_DIR)% : $(PATH_STAGE_BIN)/additions/% \
212 $(VBOX_LNX_ADD_DBG_BIN_DIR)% \
213 | $$(dir $$@)
214 $(call MSG_INST_FILE,$<,$@)
215 $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
216 $(QUIET)objcopy --add-gnu-debuglink=$(subst $(VBOX_LNX_ADD_INST_BIN_DIR),$(VBOX_LNX_ADD_DBG_BIN_DIR),$@) $@
217
218# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_SBIN files to the installation directory
219$(addprefix $(VBOX_LNX_ADD_INST_SBIN_DIR),\
220 $(filter-out vbox-greeter,$(VBOX_LNX_ADD_STRIP_SBIN))): \
221 $(VBOX_LNX_ADD_INST_SBIN_DIR)% : $(PATH_STAGE_BIN)/additions/% \
222 $(VBOX_LNX_ADD_DBG_SBIN_DIR)% \
223 | $$(dir $$@)
224 $(call MSG_INST_FILE,$<,$@)
225 $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
226 $(QUIET)objcopy --add-gnu-debuglink=$(subst $(VBOX_LNX_ADD_INST_SBIN_DIR),$(VBOX_LNX_ADD_DBG_SBIN_DIR),$@) $@
227
228# pattern rule for stripping and copying vbox-greeter to the installation directory
229$(addprefix $(VBOX_LNX_ADD_INST_SBIN_DIR),vbox-greeter): \
230 $(VBOX_LNX_ADD_INST_SBIN_DIR)% : $(subst linux.amd64/release,linux.amd64/release/greeter,$(subst linux.x86/release,linux.x86/release/greeter,$(PATH_STAGE_BIN)))/additions/% \
231 | $$(dir $$@)
232 $(call MSG_INST_FILE,$<,$@)
233 $(QUIET)$(INSTALL) -m 0755 $< $@
234
235# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_LIB files to the installation directory
236$(addprefix $(VBOX_LNX_ADD_INST_LIB_DIR),$(VBOX_LNX_ADD_STRIP_LIB)): \
237 $(VBOX_LNX_ADD_INST_LIB_DIR)% : $(PATH_STAGE_BIN)/additions/% \
238 $(VBOX_LNX_ADD_DBG_LIB_DIR)% \
239 | $$(dir $$@)
240 $(call MSG_INST_FILE,$<,$@)
241 $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
242 $(QUIET)objcopy --add-gnu-debuglink=$(subst $(VBOX_LNX_ADD_INST_LIB_DIR),$(VBOX_LNX_ADD_DBG_LIB_DIR),$@) $@
243
244# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_MOD files to the installation directory
245$(addprefix $(VBOX_LNX_ADD_INST_OTHER_DIR),$(VBOX_LNX_ADD_STRIP_MOD)): \
246 $(VBOX_LNX_ADD_INST_OTHER_DIR)% : $(PATH_STAGE_BIN)/additions/% \
247 $(VBOX_LNX_ADD_DBG_OTHER_DIR)% \
248 | $$(dir $$@)
249 $(call MSG_INST_FILE,$<,$@)
250 $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
251 $(QUIET)objcopy --add-gnu-debuglink=$(subst $(VBOX_LNX_ADD_INST_OTHER_DIR),$(VBOX_LNX_ADD_DBG_OTHER_DIR),$@) $@
252
253# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_OBJ files to the installation directory
254$(addprefix $(VBOX_LNX_ADD_INST_OTHER_DIR),$(VBOX_LNX_ADD_STRIP_OBJ)): \
255 $(VBOX_LNX_ADD_INST_OTHER_DIR)% : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
256 $(call MSG_INST_FILE,$<,$@)
257ifeq ($(VBOX_DO_STRIP),)
258 $(QUIET)$(INSTALL) -m 0644 $< $@
259else # strip to temp file because of umask.
260 $(QUIET)objcopy --strip-unneeded -R .comment $< [email protected]
261 $(QUIET)$(INSTALL) -m 0644 [email protected] $@
262 $(QUIET)$(RM) -f -- [email protected]
263endif
264
265include $(PATH_ROOT)/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest
266VBOX_LNX_ADD_INST_FILES_VBOXGUEST=$(patsubst =>%,$(PATH_STAGE_BIN)/additions/src/vboxguest/%,$(filter =>%,$(subst =>, =>,$(subst $(DQUOTE),,$(FILES_VBOXGUEST_NOBIN)))))
267include $(PATH_ROOT)/src/VBox/Additions/linux/sharedfolders/files_vboxsf
268VBOX_LNX_ADD_INST_FILES_VBOXSF=$(patsubst =>%,$(PATH_STAGE_BIN)/additions/src/vboxsf/%,$(filter =>%,$(subst =>, =>,$(subst $(DQUOTE),,$(FILES_VBOXSF_NOBIN)))))
269include $(PATH_ROOT)/src/VBox/Additions/linux/drm/files_vboxvideo_drv
270VBOX_LNX_ADD_INST_FILES_VBOXVIDEO=$(patsubst =>%,$(PATH_STAGE_BIN)/additions/src/vboxvideo/%,$(filter =>%,$(subst =>, =>,$(subst $(DQUOTE),,$(FILES_VBOXVIDEO_DRM_NOBIN)))))
271
272# special rule for the kernel modules
273$(VBOX_LNX_ADD_INST_KMOD_DIR_BASE): $(PATH_STAGE_BIN)/additions/src/ | $(dir $@)
274 $(call MSG_INST_SYM,$<,$@)
275 $(QUIET)$(RM) -Rf $@
276 $(QUIET)$(MKDIR) $@
277 $(QUIET)$(LN_SYMLINK) $< $(VBOX_LNX_ADD_INST_KMOD_PATH)
278
279INSTALLS += GuestDrivers-src
280GuestDrivers-src_INST = $(INST_ADDITIONS)src/
281GuestDrivers-src_MODE = a+r,u+w
282GuestDrivers-src_SOURCES = Makefile
283
284
285INSTALLS += lnx_add_inst-exec
286lnx_add_inst-exec_INST = $(VBOX_LNX_ADD_INST_OTHER_DIR)
287lnx_add_inst-exec_INSTTYPE = stage
288lnx_add_inst-exec_EXEC_SOURCES = \
289 $(VBOX_REL_X11_ADD_INST)98vboxadd-xclient \
290 $(VBOX_REL_X11_ADD_INST)x11config.sh \
291 $(VBOX_REL_LNX_INST_SRC)check_module_dependencies.sh
292
293
294INSTALLS += lnx_add_inst-noexec
295lnx_add_inst-noexec_INST = $(VBOX_LNX_ADD_INST_OTHER_DIR)
296lnx_add_inst-noexec_INSTTYPE = stage
297lnx_add_inst-noexec_SOURCES = \
298 $(VBOX_REL_X11_ADD_INST)vboxclient.desktop \
299 $(VBOX_REL_X11_ADD_INST)vboxvideo.ids \
300 $(if $(VBOX_WITH_LIGHTDM_GREETER_PACKING),lightdm-greeter/vbox-greeter.desktop,) \
301 selinux-fedora/vbox_x11.pp \
302 selinux-fedora/vbox_accel.pp
303
304INSTALLS += lnx_add_inst-license
305lnx_add_inst-license_INST = $(VBOX_LNX_ADD_INST_OUT_DIR)
306lnx_add_inst-license_INSTTYPE = stage
307lnx_add_inst-license_SOURCES = \
308 $(VBOX_BRAND_LICENSE_TXT)=>LICENSE
309
310
311#
312# We need our routines.sh and the uninstallation scripts in the staging
313# directory too
314#
315INSTALLS += LnxAdd-scripts
316LnxAdd-scripts_INST = $(VBOX_LNX_ADD_INST_STAGE_DIR)
317LnxAdd-scripts_INSTTYPE = stage
318LnxAdd-scripts_SOURCES = \
319 $(VBOX_REL_LNX_ADD_INST)deffiles
320LnxAdd-scripts_EXEC_SOURCES = \
321 $(VBOX_REL_LNX_INST_SRC)routines.sh
322
323ifdef VBOX_WITH_LIGHTDM_GREETER_PACKING
324 LnxAdd-scripts_EXEC_SOURCES += \
325 $(VBOX_REL_LNX_ADD_INST)module-autologon.sh=>installer/module-autologon
326endif
327
328
329#
330# And the init scripts
331#
332INSTALLS += LnxAdd-init-scripts
333LnxAdd-init-scripts_INST = $(VBOX_LNX_ADD_INST_INIT_DIR)
334LnxAdd-init-scripts_INSTTYPE = stage
335LnxAdd-init-scripts_EXEC_SOURCES = \
336 $(foreach i,$(VBOX_LNX_ADD_INIT), installer/$(i).sh=>$(i))
337
338# this file needs editing before it can be included in the generic installer.
339$(VBOX_LNX_ADD_INST_STAGE_DIR)install.sh: \
340 $(VBOX_PATH_LNX_ADD_INST)install.sh.in \
341 $(VBOX_VERSION_STAMP) | $$(dir $$@)
342 $(RM) -f -- $@
343 $(QUIET)$(SED) \
344 -e "s;_VERSION_;$(VBOX_VERSION_STRING);g" \
345 -e "s;_BUILDTYPE_;$(KBUILD_TYPE);g" \
346 -e "s;_USERNAME_;$(USERNAME);g" \
347 --output $@ \
348 $<
349 $(QUIET)$(CHMOD) 0755 $@
350OTHER_CLEAN += \
351 $(VBOX_LNX_ADD_INST_OUT_DIR)install.sh \
352 $(VBOX_LNX_ADD_INST_STAGE_DIR)install.sh
353
354
355#
356# Build test for the Guest Additions kernel modules (kmk check).
357#
358if defined(VBOX_WITH_TESTCASES) \
359 && !defined(VBOX_ONLY_SDK) \
360 && !defined(VBOX_ONLY_DOCS) \
361 && !defined(VBOX_ONLY_VALIDATIONKIT) \
362 && "$(KBUILD_HOST_ARCH)" == "$(KBUILD_TARGET_ARCH)"
363 VBOX_LNX_ADD_TEST = $(PATH_TARGET)/tstguest_mod
364 VBOX_LNX_ADD_TEST_TARGET = $(PATH_TARGET)/tstguest_mod.run
365 TESTING += $(VBOX_LNX_ADD_TEST_TARGET)
366 OTHERS += $(VBOX_LNX_ADD_TEST_TARGET)
367 OTHER_CLEAN += $(VBOX_LNX_ADD_TEST_TARGET)
368 $$(VBOX_LNX_ADD_TEST_TARGET): \
369 $$(vboxguest-src_2_STAGE_TARGETS) \
370 $$(vboxsf-mod_2_STAGE_TARGETS) \
371 $$(vboxvideo_drm-mod_2_STAGE_TARGETS) \
372 $$(GuestDrivers-src_2_STAGE_TARGETS)
373 $(QUIET)$(call MSG_L1,Doing a test build of the guest kernel modules)
374 $(QUIET)$(RM) -f -- "$@"
375 $(QUIET)$(RM) -Rf -- "$(VBOX_LNX_ADD_TEST)"
376 $(QUIET)$(MKDIR) -p -- "$(VBOX_LNX_ADD_TEST)"
377 $(QUIET)$(CP) -R -- "$(PATH_STAGE_BIN)/additions/src/" "$(VBOX_LNX_ADD_TEST)/"
378 + $(QUIET)make -C $(VBOX_LNX_ADD_TEST) clean
379 + $(QUIET)make -C $(VBOX_LNX_ADD_TEST)
380 $(QUIET)$(RM) -Rf -- $(VBOX_LNX_ADD_TEST)
381 $(QUIET)$(APPEND) -t "$@" "done"
382endif
383
384
385include $(FILE_KBUILD_SUB_FOOTER)
386
387
388# All the files that go into our archive
389VBOX_LNX_ADD_ARCH_FILES = \
390 $(lnx_add_inst-noexec_2_STAGE_TARGETS) \
391 $(lnx_add_inst-exec_2_STAGE_TARGETS) \
392 $(lnx_add_inst-license_2_STAGE_TARGETS) \
393 $(VBOX_LNX_ADD_INST_FILES) \
394 $(VBOX_LNX_ADD_INST_KMOD_DIR_BASE)
395
396VBOX_LNX_ADD_INST_ARCH_DEPS := \
397 $(VBOX_LNX_ADD_ARCH_FILES) \
398 $(VBOX_LNX_ADD_INST_DEP_ON_MAKEFILE) \
399 $(VBOX_VERSION_STAMP) \
400 $(VBOX_LNX_ADD_INST_FILES_VBOXGUEST) \
401 $(VBOX_LNX_ADD_INST_FILES_VBOXSF) \
402 $(VBOX_LNX_ADD_INST_FILES_VBOXVIDEO)
403
404#
405# .tar.bz2 for converting into .run
406#
407$(VBOX_LNX_ADD_ARCHIVE.$(KBUILD_TARGET_ARCH)): \
408 $(VBOX_LNX_ADD_INST_ARCH_DEPS)
409 $(call MSG_L1,Packing $@)
410 $(QUIET)$(RM) -f -- $(wildcard $(dir $@)VBoxGuestAdditions-*r*.tar.bz2)
411 $(QUIET)$(MKDIR) -p $(@D)
412 $(QUIET)$(CHMOD) 0755 $(VBOX_LNX_ADD_ARCH_INST_DIRS)
413ifdef VBOX_USE_PBZIP2
414 $(QUIET)tar --dereference --owner 0 --group 0 -cRf $(patsubst %.bz2,%,$@) \
415 -C $(VBOX_LNX_ADD_INST_OUT_DIR) \
416 LICENSE bin init lib other sbin src \
417 $(if $(filter $(KBUILD_TYPE),debug),debug)
418 $(QUIET)pbzip2 $(patsubst %.bz2,%,$@)
419else
420 $(QUIET)tar --dereference --owner 0 --group 0 --ignore-failed-read -cjRf $@ \
421 -C $(VBOX_LNX_ADD_INST_OUT_DIR) \
422 LICENSE bin init lib other sbin src \
423 $(if $(filter $(KBUILD_TYPE),debug),debug)
424endif
425 $(QUIET)$(CHMOD) 0644 $@
426
427
428#
429# .tar.bz2 containing the debug information
430#
431$(PATH_STAGE_BIN)/additions/VBoxGuestAdditions-dbg.tar.bz2: \
432 $(VBOX_LNX_ADD_DBG_FILES) \
433 $(VBOX_LNX_ADD_INST_DEP_ON_MAKEFILE)
434 $(call MSG_L1,Packing $@)
435 $(QUIET)$(RM) -f -- $@ $(patsubst %.bz2,%,$@)
436 $(QUIET)$(MKDIR) -p $(@D)
437 $(QUIET)$(CHMOD) 0755 $(VBOX_LNX_ADD_DBG_DIRS)
438ifdef VBOX_USE_PBZIP2
439 $(QUIET)tar --dereference --owner 0 --group 0 -cRf $(patsubst %.bz2,%,$@) \
440 -C $(VBOX_LNX_ADD_INST_DBG_DIR) \
441 bin lib sbin
442 $(QUIET)pbzip2 $(patsubst %.bz2,%,$@)
443else
444 $(QUIET)tar --dereference --owner 0 --group 0 --ignore-failed-read -cjRf $@ \
445 -C $(VBOX_LNX_ADD_INST_DBG_DIR) \
446 bin lib sbin
447endif
448 $(QUIET)$(CHMOD) 0644 $@
449
450
451#
452# Build the Linux Guest Additions self extracting installer.
453#
454# Note that $(PATH_SUB_CURRENT) was changed by subfooter.kmk above and
455# any references should be made via variables assigned a know value via := .
456#
457$(PATH_STAGE_BIN)/additions/VBoxLinuxAdditions.run: \
458 $(VBOX_LNX_ADD_ARCHIVES) \
459 $(VBOX_LNX_ADD_INST_STAGE_DIR)install.sh \
460 $$(LnxAdd-scripts_2_STAGE_TARGETS) \
461 $(VBOX_VERSION_STAMP)
462 # Remove any archives left over from previous builds so that they don't
463 # end up in our installer as well.
464 $(QUIET)$(RM) -f $(foreach file, $(wildcard $(VBOX_LNX_ADD_INST_STAGE_DIR)$(VBOX_LNX_ADD_PACKAGE_NAME)-*.tar.bz2), $(file))
465 $(QUIET)$(foreach file, $(VBOX_LNX_ADD_ARCHIVES), \
466 $(CP) -f $(file) $(VBOX_LNX_ADD_INST_STAGE_DIR)$(subst -r$(VBOX_SVN_REV),,$(notdir $(file)))$(NLTAB) )
467 $(QUIET)$(VBOX_MAKESELF) --nocomp $(VBOX_LNX_ADD_INST_STAGE_DIR) $@ \
468 "VirtualBox $(VBOX_VERSION_STRING) Guest Additions for Linux" \
469 /bin/sh ./install.sh "\$$0 1> /dev/null"
470
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