diff options
author | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2023-05-10 00:43:47 +0000 |
---|---|---|
committer | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2023-05-10 00:43:47 +0000 |
commit | b43830921916e98f1921e2b19da8b4ecc57074e2 (patch) | |
tree | 6a89df31647badb4d6d856e7a022aa179e176780 | |
parent | f8a9fba73a9b86f44af8d8e049d2bb50c11ff453 (diff) | |
download | VirtualBox-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.kmk | 2 | ||||
-rw-r--r-- | Makefile.kmk | 106 | ||||
-rw-r--r-- | src/Makefile.kmk | 2 | ||||
-rw-r--r-- | src/VBox/Installer/Makefile.kmk | 14 | ||||
-rw-r--r-- | src/VBox/Main/Makefile.kmk | 10 |
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 |