summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2023-05-10 00:43:47 +0000
committervboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2023-05-10 00:43:47 +0000
commitb43830921916e98f1921e2b19da8b4ecc57074e2 (patch)
tree6a89df31647badb4d6d856e7a022aa179e176780
parentf8a9fba73a9b86f44af8d8e049d2bb50c11ff453 (diff)
downloadVirtualBox-svn-b43830921916e98f1921e2b19da8b4ecc57074e2.tar.gz
*.kmk: Changed the VBOX_ONLY_SDK_ON_WINDOWS for VBOX_ONLY_SDK_ON_HOST and VBOX_ONLY_SDK_IN_VM and added proper sdk-fetch, sdk-build and sdk-package targets to the root makefile. Adjusted packing in the installer makefile as well (a bit crude, just zipping up the linux then the windows sdk directories into a single zip file). bugref:10442
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@99715 cfe28804-0f27-0410-a406-dd0f0b0b656f
-rw-r--r--Config.kmk2
-rw-r--r--Makefile.kmk106
-rw-r--r--src/Makefile.kmk2
-rw-r--r--src/VBox/Installer/Makefile.kmk14
-rw-r--r--src/VBox/Main/Makefile.kmk10
5 files changed, 112 insertions, 22 deletions
diff --git a/Config.kmk b/Config.kmk
index da405910ffb..e3a2dd6174a 100644
--- a/Config.kmk
+++ b/Config.kmk
@@ -2378,7 +2378,7 @@ VBOX_PYLINT_FLAGS = $(if-expr $(VBOX_PYLINT_VERSION) >= 10500,--reports=n,--repo
# Define the macro for win path conversion.
-if !defined(VBOX_ONLY_SDK) || defined(VBOX_ONLY_SDK_ON_WINDOWS)
+if !defined(VBOX_ONLY_SDK) || defined(VBOX_ONLY_SDK_ON_HOST) || defined(VBOX_ONLY_SDK_IN_VM)
VBOX_FN_MAKE_WIN_PATH = "$(quote-sh-dq $(subst /,\,$(requote unq, $(1))))"
else
# Z: is always FS root for Wine.
diff --git a/Makefile.kmk b/Makefile.kmk
index b200e8de673..dbca9b936d1 100644
--- a/Makefile.kmk
+++ b/Makefile.kmk
@@ -33,7 +33,9 @@ include $(KBUILD_PATH)/subheader.kmk
#
ifndef VBOX_ONLY_ROOT_MAKEFILE
if (defined(VBOX_WITH_DOCS) || defined(VBOX_WITH_MAIN)) \
- && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DOCS) || defined(VBOX_ONLY_SDK)) \
+ && ( !defined(VBOX_ONLY_BUILD) \
+ || defined(VBOX_ONLY_DOCS) \
+ || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_IN_VM))) \
&& "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SUPPORTED_HOST_ARCHS))" != ""
include $(PATH_SUB_CURRENT)/doc/manual/Makefile.kmk
endif
@@ -98,7 +100,7 @@ if !defined(VBOX_ONLY_ADDITIONS) \
# To avoid dragging in unnecessary tools and sdks here, we don't use the .win
# and .linux property suffixes.
#
- if !defined(VBOX_ONLY_SDK_ON_WINDOWS)
+ if !defined(VBOX_ONLY_SDK)
INSTALLS += InstallExternalLibs
endif
@@ -2004,6 +2006,94 @@ efi-packing:
+ $(KMK) -C src/VBox/Devices/EFI/Firmware$(VBOX_EFI_FIRMWARE_SUFFIX) $(PATH_STAGE)/VBoxEfiFirmware.zip
+
+#
+# Build the SDK, all of it.
+#
+# Hosting the build on windows, with the linux part in a VM.
+#
+sdk-fetch:
+ + $(KMK) -C tools fetch VBOX_ONLY_SDK=1 VBOX_ONLY_SDK_ON_HOST=1
+ + $(KMK) -C tools fetch VBOX_ONLY_SDK=1 VBOX_ONLY_SDK_IN_VM=1 KBUILD_TARGET=linux KBUILD_HOST=linux
+ + $(KMK) -C tools fetch VBOX_ONLY_SDK=1 VBOX_ONLY_SDK_IN_VM=1 KBUILD_TARGET=win KBUILD_HOST=win
+
+sdk-build: \
+ sdk-build-rsync-into-vms \
+ sdk-build-linux \
+ sdk-build-win
+
+sdk-build-rsync-into-vms: \
+ sdk-build-linux.rsync-into-vm
+ $(call MSG_L1,Rsynced the sources + tools into the VM(s).)
+.NOTPARALLEL: sdk-build-rsync-into-vms
+.PHONY: sdk-build-rsync-into-vms
+
+VBOX_SDK_BUILD.amd64 = VBOX_ONLY_SDK=1 KBUILD_TYPE=$(KBUILD_TYPE) KBUILD_TARGET_ARCH=amd64 VBOX_SVN_REV=$(VBOX_SVN_REV)
+
+# Automatically determine the SDL build subdir name. Used for figuring
+# out directory names inside the test suite building VMs.
+VBOX_SDK_BUILD_SUBDIRNAME := $(lastword $(subst /, ,$(PATH_ROOT)))
+
+sdk-build-win:
+ifeq ($(KBUILD_TARGET),win)
+ + $(TIME) -- $(KMK) $(VBOX_SDK_BUILD.amd64) VBOX_ONLY_SDK_ON_HOST=1 all $(VBOX_SDK_HOST_BUILD_TWEAK)
+else
+ $(call VBOX_BLD_VM_MSG_BEGIN,Windows/amd64 SDK)
+ $(TIME) -- $(VBOX_SSH) vbox@$(VBOX_BLD_VM_WIN_X86_IP) 'cd e:/$(VBOX_SDK_BUILD_SUBDIRNAME) && tools/env.sh kmk $(VBOX_SDK_BUILD.amd64) VBOX_ONLY_SDK_IN_VM=1 all '
+ $(call VBOX_BLD_VM_MSG_END__,Windows/amd64 SDK)
+endif
+
+ifeq ($(KBUILD_TARGET),linux)
+ sdk-build-linux:
+ + $(TIME) -- $(KMK) $(VBOX_SDK_BUILD.amd64) all $(VBOX_SDK_HOST_BUILD_TWEAK)
+
+else
+ sdk-build-linux.rsync-into-vm: $(VBOX_SDK_BUILD_WIN_HOST_FIRST)
+ $(TIME) -- $(call VBOX_RSYNC_IN_FN,linux,*) \
+ '--exclude=src/VBox/Additions/**' \
+ '--exclude=src/VBox/Artwork/**' \
+ '--exclude=src/VBox/Devices**' \
+ '--exclude=src/VBox/Debugger/**' \
+ '--exclude=src/VBox/Disassembler/**' \
+ '--exclude=src/VBox/ExtPacks/**' \
+ '--exclude=src/VBox/Frontends/VirtualBox/**' \
+ '--exclude=src/VBox/GuestHost/**' \
+ '--exclude=src/VBox/HostDrivers/**' \
+ '--exclude=src/VBox/HostServices/**' \
+ '--exclude=src/VBox/ImageMounter/**' \
+ '--exclude=src/VBox/NetworkServices/**' \
+ '--exclude=src/VBox/Runtime/**' \
+ '--exclude=src/VBox/Storage/**' \
+ '--exclude=src/VBox/VMM/**' \
+ . $(VBOX_BLD_VM_LNX_IP):/mnt/tinderbox/$(VBOX_SDK_BUILD_SUBDIRNAME)
+
+ sdk-build-linux.build-it: sdk-build-linux.rsync-into-vm
+ $(call VBOX_BLD_VM_MSG_BEGIN,Linux/amd64 SDK)
+ $(TIME) -- $(VBOX_SSH) vbox@$(VBOX_BLD_VM_LNX_IP) 'dchroot -c debian-4.0-amd64 "cd /mnt/tinderbox/$(VBOX_SDK_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_SDK_BUILD.amd64) VBOX_ONLY_SDK_IN_VM=1 all " '
+ $(call VBOX_BLD_VM_MSG_END__,Linux/amd64 SDK)
+
+ sdk-build-linux.rsync-out-of-vm: sdk-build-linux.build-it
+ $(TIME) -- $(VBOX_RSYNC) -a --delete $(VBOX_BLD_VM_LNX_IP):/mnt/tinderbox/$(VBOX_SDK_BUILD_SUBDIRNAME)/out/linux.amd64 out/
+
+ .PHONY: sdk-build-linux.rsync-out-of-vm sdk-build-linux.rsync-into-vm sdk-build-linux.build-it
+
+ sdk-build-linux: sdk-build-linux.rsync-out-of-vm
+endif
+
+
+sdk-packing:
+ + $(KMK) VBOX_ONLY_SDK=1 VBOX_ONLY_SDK_ON_HOST=1 \
+ VBOX_WITH_SDK_PACKING.linux.amd64=1 \
+ VBOX_WITH_SDK_PACKING.win.amd64=1 \
+ -C src/VBox/Installer packing
+.PHONY: \
+ sdk-fetch \
+ sdk-build \
+ sdk-build-linux \
+ sdk-build-win \
+ sdk-packing
+
+
#
# Generate VirtualBox-x.x.x.zip (PUEL) snapshot archive for internal use only
# - includes kBuild
@@ -2129,18 +2219,6 @@ else
endif
-#
-# Aliases for building the SDK.
-#
-.NOTPARALLEL: sdk sdk-fetch
-sdk:
- + $(KMK) VBOX_ONLY_SDK=1 $(if-expr "$(KBUILD_HOST)" == "win",VBOX_ONLY_SDK_ON_WINDOWS=1,) \
- pass_bldprogs pass_others pass_installs pass_packing
-
-sdk-fetch:
- + $(KMK) VBOX_ONLY_SDK=1 $(if-expr "$(KBUILD_HOST)" == "win",VBOX_ONLY_SDK_ON_WINDOWS=1,) \
- -C tools
-
#
# Build the essentials to run a VM. Incomplete. Use with care!
diff --git a/src/Makefile.kmk b/src/Makefile.kmk
index 323b22b1124..aa073997d71 100644
--- a/src/Makefile.kmk
+++ b/src/Makefile.kmk
@@ -30,7 +30,7 @@ include $(KBUILD_PATH)/subheader.kmk
include $(PATH_SUB_CURRENT)/bldprogs/Makefile.kmk
include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk
-if !defined(VBOX_ONLY_SDK_ON_WINDOWS) || "$(KBUILD_TARGET)" != "win"
+if !defined(VBOX_ONLY_SDK) || "$(KBUILD_TARGET)" != "win"
include $(PATH_SUB_CURRENT)/libs/Makefile.kmk
endif
ifndef VBOX_ONLY_BUILD
diff --git a/src/VBox/Installer/Makefile.kmk b/src/VBox/Installer/Makefile.kmk
index 98035cbdd1d..f388810b204 100644
--- a/src/VBox/Installer/Makefile.kmk
+++ b/src/VBox/Installer/Makefile.kmk
@@ -58,7 +58,7 @@ endif
include $(PATH_SUB_CURRENT)/common/Makefile.kmk
-if defined(VBOX_ONLY_SDK) ## @todo || defined(VBOX_WITH_SDK)
+if defined(VBOX_ONLY_SDK) || defined(VBOX_WITH_SDK)
#
# Package the VirtualBox SDK.
#
@@ -72,7 +72,19 @@ if defined(VBOX_ONLY_SDK) ## @todo || defined(VBOX_WITH_SDK)
$(PATH_STAGE_BIN)/sdk \
$(VBOX_VERSION_STAMP)
$(call MSG_L1,Making SDK delivery $@)
+ ifdef VBOX_ONLY_SDK_ON_HOST
+ $(QUIET)$(RM) -f -- "$@"
+ if defined(VBOX_WITH_SDK_PACKING.linux.amd64) && "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" != "linux.amd64"
+ $(REDIRECT) -C "$(PATH_OUT_BASE)/linux.amd64/$(KBUILD_TYPE)/bin/" -- $(VBOX_ZIP) -r9Xv "$@" sdk
+ endif
+ if defined(VBOX_WITH_SDK_PACKING.win.amd64) && "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" != "win.amd64"
+ $(REDIRECT) -C "$(PATH_OUT_BASE)/win.amd64/$(KBUILD_TYPE)/bin/" -- $(VBOX_ZIP) -r9Xv "$@" sdk
+ endif
+ $(REDIRECT) -C "$(PATH_STAGE_BIN)/" -- $(VBOX_ZIP) -r9Xv "$@" sdk
+ $(call MSG_L1, Ready: $@)
+ else # !VBOX_ONLY_SDK_ON_HOST
$(QUIET)$(REDIRECT) $(if $(QUIET),-wo /dev/null,) -C $(PATH_STAGE_BIN) -- $(VBOX_ZIP) -r9 "$@" sdk
+ endif # !VBOX_ONLY_SDK_ON_HOST
endif
diff --git a/src/VBox/Main/Makefile.kmk b/src/VBox/Main/Makefile.kmk
index e23e82cda3a..0f9b1855265 100644
--- a/src/VBox/Main/Makefile.kmk
+++ b/src/VBox/Main/Makefile.kmk
@@ -62,7 +62,7 @@ endif
#
VBOX_PATH_MAIN_SRC := $(PATH_SUB_CURRENT)
-if defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_WINDOWS)
+if defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_HOST) && !defined(VBOX_ONLY_SDK_IN_VM) # Hacks for building SDK using wine.
ifndef TOOL_$(VBOX_VCC_TOOL)
include $(KBUILD_PATH)/tools/$(VBOX_VCC_TOOL).kmk # For the idl /cpp statement.
endif
@@ -217,7 +217,7 @@ VBOX_IDL_TYPELIB.XPCOM = $(PATH_STAGE_BIN)/components/VirtualBox_XPCOM.xpt
VBOX_IDL_HEADER.XPCOM = $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
# The MS COM specific stuff.
-if "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_WINDOWS))
+if "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_HOST) && !defined(VBOX_ONLY_SDK_IN_VM))
OTHERS += \
$(VBOX_IDL_FILE.MSCOM)
OTHER_CLEAN += \
@@ -306,7 +306,7 @@ $(PATH_TARGET)/docs.Main: \
$(QUIET)$(TEST) -s "$(PATH_TARGET)/Main.err" -- $(ECHO_EXT) "===> **************************************************"
$(APPEND) $(PATH_TARGET)/docs.Main
-if defined(VBOX_ONLY_SDK) || defined(VBOX_WITH_SDK)
+if (defined(VBOX_ONLY_SDK) || defined(VBOX_WITH_SDK)) && !defined(VBOX_ONLY_SDK_IN_VM)
OTHERS += $(PATH_TARGET)/docs.Main
endif
@@ -1667,7 +1667,7 @@ $(VBoxCOM_0_OUTDIR)/VirtualBox_XPCOM_i.c: $(VBOX_PATH_MAIN_SRC)/idl/xpidl_iid.xs
$(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@)
$(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE)
-if "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_WINDOWS))
+if "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_HOST) && !defined(VBOX_ONLY_SDK_IN_VM))
# Note! Because we've got a different proxy stub DLL for pre windows 7 64-bit hosts, we target windows 7 for AMD64.
# The output is different and hopefully more efficient, at least memory wise (using more helpers in OLE32).
@@ -1739,7 +1739,7 @@ if "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_
$(call def_VBoxMidlOutputDisableMscWarnings,$(VBoxCOM-x86_0_OUTDIR)/VirtualBox_p.c)
endif
-endif # "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_WINDOWS))
+endif # "$(KBUILD_TARGET)" == "win" || (defined(VBOX_ONLY_SDK) && !defined(VBOX_ONLY_SDK_ON_HOST) && !defined(VBOX_ONLY_SDK_IN_VM))
#
# Translation stuff