VirtualBox

source: vbox/trunk/src/VBox/Installer/linux/Makefile.kmk@ 58788

Last change on this file since 58788 was 58585, checked in by vboxsync, 9 years ago

Installers/linux (host): remove the creative and over-engineered init script handling from VBoxHeadlessXorg.sh. If anyone wishes to use it in future they will have to write their own service handling, which they would probably have had to anyway, given that the old one did not support systemd.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 17.6 KB
Line 
1# $Id: Makefile.kmk 58585 2015-11-05 15:39:41Z vboxsync $
2## @file
3# Makefile for the Linux installer.
4#
5
6#
7# Copyright (C) 2006-2015 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# Include sub-makefiles.
22
23# We do not install VBoxHeadlessXOrg.sh any more, so this is not needed.
24#
25# ifdef VBOX_WITH_TESTCASES
26# include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
27# endif
28
29ifneq ($(KBUILD_HOST),linux)
30 $(error "The Linux installer can only be built on Linux!")
31endif
32
33#
34# Globals and targets.
35#
36VBOX_PATH_LNX_INST_SRC := $(PATH_SUB_CURRENT)
37VBOX_LNX_INST_OUT_DIR := $(PATH_TARGET)/Installer/linux
38VBOX_LNX_INST_STAGE_DIR := $(PATH_TARGET)/Installer/linux/install
39VBOX_LNX_INST_STAGE_DIR_REL := obj/Installer/linux/install
40VBOX_LNX_DBG_PATH := usr/lib/debug/opt/VirtualBox
41VBOX_LNX_PACKAGE_NAME = VirtualBox-$(VBOX_VERSION_STRING)-r$(VBOX_SVN_REV).run
42
43# Unset this to speed up things during makefile hacking.
44VBOX_LNX_INST_DEP_ON_MAKEFILE := $(MAKEFILE_CURRENT)
45
46BLDDIRS += $(VBOX_LNX_INST_OUT_DIR) $(VBOX_LNX_INST_STAGE_DIR)
47if !defined(VBOX_NO_LINUX_RUN_INSTALLER)
48 PACKING += $(PATH_STAGE_BIN)/$(VBOX_LNX_PACKAGE_NAME) \
49 $(PATH_STAGE_BIN)/VirtualBox-dbg.tar.bz2
50else
51 PACKING += $(PATH_STAGE_BIN)/VirtualBox.tar
52endif
53
54OTHER_CLEAN += \
55 $(addprefix $(VBOX_LNX_INST_STAGE_DIR)/,\
56 install.sh \
57 VirtualBox.tar.bz2 \
58 LICENSE) \
59 $(wildcard $(VBOX_LNX_INST_OUT_DIR)/VirtualBox-*) \
60 $(VBOX_LNX_INST_OUT_DIR)/install.sh
61
62#
63# Linux installs.
64#
65INSTALLS += linux-bin
66linux-bin_INST = bin/
67linux-bin_MODE = a+rx,u+w
68linux-bin_SOURCES = \
69 check_module_dependencies.sh \
70 postinst-common.sh \
71 prerm-common.sh \
72 routines.sh \
73 VBoxSysInfo.sh \
74 vboxautostart-service.sh \
75 vboxballoonctrl-service.sh \
76 VBoxCreateUSBNode.sh \
77 vboxdrv.sh \
78 vboxweb-service.sh \
79 VBox.sh=>VBox.sh \
80 $(if $(VBOX_WITH_PYTHON),$(PATH_ROOT)/src/VBox/Frontends/VBoxShell/vboxshell.py=>vboxshell.py,)
81
82INSTALLS += linux-scripts
83linux-scripts_INST = $(VBOX_LNX_INST_STAGE_DIR_REL)/
84linux-scripts_MODE = a+rx,u+w
85linux-scripts_SOURCES = \
86 deffiles \
87 postinst-common.sh \
88 prerm-common.sh \
89 routines.sh \
90 uninstall.sh \
91 vboxautostart-service.sh \
92 vboxballoonctrl-service.sh \
93 vboxdrv.sh \
94 vboxweb-service.sh
95
96INSTALLS += linux-misc
97linux-misc_INST = bin/
98linux-misc_MODE = a+r,u+w
99linux-misc_SOURCES = \
100 $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/$(if $(VBOX_OSE),OSE,NonOSE)/VirtualBox_32px.png=>VBox.png \
101 $(VBOX_PATH_INST_COMMON_SRC)/virtualbox.xml \
102 $(if $(VBOX_OSE),,$(VBOX_BRAND_LICENSE_TXT)=>LICENSE) \
103 $(linux-misc_0_OUTDIR)/generated.sh=>scripts/generated.sh \
104 $(if $(VBOX_WITH_QTGUI),$(linux-misc_0_OUTDIR)/virtualbox.desktop,)
105linux-misc_CLEAN = \
106 $(linux-misc_0_OUTDIR)/generated.sh \
107 $(linux-misc_0_OUTDIR)/virtualbox.desktop
108
109$$(linux-misc_0_OUTDIR)/generated.sh: $(VBOX_VERSION_STAMP) $(VBOX_LNX_INST_DEP_ON_MAKEFILE) | $$(dir $$@)
110 $(call MSG_GENERATE,,$@,$<)
111 $(QUIET)$(RM) -f '$@'
112 $(QUIET)$(APPEND) '$@' 'VBOX_PRODUCT="$(VBOX_PRODUCT)"'
113 $(QUIET)$(APPEND) '$@' 'VBOX_VERSION_STRING="$(VBOX_VERSION_STRING)"'
114 $(QUIET)$(APPEND) '$@' 'VBOX_C_YEAR="$(VBOX_C_YEAR)"'
115 $(QUIET)$(APPEND) '$@' 'VBOX_VENDOR="$(VBOX_VENDOR)"'
116
117$$(linux-misc_0_OUTDIR)/virtualbox.desktop: $(VBOX_PATH_INST_COMMON_SRC)/virtualbox.desktop.in $(VBOX_VERSION_STAMP) | $$(dir $$@)
118 $(call MSG_GENERATE,,$@,$<)
119ifdef VBOX_PATH_PACKAGE_DOCS
120 $(QUIET)$(SED) -e "s+@VBOX_DOC_PATH@+$(VBOX_PATH_PACKAGE_DOCS)+" \
121 -e "s+@VBOX_PRODUCT@+$(VBOX_PRODUCT)+" \
122 --output $@ $<
123else
124 $(QUIET)$(SED) -e "s+@VBOX_DOC_PATH@+/opt/VirtualBox+" \
125 -e "s+@VBOX_PRODUCT@+$(VBOX_PRODUCT)+" \
126 --output $@ $<
127endif
128
129INSTALLS += linux-icons
130linux-icons_INST = bin/icons/
131linux-icons_MODE = a+r,u+w
132linux-icons_SOURCES = $(VBOX_MIME_ICONS) $(VBOX_DESKTOP_ICONS)
133
134
135#
136# The files residing in bin/ that we'll ship.
137#
138
139# Strip these binaries
140VBOX_LNX_STRIP_BIN = \
141 VBoxDD.so \
142 VBoxDD2.so \
143 VBoxREM.so \
144 VBoxDDU.so \
145 VBoxVMM.so \
146 $(if $(eq $(KBUILD_TARGET_ARCH),x86),VBoxREM32.so,) \
147 $(if $(eq $(KBUILD_TARGET_ARCH),x86),VBoxREM64.so,) \
148 VBoxRT.so \
149 $(if $(VBOX_WITH_VBOXSDL),VBoxSDL $(if $(VBOX_WITH_HARDENING),VBoxSDL.so),) \
150 $(if $(VBOX_WITH_SHARED_CLIPBOARD), VBoxSharedClipboard.so,) \
151 $(if $(VBOX_WITH_SHARED_FOLDERS), VBoxSharedFolders.so,) \
152 $(if $(VBOX_WITH_GUEST_PROPS),VBoxGuestPropSvc.so,) \
153 $(if $(VBOX_WITH_GUEST_CONTROL),VBoxGuestControlSvc.so,) \
154 VBoxHostChannel.so \
155 $(if $(VBOX_WITH_DRAG_AND_DROP),VBoxDragAndDropSvc.so,) \
156 $(if $(VBOX_WITH_MAIN), \
157 VBoxAutostart \
158 VBoxBalloonCtrl \
159 VBoxManage \
160 VBoxNetDHCP $(if $(VBOX_WITH_HARDENING),VBoxNetDHCP.so,) \
161 $(if $(VBOX_WITH_LWIP_NAT),VBoxNetNAT $(if $(VBOX_WITH_HARDENING),VBoxNetNAT.so,),) \
162 VBoxNetAdpCtl \
163 $(if $(VBOX_WITH_DEVMAPPER),VBoxVolInfo,) \
164 VBoxSVC \
165 VBoxXPCOM.so \
166 VBoxXPCOMC.so \
167 VBoxXPCOMIPCD \
168 components/VBoxXPCOMIPCC.so \
169 components/VBoxSVCM.so \
170 components/VBoxC.so,) \
171 $(if $(VBOX_WITH_CROGL),\
172 VBoxOGLhostcrutil.so \
173 VBoxOGLhosterrorspu.so \
174 VBoxOGLrenderspu.so \
175 $(if $(VBOX_WITH_QTGUI),VBoxTestOGL,) \
176 VBoxSharedCrOpenGL.so,) \
177 $(if $(VBOX_WITH_VMSVGA3D),VBoxSVGA3D.so,) \
178 $(if $(VBOX_WITH_PYTHON),$(notdir $(wildcard $(PATH_STAGE_BIN)/VBoxPython*.so)),) \
179 $(if $(VBOX_WITH_JXPCOM),libvboxjxpcom.so,) \
180 $(if $(and $(VBOX_WITH_EXTPACK_VNC),$(VBOX_WITHOUT_EXTPACK_VNC_PACKING)), \
181 ExtensionPacks/VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/VBoxVNC.so \
182 ExtensionPacks/VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/VBoxVNCMain.so,) \
183 $(if $(VBOX_WITH_DTRACE),VBoxDTrace,)\
184 VBoxTunctl
185
186# Do not remove relocation information of these binaries
187VBOX_LNX_STRIP_OBJ = \
188 VBoxDD2R0.r0 \
189 VBoxDDR0.r0 \
190 VMMR0.r0
191
192ifdef VBOX_WITH_RAW_MODE
193 VBOX_LNX_STRIP_OBJ += \
194 VBoxDD2RC.rc \
195 VBoxDDRC.rc \
196 VMMRC.rc
197endif
198
199# Do not strip anything of these files
200VBOX_LNX_NO_STRIP = \
201 $(if $(VBOX_OSE),,LICENSE) \
202 $(if $(VBOX_WITH_MAIN), \
203 components/VBoxXPCOMBase.xpt \
204 components/VirtualBox_XPCOM.xpt) \
205 $(if $(VBOX_WITH_PYTHON),vboxshell.py,) \
206 $(if $(and $(VBOX_WITH_EXTPACK_VNC),$(VBOX_WITHOUT_EXTPACK_VNC_PACKING)), \
207 ExtensionPacks/VNC/ExtPack.xml \
208 ExtensionPacks/VNC/ExtPack-license.html \
209 ExtensionPacks/VNC/ExtPack-license.rtf \
210 ExtensionPacks/VNC/ExtPack-license.txt,) \
211 check_module_dependencies.sh \
212 postinst-common.sh \
213 prerm-common.sh \
214 routines.sh \
215 VBoxSysInfo.sh \
216 vboxautostart-service.sh \
217 vboxballoonctrl-service.sh \
218 VBoxCreateUSBNode.sh \
219 vboxdrv.sh \
220 VBox.sh \
221 vboxweb-service.sh \
222 VBox.png
223
224ifdef VBOX_WITH_EXTPACK
225 VBOX_LNX_STRIP_BIN += \
226 VBoxExtPackHelperApp
227endif
228
229# Qt4 GUI
230ifdef VBOX_WITH_QTGUI
231 include $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.kmk
232 VBOX_LNX_STRIP_BIN += \
233 VBoxKeyboard.so \
234 VirtualBox \
235 $(if $(VBOX_WITH_HARDENING),VirtualBox.so) \
236 $(if $(VBOX_WITH_DEBUGGER_GUI),VBoxDbg.so DbgPlugInDiggers.so)
237 VBOX_LNX_NO_STRIP += \
238 virtualbox.desktop \
239 virtualbox.xml \
240 $(VBOX_LICENSE_FILES) \
241 $(if $(VBOX_WITH_QT4_SUN),$(notdir $(wildcard $(PATH_STAGE_BIN)/lib*VBox*)),) \
242 $(if $(VBOX_WITH_QT4_SUN),accessible/libqtaccessiblewidgets.so,) \
243 $(foreach f,$(VBOX_APPROVED_GUI_LANGUAGES),nls/VirtualBox_$(f).qm nls/qt_$(f).qm) \
244 icons
245endif
246
247# Guest Additions
248ifdef VBOX_WITH_ADDITIONS_PACKING
249 VBOX_LNX_NO_STRIP += \
250 additions/VBoxGuestAdditions.iso
251endif
252
253# Documentation
254ifdef VBOX_WITH_DOCS_PACKING
255 VBOX_LNX_NO_STRIP += \
256 UserManual.pdf \
257 $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),UserManual_$(f).pdf)
258 ifdef VBOX_WITH_DOCS_CHM
259 VBOX_LNX_NO_STRIP += \
260 VirtualBox.chm \
261 $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),VirtualBox_$(f).chm)
262 endif
263 VBOX_LNX_STRIP_BIN += \
264 $(if $(VBOX_WITH_KCHMVIEWER),kchmviewer,)
265endif
266
267# auth stuff
268VBOX_LNX_STRIP_BIN += \
269 $(if $(VBOX_WITH_PAM),VBoxAuth.so,) \
270 VBoxAuthSimple.so
271
272# VRDP
273ifdef VBOX_WITH_VRDP
274 ifndef VBOX_WITH_EXTPACK_PUEL
275 VBOX_LNX_STRIP_BIN += \
276 VBoxVRDP.so
277 endif
278 ifdef VBOX_WITH_VRDP_RDESKTOP
279 VBOX_LNX_NO_STRIP += \
280 rdesktop-vrdp.tar.gz
281 VBOX_LNX_NO_STRIP += \
282 rdesktop-vrdp-keymaps
283 VBOX_LNX_STRIP_BIN += \
284 rdesktop-vrdp
285 endif
286endif
287
288# Python XPCOM glue
289ifdef VBOX_WITH_PYTHON
290 VBOX_LNX_NO_STRIP += \
291 $(VBOXINST_SDK_BINDINGS_XPCOM_PYTHON_FILES) \
292 $(VBOXINST_SDK_INSTALLER_PYTHON_FILES)
293endif
294
295# Java XPCOM bridge
296ifdef VBOX_WITH_JXPCOM
297 VBOX_LNX_NO_STRIP += \
298 sdk/bindings/xpcom/java/vboxjxpcom.jar
299endif
300
301# Headless
302ifdef VBOX_WITH_HEADLESS
303 VBOX_LNX_STRIP_BIN += \
304 VBoxHeadless \
305 $(if $(VBOX_WITH_HARDENING),VBoxHeadless.so)
306endif
307
308# Webservices
309ifdef VBOX_WITH_WEBSERVICES
310 VBOX_LNX_STRIP_BIN += \
311 vboxwebsrv \
312 webtest
313endif
314
315# vbox-img
316if defined(VBOX_WITH_TESTCASES) || defined(VBOX_WITH_VBOX_IMG)
317 VBOX_LNX_STRIP_BIN += \
318 vbox-img
319endif
320
321# EFI firmware
322ifdef VBOX_WITH_EFIFW_PACKING
323 VBOX_LNX_NO_STRIP += \
324 VBoxEFI32.fd \
325 VBoxEFI64.fd
326endif
327
328# DTrace library and scripts.
329ifdef VBOX_WITH_DTRACE
330 VBOX_LNX_NO_STRIP += \
331 $(addprefix dtrace/lib/$(KBUILD_TARGET_ARCH)/,$(VBOXINST_DTRACE_LIB_ARCH_FILES)) \
332 $(addprefix dtrace/testcase/$(KBUILD_TARGET_ARCH)/,$(VBOXINST_DTRACE_TESTCASE_ARCH_FILES)) \
333 $(addprefix dtrace/scripts/,$(VBOXINST_DTRACE_SCRIPTS_FILES))
334endif
335
336# Icons
337VBOX_MIME_ICONS = \
338 $(addprefix $(PATH_ROOT)/src/VBox/Artwork/other/,\
339 $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \
340 $(foreach s,16 20 24 32 48 64 72 96 128 256,\
341 virtualbox-$(f)-$(s)px.png=>$(s)x$(s)/virtualbox-$(f).png)))
342
343VBOX_DESKTOP_ICONS = \
344 $(addprefix $(PATH_ROOT)/src/VBox/Artwork/$(if $(VBOX_OSE),OSE,NonOSE)/,\
345 $(foreach s,16 20 32 40 48 64 128,\
346 virtualbox-$(s)px.png=>$(s)x$(s)/virtualbox.png) \
347 virtualbox.svg=>scalable/virtualbox.svg)
348
349#
350# All the bin files that goes into the archives.
351#
352VBOX_LNX_ARCH_FILES := $(VBOX_LNX_STRIP_BIN) $(VBOX_LNX_STRIP_OBJ) $(VBOX_LNX_NO_STRIP) src
353
354# Cleanup of the files we copy/symlink from bin.
355OTHER_CLEAN += $(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive/,$(VBOX_LNX_ARCH_FILES)) \
356 $(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive-dbg/$(VBOX_LNX_DBG_PATH)/,$(VBOX_LNX_STRIP_BIN))
357
358#
359# The generic installer.
360#
361$(PATH_STAGE_BIN)/$(VBOX_LNX_PACKAGE_NAME): \
362 $(VBOX_LNX_INST_STAGE_DIR)/VirtualBox.tar.bz2 \
363 $(VBOX_VERSION_STAMP) \
364 $(if $(VBOX_OSE),,$(VBOX_BRAND_LICENSE_TXT)) \
365 $(VBOX_LNX_INST_OUT_DIR)/install.sh \
366 $$(linux-scripts_2_STAGE_TARGETS)
367 $(call MSG_TOOL,makeself,,$@)
368 $(QUIET)$(RM) -f $(wildcard $(PATH_STAGE_BIN)/VirtualBox-*.run)
369 $(QUIET)$(if $(VBOX_OSE),,$(INSTALL) -m 0644 $(VBOX_BRAND_LICENSE_TXT) $(VBOX_LNX_INST_STAGE_DIR)/LICENSE)
370 $(QUIET)$(INSTALL) -m 0755 $(VBOX_LNX_INST_OUT_DIR)/install.sh $(VBOX_LNX_INST_STAGE_DIR)/
371 $(QUIET)$(RM) -f $@
372 $(QUIET)$(VBOX_MAKESELF) --follow --nocomp $(VBOX_LNX_INST_STAGE_DIR) $@ \
373 "VirtualBox for Linux installation" ./install.sh "\$$0 1> /dev/null"
374
375$(VBOX_LNX_INST_OUT_DIR)/install.sh: $(VBOX_PATH_LNX_INST_SRC)/install.sh $(VBOX_VERSION_STAMP) $(VBOX_SVN_REV_KMK).ts | $$(dir $$@)
376 $(QUIET)$(SED) \
377 -e "s;_VERSION_;$(VBOX_VERSION_STRING);g" \
378 -e "s;_SVNREV_;$(VBOX_SVN_REV);g" \
379 -e "s;_BUILD_;$(date-utc );g" \
380 -e "s;_ARCH_;$(KBUILD_TARGET_ARCH);g" \
381 -e "s;_HARDENED_;$(VBOX_WITH_HARDENING);g" \
382 -e "s;_BUILDTYPE_;$(KBUILD_TYPE);g" \
383 -e "s;_USERNAME_;$(USERNAME);g" \
384 -e "s;_PYTHON_;$(VBOX_WITH_PYTHON);g" \
385 --output $@ \
386 $<
387
388#
389# The files that the tar archives depend on.
390#
391
392include $(PATH_ROOT)/src/VBox/HostDrivers/Support/linux/files_vboxdrv
393VBOX_LNX_INST_FILES_VBOXDRV=$(patsubst =>%,$(PATH_STAGE_BIN)/src/vboxdrv/%,$(filter =>%,$(subst =>, =>,$(subst $(DQUOTE),,$(FILES_VBOXDRV_NOBIN)))))
394include $(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt
395VBOX_LNX_INST_FILES_VBOXNETFLT=$(patsubst =>%,$(PATH_STAGE_BIN)/src/vboxnetflt/%,$(filter =>%,$(subst =>, =>,$(subst $(DQUOTE),,$(VBOX_VBOXNETFLT_SOURCES)))))
396include $(PATH_ROOT)/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp
397VBOX_LNX_INST_FILES_VBOXNETADP=$(patsubst =>%,$(PATH_STAGE_BIN)/src/vboxnetadp/%,$(filter =>%,$(subst =>, =>,$(subst $(DQUOTE),,$(VBOX_VBOXNETADP_SOURCES)))))
398include $(PATH_ROOT)/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci
399VBOX_LNX_INST_FILES_VBOXPCI=$(patsubst =>%,$(PATH_STAGE_BIN)/src/vboxpci/%,$(filter =>%,$(subst =>, =>,$(subst $(DQUOTE),,$(VBOX_VBOXPCI_SOURCES)))))
400
401VBOX_LNX_INST_ARCH_DEPS := \
402 $(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive/, $(VBOX_LNX_ARCH_FILES)) \
403 $(VBOX_LNX_INST_DEP_ON_MAKEFILE) \
404 $(VBOX_VERSION_STAMP) \
405 $(VBOX_LNX_INST_FILES_VBOXDRV) \
406 $(VBOX_LNX_INST_FILES_VBOXNETFLT) \
407 $(VBOX_LNX_INST_FILES_VBOXNETADP) \
408 $(VBOX_LNX_INST_FILES_VBOXPCI)
409
410#
411# .tar.bz2 for converting into .run
412#
413$(VBOX_LNX_INST_STAGE_DIR)/VirtualBox.tar.bz2: $(VBOX_LNX_INST_ARCH_DEPS)
414 $(call MSG_L1,Packing $@)
415 $(QUIET)$(RM) -f -- $@ $(patsubst %.bz2,%,$@)
416 $(QUIET)$(MKDIR) -p $(@D)
417ifdef VBOX_USE_PBZIP2
418 $(QUIET)tar --dereference --owner 0 --group 0 \
419 -cRhf $(patsubst %.bz2,%,$@) -C $(VBOX_LNX_INST_OUT_DIR)/archive $(VBOX_LNX_ARCH_FILES)
420 $(QUIET)pbzip2 $(patsubst %.bz2,%,$@)
421else
422 $(QUIET)tar --dereference --owner 0 --group 0 \
423 -cjRhf $@ -C $(VBOX_LNX_INST_OUT_DIR)/archive $(VBOX_LNX_ARCH_FILES)
424endif
425 $(QUIET)$(CHMOD) 0644 $@
426
427#
428# .tar for distribution with the files under VirtualBox-<ver>/.
429#
430$(PATH_STAGE_BIN)/VirtualBox.tar: $(VBOX_LNX_INST_ARCH_DEPS)
431 $(call MSG_L1,Packing $@)
432 $(QUIET)$(RM) -f -- $(VBOX_LNX_INST_OUT_DIR)/VirtualBox-$(VBOX_VERSION_STRING) $@ $(patsubst %.bz2,%,$@)
433 $(QUIET)$(LN_SYMLINK) $(VBOX_LNX_INST_OUT_DIR)/archive/ $(VBOX_LNX_INST_OUT_DIR)/VirtualBox-$(VBOX_VERSION_STRING)
434 $(QUIET)tar --dereference --owner 0 --group 0 \
435 -cRhf $@ -C $(VBOX_LNX_INST_OUT_DIR) \
436 $(addprefix VirtualBox-$(VBOX_VERSION_STRING)/,$(VBOX_LNX_ARCH_FILES))
437 $(QUIET)$(RM) -f -- $(VBOX_LNX_INST_OUT_DIR)/VirtualBox-$(VBOX_VERSION_STRING)
438
439
440# pattern rule for stripping and copying the VBOX_LNX_STRIP_BIN files to archive/
441$(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive/,$(VBOX_LNX_STRIP_BIN)): \
442 $(VBOX_LNX_INST_OUT_DIR)/archive/% : $(PATH_STAGE_BIN)/% \
443 $(if $(VBOX_NO_LINUX_RUN_INSTALLER),,\
444 $(VBOX_LNX_INST_OUT_DIR)/archive-dbg/$(VBOX_LNX_DBG_PATH)/%) \
445 | $$(dir $$@)
446 $(call MSG_INST_FILE,$<,$@)
447 $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
448 $(QUIET)$(if $(VBOX_NO_LINUX_RUN_INSTALLER),,objcopy --add-gnu-debuglink=$(subst $(VBOX_LNX_INST_OUT_DIR)/archive,$(VBOX_LNX_INST_OUT_DIR)/archive-dbg/$(VBOX_LNX_DBG_PATH),$@) $@)
449
450# pattern rule for striping and copying the VBOX_LNX_STRIP_OBJ files to archive/
451$(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive/,$(VBOX_LNX_STRIP_OBJ)): \
452 $(VBOX_LNX_INST_OUT_DIR)/archive/% : $(PATH_STAGE_BIN)/% | $$(dir $$@)
453 $(call MSG_INST_FILE,$<,$@)
454ifeq ($(VBOX_DO_STRIP),)
455 $(QUIET)$(INSTALL) -m 0644 $< $@
456else # strip to temp file because of umask.
457 $(QUIET)objcopy --strip-unneeded -R .comment $< $@.tmp
458 $(QUIET)$(INSTALL) -m 0644 $@.tmp $@
459 $(QUIET)$(RM) -f -- $@.tmp
460endif
461
462# special rule for the kernel modules
463$(VBOX_LNX_INST_OUT_DIR)/archive/src: $(PATH_STAGE_BIN)/src | $(dir $@)
464 $(call MSG_INST_SYM,$<,$@)
465 $(QUIET)$(RM) -Rf $@
466 $(QUIET)$(MKDIR) $@
467 $(QUIET)$(LN_SYMLINK) $< $@/vboxhost
468
469# pattern rule for linking the VBOX_LNX_NO_STRIP into archive/
470$(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive/,$(VBOX_LNX_NO_STRIP)): \
471 $(VBOX_LNX_INST_OUT_DIR)/archive/% : $(PATH_STAGE_BIN)/% | $$(dir $$@)
472 $(call MSG_INST_SYM,$<,$@)
473 $(QUIET)$(RM) -f $@
474 $(QUIET)$(LN_SYMLINK) $< $@
475
476# rules for creating directories in archive (the pattern rules depends on these).
477BLDDIRS += $(foreach d,\
478 archive \
479 archive/components \
480 archive/nls \
481 $(if $(VBOX_WITH_QT4_SUN),archive/accessible,) \
482 $(if $(VBOX_WITH_PYTHON),\
483 archive/sdk/installer \
484 archive/sdk/installer/vboxapi \
485 archive/sdk/bindings/xpcom/python/xpcom \
486 archive/sdk/bindings/xpcom/python/xpcom/client \
487 archive/sdk/bindings/xpcom/python/xpcom/server,) \
488 $(if $(VBOX_WITH_JXPCOM),\
489 archive/sdk/bindings/xpcom/java,) \
490 $(if $(and $(VBOX_WITH_EXTPACK_VNC),$(VBOX_WITHOUT_EXTPACK_VNC_PACKING)), \
491 archive/ExtensionPacks/VNC \
492 archive/ExtensionPacks/VNC/$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),) \
493 archive/additions \
494 install \
495 $(if $(VBOX_WITH_DTRACE),\
496 archive/dtrace \
497 archive/dtrace/lib \
498 archive/dtrace/lib/$(KBUILD_TARGET_ARCH) \
499 archive/dtrace/testcase/ \
500 archive/dtrace/testcase/$(KBUILD_TARGET_ARCH) \
501 archive/dtrace/scripts,) \
502,$(VBOX_LNX_INST_OUT_DIR)/$(d)/)
503
504
505#
506# .tar.bz2 for with the debug info.
507#
508$(PATH_STAGE_BIN)/VirtualBox-dbg.tar.bz2: \
509 $(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive-dbg/$(VBOX_LNX_DBG_PATH)/, $(VBOX_LNX_STRIP_BIN))
510 $(call MSG_L1,Packing $@)
511 $(QUIET)$(RM) -f -- $@ $(patsubst %.bz2,%,$@)
512ifdef VBOX_USE_PBZIP2
513 $(QUIET)tar --dereference --owner 0 --group 0 \
514 -cRhf $(patsubst %.bz2,%,$@) -C $(VBOX_LNX_INST_OUT_DIR)/archive-dbg \
515 $(addprefix $(VBOX_LNX_DBG_PATH)/,$(VBOX_LNX_STRIP_BIN))
516 $(QUIET)pbzip2 $(patsubst %.bz2,%,$@)
517else
518 $(QUIET)tar --dereference --owner 0 --group 0 \
519 -cjRhf $@ -C $(VBOX_LNX_INST_OUT_DIR)/archive-dbg \
520 $(addprefix $(VBOX_LNX_DBG_PATH)/,$(VBOX_LNX_STRIP_BIN))
521endif
522
523# pattern rule for copying the debug info from the VBOX_LNX_STRIP_BIN files into archive-dbg/$(VBOX_LNX_DBG_PATH)/
524$(addprefix $(VBOX_LNX_INST_OUT_DIR)/archive-dbg/$(VBOX_LNX_DBG_PATH)/,$(VBOX_LNX_STRIP_BIN)): \
525 $(VBOX_LNX_INST_OUT_DIR)/archive-dbg/$(VBOX_LNX_DBG_PATH)/% : $(PATH_STAGE_BIN)/% | $$(dir $$@)
526 $(call MSG_TOOL,copydbg,$<,$@)
527 $(QUIET)objcopy --only-keep-debug $< $@
528
529# rules for creating directories in archive-dbg (the pattern rules depends on these).
530BLDDIRS += $(foreach d,\
531 $(VBOX_LNX_DBG_PATH) \
532 $(VBOX_LNX_DBG_PATH)/components \
533,$(VBOX_LNX_INST_OUT_DIR)/archive-dbg/$(d)/)
534
535include $(FILE_KBUILD_SUB_FOOTER)
536
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