VirtualBox

source: vbox/trunk/src/VBox/Installer/win/Stub/Makefile.kmk@ 83563

Last change on this file since 83563 was 82968, checked in by vboxsync, 5 years ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.4 KB
Line 
1# $Id: Makefile.kmk 82968 2020-02-04 10:35:17Z vboxsync $
2## @file
3# Sub-Makefile for the stub installer.
4#
5
6#
7# Copyright (C) 2009-2020 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
21TEMPLATE_VBOXSTUB = Drop the signing, we will sign it later.
22TEMPLATE_VBOXSTUB_EXTENDS = VBOXR3STATIC
23TEMPLATE_VBOXSTUB_POST_CMDS = $(NO_SUCH_VARIABLE)
24
25#
26# Installer stub program
27#
28PROGRAMS += VBoxStub
29VBoxStub_TEMPLATE= VBOXSTUB
30VBoxStub_BLD_TRG_ARCH = x86
31VBoxStub_DEFS = _WIN32_WINNT=0x0501 IN_RT_R3
32
33VBoxStub_SOURCES = \
34 VBoxStub.cpp \
35 VBoxStub.rc
36
37VBoxStub_SDKS += \
38 VBOX_NTDLL
39ifeq ($(KBUILD_TARGET_ARCH),x86)
40VBoxStub_LIBS += \
41 $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib \
42 $(VBOX_LIB_RUNTIME_STATIC)
43else
44VBoxStub_LIBS += \
45 $(PATH_TOOL_$(VBOX_VCC_TOOL_STEM)X86_LIB)/delayimp.lib \
46 $(PATH_STAGE_LIB)/RuntimeR3-x86.lib
47endif
48
49VBoxStub_LDFLAGS = \
50 -DelayLoad:comctl32.dll
51VBoxStub_POST_CMDS = $(VBOX_CHECK_IMPORTS) --image $(out) ntdll.dll kernel32.dll
52VBoxStub_LNK_DEPS = $(VBOX_CHECK_IMPORTS)
53
54VBoxStub.cpp_DEFS += VBOX_SVN_REV=$(VBOX_SVN_REV)
55VBoxStub.cpp_DEPS = $(VBOX_SVN_REV_KMK)
56
57# If signing mode is enabled, then add the possibility to install the code
58# signing certificates (public key only) automatically in /silent mode.
59ifdef VBOX_SIGNING_MODE
60
61 VBoxStub_SOURCES += VBoxStubCertUtil.cpp
62 VBoxStub_CLEAN += $(VBoxStub_0_OUTDIR)/VBoxStubPublicCert.h
63 VBoxStub.cpp_DEPS += $(VBoxStub_0_OUTDIR)/VBoxStubPublicCert.h
64 VBoxStub.cpp_INCS += $(VBoxStub_0_OUTDIR)
65 VBoxStub.cpp_DEFS += VBOX_WITH_CODE_SIGNING
66
67 $$(VBoxStub_0_OUTDIR)/VBoxStubPublicCert.h: | $$(dir $$@) $(VBOX_RTSIGNTOOL) $(PATH_STAGE_SYS)/VBoxDrv.sys
68 $(RM) -f -- "$@" "$@.cer0" "$@.cer1" "$@.cer2" "$@.array"
69
70 $(VBOX_RTSIGNTOOL) extract-exe-signer-cert --signature-index 0 --exe "$(PATH_STAGE_SYS)/VBoxDrv.sys" --output "$@.cer0" --der
71 $(VBOX_BIN2C) -ascii --append VBoxStubTrustedCert0 "$@.cer0" $@
72 $(APPEND) "$@.array" " { g_abVBoxStubTrustedCert0, sizeof(g_abVBoxStubTrustedCert0) }, "
73 if defined(VBOX_CERTIFICATE_SHA2_SUBJECT_NAME) || $(intersects win all 1,$(VBOX_WITH_CORP_CODE_SIGNING))
74 $(VBOX_RTSIGNTOOL) extract-exe-signer-cert --signature-index 1 --exe "$(PATH_STAGE_SYS)/VBoxDrv.sys" --output "$@.cer1" --der
75 $(VBOX_BIN2C) -ascii --append VBoxStubTrustedCert1 "$@.cer1" $@
76 $(APPEND) "$@.array" " { g_abVBoxStubTrustedCert1, sizeof(g_abVBoxStubTrustedCert1) }, "
77 endif
78 if $(intersects win_planb,$(VBOX_WITH_CORP_CODE_SIGNING))
79 $(VBOX_RTSIGNTOOL) extract-exe-signer-cert --signature-index 1 --exe "$(VBOX_RTSIGNTOOL)" --output "$@.cer2" --der
80 $(VBOX_BIN2C) -ascii --append VBoxStubTrustedCert2 "$@.cer2" $@
81 $(APPEND) "$@.array" " { g_abVBoxStubTrustedCert2, sizeof(g_abVBoxStubTrustedCert2) }, "
82 endif
83 $(APPEND) -n "$@" \
84 "" \
85 "struct { uint8_t const *pab; uint32_t cb; }" "g_aVBoxStubTrustedCerts[] = " \
86 "{"
87 $(SED) --append "$@" -e "" "$@.array"
88 $(APPEND) -n "$@" \
89 "};"
90 $(RM) -f -- "$@.cer0" "$@.cer1" "$@.cer2" "$@.array"
91
92 VBoxStubPublicCert.h:: $$(VBoxStub_0_OUTDIR)/VBoxStubPublicCert.h
93
94endif
95
96# The icon location is configurable.
97VBoxStub.rc_INCS += $(VBoxStub_0_OUTDIR)
98VBoxStub.rc_DEPS += \
99 $(VBoxStub_0_OUTDIR)/VBoxStub-icon.rc \
100 $(VBoxStub_0_OUTDIR)/VBoxStub-manifest.rc
101VBoxStub_CLEAN += \
102 $(VBoxStub_0_OUTDIR)/VBoxStub-icon.rc \
103 $(VBoxStub_0_OUTDIR)/VBoxStub-manifest.rc
104
105# Icon include file.
106$$(VBoxStub_0_OUTDIR)/VBoxStub-icon.rc: $(VBOX_WINDOWS_ICON_FILE) $(MAKEFILE_CURRENT) | $$(dir $$@)
107 $(APPEND) -t $@ 'IDI_VIRTUALBOX ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"'
108
109# Manifest.
110VBOX_STUB_MANIFEST_FILE := $(PATH_SUB_CURRENT)/VBoxStub.manifest
111$$(VBoxStub_0_OUTDIR)/VBoxStub-manifest.rc: $(VBOX_STUB_MANIFEST_FILE) $(MAKEFILE_CURRENT) | $$(dir $$@)
112 $(APPEND) -t $@ 'APP_MANIFEST RT_MANIFEST "$(subst /,\\,$(VBOX_STUB_MANIFEST_FILE))"'
113
114# Dynamic import no. 1: MSI.DLL
115VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/MsiLazyLoad.asm
116VBoxStub_CLEAN += $(VBoxStub_0_OUTDIR)/MsiLazyLoad.asm
117$$(VBoxStub_0_OUTDIR)/MsiLazyLoad.asm: $(PATH_SUB_CURRENT)/msi.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
118 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
119 $(QUIET)$(RM) -f -- "$@"
120 $(VBOX_DEF_2_LAZY_LOAD) --system --library MSI.DLL --output "$@" $(filter %.def, $^)
121
122# Dynamic import no. 2: CRYPTO32.DLL
123VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/Crypt32LazyLoad.asm
124VBoxStub_CLEAN += $(VBoxStub_0_OUTDIR)/Crypt32LazyLoad.asm
125$$(VBoxStub_0_OUTDIR)/Crypt32LazyLoad.asm: $(PATH_SUB_CURRENT)/crypt32.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
126 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
127 $(QUIET)$(RM) -f -- "$@"
128 $(VBOX_DEF_2_LAZY_LOAD) --system --library CRYPT32.DLL --output "$@" $(filter %.def, $^)
129
130# Dynamic import no. 3: WS2_32.DLL
131VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/Ws232LazyLoad.asm
132VBoxStub_CLEAN += $(VBoxStub_0_OUTDIR)/Ws232LazyLoad.asm
133$$(VBoxStub_0_OUTDIR)/Ws232LazyLoad.asm: $(PATH_SUB_CURRENT)/ws2_32.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
134 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
135 $(QUIET)$(RM) -f -- "$@"
136 $(VBOX_DEF_2_LAZY_LOAD) --system --library WS2_32.DLL --output "$@" $(filter %.def, $^)
137
138# Dynamic import no. 4: USER32.DLL
139VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/User32LazyLoad.asm
140VBoxStub_CLEAN += $(VBoxStub_0_OUTDIR)/User32LazyLoad.asm
141$$(VBoxStub_0_OUTDIR)/User32LazyLoad.asm: $(PATH_SUB_CURRENT)/user32.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
142 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
143 $(QUIET)$(RM) -f -- "$@"
144 $(VBOX_DEF_2_LAZY_LOAD) --system --library USER32.DLL --output "$@" $(filter %.def, $^)
145
146# Dynamic import no. 5: SHELL32.DLL
147VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/Shell32LazyLoad.asm
148VBoxStub_CLEAN += $(VBoxStub_0_OUTDIR)/Shell32LazyLoad.asm
149$$(VBoxStub_0_OUTDIR)/Shell32LazyLoad.asm: $(PATH_SUB_CURRENT)/shell32.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
150 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
151 $(QUIET)$(RM) -f -- "$@"
152 $(VBOX_DEF_2_LAZY_LOAD) --system --library SHELL32.DLL --output "$@" $(filter %.def, $^)
153
154include $(FILE_KBUILD_SUB_FOOTER)
155
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