VirtualBox

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

Last change on this file since 71986 was 69111, checked in by vboxsync, 7 years ago

(C) year

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