VirtualBox

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

Last change on this file since 61026 was 59404, checked in by vboxsync, 9 years ago

Forward-ported r104938, r104943, r104950, r104952, r104953, r104987, r104988, r104990 from 5.0:

  • VBoxStub: Lazy import DLLs not in the KnownDlls list (and then some) and check that we don't accidentally add new imports as time goes by.
  • VBoxStub: the dlls have export names, so use them instead of the ordinals.
  • VBoxDef2LazyLoad fixes and error reporting, fixed missing VBoxCheckImports dependency during use in VBoxStub.
  • iprt/initterm.h,vbox-img,VBoxStub: Introduced RTR3INIT_FLAGS_STANDALONE_APP for statically linked applications that are expected to run outside the normal VirtualBox installation directory and need to be on their toes wrt dynamic library search paths. (Only windows, really.) Also, _always_ initialize IPRT first, don't ever do anything before that unless it 104% must be done there.
  • RTR3INIT_FLAGS_STANDALONE_APP trumps concerns about Vista GUI
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.7 KB
Line 
1# $Id: Makefile.kmk 59404 2016-01-19 10:10:39Z vboxsync $
2## @file
3# Sub-Makefile for the stub installer.
4#
5
6#
7# Copyright (C) 2009-2015 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
50 # install public certificate automatically in /silent mode
51 ifdef VBOX_SIGNING_MODE
52
53 VBoxStub_SOURCES += VBoxStubCertUtil.cpp
54 VBoxStub.cpp_DEPS += $(VBoxStub_0_OUTDIR)/VBoxStubPublicCert.h
55 VBoxStub.cpp_INCS += $(VBoxStub_0_OUTDIR)
56 VBoxStub.cpp_DEFS += VBOX_WITH_CODE_SIGNING
57
58 $$(VBoxStub_0_OUTDIR)/VBoxStubPublicCert.h: $(VBOX_BIN2C) $(PATH_ROOT)/src/VBox/Additions/WINNT/tools/oracle-vbox.cer | $$(dir $$@)
59 $(VBOX_BIN2C) _VBoxStubPublicCert $(PATH_ROOT)/src/VBox/Additions/WINNT/tools/oracle-vbox.cer $@
60
61 endif
62
63 # The icon location is configurable.
64 VBoxStub.rc_INCS += $(VBoxStub_0_OUTDIR)
65 VBoxStub.rc_DEPS += \
66 $(VBoxStub_0_OUTDIR)/VBoxStub-icon.rc \
67 $(VBoxStub_0_OUTDIR)/VBoxStub-manifest.rc
68 VBoxStub.rc_CLEAN = \
69 $(VBoxStub_0_OUTDIR)/VBoxStub-icon.rc \
70 $(VBoxStub_0_OUTDIR)/VBoxStub-manifest.rc
71
72 # Icon include file.
73 $$(VBoxStub_0_OUTDIR)/VBoxStub-icon.rc: $(VBOX_WINDOWS_ICON_FILE) $(MAKEFILE_CURRENT) | $$(dir $$@)
74 $(APPEND) -t $@ 'IDI_VIRTUALBOX ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"'
75
76 # Manifest.
77 VBOX_STUB_MANIFEST_FILE := $(PATH_SUB_CURRENT)/VBoxStub.manifest
78 $$(VBoxStub_0_OUTDIR)/VBoxStub-manifest.rc: $(VBOX_STUB_MANIFEST_FILE) $(MAKEFILE_CURRENT) | $$(dir $$@)
79 $(APPEND) -t $@ 'APP_MANIFEST RT_MANIFEST "$(subst /,\\,$(VBOX_STUB_MANIFEST_FILE))"'
80
81 # Dynamic import no. 1: MSI.DLL
82 VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/MsiLazyLoad.asm
83 $$(VBoxStub_0_OUTDIR)/MsiLazyLoad.asm: $(PATH_SUB_CURRENT)/msi.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
84 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
85 $(QUIET)$(RM) -f -- "$@"
86 $(VBOX_DEF_2_LAZY_LOAD) --system --library MSI.DLL --output "$@" $(filter %.def, $^)
87
88 # Dynamic import no. 2: CRYPTO32.DLL
89 VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/Crypt32LazyLoad.asm
90 $$(VBoxStub_0_OUTDIR)/Crypt32LazyLoad.asm: $(PATH_SUB_CURRENT)/crypt32.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
91 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
92 $(QUIET)$(RM) -f -- "$@"
93 $(VBOX_DEF_2_LAZY_LOAD) --system --library CRYPT32.DLL --output "$@" $(filter %.def, $^)
94
95 # Dynamic import no. 3: WS2_32.DLL
96 VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/Ws232LazyLoad.asm
97 $$(VBoxStub_0_OUTDIR)/Ws232LazyLoad.asm: $(PATH_SUB_CURRENT)/ws2_32.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
98 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
99 $(QUIET)$(RM) -f -- "$@"
100 $(VBOX_DEF_2_LAZY_LOAD) --system --library WS2_32.DLL --output "$@" $(filter %.def, $^)
101
102 # Dynamic import no. 4: USER32.DLL
103 VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/User32LazyLoad.asm
104 $$(VBoxStub_0_OUTDIR)/User32LazyLoad.asm: $(PATH_SUB_CURRENT)/user32.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
105 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
106 $(QUIET)$(RM) -f -- "$@"
107 $(VBOX_DEF_2_LAZY_LOAD) --system --library USER32.DLL --output "$@" $(filter %.def, $^)
108
109 # Dynamic import no. 5: SHELL32.DLL
110 VBoxStub_SOURCES += $(VBoxStub_0_OUTDIR)/Shell32LazyLoad.asm
111 $$(VBoxStub_0_OUTDIR)/Shell32LazyLoad.asm: $(PATH_SUB_CURRENT)/shell32.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
112 $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxStub,$(filter %.def, $^),$@)
113 $(QUIET)$(RM) -f -- "$@"
114 $(VBOX_DEF_2_LAZY_LOAD) --system --library SHELL32.DLL --output "$@" $(filter %.def, $^)
115
116
117endif # x86 only
118
119include $(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