VirtualBox

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

Last change on this file since 7692 was 7304, checked in by vboxsync, 17 years ago

Frontends/VBoxHeadless: include VBoxFFmpegFB.so in the installer if we build it

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 8.8 KB
Line 
1# $Id: Makefile.kmk 7304 2008-03-05 13:02:00Z vboxsync $
2## @file
3# Makefile for the Linux installer.
4#
5
6#
7# Copyright (C) 2006-2007 innotek GmbH
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
18DEPTH = ../../../..
19include $(PATH_KBUILD)/header.kmk
20
21ifneq ($(BUILD_PLATFORM),linux)
22$(error "The Linux installer can only be built on Linux!") # yeah, right.
23endif
24
25VBOX_NO_LINUX_RUN_INSTALLER ?= $(VBOX_OSE)
26
27PROGRAMS = VBoxTunctl
28PACKING = $(if $(VBOX_NO_LINUX_RUN_INSTALLER),,\
29 $(PATH_BIN)/VirtualBox.run $(PATH_BIN)/VirtualBox-dbg.tar.bz2)
30PACKING += $(PATH_BIN)/VirtualBox.tar.bz2
31OTHER_CLEAN = $(addprefix $(PATH_TARGET)/install/,\
32 install.sh deffiles routines.sh \
33 VBoxAddIF.sh vboxdrv.sh vboxnet.sh \
34 VirtualBox.tar.bz2 LICENSE) \
35 $(wildcard $(PATH_TARGET)/VirtualBox-*) \
36 $(PATH_TARGET)/vboxdrv.sh $(PATH_TARGET)/vboxnet.sh
37INSTALLS = linux-bin linux-doc
38
39VBoxTunctl_TEMPLATE = VBOXR3EXE
40VBoxTunctl_SOURCES = tunctl.c
41
42#
43# Linux installs.
44#
45linux-bin_INST = bin/
46linux-bin_MODE = a+rx,u+w
47linux-bin_SOURCES = \
48 VBoxSysInfo.sh \
49 VBox.sh=>VBox.sh
50
51linux-doc_INST = bin/
52linux-doc_MODE = a+r,u+w
53linux-doc_SOURCES = \
54 $(if $(VBOX_OSE),,$(PATH_ROOT)/doc/License.txt=>LICENSE) \
55 VBox.png=>VBox.png
56
57# Strip these binaries
58LINUXSTRIPBIN = \
59 VBoxDD.so \
60 VBoxDD2.so \
61 $(if $(VBOX_WITH_FFMPEG),VBoxFFmpegFB.so,) \
62 VBoxManage \
63 VBoxREM.so \
64 VBoxRT.so \
65 $(if $(VBOX_WITH_VBOXSDL),VBoxSDL,) \
66 VBoxSettings.so \
67 VBoxSVC \
68 VBoxDDU.so \
69 VBoxVMM.so \
70 VBoxXPCOM.so \
71 VBoxXPCOMIPCD \
72 $(if $(VBOX_WITH_QTGUI),VBoxKeyboard.so,) \
73 $(if $(VBOX_WITH_QTGUI),VirtualBox,) \
74 VBoxTunctl \
75 components/VBoxC.so \
76 components/VBoxSVCM.so \
77 components/VBoxXPCOMIPCC.so
78
79# Do not remove relocation information of these binaries
80LINUXSTRIPOBJ = \
81 VBoxDD2GC.gc \
82 VBoxDD2R0.r0 \
83 VBoxDDGC.gc \
84 VBoxDDR0.r0 \
85 VMMGC.gc \
86 VMMR0.r0
87ifeq ($(BUILD_TARGET_ARCH),amd64)
88LINUXSTRIPOBJ += \
89 VBoxREM2.rel
90endif
91
92# Do not strip anything of these files
93LINUXNOSTRIP = \
94 $(if $(VBOX_OSE),,LICENSE) \
95 $(if $(VBOX_WITH_QTGUI),\
96 $(if $(VBOX_OSE),,License-$(VBOX_LICENSE_VER).html)) \
97 components/VBoxXPCOMBase.xpt \
98 components/VirtualBox_XPCOM.xpt \
99 VBoxSysInfo.sh \
100 VBox.sh \
101 VBox.png \
102 VBoxAddIF.sh \
103 $(if $(VBOX_WITH_QTGUI),VirtualBox.desktop,) \
104 $(if $(VBOX_WITH_QTGUI),$(foreach f,\
105 $(shell $(CAT_EXT) \
106 $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.txt),\
107 nls/VirtualBox_$(f).qm nls/qt_$(f).qm),) \
108 src \
109 sdk
110
111# Guest Additions
112LINUXNOSTRIP += \
113 $(if $(VBOX_OSE),,additions/VBoxGuestAdditions.iso)
114
115# Shared Folders
116LINUXSTRIPBIN += \
117 VBoxSharedFolders.so \
118 $(if $(VBOX_OSE),,VRDPAuth.so)
119
120# Shared Clipboard
121LINUXSTRIPBIN += \
122 VBoxSharedClipboard.so \
123 $(if $(VBOX_WITH_DEBUGGER_GUI),VBoxDbg.so,)
124
125ifdef VBOX_WITH_DOCS
126 LINUXNOSTRIP += \
127 UserManual.pdf
128 LINUXSTRIPBIN += \
129 $(if $(VBOX_WITH_QTGUI),kchmviewer,)
130 ifneq ($(wildcard $(PATH_BIN)/VirtualBox.chm),)
131 # our 64-bit tinderboxes are not able to generate VirtualBox.chm so far
132 # but for building .deb/.rpm packages we use precompiled binaries.
133 LINUXNOSTRIP += \
134 VirtualBox.chm
135 endif
136 ifneq ($(wildcard $(PATH_BIN)/VirtualBoxAPI.chm),)
137 # same applies to VirtualBoxAPI.chm
138 LINUXNOSTRIP += \
139 VirtualBoxAPI.chm
140 endif
141endif
142ifdef VBOX_WITH_VRDP
143 LINUXSTRIPBIN += \
144 VBoxVRDP.so
145
146 LINUXNOSTRIP += \
147 rdesktop-vrdp.tar.gz
148
149 ifndef VBOX_HEADLESS
150 LINUXNOSTRIP += \
151 rdesktop-vrdp-keymaps
152 LINUXSTRIPBIN += \
153 rdesktop-vrdp
154 endif
155endif
156ifdef VBOX_WITH_HEADLESS
157 LINUXSTRIPBIN += \
158 VBoxHeadless
159endif
160ifdef VBOX_WITH_WEBSERVICES
161 LINUXSTRIPBIN += \
162 vboxwebsrv \
163 webtest
164endif
165
166LINUXARCHFILES := $(LINUXSTRIPBIN) $(LINUXSTRIPOBJ) $(LINUXNOSTRIP)
167DBGPATH := usr/lib/debug/opt/VirtualBox-$(VBOX_VERSION_STRING)
168
169OTHER_CLEAN += $(addprefix $(PATH_TARGET)/archive/,$(LINUXARCHFILES)) \
170 $(addprefix $(PATH_TARGET)/archive-dbg/$(DBGPATH)/,$(LINUXSTRIPBIN))
171
172include $(PATH_KBUILD)/footer.kmk
173
174$(PATH_BIN)/VirtualBox.run: \
175 $(PATH_TARGET)/install/VirtualBox.tar.bz2 \
176 install.sh \
177 $(VBOX_VERSION_STAMP) \
178 routines.sh \
179 deffiles \
180 $(PATH_TARGET)/vboxnet.sh \
181 $(PATH_TARGET)/vboxdrv.sh \
182 $(if $(VBOX_OSE),,$(PATH_ROOT)/doc/License.txt)
183 $(call MSG_TOOL,makeself,,$@)
184 $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g" \
185 -e "s;_BUILD_;$(shell date);g" \
186 -e "s;_ARCH_;${BUILD_TARGET_ARCH};g" \
187 < install.sh > $(PATH_TARGET)/install/install.sh
188 $(QUIET)chmod 0744 $(PATH_TARGET)/install/install.sh
189 $(QUIET)$(INSTALL) -m 0755 routines.sh $(PATH_TARGET)/install
190 $(QUIET)$(INSTALL) -m 0755 deffiles $(PATH_TARGET)/install
191 $(QUIET)$(if $(VBOX_OSE),,$(INSTALL) -m 0644 $(PATH_ROOT)/doc/License.txt $(PATH_TARGET)/install/LICENSE)
192 $(QUIET)$(INSTALL) -m 0755 $(PATH_TARGET)/vboxnet.sh $(PATH_TARGET)/install
193 $(QUIET)$(INSTALL) -m 0755 $(PATH_TARGET)/vboxdrv.sh $(PATH_TARGET)/install
194 $(QUIET)$(RM) -f $@
195 $(QUIET)$(VBOX_MAKESELF) --follow --nocomp $(PATH_TARGET)/install $@ \
196 "VirtualBox for Linux installation" ./install.sh "\$$0 1> /dev/null"
197
198$(PATH_BIN)/VirtualBox-dbg.tar.bz2: \
199 $(addprefix $(PATH_TARGET)/archive-dbg/$(DBGPATH)/, $(LINUXSTRIPBIN))
200 $(call MSG_L1,Packing $@)
201 $(QUIET)tar --owner 0 --group 0 -cjRhf $@ -C $(PATH_TARGET)/archive-dbg \
202 $(addprefix $(DBGPATH)/,$(LINUXSTRIPBIN))
203
204$(PATH_TARGET)/vboxdrv.sh: vboxdrv.sh.in
205 $(QUIET)$(SED_EXT) -e "s|%NOLSB%|yes|g" $< > $@
206
207$(PATH_TARGET)/vboxnet.sh: vboxnet.sh.in
208 $(QUIET)$(SED_EXT) -e "s|%NOLSB%|yes|g" $< > $@
209
210# .tar.bz2 for converting into .run
211$(PATH_TARGET)/install/VirtualBox.tar.bz2: \
212 $(addprefix $(PATH_TARGET)/archive/, $(LINUXARCHFILES)) \
213 Makefile.kmk \
214 $(VBOX_VERSION_STAMP) \
215 $(PATH_TARGET)/VirtualBox-$(VBOX_VERSION_STRING)
216 $(call MSG_L1,Packing $@)
217 $(QUIET)$(MKDIR) -p $(@D)
218 $(QUIET)tar --owner 0 --group 0 -cjRhf $@ -C $(PATH_TARGET)/VirtualBox-$(VBOX_VERSION_STRING) $(LINUXARCHFILES)
219 $(QUIET)chmod 0644 $@
220
221# .tar.bz2 for distribution
222$(PATH_BIN)/VirtualBox.tar.bz2: \
223 $(addprefix $(PATH_TARGET)/archive/, $(LINUXARCHFILES)) \
224 Makefile.kmk \
225 $(VBOX_VERSION_STAMP) \
226 $(PATH_TARGET)/VirtualBox-$(VBOX_VERSION_STRING)
227 $(call MSG_L1,Packing $@)
228 $(QUIET)$(MKDIR) -p $(PATH_TARGET)
229 $(QUIET)tar --owner 0 --group 0 -cjRhf $@ -C $(PATH_TARGET) \
230 $(addprefix VirtualBox-$(VBOX_VERSION_STRING)/,$(LINUXARCHFILES))
231
232$(PATH_TARGET)/VirtualBox-$(VBOX_VERSION_STRING): $(PATH_TARGET)/archive
233 $(call MSG_INST_SYM,$<,$@)
234 $(QUIET)$(MKDIR) -p $(@D)
235 $(QUIET)rm -rf $@
236 $(QUIET)$(LN_SYMLINK) $< $@
237
238$(PATH_BIN)/VBoxAddIF.sh: VBoxAddIF.sh $(VBOX_VERSION_STAMP)
239 $(call MSG_GENERATE,,$@,$<)
240 $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g" $< > $@
241 $(QUIET)chmod 0755 $@
242
243$(PATH_BIN)/VirtualBox.desktop: VirtualBox.desktop $(VBOX_VERSION_STAMP)
244 $(call MSG_GENERATE,,$@,$<)
245ifdef VBOX_PATH_PACKAGE_DOCS
246 $(QUIET)$(SED) -e "s+\$$VBOX_DOC_PATH+$(VBOX_PATH_PACKAGE_DOCS)+" $< > $@
247else
248 $(QUIET)$(SED) -e "s+\$$VBOX_DOC_PATH+/opt/VirtualBox-$(VBOX_VERSION_STRING)+" $< > $@
249endif
250
251# Note: The -m <mode> feature of kmk_builtin_install does not work together with fakeroot!
252# Note: $(INSTALL) -s is currently not reliable when used in parallel builds. Fixed in 0.1.1.
253$(foreach f,$(LINUXSTRIPBIN),$(PATH_TARGET)/archive/$(f)): \
254 $(PATH_TARGET)/archive/% : $(PATH_BIN)/% \
255 $(if $(VBOX_NO_LINUX_RUN_INSTALLER),,\
256 $(PATH_TARGET)/archive-dbg/$(DBGPATH)/%) \
257 | $(call DIRDEP,$(PATH_TARGET)/archive)
258 $(call MSG_INST_FILE,$<,$@)
259 $(QUIET)install -D -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
260 $(QUIET)$(if $(VBOX_NO_LINUX_RUN_INSTALLER),,objcopy --add-gnu-debuglink=$(subst $(PATH_TARGET)/archive,$(PATH_TARGET)/archive-dbg/$(DBGPATH),$@) $@)
261
262$(foreach f,$(LINUXSTRIPOBJ),$(PATH_TARGET)/archive/$(f)): \
263 $(PATH_TARGET)/archive/% : $(PATH_BIN)/% | $(call DIRDEP,$(PATH_TARGET)/archive)
264 $(call MSG_INST_FILE,$<,$@)
265 $(QUIET)$(if $(VBOX_DO_STRIP),objcopy --strip-unneeded -R .comment $< $@,cp $< $@)
266
267$(foreach f,$(LINUXNOSTRIP),$(PATH_TARGET)/archive/$(f)): \
268 $(PATH_TARGET)/archive/% : $(PATH_BIN)/% | $(call DIRDEP,$(PATH_TARGET)/archive)
269 $(call MSG_INST_SYM,$<,$@)
270 $(QUIET)$(RM) -f $@
271 $(QUIET)$(MKDIR) -p $(@D)
272 $(QUIET)$(LN_SYMLINK) $< $@
273
274$(foreach d,archive archive-dbg/$(DBGPATH) archive-dbg/$(DBGPATH)/components install,$(PATH_TARGET)/$(d)/):
275 $(QUIET)$(MKDIR) -p $@
276
277$(foreach f,$(LINUXSTRIPBIN),$(PATH_TARGET)/archive-dbg/$(DBGPATH)/$(f)): \
278 $(PATH_TARGET)/archive-dbg/$(DBGPATH)/% : $(PATH_BIN)/% \
279 | $(call DIRDEP,$(PATH_TARGET)/archive-dbg/$(DBGPATH)/components)
280 $(call MSG_TOOL,copydbg,$<,$@)
281 $(QUIET)objcopy --only-keep-debug $< $@
282
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