VirtualBox

source: vbox/trunk/src/VBox/Installer/freebsd/Makefile.kmk@ 80651

Last change on this file since 80651 was 80360, checked in by vboxsync, 5 years ago

HostServices/SharedOpenGL: Remove most of the chromium related HGCM service bits leaving only the renderspu and OpenGLTest app for now as they are used for VMSVGA as well (OpenGLTest needs to be rewritten), bugref:9529

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.6 KB
Line 
1# $Id: Makefile.kmk 80360 2019-08-21 08:41:18Z vboxsync $
2## @file
3# Makefile for the FreeBSD installer.
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
21ifneq ($(KBUILD_HOST),freebsd)
22 $(error "The FreeBSD installer can only be built on FreeBSD!")
23endif
24
25#
26# Globals and targets.
27#
28VBOX_PATH_FBSD_INST_SRC := $(PATH_SUB_CURRENT)
29VBOX_FBSD_INST_OUT_DIR := $(PATH_TARGET)/Installer/freebsd
30VBOX_FBSD_INST_STAGE_DIR := $(PATH_TARGET)/Installer/freebsd/install
31VBOX_FBSD_DBG_PATH := usr/lib/debug/opt/VirtualBox
32VBOX_FBSD_PACKAGE_NAME = VirtualBox-$(VBOX_VERSION_STRING)-r$(VBOX_SVN_REV).tbz
33VBOX_FBSD_INST_LIB_DIR := $(VBOX_FBSD_INST_STAGE_DIR)/lib
34VBOX_FBSD_INST_BIN_DIR := $(VBOX_FBSD_INST_STAGE_DIR)/bin
35VBOX_FBSD_INST_LIBVBOX_DIR := $(VBOX_FBSD_INST_LIB_DIR)/virtualbox
36VBOX_FBSD_INST_SHARE_DIR := $(VBOX_FBSD_INST_STAGE_DIR)/share
37VBOX_FBSD_INST_SHAREAPP_DIR := $(VBOX_FBSD_INST_SHARE_DIR)/applications
38VBOX_FBSD_INST_SHAREICON_DIR := $(VBOX_FBSD_INST_SHARE_DIR)/pixmaps
39VBOX_FBSD_INST_SHAREVBOX_DIR := $(VBOX_FBSD_INST_SHARE_DIR)/virtualbox
40
41# Unset this to speed up things during makefile hacking.
42VBOX_FBSD_INST_DEP_ON_MAKEFILE := $(MAKEFILE_CURRENT)
43
44BLDDIRS += $(VBOX_FBSD_INST_OUT_DIR) $(VBOX_FBSD_INST_STAGE_DIR)
45PACKING += $(PATH_STAGE_BIN)/$(VBOX_FBSD_PACKAGE_NAME)
46
47OTHER_CLEAN += \
48 $(addprefix $(VBOX_FBSD_INST_STAGE_DIR)/,\
49 pkg_plist \
50 LICENSE) \
51 $(wildcard $(VBOX_FBSD_INST_OUT_DIR)/VirtualBox-*)
52
53#
54# FreeBSD installs.
55#
56INSTALLS += freebsd-misc
57freebsd-misc_INST = bin/
58freebsd-misc_MODE = a+r,u+w
59freebsd-misc_SOURCES = \
60 $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/$(if $(VBOX_OSE),OSE,NonOSE)/VirtualBox_32px.png=>VBox.png \
61 $(if $(VBOX_OSE),,$(VBOX_BRAND_LICENSE_TXT)=>LICENSE) \
62 $(if $(VBOX_WITH_QTGUI),$(freebsd-misc_0_OUTDIR)/virtualbox.desktop,)
63freebsd-misc_CLEAN = $(freebsd-misc_0_OUTDIR)/virtualbox.desktop
64
65$$(PATH_freebsd-misc)/virtualbox.desktop: $(PATH_SUB_CURRENT)/virtualbox.desktop $(VBOX_VERSION_STAMP) | $$(dir $$@)
66 $(call MSG_GENERATE,,$@,$<)
67ifdef VBOX_PATH_PACKAGE_DOCS
68 $(QUIET)$(SED) -e "s+\$$VBOX_DOC_PATH+$(VBOX_PATH_PACKAGE_DOCS)+" --output $@ $<
69else
70 $(QUIET)$(SED) -e "s+\$$VBOX_DOC_PATH+/opt/VirtualBox+" --output $@ $<
71endif
72
73
74
75#
76# The files residing in bin/ that we'll ship.
77#
78
79# Strip these binaries
80VBOX_FBSD_STRIP_BIN = \
81 VBoxDD.so \
82 VBoxDD2.so \
83 VBoxREM.so \
84 VBoxDDU.so \
85 VBoxVMM.so \
86 $(if $(eq $(KBUILD_TARGET_ARCH),x86),VBoxREM32.so,) \
87 $(if $(eq $(KBUILD_TARGET_ARCH),x86),VBoxREM64.so,) \
88 VBoxRT.so \
89 $(if $(VBOX_WITH_VBOXSDL),VBoxSDL $(if $(VBOX_WITH_HARDENING),VBoxSDL.so),) \
90 $(if $(VBOX_WITH_SHARED_CLIPBOARD), VBoxSharedClipboard.so,) \
91 $(if $(VBOX_WITH_SHARED_FOLDERS), VBoxSharedFolders.so,) \
92 $(if $(VBOX_WITH_GUEST_PROPS),VBoxGuestPropSvc.so,) \
93 $(if $(VBOX_WITH_GUEST_CONTROL),VBoxGuestControlSvc.so,) \
94 VBoxHostChannel.so \
95 $(if $(VBOX_WITH_MAIN), \
96 VBoxManage \
97 VBoxNetDHCP $(if $(VBOX_WITH_HARDENING),VBoxNetDHCP.so,) \
98 VBoxNetAdpCtl \
99 VBoxSVC \
100 VBoxXPCOM.so \
101 VBoxXPCOMC.so \
102 VBoxXPCOMIPCD \
103 components/VBoxXPCOMIPCC.so \
104 components/VBoxSVCM.so \
105 components/VBoxC.so,) \
106 VBoxTestOGL \
107 $(if $(VBOX_WITH_PYTHON),VBoxPython.so,) \
108 $(if $(VBOX_WITH_DTRACE),VBoxDTrace,)
109
110# Do not remove relocation information of these binaries
111VBOX_FBSD_STRIP_OBJ = \
112 VBoxDDRC.rc \
113 VBoxDDR0.r0 \
114 VMMRC.rc \
115 VMMR0.r0
116
117# Do not strip anything of these files
118VBOX_FBSD_NO_STRIP = \
119 $(if $(VBOX_OSE),,LICENSE) \
120 $(if $(VBOX_WITH_MAIN), \
121 components/VBoxXPCOMBase.xpt \
122 components/VirtualBox_XPCOM.xpt) \
123 vboxdrv.tar.gz
124
125# EFI firmware
126ifdef VBOX_WITH_EFIFW_PACKING
127 VBOX_FBSD_NO_STRIP += \
128 VBoxEFI32.fd \
129 VBoxEFI64.fd
130endif
131
132# Symlinks residing in bin/
133VBOX_FBSD_SYMLINKS = \
134 $(if $(VBOX_WITH_MAIN), \
135 VBoxManage \
136 VBoxSVC) \
137 $(if $(VBOX_WITH_VBOXSDL),VBoxSDL,) \
138 $(if $(VBOX_WITH_DTRACE),VBoxDTrace,)
139
140# Qt GUI
141ifdef VBOX_WITH_QTGUI
142 include $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.kmk
143 VBOX_FBSD_STRIP_BIN += \
144 VBoxKeyboard.so \
145 VirtualBox \
146 $(if $(VBOX_WITH_HARDENING),VirtualBox.so) \
147 $(if $(VBOX_WITH_DEBUGGER_GUI),VBoxDbg.so DbgPlugInDiggers.so,)
148 VBOX_FBSD_SYMLINKS += \
149 VirtualBox
150 VBOX_FBSD_NO_STRIP += \
151 $(VBOX_LICENSE_FILES) \
152 $(if $(VBOX_WITH_ORACLE_QT),$(notdir $(wildcard $(PATH_STAGE_BIN)/lib*VBox*)),) \
153 $(if $(VBOX_WITH_ORACLE_QT),accessible/libqtaccessiblewidgets.so,) \
154 $(foreach f,$(VBOX_APPROVED_GUI_LANGUAGES),nls/VirtualBox_$(f).qm nls/qt_$(f).qm)
155 VBOX_FBSD_DESKTOP_FILE = \
156 virtualbox.desktop
157 VBOX_FBSD_ICON_FILE = \
158 VBox.png
159endif
160
161# Guest Additions
162ifdef VBOX_WITH_ADDITIONS_PACKING
163 VBOX_FBSD_NO_STRIP += \
164 additions/VBoxGuestAdditions.iso
165endif
166
167# Documentation
168ifdef VBOX_WITH_DOCS_PACKING
169 VBOX_FBSD_NO_STRIP += \
170 VirtualBox.chm UserManual.pdf \
171 $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),VirtualBox_$(f).chm UserManual_$(f).pdf)
172 VBOX_FBSD_STRIP_BIN += \
173 $(if $(VBOX_WITH_KCHMVIEWER),kchmviewer,)
174endif
175
176# VRDP
177ifdef VBOX_WITH_VRDP
178 VBOX_FBSD_STRIP_BIN += \
179 VBoxVRDP.so \
180 VBoxAuth.so
181 VBOX_FBSD_NO_STRIP += \
182 rdesktop-vrdp.tar.gz
183 ifdef VBOX_WITH_VRDP_RDESKTOP
184# VBOX_FBSD_NO_STRIP += \
185# rdesktop-vrdp-keymaps
186 VBOX_FBSD_STRIP_BIN += \
187 rdesktop-vrdp
188 endif
189endif
190
191# Headless
192ifdef VBOX_WITH_HEADLESS
193 VBOX_FBSD_STRIP_BIN += \
194 VBoxHeadless \
195 $(if $(VBOX_WITH_HARDENING),VBoxHeadless.so)
196 VBOX_FBSD_SYMLINKS += \
197 VBoxHeadless
198endif
199
200# Webservices
201ifdef VBOX_WITH_WEBSERVICES
202 VBOX_FBSD_STRIP_BIN += \
203 vboxwebsrv
204 VBOX_FBSD_SYMLINKS += \
205 vboxwebsrv
206endif
207
208# DTrace library, testcase and scripts (as the rest of this file, this makes bold
209# ASSUMPTIONS about VBPX_INST_XXX variable values).
210ifdef VBOX_WITH_DTRACE
211 VBOX_FBSD_NO_STRIP += \
212 $(addprefix dtrace/lib/$(KBUILD_TARGET_ARCH)/,$(VBOXINST_DTRACE_LIB_ARCH_FILES)) \
213 $(addprefix dtrace/testcase/$(KBUILD_TARGET_ARCH)/,$(VBOXINST_DTRACE_TESTCASE_ARCH_FILES)) \
214 $(addprefix dtrace/scripts/,$(VBOXINST_DTRACE_SCRIPTS_FILES))
215endif
216
217#
218# All the bin files that goes into the archives.
219#
220VBOX_FBSD_ARCH_FILES := $(VBOX_FBSD_STRIP_BIN) $(VBOX_FBSD_STRIP_OBJ) $(VBOX_FBSD_NO_STRIP)
221
222# Cleanup of the files we copy/symlink from bin.
223OTHER_CLEAN += $(addprefix $(VBOX_FBSD_INST_LIBVBOX_DIR)/,$(VBOX_FBSD_ARCH_FILES))
224
225#
226# The module source archive
227#
228$(PATH_STAGE_BIN)/vboxdrv.tar.gz: \
229 src
230 $(call MSG_TOOL, export_modules.sh,,$@)
231 $(QUIET)$(PATH_STAGE_BIN)/export_modules.sh $@
232
233#
234# The generic installer.
235## @todo r=aeichner: Create pkg_plist dynamically based on the available features
236#
237$(PATH_STAGE_BIN)/$(VBOX_FBSD_PACKAGE_NAME): \
238 $(VBOX_VERSION_STAMP) \
239 $(VBOX_FBSD_INST_OUT_DIR)/pkg_plist \
240 $(addprefix $(VBOX_FBSD_INST_LIBVBOX_DIR)/,$(VBOX_FBSD_ARCH_FILES)) \
241 $(addprefix $(VBOX_FBSD_INST_BIN_DIR)/,$(VBOX_FBSD_SYMLINKS)) \
242 $(if $(VBOX_OSE),,$(VBOX_BRAND_LICENSE_TXT)) \
243 $(if $(VBOX_WITH_QTGUI),$(addprefix $(VBOX_FBSD_INST_SHAREAPP_DIR)/,$(VBOX_FBSD_DESKTOP_FILE)),) \
244 $(if $(VBOX_WITH_QTGUI),$(addprefix $(VBOX_FBSD_INST_SHAREICON_DIR)/,$(VBOX_FBSD_ICON_FILE)),) \
245 $(VBOX_PATH_FBSD_INST_SRC)/postinstall.sh \
246 $(VBOX_PATH_FBSD_INST_SRC)/postdeinstall.sh
247 $(call MSG_TOOL,pkg_create,,$@)
248 $(QUIET)$(RM) -f $@
249 $(QUIET)pkg_create \
250 -I $(VBOX_PATH_FBSD_INST_SRC)/postinstall.sh \
251 -K $(VBOX_PATH_FBSD_INST_SRC)/postdeinstall.sh \
252 -c $(VBOX_PATH_FBSD_INST_SRC)/pkg-comment \
253 -d $(VBOX_PATH_FBSD_INST_SRC)/pkg-descr \
254 -f $(VBOX_FBSD_INST_OUT_DIR)/pkg_plist \
255 -p /usr/local \
256 -s $(VBOX_FBSD_INST_STAGE_DIR) \
257 $@
258 $(QUIET)$(RM) -Rf $(VBOX_FBSD_INST_STAGE_DIR)
259
260$(addprefix $(VBOX_FBSD_INST_LIBVBOX_DIR)/,$(VBOX_FBSD_STRIP_BIN)): \
261 $(VBOX_FBSD_INST_LIBVBOX_DIR)/% : $(PATH_STAGE_BIN)/%
262 $(call MSG_INST_FILE,$<,$@)
263 $(QUIET)$(INSTALL) -d $(dir $@)
264 $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
265
266# pattern rule for striping and copying the VBOX_FBSD_STRIP_OBJ files to install/lib/virtualbox
267$(addprefix $(VBOX_FBSD_INST_LIBVBOX_DIR)/,$(VBOX_FBSD_STRIP_OBJ)): \
268 $(VBOX_FBSD_INST_LIBVBOX_DIR)/% : $(PATH_STAGE_BIN)/%
269 $(call MSG_INST_FILE,$<,$@)
270 $(QUIET)$(INSTALL) -d $(dir $@)
271ifeq ($(VBOX_DO_STRIP),)
272 $(QUIET)$(INSTALL) -m 0644 $< $@
273else # strip to temp file because of umask.
274 $(QUIET)objcopy --strip-unneeded -R .comment $< $@.tmp
275 $(QUIET)$(INSTALL) -m 0644 $@.tmp $@
276 $(QUIET)$(RM) -f -- $@.tmp
277endif
278
279# pattern rule for linking the VBOX_FBSD_NO_STRIP into lib/virtualbox/
280$(addprefix $(VBOX_FBSD_INST_LIBVBOX_DIR)/,$(VBOX_FBSD_NO_STRIP)): \
281 $(VBOX_FBSD_INST_LIBVBOX_DIR)/% : $(PATH_STAGE_BIN)/%
282 $(call MSG_INST_FILE,$<,$@)
283 $(QUIET)$(INSTALL) -d $(dir $@)
284 $(QUIET)$(RM) -f $@
285 $(QUIET)$(INSTALL) -m 0644 $< $@
286
287# pattern rule for symlinking the VBOX_FBSD_SYMLINKS into bin/
288$(addprefix $(VBOX_FBSD_INST_BIN_DIR)/,$(VBOX_FBSD_SYMLINKS)): \
289 $(VBOX_FBSD_INST_BIN_DIR)/% : $(PATH_STAGE_BIN)/%
290 $(call MSG_INST_SYM,$<,$@)
291 $(QUIET)$(INSTALL) -d $(dir $@)
292 $(QUIET)$(RM) -f $@
293 $(QUIET)$(LN_SYMLINK) ../lib/virtualbox/$(notdir $@) $@
294
295# pattern rule for copying the VBOX_FBSD_DESKTOP_FILE into share/applications/
296$(addprefix $(VBOX_FBSD_INST_SHAREAPP_DIR)/,$(VBOX_FBSD_DESKTOP_FILE)): \
297 $(VBOX_FBSD_INST_SHAREAPP_DIR)/% : $(PATH_STAGE_BIN)/%
298 $(call MSG_INST_FILE,$<,$@)
299 $(QUIET)$(INSTALL) -d $(dir $@)
300 $(QUIET)$(RM) -f $@
301 $(QUIET)$(INSTALL) -m 0644 $< $@
302
303# pattern rule for copying the VBOX_FBSD_ICON_FILE into share/pixmaps/
304$(addprefix $(VBOX_FBSD_INST_SHAREICON_DIR)/,$(VBOX_FBSD_ICON_FILE)): \
305 $(VBOX_FBSD_INST_SHAREICON_DIR)/% : $(PATH_STAGE_BIN)/%
306 $(call MSG_INST_FILE,$<,$@)
307 $(QUIET)$(INSTALL) -d $(dir $@)
308 $(QUIET)$(RM) -f $@
309 $(QUIET)$(INSTALL) -m 0644 $< $@
310
311# Create pkg_plist
312$(VBOX_FBSD_INST_OUT_DIR)/pkg_plist: \
313 $(VBOX_PATH_FBSD_INST_SRC)/pkg_plist
314 $(call MSG_INST_FILE,$<,$@)
315 $(QUIET)$(INSTALL) -d $(dir $@)
316 $(QUIET)$(SED) \
317 -e "s;_VBOX_REM_32BIT_MODULE_;$(if $(eq $(KBUILD_TARGET_ARCH),x86),VBoxREM32.so,);g" \
318 -e "s;_VBOX_REM_64BIT_MODULE_;$(if $(eq $(KBUILD_TARGET_ARCH),x86),VBoxREM64.so,);g" \
319 --output $@ \
320 $<
321ifdef VBOX_WITH_DTRACE
322 $(QUIET)$(APPEND) -n "$@" "@mode 644" \
323 $(addprefix lib/virtualbox/dtrace/lib/$(KBUILD_TARGET_ARCH)/,$(VBOXINST_DTRACE_LIB_ARCH_FILES)) \
324 $(addprefix lib/virtualbox/dtrace/testcase/$(KBUILD_TARGET_ARCH)/,$(VBOXINST_DTRACE_TESTCASE_ARCH_FILES)) \
325 $(addprefix lib/virtualbox/dtrace/scripts/,$(VBOXINST_DTRACE_SCRIPTS_FILES)) \
326 "@mode 755" \
327 "bin/VBoxDTrace"
328endif
329
330include $(FILE_KBUILD_SUB_FOOTER)
331
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