VirtualBox

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

Last change on this file since 107381 was 107327, checked in by vboxsync, 7 weeks ago

Additions: The "use last arch specific additions path for VBOX_PATH_ADDITIONS.win" approach falls to pieces if the last one uses different signing parameters (no dual signing) than the "usual" arch. Made this a bit smarter by picking the one for the target arch active during packing, but overall this approach isn't right. It would need merging of file lists across all archs and removing 'relative path duplicates' (which still assumes that same name=same content which isn't absolutely guaranteed either).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 18.5 KB
Line 
1# $Id: Makefile.kmk 107327 2024-12-13 21:29:59Z vboxsync $
2## @file
3# Top-level makefile for the VirtualBox Guest Additions.
4#
5
6#
7# Copyright (C) 2006-2024 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# SPDX-License-Identifier: GPL-3.0-only
26#
27
28SUB_DEPTH = ../../..
29include $(KBUILD_PATH)/subheader.kmk
30
31#
32# Globals
33#
34VBOX_PATH_ADDITIONS_SRC := $(PATH_SUB_CURRENT)
35
36#
37# Cross building of the additions is generally done by remote building
38# by means of smbfs, cifs, VBOX_ONLY_ADDITIONS=1 and setting KBUILD_TARGET
39# and KBUILD_TARGET_ARCH to the desired target and architecture.
40#
41# Limited support for cross building the windows additions using wine
42# is provided. There are a couple of issues with the approach (lack of
43# signing, no VC++ 8 support, ++) that makes it unsuitable for releases.
44#
45#
46# Note! VBOX_WITH_ADDITIONS is checked for by our parent makefile.
47#
48# Note! VBOX_WITH_X11_ADDITIONS is set in Config.kmk
49#
50# Note! The additions build box will set the VBOX_WITH_ADDITIONS_ISO.win.x86
51# variables before invoking us from the root makefile.
52#
53# ==> All we have to worry about is what to do on the target we're on.
54#
55VBOX_WITH_ADDITIONS_ISO.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) = 1
56
57# Include sub-makefiles.
58include $(PATH_SUB_CURRENT)/common/Makefile.kmk
59
60ifdef VBOX_WITH_X11_ADDITIONS
61 include $(PATH_SUB_CURRENT)/x11/Makefile.kmk
62endif
63
64ifeq ($(KBUILD_TARGET),freebsd)
65 include $(PATH_SUB_CURRENT)/freebsd/Makefile.kmk
66endif
67ifeq ($(KBUILD_TARGET),linux)
68 include $(PATH_SUB_CURRENT)/linux/Makefile.kmk
69endif
70ifeq ($(KBUILD_TARGET),os2)
71 include $(PATH_SUB_CURRENT)/os2/Makefile.kmk
72endif
73ifeq ($(KBUILD_TARGET),solaris)
74 include $(PATH_SUB_CURRENT)/solaris/Makefile.kmk
75endif
76ifeq ($(KBUILD_TARGET),win)
77 include $(PATH_SUB_CURRENT)/3D/win/VBoxWddmUmHlp/Makefile.kmk
78 ifdef VBOX_WITH_MESA3D
79 include $(PATH_SUB_CURRENT)/3D/Makefile.kmk
80 endif
81 include $(PATH_SUB_CURRENT)/WINNT/Makefile.kmk
82endif
83ifeq ($(KBUILD_TARGET),darwin)
84 include $(PATH_SUB_CURRENT)/darwin/Makefile.kmk
85endif
86ifeq ($(KBUILD_TARGET),haiku)
87 include $(PATH_SUB_CURRENT)/haiku/Makefile.kmk
88endif
89
90ifeq ($(KBUILD_TARGET),linux)
91
92 INSTALLS += LnxAddIso-scripts
93 LnxAddIso-scripts_INST = $(INST_ADDITIONS)
94 LnxAddIso-scripts_MODE = a+rx,u+w
95 LnxAddIso-scripts_SOURCES = \
96 ../Installer/linux/runasroot.sh \
97 linux/installer/autorun.sh
98
99endif # KBUILD_TARGET == linux
100ifeq ($(KBUILD_TARGET),win)
101 #
102 # Inf2Cat requires all the files referenced in the .inf file
103 # to be present in the directory, so we have to do this from here,
104 # since VBoxGuest.sys is being built from the common sources.
105 #
106 INSTALLS += VBoxGuest-inf
107 VBoxGuest-inf_INST = $(INST_ADDITIONS)
108 VBoxGuest-inf_MODE = a+r,u+w
109 VBoxGuest-inf_SOURCES = \
110 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.inf
111 VBoxGuest-inf_SOURCES.x86 = \
112 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxGuestEarlyNT.inf
113 VBoxGuest-inf_CLEAN = $(VBoxGuest-inf_SOURCES)
114 VBoxGuest-inf_CLEAN.x86 = $(VBoxGuest-inf_SOURCES.x86)
115 VBoxGuest-inf_BLDDIRS = $(PATH_TARGET)/VBoxGuestCat.dir
116 VBoxGuest-inf_BLDDIRS.x86 = $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir
117
118 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.inf: $(PATH_SUB_CURRENT)/common/VBoxGuest/win/VBoxGuest.inf $(MAKEFILE_CURRENT) | $$(dir $$@)
119 $(call MSG_GENERATE,VBoxGuest-inf,$@,$<)
120 $(call VBOX_EDIT_INF_FN,$<,$@)
121
122 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxGuestEarlyNT.inf: $(PATH_SUB_CURRENT)/common/VBoxGuest/win/VBoxGuestEarlyNT.inf $(MAKEFILE_CURRENT) | $$(dir $$@)
123 $(call MSG_GENERATE,VBoxGuestEarlyNT-inf,$@,$<)
124 $(call VBOX_EDIT_INF_FN,$<,$@)
125
126 if defined(VBOX_SIGNING_MODE) && defined(VBOX_SIGN_ADDITIONS)
127 VBoxGuest-inf_SOURCES += \
128 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.cat \
129 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.cat=>VBoxGuest-PreW10.cat \
130 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.sys \
131 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxControl.exe \
132 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxTray.exe
133 VBoxGuest-inf_SOURCES.x86 += \
134 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxGuestEarlyNT.cat
135
136 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.sys \
137 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxGuest.sys: $$(VBoxGuest_1_TARGET) | $$(dir $$@)
138 $(INSTALL) -m 644 $< $(@D)
139
140 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxControl.exe \
141 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxControl.exe: $$(VBoxControl_1_TARGET) | $$(dir $$@)
142 $(INSTALL) -m 755 $< $(@D)
143
144 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxTray.exe \
145 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxTray.exe: $$(VBoxTray_1_TARGET) | $$(dir $$@)
146 $(INSTALL) -m 755 $< $(@D)
147
148 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.cat: \
149 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.inf \
150 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxGuest.sys \
151 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxControl.exe \
152 $(PATH_TARGET)/VBoxGuestCat.dir/VBoxTray.exe
153 $(call MSG_TOOL,Inf2Cat,VBoxGuest-inf,$@,$<)
154 $(call VBOX_MAKE_CAT_FN, $(@D),$@)
155
156 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxGuestEarlyNT.cat: \
157 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxGuestEarlyNT.inf \
158 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxGuest.sys \
159 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxControl.exe \
160 $(PATH_TARGET)/VBoxGuestEarlyNTCat.dir/VBoxTray.exe
161 $(call MSG_TOOL,Inf2Cat,VBoxGuestEarlyNT-inf,$@,$<)
162 $(call VBOX_MAKE_CAT_FN, $(@D),$@)
163 endif # signing
164endif # KBUILD_TARGET == win
165
166# The packing target rule, but only if we're on the local build box.
167# (VBOX_WITHOUT_ADDITIONS_ISO is used by the additions build box, see the root makefile.)
168ifndef VBOX_WITHOUT_ADDITIONS_ISO
169 PACKING += $(VBOX_PATH_ADDITIONS_ISO)/VBoxGuestAdditions.iso
170endif
171
172include $(FILE_KBUILD_SUB_FOOTER)
173
174#
175# File per-OS/arch file specs for the additions iso (alphabetical order).
176#
177# We test for the VBOX_WITH_ADDITIONS_ISO.os.arch so that we don't have to
178# do the $(if )'ing down where the GUESTADDITIONS_FILESPEC.os.arch down
179# in the dependency list and RTIsoMaker command.
180#
181
182# Darwin / Mac OS X
183## @todo Create .pkg files not run files. The build server shall create a combined packaged, goverend by
184# the VBOX_WITH_COMBINED_DARWIN_GUEST_PACKAGE macro.
185ifdef VBOX_WITH_ADDITIONS_ISO.darwin.x86
186 VBOX_PATH_ADDITIONS.darwin.x86 = $(PATH_OUT_BASE)/darwin.x86/$(KBUILD_TYPE)/dist/additions
187 GUESTADDITIONS_FILESPEC.darwin.x86 = \
188 VBoxDarwinAdditionsLegacy.pkg=$(VBOX_PATH_ADDITIONS.darwin.x86)/VBoxGuestAdditions.pkg
189 ifndef VBOX_WITH_ADDITIONS_ISO.darwin.amd64
190 GUESTADDITIONS_FILESPEC.darwin.x86 += \
191 VBoxDarwinAdditionsUninstall.tool=$(VBOX_PATH_ADDITIONS.darwin.x86)/VBoxDarwinAdditionsUninstall.tool
192 endif
193endif
194
195ifdef VBOX_WITH_ADDITIONS_ISO.darwin.amd64
196 VBOX_PATH_ADDITIONS.darwin.amd64 = $(PATH_OUT_BASE)/darwin.amd64/$(KBUILD_TYPE)/dist/additions
197 GUESTADDITIONS_FILESPEC.darwin.amd64 = \
198 VBoxDarwinAdditions.pkg=$(VBOX_PATH_ADDITIONS.darwin.amd64)/VBoxGuestAdditions.pkg
199 ifndef VBOX_WITH_ADDITIONS_ISO.darwin.x86
200 GUESTADDITIONS_FILESPEC.darwin.amd64 += \
201 VBoxDarwinAdditionsUninstall.tool=$(VBOX_PATH_ADDITIONS.darwin.amd64)/VBoxDarwinAdditionsUninstall.tool
202 endif
203endif
204
205# FreeBSD
206ifdef VBOX_WITH_ADDITIONS_ISO.freebsd.amd64
207 VBOX_PATH_ADDITIONS.freebsd.amd64 = $(PATH_OUT_BASE)/freebsd.amd64/$(KBUILD_TYPE)/bin/additions
208 GUESTADDITIONS_FILESPEC.freebsd.amd64 = \
209 VBoxFreeBSDAdditions-amd64.tbz=$(VBOX_PATH_ADDITIONS.freebsd.amd64)/VBoxFreeBSDAdditions.tbz
210endif
211ifdef VBOX_WITH_ADDITIONS_ISO.freebsd.x86
212 VBOX_PATH_ADDITIONS.freebsd.x86 = $(PATH_OUT_BASE)/freebsd.x86/$(KBUILD_TYPE)/bin/additions
213 GUESTADDITIONS_FILESPEC.freebsd.x86 = \
214 VBoxFreeBSDAdditions-x86.tbz=$(VBOX_PATH_ADDITIONS.freebsd.x86)/VBoxFreeBSDAdditions.tbz
215endif
216
217# GNU/Linux
218ifdef VBOX_WITH_ADDITIONS_ISO.linux.amd64
219 VBOX_PATH_ADDITIONS.linux.amd64 = $(PATH_OUT_BASE)/linux.amd64/$(KBUILD_TYPE)/bin/additions
220 ifdef VBOX_WITH_COMBINED_LINUX_GUEST_PACKAGE
221 VBOX_LNX_ADD_AMD64_RUN_PKG = VBoxLinuxAdditions.run
222 else
223 VBOX_LNX_ADD_AMD64_RUN_PKG = VBoxLinuxAdditions-amd64.run
224 endif
225 GUESTADDITIONS_FILESPEC.linux.amd64 = \
226 $(VBOX_LNX_ADD_AMD64_RUN_PKG)=$(VBOX_PATH_ADDITIONS.linux.amd64)/VBoxLinuxAdditions.run
227endif
228ifdef VBOX_WITH_LNX_ARM64_ADDITIONS
229 ifdef VBOX_WITH_ADDITIONS_ISO.linux.arm64
230 VBOX_PATH_ADDITIONS.linux.arm64 = $(PATH_OUT_BASE)/linux.arm64/$(KBUILD_TYPE)/bin/additions
231 # Use specific check for arm64 platform because it currently is built separately and
232 # therefore cannot be combined into the x86/amd64 installer package.
233 ifdef VBOX_WITH_COMBINED_LINUX_GUEST_PACKAGE_INCLUDING_ARM64
234 VBOX_LNX_ADD_ARM64_RUN_PKG = VBoxLinuxAdditions.run
235 else
236 VBOX_LNX_ADD_ARM64_RUN_PKG = VBoxLinuxAdditions-arm64.run
237 endif
238 GUESTADDITIONS_FILESPEC.linux.arm64 = \
239 $(VBOX_LNX_ADD_ARM64_RUN_PKG)=$(VBOX_PATH_ADDITIONS.linux.arm64)/VBoxLinuxAdditions.run
240 endif
241endif
242ifdef VBOX_WITH_ADDITIONS_ISO.linux.x86
243 VBOX_PATH_ADDITIONS.linux.x86 = $(PATH_OUT_BASE)/linux.x86/$(KBUILD_TYPE)/bin/additions
244 ## @todo 64-bit additions: rename this package, update docs (?) and tests (?). create wrapper? create gnome/kde autorun app (xplatform) ?
245 ifdef VBOX_WITH_COMBINED_LINUX_GUEST_PACKAGE
246 VBOX_LNX_ADD_X86_RUN_PKG = VBoxLinuxAdditions.run
247 else
248 VBOX_LNX_ADD_X86_RUN_PKG = VBoxLinuxAdditions-x86.run
249 endif
250 GUESTADDITIONS_FILESPEC.linux.x86 = \
251 $(VBOX_LNX_ADD_X86_RUN_PKG)=$(VBOX_PATH_ADDITIONS.linux.x86)/VBoxLinuxAdditions.run \
252 runasroot.sh=$(VBOX_PATH_ADDITIONS.linux.x86)/runasroot.sh \
253 autorun.sh=$(VBOX_PATH_ADDITIONS.linux.x86)/autorun.sh
254endif
255
256# IBM OS/2
257ifdef VBOX_WITH_ADDITIONS_ISO.os2.x86
258 VBOX_PATH_ADDITIONS.os2.x86 = $(PATH_OUT_BASE)/os2.x86/$(KBUILD_TYPE)/bin/additions
259 GUESTADDITIONS_FILESPEC.os2.x86 = \
260 OS2/VBoxGuest.sys=$(VBOX_PATH_ADDITIONS.os2.x86)/VBoxGuest.sys \
261 OS2/VBoxSF.ifs=$(VBOX_PATH_ADDITIONS.os2.x86)/VBoxSF.ifs \
262 OS2/VBoxService.exe=$(VBOX_PATH_ADDITIONS.os2.x86)/VBoxService.exe \
263 OS2/VBoxControl.exe=$(VBOX_PATH_ADDITIONS.os2.x86)/VBoxControl.exe \
264 OS2/VBoxReplaceDll.exe=$(VBOX_PATH_ADDITIONS.os2.x86)/VBoxReplaceDll.exe \
265 OS2/VBoxOs2AdditionsInstall.exe=$(VBOX_PATH_ADDITIONS.os2.x86)/VBoxOs2AdditionsInstall.exe \
266 OS2/libc06.dll=$(VBOX_PATH_ADDITIONS.os2.x86)/libc06.dll \
267 OS2/libc061.dll=$(VBOX_PATH_ADDITIONS.os2.x86)/libc061.dll \
268 OS2/libc062.dll=$(VBOX_PATH_ADDITIONS.os2.x86)/libc062.dll \
269 OS2/libc063.dll=$(VBOX_PATH_ADDITIONS.os2.x86)/libc063.dll \
270 OS2/libc064.dll=$(VBOX_PATH_ADDITIONS.os2.x86)/libc064.dll \
271 OS2/libc065.dll=$(VBOX_PATH_ADDITIONS.os2.x86)/libc065.dll \
272 OS2/libc066.dll=$(VBOX_PATH_ADDITIONS.os2.x86)/libc066.dll \
273 OS2/readme.txt=$(VBOX_PATH_ADDITIONS.os2.x86)/readme.txt \
274 \
275 OS2/gengradd.dll=$(VBOX_PATH_ADDITIONS.os2.x86)/gengradd.dll \
276 OS2/VBoxMouse.sys=$(VBOX_PATH_ADDITIONS.os2.x86)/vboxmouse.sys
277endif
278
279# Oracle Solaris.
280ifdef VBOX_WITH_ADDITIONS_ISO.solaris.amd64
281 VBOX_PATH_ADDITIONS.solaris.amd64 = $(PATH_OUT_BASE)/solaris.amd64/$(KBUILD_TYPE)/bin/additions
282 GUESTADDITIONS_FILESPEC.solaris.amd64 = \
283 VBoxSolarisAdditions-amd64.pkg=$(VBOX_PATH_ADDITIONS.solaris.amd64)/VBoxSolarisAdditions.pkg
284endif
285ifdef VBOX_WITH_ADDITIONS_ISO.solaris.x86
286 VBOX_PATH_ADDITIONS.solaris.x86 = $(PATH_OUT_BASE)/solaris.x86/$(KBUILD_TYPE)/bin/additions
287 GUESTADDITIONS_FILESPEC.solaris.x86 = \
288 VBoxSolarisAdditions-x86.pkg=$(VBOX_PATH_ADDITIONS.solaris.x86)/VBoxSolarisAdditions.pkg
289endif
290ifdef VBOX_WITH_COMBINED_SOLARIS_GUEST_PACKAGE
291 # Build combined 32bit and 64bit solaris additions, not just a single arch.
292 # This assumes that the 32bit build directory contains the combined additions
293 # for 32bit and 64bit solaris. This just modifies variables set above.
294 GUESTADDITIONS_FILESPEC.solaris.x86 = \
295 VBoxSolarisAdditions.pkg=$(VBOX_PATH_ADDITIONS.solaris.x86)/VBoxSolarisAdditions.pkg
296 GUESTADDITIONS_FILESPEC.solaris.amd64 =
297endif
298
299# Microsoft Windows.
300ifdef VBOX_WITH_ADDITIONS_ISO.win.amd64
301 VBOX_PATH_ADDITIONS.win.amd64 = $(PATH_OUT_BASE)/win.amd64/$(KBUILD_TYPE)/bin/additions
302 ifeq ($(KBUILD_TARGET_ARCH),amd64)
303 VBOX_PATH_ADDITIONS.win = $(VBOX_PATH_ADDITIONS.win.amd64)
304 endif
305 GUESTADDITIONS_FILESPEC.win.amd64 = \
306 VBoxWindowsAdditions-amd64.exe=$(VBOX_PATH_ADDITIONS.win.amd64)/VBoxWindowsAdditions-amd64.exe
307 ifndef VBOX_WITH_ADDITIONS_ISO.win.x86
308 GUESTADDITIONS_FILESPEC.win.amd64 += \
309 cert/VBoxCertUtil.exe=$(VBOX_PATH_ADDITIONS.win.amd64)/VBoxCertUtil.exe
310 endif
311endif
312
313ifdef VBOX_WITH_ADDITIONS_ISO.win.x86
314 VBOX_PATH_ADDITIONS.win.x86 = $(PATH_OUT_BASE)/win.x86/$(KBUILD_TYPE)/bin/additions
315 ifeq ($(KBUILD_TARGET_ARCH),x86)
316 VBOX_PATH_ADDITIONS.win = $(VBOX_PATH_ADDITIONS.win.x86)
317 endif
318 GUESTADDITIONS_FILESPEC.win.x86 = \
319 VBoxWindowsAdditions-x86.exe=$(VBOX_PATH_ADDITIONS.win.x86)/VBoxWindowsAdditions-x86.exe \
320 VBoxWindowsAdditions.exe=$(VBOX_PATH_ADDITIONS.win.x86)/VBoxWindowsAdditions.exe \
321 AUTORUN.INF=$(VBOX_PATH_ADDITIONS_SRC)/WINNT/Installer/ISO/AUTORUN.INF \
322 cert/VBoxCertUtil.exe=$(VBOX_PATH_ADDITIONS.win.x86)/VBoxCertUtil.exe \
323 NT3x/Readme.txt=$(VBOX_PATH_ADDITIONS_SRC)/WINNT/Installer/ISO/NT3xReadme.txt \
324 NT3x/VBoxGuest.sys=$(VBOX_PATH_ADDITIONS.win.x86)/VBoxGuest.sys \
325 NT3x/VBoxMouseNT.sys=$(VBOX_PATH_ADDITIONS.win.x86)/VBoxMouseNT.sys \
326 NT3x/VBoxService.exe=$(VBOX_PATH_ADDITIONS.win.x86)/VBoxService.exe \
327 NT3x/VBoxControl.exe=$(VBOX_PATH_ADDITIONS.win.x86)/VBoxControl.exe \
328 NT3x/VBoxAddInstallNt3x.exe=$(VBOX_PATH_ADDITIONS.win.x86)/VBoxAddInstallNt3x.exe
329endif # win.x86
330
331ifdef VBOX_WITH_ADDITIONS_ISO.win.arm64
332 VBOX_PATH_ADDITIONS.win.arm64 = $(PATH_OUT_BASE)/win.arm64/$(KBUILD_TYPE)/bin/additions
333 ifeq ($(KBUILD_TARGET_ARCH),arm64)
334 VBOX_PATH_ADDITIONS.win = $(VBOX_PATH_ADDITIONS.win.arm64)
335 endif
336 GUESTADDITIONS_FILESPEC.win.arm64 = \
337 VBoxWindowsAdditions-arm64.exe=$(VBOX_PATH_ADDITIONS.win.arm64)/VBoxWindowsAdditions-arm64.exe
338 if !defined(VBOX_WITH_ADDITIONS_ISO.win.x86) && !defined(VBOX_WITH_ADDITIONS_ISO.win.arm64)
339 GUESTADDITIONS_FILESPEC.win.arm64 += \
340 cert/VBoxCertUtil.exe=$(VBOX_PATH_ADDITIONS.win.arm64)/VBoxCertUtil.exe
341 endif
342endif # win.arm64
343
344if defined(VBOX_WITH_ADDITIONS_ISO.win.amd64) || defined(VBOX_WITH_ADDITIONS_ISO.win.x86) || defined(VBOX_WITH_ADDITIONS_ISO.win.arm64)
345 # Note! This probably only work reliably when packing is also done on a windows host!
346 # When in "test" signing mode, skip adding the certificates below.
347 if !defined(VBOX_SIGNING_MODE) || "$(VBOX_SIGNING_MODE)" == "test"
348 GUESTADDITIONS_FILESPEC.win =
349 else if !defined(VBOX_CERTIFICATE_SHA2_SUBJECT_NAME) && !$(intersects win all 1,$(VBOX_WITH_CORP_CODE_SIGNING))
350 GUESTADDITIONS_FILESPEC.win = \
351 cert/vbox.cer=$(VBOX_PATH_ADDITIONS.win)/vbox.cer \
352 cert/vbox-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-root.cer
353 ifdef VBOX_TSA_URL_ARGS
354 GUESTADDITIONS_FILESPEC.win += cert/vbox-timestamp-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-timestamp-root.cer
355 endif
356 else
357 ifdef VBOX_CERTIFICATE_SUBJECT_NAME
358 GUESTADDITIONS_FILESPEC.win = \
359 cert/vbox-sha1.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha1.cer \
360 cert/vbox-sha1-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha1-root.cer
361 ifdef VBOX_TSA_URL_ARGS
362 GUESTADDITIONS_FILESPEC.win += cert/vbox-sha1-timestamp-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha1-timestamp-root.cer
363 endif
364 endif
365 GUESTADDITIONS_FILESPEC.win += \
366 cert/vbox-sha256-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256-root.cer \
367 cert/vbox-sha256.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256.cer
368 ifdef VBOX_TSA_SHA2_URL_ARGS
369 GUESTADDITIONS_FILESPEC.win += cert/vbox-sha256-timestamp-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256-timestamp-root.cer
370 endif
371 if !$(intersects win,$(VBOX_WITH_CORP_CODE_SIGNING)) && $(intersects win_planb,$(VBOX_WITH_CORP_CODE_SIGNING))
372 GUESTADDITIONS_FILESPEC.win += \
373 cert/vbox-sha256-r3.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256-r3.cer \
374 cert/vbox-sha256-r3-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256-r3-root.cer \
375 cert/vbox-sha256-r3-timestamp-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256-r3-timestamp-root.cer
376 endif
377 endif
378 GUESTADDITIONS_FILESPEC.win += windows11-bypass.reg=$(VBOX_PATH_ADDITIONS_SRC)/WINNT/tools/windows11-bypass.reg
379endif
380
381# haiku
382ifdef VBOX_WITH_ADDITIONS_ISO.haiku.x86
383 VBOX_PATH_ADDITIONS.haiku.x86 = $(PATH_OUT_BASE)/haiku.x86/$(KBUILD_TYPE)/bin/additions
384 # or bfs?
385 GUESTADDITIONS_FILESPEC.haiku.x86 = \
386 VBoxHaikuAdditions-x86.run=$(VBOX_PATH_ADDITIONS.haiku.x86)/VBoxHaikuAdditions-x86.run
387endif
388
389# For the iso rule.
390GUESTADDITIONS_FILESPEC_ALL = \
391 $(GUESTADDITIONS_FILESPEC.win) \
392 $(GUESTADDITIONS_FILESPEC.win.x86) \
393 $(GUESTADDITIONS_FILESPEC.win.amd64) \
394 $(GUESTADDITIONS_FILESPEC.win.arm64) \
395 $(GUESTADDITIONS_FILESPEC.solaris.x86) \
396 $(GUESTADDITIONS_FILESPEC.solaris.amd64) \
397 $(GUESTADDITIONS_FILESPEC.os2.x86) \
398 $(GUESTADDITIONS_FILESPEC.linux.x86) \
399 $(GUESTADDITIONS_FILESPEC.linux.amd64) \
400 $(if-expr defined(VBOX_WITH_LNX_ARM64_ADDITIONS),$(GUESTADDITIONS_FILESPEC.linux.arm64),) \
401 $(GUESTADDITIONS_FILESPEC.freebsd.x86) \
402 $(GUESTADDITIONS_FILESPEC.freebsd.amd64) \
403 $(GUESTADDITIONS_FILESPEC.haiku.x86) \
404 $(GUESTADDITIONS_FILESPEC.darwin.x86) \
405 $(GUESTADDITIONS_FILESPEC.darwin.amd64)
406
407#
408# Build the Guest Additions ISO image.
409#
410ifndef VBOX_WITHOUT_ADDITIONS_ISO
411 $(VBOX_PATH_ADDITIONS_ISO)/VBoxGuestAdditions.iso: \
412 $(filter-out %=deleteme=,$(subst =,=deleteme= , $(GUESTADDITIONS_FILESPEC_ALL))) \
413 $(VBOX_SVN_REV_KMK) \
414 $(VBOX_PATH_ADDITIONS_SRC)/Makefile.kmk \
415 | $(if-expr defined(VBOX_USE_RTISOMAKER),$(VBOX_RTISOMAKER),)
416 $(call MSG_TOOL,RTIsoMaker,,$@)
417 $(QUIET)$(MKDIR) -p $(@D)
418 $(VBOX_RTISOMAKER) \
419 --output $@ \
420 --iso-level 3 \
421 --rock-ridge \
422 --joliet \
423 --rational-attribs \
424 --random-order-verification 2048 \
425 $(addprefix /,$(GUESTADDITIONS_FILESPEC_ALL)) \
426 $(foreach spec, $(filter %.run %.sh %.tool,$(GUESTADDITIONS_FILESPEC_ALL)) \
427 , --chmod a+x:/$(substr $(spec), 1, $(expr $(pos =,$(spec)) - 1))) \
428 --volume-id="VBOXADDITIONS_$(VBOX_VERSION_STRING_RAW)_$(VBOX_SVN_REV)" \
429 --name-setup=joliet \
430 --volume-id="VBox_GAs_$(VBOX_VERSION_STRING_RAW)" \
431 --name-setup="iso+joliet" \
432 --publisher="$(VBOX_VENDOR)" \
433 --preparer="$(VBOX_VENDOR)"
434
435 $(VBOX_PATH_ADDITIONS_ISO)/VBoxGuestAdditions.zip: $(VBOX_PATH_ADDITIONS_ISO)/VBoxGuestAdditions.iso
436 $(call MSG_L1,Zipping image $@)
437 $(QUIET)$(RM) -f $@
438 $(QUIET)$(REDIRECT) -C $(VBOX_PATH_ADDITIONS_ISO) -- $(VBOX_ZIP) -9 $@ $(notdir $^)
439
440 # Alias for creating the iso.
441 .PHONY: additions-iso
442 additions-iso: $(VBOX_PATH_ADDITIONS_ISO)/VBoxGuestAdditions.iso
443
444endif
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