VirtualBox

source: vbox/trunk/src/VBox/HostDrivers/Support/Makefile.kmk@ 11725

最後變更 在這個檔案從11725是 11725,由 vboxsync 提交於 17 年 前

#3076: Merged in the branch with the alternate driver authentication method. (34468:HEAD)

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Id
檔案大小: 10.9 KB
 
1# $Id: Makefile.kmk 11725 2008-08-27 22:21:47Z vboxsync $
2## @file
3# Sub-Makefile for the support library and the drivers/modules/kexts it uses.
4#
5
6#
7# Copyright (C) 2006-2007 Sun Microsystems, Inc.
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.alldomusa.eu.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# The contents of this file may alternatively be used under the terms
18# of the Common Development and Distribution License Version 1.0
19# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20# VirtualBox OSE distribution, in which case the provisions of the
21# CDDL are applicable instead of those of the GPL.
22#
23# You may elect to license modified versions of this file under the
24# terms and conditions of either the GPL or the CDDL or both.
25#
26# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
27# Clara, CA 95054 USA or visit http://www.sun.com if you need
28# additional information or have any questions.
29#
30
31ifdef VBOX_KBUILD_HACKING
32SUB_DEPTH = ../../../..
33else
34SUB_DEPTH = ..
35DEPTH ?= ../../../..
36endif
37include $(KBUILD_PATH)/subheader.kmk
38
39#
40# Targets
41#
42LIBRARIES += SUPR3 SUPR3HardenedStatic
43ifndef VBOX_ONLY_DOCS
44 ifeq ($(filter-out pe lx,$(VBOX_LDR_FMT)),)
45 LIBRARIES += SUPR0
46 endif
47 ifdef VBOX_WITH_SUPSVC
48 PROGRAMS += VBoxSupSvc
49 endif
50 ifdef VBOX_WITH_VBOXDRV
51 LIBRARIES += SUPR0IdcClient
52 SYSMODS.darwin += VBoxDrv
53 SYSMODS.freebsd += vboxdrv
54 SYSMODS.linux += vboxdrv
55 SYSMODS.win += VBoxDrv
56 SYSMODS.os2 += VBoxDrv
57 SYSMODS.solaris += vboxdrv
58 OTHERS.linux += \
59 $(PATH_BIN)/src/build_in_tmp \
60 $(if $(VBOX_OSE),,$(PATH_BIN)/src/dkms.conf)
61 endif
62 INSTALLS.linux += vboxmod-bin vboxmod-sh
63
64 #
65 # Include sub-makefile(s).
66 #
67 include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
68
69 #
70 # Populate FILES_VBOXDRV_NOBIN and FILES_VBOXDRV_BIN
71 #
72 include $(PATH_SUB_CURRENT)/linux/files_vboxdrv
73endif # !VBOX_ONLY_DOCS
74
75vboxmod-bin_INST = bin/src/
76vboxmod-bin_MODE = a+r,u+w
77vboxmod-bin_SOURCES = $(subst ",,$(FILES_VBOXDRV_NOBIN)) #"
78
79vboxmod-sh_INST = bin/src/
80vboxmod-sh_MODE = a+rx,u+w
81vboxmod-sh_SOURCES = $(subst ",,$(FILES_VBOXDRV_BIN)) #"
82
83# Scripts needed for building the kernel modules
84
85$(PATH_BIN)/src/build_in_tmp: \
86 $(PATH_SUB_CURRENT)/linux/build_in_tmp \
87 $(VBOX_VERSION_STAMP)
88 $(call MSG_TOOL,Creating,,$@)
89 $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g; s;_MODULE_;vboxdrv;g" < $< > $@
90 $(QUIET)chmod 0755 $@
91
92$(PATH_BIN)/src/dkms.conf: \
93 $(PATH_SUB_CURRENT)/linux/dkms.conf \
94 $(VBOX_VERSION_STAMP)
95 $(call MSG_TOOL,Creating,,$@)
96 $(QUIET)$(SED) -e "s;_VERSION_;${VBOX_VERSION_STRING};g" < $< > $@
97
98
99#
100# The Ring-3 Support Library (this is linked into the IPRT dll, VBoxRT).
101#
102ifneq ($(filter l4%,$(KBUILD_TARGET) $(BUILD_TARGET_SUB)),)
103 # L4 has trouble with -pedantic. It also make trouble when inlining is not enabled.
104 SUPR3_TEMPLATE = VBOXR3NP
105else
106 SUPR3_TEMPLATE = VBOXR3
107endif
108SUPR3_DEFS = IN_SUP_R3 IN_RT_R3
109ifdef VBOX_WITH_IDT_PATCHING
110 SUPR3_DEFS += VBOX_WITH_IDT_PATCHING
111endif
112ifdef VBOX_WITH_SUPSVC
113 SUPR3_DEFS += VBOX_WITH_SUPSVC
114endif
115SUPR3_INCS := $(PATH_SUB_CURRENT)
116SUPR3_INCS.l4 = $(L4_INCDIR)
117SUPR3_SOURCES = \
118 SUPLib.cpp \
119 SUPR3HardenedIPRT.cpp \
120 SUPR3HardenedVerify.cpp \
121 $(KBUILD_TARGET)/SUPLib-$(KBUILD_TARGET).cpp
122
123
124#
125# The static part of the hardened support library (ring-3).
126#
127SUPR3HardenedStatic_TEMPLATE = VBOXR3HARDENEDLIB
128SUPR3HardenedStatic_DEFS = IN_SUP_HARDENED_R3
129ifdef VBOX_WITH_SUPSVC
130 SUPR3HardenedStatic_DEFS += VBOX_WITH_SUPSVC
131endif
132SUPR3HardenedStatic_INCS = .
133SUPR3HardenedStatic_SOURCES = \
134 SUPR3HardenedMain.cpp \
135 SUPR3HardenedVerify.cpp \
136 $(KBUILD_TARGET)/SUPLib-$(KBUILD_TARGET).cpp
137
138
139#
140# VBoxSupSvc - The system wide service/daemon.
141#
142VBoxSupSvc_TEMPLATE = VBOXR3EXE
143VBoxSupSvc_SOURCES = \
144 SUPSvc.cpp \
145 SUPSvcGlobal.cpp \
146 $(KBUILD_TARGET)/SUPSvc-$(KBUILD_TARGET).cpp
147if1of ($(KBUILD_TARGET), win)
148 VBoxSupSvc_SOURCES += \
149 SUPSvcGrant.cpp
150endif
151ifn1of ($(KBUILD_TARGET), win)
152 VBoxSupSvc_SOURCES += \
153 SUPSvcMain-posix.cpp
154endif
155VBoxSupSvc_LIBS = \
156 $(LIB_RUNTIME)
157
158
159#
160# SUPR0 - The Ring-0 Import / Thunk library.
161#
162SUPR0_TEMPLATE = VBOXR0
163ifeq ($(VBOX_LDR_FMT),pe)
164 SUPR0_SOURCES += SUPR0.def
165endif
166ifeq ($(VBOX_LDR_FMT),lx)
167SUPR0_SOURCES += $(PATH_TARGET)/SUPR0.def
168$(PATH_TARGET)/SUPR0.def: $(PATH_SUB_CURRENT)/SUPR0.def | $(call DIRDEP,$(PATH_TARGET))
169 $(SED) -e 's/^[ \t][ \t]*\([gA-Z]\)/ _\1/' -e 's/[ \t]DATA[ \t]*/ /' $< > [email protected]
170 $(MV) -f [email protected] $@
171endif
172
173
174#
175# SUPR0IdcClient - The Ring-0 IDC client driver library.
176#
177SUPR0IdcClient_TEMPLATE = VBOXR0DRV
178SUPR0IdcClient_DEFS = IN_RT_R0 IN_SUP_R0
179SUPR0IdcClient_SDKS.win = W2K3DDK WINPSDKINCS
180SUPR0IdcClient_SOURCES.$(KBUILD_TARGET) = \
181 $(KBUILD_TARGET)/SUPR0IdcClient-$(KBUILD_TARGET).c
182SUPR0IdcClient_SOURCES = \
183 SUPR0IdcClient.c \
184 SUPR0IdcClientComponent.c \
185 SUPR0IdcClientStubs.c
186
187
188#
189# VBoxDrv.sys - The Windows driver.
190#
191## @todo consoliate all the targets into a single mess.
192ifeq ($(KBUILD_TARGET),win)
193VBoxDrv_TEMPLATE = VBOXR0DRV
194ifdef VBOX_SIGNING_MODE
195 VBoxDrv_NOINST = true
196endif
197VBoxDrv_DEFS = IN_RT_R0 IN_SUP_R0 SUPDRV_WITH_RELEASE_LOGGER
198ifdef VBOX_WITH_IDT_PATCHING
199 VBoxDrv_DEFS += VBOX_WITH_IDT_PATCHING
200endif
201VBoxDrv_SDKS = W2K3DDK WINPSDKINCS
202VBoxDrv_INCS := $(PATH_SUB_CURRENT)
203VBoxDrv_SOURCES = \
204 win/SUPDrv-win.cpp \
205 win/SUPDrvA-win.asm \
206 SUPDrv.c
207VBoxDrv_LDFLAGS.x86 = -Entry:DriverEntry@8
208VBoxDrv_LDFLAGS.amd64 = -Entry:DriverEntry
209VBoxDrv_LIBS = \
210 $(PATH_SDK_W2K3DDK_LIB)/ntoskrnl.lib \
211 $(PATH_SDK_W2K3DDK_LIB)/hal.lib \
212 $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
213
214
215INSTALLS += VBoxDrv-inf
216VBoxDrv-inf_INST = $(INST_BIN)
217VBoxDrv-inf_MODE = a+r,u+w
218VBoxDrv-inf_SOURCES = \
219 $(PATH_TARGET)/VBoxDrvCat.dir/VBoxDrv.inf
220VBoxDrv-inf_CLEAN = $(VBoxDrv-inf_SOURCES)
221VBoxDrv-inf_BLDDIRS = $(PATH_TARGET)/VBoxDrvCat.dir
222
223$(PATH_TARGET)/VBoxDrvCat.dir/VBoxDrv.inf: $(PATH_SUB_CURRENT)/win/VBoxDrv.inf $(MAKEFILE_CURRENT) | $$(call DIRDEP,$$(@D))
224 $(call MSG_GENERATE,VBoxDrv-inf,$@,$<)
225 $(call VBOX_EDIT_INF_FN,$<,$@)
226
227 ifdef VBOX_SIGNING_MODE
228VBoxDrv-inf_SOURCES += \
229 $(PATH_TARGET)/VBoxDrvCat.dir/VBoxDrv.sys \
230 $(PATH_TARGET)/VBoxDrvCat.dir/VBoxDrv.cat
231
232$(PATH_TARGET)/VBoxDrvCat.dir/VBoxDrv.sys: $$(TARGET_VBoxDrv) | $$(call DIRDEP,$$(@D))
233 $(INSTALL) -m 644 $< $(@D)
234
235$(PATH_TARGET)/VBoxDrvCat.dir/VBoxDrv.cat: \
236 $(PATH_TARGET)/VBoxDrvCat.dir/VBoxDrv.inf \
237 $(PATH_TARGET)/VBoxDrvCat.dir/VBoxDrv.cat
238 $(call MSG_TOOL,Inf2Cat,VBoxDrv-inf,$@,$<)
239 $(call VBOX_MAKE_CAT_FN, $(@D),$@)
240 endif # signing
241endif # win
242
243
244#
245# vboxdrv.ko - The Linux Kernel Module (syntax only).
246#
247ifeq ($(KBUILD_TARGET),linux)
248vboxdrv_TEMPLATE = VBOXR0DRV
249vboxdrv_DEFS = KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) MODULE IN_RT_R0 IN_SUP_R0 CONFIG_VBOXDRV_AS_MISC
250ifdef VBOX_WITH_IDT_PATCHING
251vboxdrv_DEFS += VBOX_WITH_IDT_PATCHING
252endif
253ifdef VBOX_LINUX_VERSION_2_4
254vboxdrv_DEFS += EXPORT_SYMTAB
255endif
256vboxdrv_INCS := \
257 $(PATH_SUB_CURRENT) \
258 $(PATH_ROOT)/src/VBox/Runtime/r0drv/linux
259vboxdrv_LIBS = $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
260vboxdrv_LIBS.debug = $(vboxdrv_LIBS) $(VBOX_GCC_LIBGCC)
261vboxdrv_SOURCES = \
262 $(KBUILD_TARGET)/SUPDrv-$(KBUILD_TARGET).c \
263 SUPDrv.c
264ifndef VBOX_LINUX_VERSION_2_4
265vboxdrv_SOURCES += \
266 $(KBUILD_TARGET)/SUPDrv-$(KBUILD_TARGET).mod.c
267endif
268endif # real linux
269
270
271#
272# VBoxDrv.kext - The Darwin Kernel Extension.
273#
274ifeq ($(KBUILD_TARGET),darwin)
275VBoxDrv_TEMPLATE = VBOXR0DRV
276VBoxDrv_DEFS = IN_RT_R0 IN_SUP_R0 SUPDRV_WITH_RELEASE_LOGGER VBOX_SVN_REV=$(VBOX_SVN_REV)
277ifdef VBOX_WITH_IDT_PATCHING
278VBoxDrv_DEFS += VBOX_WITH_IDT_PATCHING
279endif
280VBoxDrv_DEFS += DEBUG_DARWIN_GIP
281VBoxDrv_INCS := $(PATH_SUB_CURRENT)
282VBoxDrv_LIBS = $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
283VBoxDrv_LDFLAGS = -v -Wl,-whyload -Wl,-v -Wl,-whatsloaded
284VBoxDrv_INST = $(INST_VBOXDRV)Contents/MacOS/
285VBoxDrv_SOURCES = \
286 SUPDrv.c \
287 $(KBUILD_TARGET)/SUPDrv-$(KBUILD_TARGET).cpp
288
289INSTALLS += VBoxDrv.kext
290VBoxDrv.kext_INST = $(INST_VBOXDRV)Contents/
291VBoxDrv.kext_SOURCES = \
292 $(PATH_TARGET)/VBoxDrv/Info.plist
293VBoxDrv.kext_CLEAN = \
294 $(PATH_TARGET)/VBoxDrv/Info.plist
295
296$(PATH_TARGET)/VBoxDrv/Info.plist: $(PATH_SUB_CURRENT)/darwin/Info.plist $(VBOX_VERSION_MK) | $(call DIRDEP,$(PATH_TARGET)/VBoxDrv)
297 $(call MSG_GENERATE,VBoxDrv,$@,$<)
298 $(xQUIET)$(RM) -f $@
299 $(xQUIET)$(SED) \
300 -e 's/@VBOX_VERSION_STRING@/$(VBOX_VERSION_STRING)/g' \
301 -e 's/@VBOX_VERSION_MAJOR@/$(VBOX_VERSION_MAJOR)/g' \
302 -e 's/@VBOX_VERSION_MINOR@/$(VBOX_VERSION_MINOR)/g' \
303 -e 's/@VBOX_VERSION_BUILD@/$(VBOX_VERSION_BUILD)/g' \
304 $< > $@
305
306INSTALLS += Scripts
307Scripts_INST = $(INST_DIST)
308Scripts_SOURCES = \
309 darwin/load.sh
310
311endif # darwin
312
313
314#
315# VBoxDrv.sys - The OS/2 driver.
316#
317ifeq ($(KBUILD_TARGET),os2)
318VBoxDrv_TEMPLATE = VBOXR0DRV
319VBoxDrv_DEFS = IN_RT_R0 IN_SUP_R0
320VBoxDrv_INCS := $(PATH_SUB_CURRENT)
321#VBoxDrv_LDFLAGS = -s -t -v
322VBoxDrv_SOURCES = \
323 os2/SUPDrvA-os2.asm \
324 os2/SUPDrv-os2.def
325VBoxDrv_LIBS = \
326 $(TARGET_VBoxDrvLib) \
327 $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB) \
328 $(VBOX_GCC_LIBGCC) \
329 end
330
331# temp hack to ensure that SUPDrvA-os2.asm is first in the link.
332LIBRARIES += VBoxDrvLib
333VBoxDrvLib_TEMPLATE = VBOXR0DRV
334VBoxDrvLib_NOINST = 1
335VBoxDrvLib_DEFS = IN_RT_R0 IN_SUP_R0
336VBoxDrvLib_INCS := \
337 $(PATH_SUB_CURRENT) \
338 $(PATH_TARGET) \
339 $(PATH_ROOT)/src/VBox/Runtime/include
340VBoxDrvLib_SOURCES = \
341 os2/SUPDrv-os2.cpp \
342 SUPDrv.c
343endif
344
345
346#
347# vboxdrv.ko - The FreeBSD Kernel Module.
348#
349ifeq ($(KBUILD_TARGET),freebsd)
350vboxdrv_TEMPLATE = VBOXR0DRV
351vboxdrv_DEFS = IN_RT_R0 IN_SUP_R0 SUPDRV_WITH_RELEASE_LOGGER VBOX_SVN_REV=$(VBOX_SVN_REV)
352ifdef VBOX_WITH_IDT_PATCHING
353vboxdrv_DEFS += VBOX_WITH_IDT_PATCHING
354endif
355vboxdrv_INCS := $(PATH_SUB_CURRENT)
356vboxdrv_LIBS = $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
357vboxdrv_SOURCES := \
358 $(KBUILD_TARGET)/SUPDrv-$(KBUILD_TARGET).c \
359 $(PATH_SUB_CURRENT)/$(KBUILD_TARGET)/SUPDrv-$(KBUILD_TARGET).def \
360 SUPDrv.c
361## @todo the SUPDrv-freebsd.def is most probably gonna break it and require build system hacking...
362endif # freebsd
363
364
365#
366# vboxdrv.o - The Solaris Kernel Module.
367#
368ifeq ($(KBUILD_TARGET),solaris)
369vboxdrv_TEMPLATE = VBOXR0DRV
370vboxdrv_DEFS = IN_RT_R0 IN_SUP_R0
371ifdef VBOX_WITH_IDT_PATCHING
372vboxdrv_DEFS += VBOX_WITH_IDT_PATCHING
373endif
374vboxdrv_INCS := $(PATH_SUB_CURRENT)
375vboxdrv_LIBS = $(PATH_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
376vboxdrv_SOURCES = \
377 $(KBUILD_TARGET)/SUPDrv-$(KBUILD_TARGET).c \
378 SUPDrv.c
379endif # solaris
380
381
382#
383# SUPDrv.c needs the VBOX_SVN_REV.
384#
385SUPDrv.c_DEFS += VBOX_SVN_REV=$(VBOX_SVN_REV)
386
387
388include $(KBUILD_PATH)/subfooter.kmk
389
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette