VirtualBox

source: vbox/trunk/src/VBox/HostDrivers/Support/linux/Makefile@ 88087

Last change on this file since 88087 was 85939, checked in by vboxsync, 4 years ago

Additions/linux/Makefile, HostDrivers/linux/Makefile: Many cleanups in the Linux kernel module Makefiles, making them more uniform, and allow install of individual modules. Additionally, allow building of the kernel modules straight from the respective subdirectory (no dependencies across directories, so vboxdrv/vboxguest still needs to be built first, otherwise you end up with undefined symbols). Finally some parallelization improvements. At the top level still uses the Module.symvers copying and somewhat quirky KBUILD_EXTRA_SYMBOLS pointing to the copy, because this is backwards compatible to before KBUILD_EXTRA_SYMBOLS was invented.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.8 KB
Line 
1# $Id: Makefile 85939 2020-08-28 18:36:30Z vboxsync $
2## @file
3# Makefile for the VirtualBox Linux Host Driver.
4#
5
6#
7# Copyright (C) 2006-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# 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
27# Linux kbuild sets this to our source directory if we are called from there
28obj ?= $(CURDIR)
29include $(obj)/Makefile-header.gmk
30VBOXDRV_DIR := $(VBOX_MODULE_SRC_DIR)
31
32VBOXMOD_NAME = vboxdrv
33VBOXMOD_OBJS = \
34 linux/SUPDrv-linux.o \
35 SUPDrv.o \
36 SUPDrvGip.o \
37 SUPDrvSem.o \
38 SUPDrvTracer.o \
39 SUPLibAll.o \
40 common/string/strformatrt.o
41
42ifndef VBOX_WITHOUT_COMBINED_SOURCES
43VBOXMOD_OBJS += \
44 combined-agnostic1.o \
45 combined-agnostic2.o \
46 combined-os-specific.o
47else # VBOX_WITHOUT_COMBINED_SOURCES
48VBOXMOD_OBJS += \
49 r0drv/alloc-r0drv.o \
50 r0drv/initterm-r0drv.o \
51 r0drv/memobj-r0drv.o \
52 r0drv/mpnotification-r0drv.o \
53 r0drv/powernotification-r0drv.o \
54 r0drv/linux/assert-r0drv-linux.o \
55 r0drv/linux/alloc-r0drv-linux.o \
56 r0drv/linux/initterm-r0drv-linux.o \
57 r0drv/linux/memobj-r0drv-linux.o \
58 r0drv/linux/memuserkernel-r0drv-linux.o \
59 r0drv/linux/mp-r0drv-linux.o \
60 r0drv/linux/mpnotification-r0drv-linux.o \
61 r0drv/linux/process-r0drv-linux.o \
62 r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.o \
63 r0drv/linux/semevent-r0drv-linux.o \
64 r0drv/linux/semeventmulti-r0drv-linux.o \
65 r0drv/linux/semfastmutex-r0drv-linux.o \
66 r0drv/linux/semmutex-r0drv-linux.o \
67 r0drv/linux/spinlock-r0drv-linux.o \
68 r0drv/linux/thread-r0drv-linux.o \
69 r0drv/linux/thread2-r0drv-linux.o \
70 r0drv/linux/threadctxhooks-r0drv-linux.o \
71 r0drv/linux/time-r0drv-linux.o \
72 r0drv/linux/timer-r0drv-linux.o \
73 r0drv/generic/semspinmutex-r0drv-generic.o \
74 common/alloc/alloc.o \
75 common/checksum/crc32.o \
76 common/checksum/ipv4.o \
77 common/checksum/ipv6.o \
78 common/err/RTErrConvertFromErrno.o \
79 common/err/RTErrConvertToErrno.o \
80 common/err/errinfo.o \
81 common/log/log.o \
82 common/log/logellipsis.o \
83 common/log/logrel.o \
84 common/log/logrelellipsis.o \
85 common/log/logcom.o \
86 common/log/logformat.o \
87 common/misc/RTAssertMsg1Weak.o \
88 common/misc/RTAssertMsg2.o \
89 common/misc/RTAssertMsg2Add.o \
90 common/misc/RTAssertMsg2AddWeak.o \
91 common/misc/RTAssertMsg2AddWeakV.o \
92 common/misc/RTAssertMsg2Weak.o \
93 common/misc/RTAssertMsg2WeakV.o \
94 common/misc/assert.o \
95 common/misc/handletable.o \
96 common/misc/handletablectx.o \
97 common/misc/thread.o \
98 common/string/RTStrCat.o \
99 common/string/RTStrCopy.o \
100 common/string/RTStrCopyEx.o \
101 common/string/RTStrCopyP.o \
102 common/string/RTStrEnd.o \
103 common/string/RTStrNCmp.o \
104 common/string/RTStrNLen.o \
105 common/string/stringalloc.o \
106 common/string/strformat.o \
107 common/string/strformatnum.o \
108 common/string/strformattype.o \
109 common/string/strprintf.o \
110 common/string/strtonum.o \
111 common/table/avlpv.o \
112 common/time/time.o \
113 r0drv/linux/RTLogWriteDebugger-r0drv-linux.o \
114 generic/RTAssertShouldPanic-generic.o \
115 generic/RTLogWriteStdErr-stub-generic.o \
116 generic/RTLogWriteStdOut-stub-generic.o \
117 generic/RTLogWriteUser-generic.o \
118 generic/RTMpGetArraySize-generic.o \
119 generic/RTMpGetCoreCount-generic.o \
120 generic/RTSemEventWait-2-ex-generic.o \
121 generic/RTSemEventWaitNoResume-2-ex-generic.o \
122 generic/RTSemEventMultiWait-2-ex-generic.o \
123 generic/RTSemEventMultiWaitNoResume-2-ex-generic.o \
124 generic/RTTimerCreate-generic.o \
125 generic/errvars-generic.o \
126 generic/mppresent-generic.o \
127 generic/uuid-generic.o \
128 VBox/log-vbox.o
129 ifeq ($(VBOX_KBUILD_TARGET_ARCH),amd64)
130VBOXMOD_OBJS += common/alloc/heapsimple.o
131 endif
132endif # VBOX_WITHOUT_COMBINED_SOURCES
133ifeq ($(VBOX_KBUILD_TARGET_ARCH),x86)
134VBOXMOD_OBJS += \
135 math/gcc/divdi3.o \
136 math/gcc/moddi3.o \
137 math/gcc/qdivrem.o \
138 math/gcc/udivdi3.o \
139 math/gcc/udivmoddi4.o \
140 math/gcc/divdi3.o \
141 math/gcc/umoddi3.o
142endif
143ifdef VBOX_WITH_NATIVE_DTRACE
144VBOXMOD_OBJS += SUPDrvDTrace.o
145endif
146
147VBOXMOD_INCL = \
148 $(VBOXDRV_DIR) \
149 $(VBOXDRV_DIR)include \
150 $(VBOXDRV_DIR)r0drv/linux
151ifdef VBOX_WITH_NATIVE_DTRACE
152VBOXMOD_INCL += \
153 /usr/include/linux \
154 /usr/include
155endif
156
157VBOXMOD_DEFS = \
158 RT_OS_LINUX \
159 IN_RING0 \
160 IN_RT_R0 \
161 IN_SUP_R0 \
162 VBOX \
163 RT_WITH_VBOX \
164 VBOX_WITH_HARDENING \
165 SUPDRV_WITH_RELEASE_LOGGER \
166 VBOX_WITHOUT_EFLAGS_AC_SET_IN_VBOXDRV \
167 VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV \
168 IPRT_WITHOUT_EFLAGS_AC_PRESERVING \
169 IPRT_WITH_EFLAGS_AC_PRESERVING \
170 VBOX_WITH_64_BITS_GUESTS # <-- must be consistent with Config.kmk!
171ifndef CONFIG_VBOXDRV_FIXEDMAJOR
172VBOXMOD_DEFS += CONFIG_VBOXDRV_AS_MISC
173endif
174ifdef VBOX_WITH_NATIVE_DTRACE
175VBOXMOD_DEFS += VBOX_WITH_NATIVE_DTRACE
176endif
177ifdef VBOX_WITH_TEXT_MODMEM_HACK
178VBOXMOD_DEFS += RTMEMALLOC_EXEC_HEAP VBOX_WITH_TEXT_MODMEM_HACK
179endif
180VBOXMOD_CFLAGS = -include $(VBOXDRV_DIR)include/VBox/SUPDrvMangling.h \
181 -fno-omit-frame-pointer -fno-pie -Wno-declaration-after-statement
182
183
184include $(obj)/Makefile-footer.gmk
185
186check: $(VBOXMOD_0_TARGET)
187 @if ! readelf -p __ksymtab_strings vboxdrv.ko | grep -E "\[.*\] *(RT|g_..*RT.*)"; then \
188 echo "All exported IPRT symbols are properly renamed!"; \
189 else \
190 echo "error: Some exported IPRT symbols was not properly renamed! See above." >&2; \
191 false; \
192 fi
193
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