VirtualBox

source: vbox/trunk/src/VBox/Runtime/Makefile@ 642

Last change on this file since 642 was 591, checked in by vboxsync, 18 years ago

Generic request packets (port of of the EMT specific VM request packet code). First commit; not yet debugged

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 23.0 KB
Line 
1# $Id: Makefile 591 2007-02-04 14:11:01Z vboxsync $
2## @file
3# Makefile for the InnoTek Portable Runtime (IPRT).
4#
5
6#
7# Copyright (C) 2006 InnoTek Systemberatung GmbH
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 as published by the Free Software Foundation,
13# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
14# distribution. VirtualBox OSE is distributed in the hope that it will
15# be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17# If you received this file as part of a commercial VirtualBox
18# distribution, then only the terms of your commercial VirtualBox
19# license agreement apply instead of the previous paragraph.
20#
21
22
23DEPTH = ../../..
24include $(PATH_KBUILD)/header.kmk
25
26ifndef VBOX_ADDITIONS_LINUX_ONLY
27 # Normal mode.
28 BLDPROGS = uniread
29 LIBRARIES = RuntimeR3 RuntimeR0 RuntimeGC RuntimeEFCPP RuntimeR3NoCRTGCC
30 ifdef VBOX_WITH_VBOXDRV
31 LIBRARIES += RuntimeR0Drv
32 endif
33 ifdef VBOX_WITH_WIN32_ADDITIONS
34 LIBRARIES += RuntimeW32GuestR0 RuntimeW32GuestR3 RuntimeW32NT4GuestR0
35 endif
36 ifdef VBOX_WITH_LINUX_ADDITIONS
37 LIBRARIES += RuntimeLnx32GuestR0 RuntimeLnx32GuestR3
38 endif
39 LIBRARIES.l4= RuntimeR3L4
40 DLLS = VBoxRT
41 OTHER_CLEAN = \
42 $(PATH_TARGET)/errmsgdata.h \
43 $(PATH_TARGET)/errmsgcomdata.h \
44 $(PATH_TARGET)/Doxyfile \
45 $(PATH_TARGET)/Doxyfile.dep \
46 $(PATH_TARGET)/docs.iprt
47
48 SUBDIRS_AFTER = testcase
49
50else
51 # Linux target guest runtime only mode.
52 LIBRARIES = RuntimeLnx32GuestR0 RuntimeLnx32GuestR3
53endif # only linux guest additions
54
55
56# global (for now at least)
57INCS += include
58
59
60#
61# Unicode Specification reader used to regenerate unidata.cpp.
62#
63uniread_TEMPLATE = VBOXBLDPROG
64uniread_SOURCES = uniread.cpp
65
66#
67# Win64 assembly sources.
68#
69RuntimeWin64ASM_SOURCES = \
70 win64/ASMAtomicBitClear.asm \
71 win64/ASMAtomicBitTestAndToggle.asm \
72 win64/ASMAtomicBitToggle.asm \
73 win64/ASMAtomicReadU64.asm \
74 win64/ASMAtomicXchgU16.asm \
75 win64/ASMAtomicXchgU8.asm \
76 win64/ASMBitFirstClear.asm \
77 win64/ASMBitFirstSet.asm \
78 win64/ASMGetCS.asm \
79 win64/ASMGetDS.asm \
80 win64/ASMGetES.asm \
81 win64/ASMGetFlags.asm \
82 win64/ASMGetFS.asm \
83 win64/ASMGetGS.asm \
84 win64/ASMGetIDTR.asm \
85 win64/ASMGetSS.asm \
86 win64/ASMProbeReadByte.asm \
87 win64/ASMSetFlags.asm \
88 win64/ASMGetDR0.asm \
89 win64/ASMGetDR1.asm \
90 win64/ASMGetDR2.asm \
91 win64/ASMGetDR3.asm \
92 win64/ASMGetDR6.asm \
93 win64/ASMGetDR7.asm \
94
95#
96# RuntimeR3 - Static Runtime for Ring-3 executables.
97#
98RuntimeR3_TEMPLATE = VBOXR3EXE
99RuntimeR3_SDKS.win = WINPSDK W2K3DDK
100RuntimeR3_DEFS = IN_RT_R3 IN_SUP_R3 LDR_WITH_NATIVE LDR_WITH_ELF32 LDR_WITH_PE RT_WITH_VBOX
101ifdef IPRT_WITH_KLDR
102 RuntimeR3_DEFS += LDR_WITH_KLDR KLDR_USE_CRT
103 RuntimeR3_DEFS.debug += KLDRMOD_STRICT KLDRMODLX_STRICT KLDRMODPE_STRICT KLDRMODNATIVE_STRICT KLDRRDR_STRICT
104endif
105RuntimeR3_DEFS.l4 = L4
106ifdef VBOX_MAIN_RELEASE_LOG ## @todo (dmik): temporary, until RTThreadSelf/RTThreadAdopt are properly updated
107 RuntimeR3_DEFS += RTCRITSECT_STRICT
108endif
109RuntimeR3_INCS = \
110 $(PATH_ROOT)/src/libs/liblzf-1.51
111ifdef IPRT_WITH_KLDR
112 RuntimeR3_INCS += \
113 $(IPRT_PATH_KLDR)
114endif
115RuntimeR3_INCS.l4 = \
116 $(PATH_ROOT)/src/libs/libuuid \
117 $(L4_INCDIR)
118# for iconv.h
119RuntimeR3_INCS.freebsd = \
120 /usr/local/include
121
122RuntimeR3_SOURCES = \
123 alloc.cpp \
124 alloc/heapsimple.cpp \
125 assert.cpp \
126 table/avlhcphys.cpp \
127 table/avlgcptr.cpp \
128 table/avlogcphys.cpp \
129 table/avlogcptr.cpp \
130 table/avlohcphys.cpp \
131 table/avloioport.cpp \
132 table/avlpv.cpp \
133 table/avlrgcptr.cpp \
134 table/avlrogcphys.cpp \
135 table/avlrogcptr.cpp \
136 table/avlroogcptr.cpp \
137 table/avlroioport.cpp \
138 table/avlu32.cpp \
139 table/avlul.cpp \
140 table/table.cpp \
141 crc32.cpp \
142 crc64.cpp \
143 dir.cpp \
144 errmsg.cpp \
145 fileio.cpp \
146 fs.cpp \
147 generic/critsect-generic.cpp \
148 generic/RTFileCopy-generic.cpp \
149 generic/RTLogWriteStdErr-generic.cpp \
150 generic/RTLogWriteStdOut-generic.cpp \
151 generic/RTLogWriteUser-generic.cpp \
152 generic/semfastmutex-generic.cpp \
153 generic/spinlock-generic.cpp \
154 ldr.cpp \
155 ldrFile.cpp \
156 ldrNative.cpp \
157 ldrELF.cpp \
158 ldrEx.cpp \
159 ldrPE.cpp \
160 log.cpp \
161 logcom.cpp \
162 logformat.cpp \
163 md5.cpp \
164 path.cpp \
165 req.cpp \
166 r3/alloc-ef.cpp \
167 r3/alloc.cpp \
168 r3/init.cpp \
169 r3/process.cpp \
170 r3/stream.cpp \
171 r3/tcp.cpp \
172 RTErrConvertFromErrno.cpp \
173 semspingpong.cpp \
174 straprintf.cpp \
175 strformat.cpp \
176 strformatrt.cpp \
177 string.cpp \
178 strprintf.cpp \
179 strspace.cpp \
180 strstrip.cpp \
181 strtonum.cpp \
182 thread.cpp \
183 time.cpp \
184 timeprog.cpp \
185 uni.cpp \
186 unidata.cpp \
187 utf-16.cpp \
188 utf-8.cpp \
189 zip.cpp \
190
191ifdef IPRT_WITH_KLDR
192 RuntimeR3_SOURCES += \
193 ldrkLdr.cpp \
194 $(IPRT_PATH_KLDR)/kLdrMod.c \
195 $(IPRT_PATH_KLDR)/kLdrModLX.c \
196 $(IPRT_PATH_KLDR)/kLdrModPE.c \
197 $(IPRT_PATH_KLDR)/kLdrModNative.c \
198 $(IPRT_PATH_KLDR)/kLdrMisc.c \
199 $(IPRT_PATH_KLDR)/kLdrRdr.c \
200 $(IPRT_PATH_KLDR)/kLdrHlpStr.c
201# We Implement these using IPRT facilities.
202# $(IPRT_PATH_KLDR)/kLdrHlp.c \
203# $(IPRT_PATH_KLDR)/kLdrHlpHeap.c \
204# $(IPRT_PATH_KLDR)/kLdrHlpSem.c \
205# $(IPRT_PATH_KLDR)/kLdrHlpMem.c \
206# $(IPRT_PATH_KLDR)/kLdrHlpPath.c
207
208endif
209
210# VBox specific stuff.
211RuntimeR3_SOURCES += \
212 VBox/strformat-vbox.cpp \
213 VBox/log-vbox.cpp
214
215RuntimeR3_SOURCES.win = \
216 generic/RTDirQueryInfo-generic.cpp \
217 generic/RTDirSetTimes-generic.cpp \
218 generic/semsrw-generic.cpp \
219 generic/semnoint-generic.cpp \
220 nt/RTErrConvertFromNtStatus.cpp \
221 win32/errmsgwin.cpp \
222 r3/win32/alloc-win32.cpp \
223 r3/win32/dir-win32.cpp \
224 r3/win32/fileio-win32.cpp \
225 r3/win32/fs-win32.cpp \
226 r3/win32/ldrNative-win32.cpp \
227 r3/win32/path-win32.cpp \
228 r3/win32/process-win32.cpp \
229 r3/win32/RTLogWriteDebugger-win32.cpp \
230 r3/win32/sched-win32.cpp \
231 r3/win32/sems-win32.cpp \
232 r3/win32/system-win32.cpp \
233 r3/win32/thread-win32.cpp \
234 r3/win32/time-win32.cpp \
235 r3/win32/timer-win32.cpp \
236 r3/win32/utf16locale-win32.cpp \
237 r3/win32/utf8-win32.cpp \
238 r3/win32/uuid-win32.cpp \
239 timesup.cpp \
240 win32/RTErrConvertFromWin32.cpp
241
242RuntimeR3_SOURCES.win.amd64 = \
243 $(RuntimeWin64ASM_SOURCES)
244
245RuntimeR3_SOURCES.linux = \
246 generic/RTDirQueryInfo-generic.cpp \
247 generic/RTDirSetTimes-generic.cpp \
248 generic/RTFileMove-generic.cpp \
249 generic/RTLogWriteDebugger-generic.cpp \
250 generic/pathhost-generic.cpp \
251 r3/linux/sched-linux.cpp \
252 r3/linux/uuid-linux.cpp \
253 r3/posix/alloc-posix.cpp \
254 r3/posix/dir-posix.cpp \
255 r3/posix/fileio-posix.cpp \
256 r3/posix/fs-posix.cpp \
257 r3/posix/ldrNative-posix.cpp \
258 r3/posix/path-posix.cpp \
259 r3/posix/process-posix.cpp \
260 r3/posix/sems-posix.cpp \
261 r3/posix/system-posix.cpp \
262 r3/posix/thread-posix.cpp \
263 r3/posix/time-posix.cpp \
264 r3/posix/timer-posix.cpp \
265 generic/utf16locale-generic.cpp \
266 r3/posix/utf8-posix.cpp \
267 timesup.cpp \
268
269RuntimeR3_SOURCES.os2 = \
270 generic/RTDirQueryInfo-generic.cpp \
271 generic/RTDirSetTimes-generic.cpp \
272 generic/RTFileMove-generic.cpp \
273 generic/RTLogWriteDebugger-generic.cpp \
274 generic/pathhost-generic.cpp \
275 generic/semsrw-generic.cpp \
276 generic/semnoint-generic.cpp \
277 generic/sched-generic.cpp \
278 generic/uuid-generic.cpp \
279 os2/RTErrConvertFromOS2.cpp \
280 r3/os2/sems-os2.cpp \
281 r3/os2/system-os2.cpp \
282 r3/os2/thread-os2.cpp \
283 r3/posix/alloc-posix.cpp \
284 r3/posix/dir-posix.cpp \
285 r3/posix/fileio-posix.cpp \
286 r3/posix/fs-posix.cpp \
287 r3/posix/ldrNative-posix.cpp \
288 r3/posix/path-posix.cpp \
289 r3/posix/process-posix.cpp \
290 r3/posix/time-posix.cpp \
291 r3/posix/timer-posix.cpp \
292 generic/utf16locale-generic.cpp \
293 r3/posix/utf8-posix.cpp \
294 timesup.cpp \
295
296RuntimeR3_SOURCES.darwin = \
297 generic/RTDirQueryInfo-generic.cpp \
298 generic/RTDirSetTimes-generic.cpp \
299 generic/RTFileMove-generic.cpp \
300 generic/RTLogWriteDebugger-generic.cpp \
301 generic/pathhost-generic.cpp \
302 r3/darwin/alloc-darwin.cpp \
303 r3/posix/dir-posix.cpp \
304 r3/posix/fileio-posix.cpp \
305 r3/posix/fs-posix.cpp \
306 r3/posix/ldrNative-posix.cpp \
307 r3/posix/path-posix.cpp \
308 r3/posix/process-posix.cpp \
309 generic/sched-generic.cpp \
310 r3/posix/sems-posix.cpp \
311 r3/posix/system-posix.cpp \
312 r3/posix/thread-posix.cpp \
313 r3/darwin/time-darwin.cpp \
314 generic/timer-generic.cpp \
315 generic/utf16locale-generic.cpp \
316 r3/posix/utf8-posix.cpp \
317 r3/linux/uuid-linux.cpp \
318 timesup.cpp \
319
320## @todo Make BSD sched.
321RuntimeR3_SOURCES.freebsd = \
322 generic/RTDirQueryInfo-generic.cpp \
323 generic/RTDirSetTimes-generic.cpp \
324 generic/RTFileMove-generic.cpp \
325 generic/RTLogWriteDebugger-generic.cpp \
326 generic/pathhost-generic.cpp \
327 generic/sched-generic.cpp \
328 generic/uuid-generic.cpp \
329 r3/freebsd/alloc-freebsd.cpp \
330 r3/posix/dir-posix.cpp \
331 r3/posix/fileio-posix.cpp \
332 r3/posix/fs-posix.cpp \
333 r3/posix/ldrNative-posix.cpp \
334 r3/posix/path-posix.cpp \
335 r3/posix/process-posix.cpp \
336 r3/posix/sems-posix.cpp \
337 r3/posix/system-posix.cpp \
338 r3/posix/thread-posix.cpp \
339 r3/posix/time-posix.cpp \
340 r3/posix/timer-posix.cpp \
341 generic/utf16locale-generic.cpp \
342 r3/posix/utf8-posix.cpp \
343 timesup.cpp \
344
345## PORTME: Porters add their selection of platform specific files for Ring-3 here.
346
347
348#
349# L4 RuntimeR3 subtarget since L4 headers won't work with VBOXR3.
350#
351RuntimeR3L4_TEMPLATE = VBOXR3NP
352RuntimeR3L4_DEFS = IN_RT_R3 IN_SUP_R3 LDR_WITH_NATIVE LDR_WITH_ELF LDR_WITH_PE
353RuntimeR3L4_INCS = $(L4_INCDIR) \
354 $(PATH_ROOT)/src/libs/libuuid
355
356RuntimeR3L4_SOURCES = \
357 generic/RTDirQueryInfo-generic.cpp \
358 generic/RTDirSetTimes-generic.cpp \
359 generic/RTFileMove-generic.cpp \
360 generic/RTLogWriteDebugger-generic.cpp \
361 generic/fs-stubs-generic.cpp \
362 generic/pathhost-generic.cpp \
363 generic/sched-generic.cpp \
364 generic/semsrw-generic.cpp \
365 generic/semnoint-generic.cpp \
366 l4/l4-errno.cpp \
367 l4/process-l4env.cpp \
368 l4/sems-l4env.cpp \
369 l4/system-l4env.cpp \
370 l4/thread-l4env.cpp \
371 l4/timer-l4env.cpp \
372 generic/utf16locale-generic.cpp \
373 l4/utf8-l4env.cpp \
374 r3/linux/uuid-linux.cpp \
375 r3/posix/alloc-posix.cpp \
376 r3/posix/dir-posix.cpp \
377 r3/posix/fileio-posix.cpp \
378 r3/posix/ldrNative-posix.cpp \
379 r3/posix/path-posix.cpp \
380 r3/posix/time-posix.cpp \
381 timesup.cpp
382
383#
384# RuntimeW32GuestR3 - Win32 guest program runtime.
385#
386RuntimeW32GuestR3_TEMPLATE = VBOXW32GUESTR3LIB
387RuntimeW32GuestR3_SDKS = $(RuntimeR3_SDKS.win) $(RuntimeR3_SDKS.win.x86) $(RuntimeR3_SDKS)
388RuntimeW32GuestR3_DEFS = $(RuntimeR3_DEFS)
389RuntimeW32GuestR3_DEFS.$(BUILD_TYPE) = $(RuntimeR3_DEFS).$(BUILD_TYPE)
390RuntimeW32GuestR3_SOURCES = $(RuntimeR3_SOURCES.win) $(RuntimeR3_SOURCES)
391RuntimeW32GuestR3_INCS = $(RuntimeR3_INCS.win) $(RuntimeR3_INCS)
392
393
394#
395# RuntimeLnx32GuestR3 - 32-bit Linux guest program runtime.
396#
397RuntimeLnx32GuestR3_TEMPLATE = VBOXLNX32GUESTR3LIB
398RuntimeLnx32GuestR3_DEFS = $(RuntimeR3_DEFS.linux) $(RuntimeR3_DEFS) IN_GUEST IN_GUEST_R3
399RuntimeLnx32GuestR3_DEFS.$(BUILD_TYPE) = $(RuntimeR3_DEFS.$(BUILD_TYPE))
400RuntimeLnx32GuestR3_SOURCES = $(RuntimeR3_SOURCES.linux) $(RuntimeR3_SOURCES)
401RuntimeLnx32GuestR3_INCS = $(RuntimeR3_INCS.linux) $(RuntimeR3_INCS)
402
403
404#
405# VBoxRT - Shared Object / DLL version.
406#
407VBoxRT_TEMPLATE = VBOXR3
408VBoxRT_SDKS.win = WINPSDK W2K3DDK VBOX_NTDLL
409VBoxRT_DEFS = $(RuntimeR3_DEFS) IN_SUP_R3 IN_SUP_R3
410VBoxRT_DEFS.$(BUILD_TYPE) = $(RuntimeR3_DEFS.$(BUILD_TYPE))
411VBoxRT_SOURCES = \
412 VBox/VBoxRTDeps.cpp \
413 $(RuntimeR3_SOURCES)
414VBoxRT_SOURCES.$(BUILD_TARGET) = $(RuntimeR3_SOURCES.$(BUILD_TARGET))
415VBoxRT_SOURCES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH) = $(RuntimeR3_SOURCES.$(BUILD_TARGET).$(BUILD_TARGET_ARCH))
416VBoxRT_SOURCES.win += r3/win32/dllmain-win32.cpp
417VBoxRT_SOURCES.win.amd64 += r3/win64/VBoxRT-win64.def
418VBoxRT_INCS = $(RuntimeR3_INCS)
419VBoxRT_INCS.$(BUILD_TARGET) = $(RuntimeR3_INCS.$(BUILD_TARGET))
420VBoxRT_INCS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH) = $(RuntimeR3_INCS.$(BUILD_TARGET).$(BUILD_TARGET_ARCH))
421VBoxRT_LIBS = \
422 $(PATH_LIB)/SUPR3$(VBOX_SUFF_LIB) \
423 $(PATH_LIB)/VBox-liblzf$(VBOX_SUFF_LIB)
424VBoxRT_LIBS.darwin = \
425 iconv
426VBoxRT_LIBS.freebsd = \
427 iconv
428VBoxRT_LIBPATH.freebsd = \
429 /usr/local/lib
430VBoxRT_LDFLAGS.darwin = -framework IOKit
431ifdef VBOX_USE_VCC80
432VBoxRT_LDFLAGS.win = /MANIFEST
433endif
434VBoxRT_LDFLAGS.l4 = \
435 -Wl,-whole-archive \
436 $(PATH_LIB)/RuntimeR3L4$(VBOX_SUFF_LIB) \
437 -Wl,-no-whole-archive
438ifeq ($(BUILD_TARGET),l4)
439VBoxRT_LIBS += \
440 $(L4_LIBDIR)/libl4sys.a \
441 $(L4_LIBDIR)/libl4sys.p.a
442endif
443VBoxRT_LIBS.l4 = \
444 $(PATH_LIB)/VBox-uuid$(VBOX_SUFF_LIB) \
445 $(PATH_LIB)/RuntimeR3L4$(VBOX_SUFF_LIB)
446
447#
448# RuntimeR3NoCRTGCC - CRT replacement lib for VBoxREM.
449# This is used together with VBoxRT.
450#
451RuntimeR3NoCRTGCC_TEMPLATE = VBOXNOCRTGCC
452RuntimeR3NoCRTGCC_SOURCES = \
453 \
454 math/ceill.asm \
455 math/cosl.asm \
456 math/fabs.asm \
457 math/fabsf.asm \
458 math/fabsl.asm \
459 math/floor.asm \
460 math/floorf.asm \
461 math/floorl.asm \
462 math/ldexpl.asm \
463 math/llrint.asm \
464 math/llrintf.asm \
465 math/llrintl.asm \
466 math/logl.asm \
467 math/lrint.asm \
468 math/lrintf.asm \
469 math/lrintl.asm \
470 math/remainder.asm \
471 math/remainderf.asm \
472 math/remainderl.asm \
473 math/sinl.asm \
474 math/tanl.asm \
475 math/trunc.asm \
476 math/truncf.asm \
477 math/truncl.asm \
478 \
479 misc/setjmp.asm \
480 \
481 string/memchr.asm \
482 string/memchr_alias.c \
483 string/memcpy.asm \
484 string/memcpy_alias.c \
485 string/mempcpy.asm \
486 string/memset.asm \
487 string/memset_alias.c
488
489RuntimeR3NoCRTGCC_SOURCES.x86 = \
490 math/x86/fenv-x86.c
491
492
493## @todo stop using the old memcpy.c and memset.c code.
494
495#
496# RuntimeR0 - Ring0 library for VMMR0.
497#
498RuntimeR0_TEMPLATE = VBOXR0
499RuntimeR0_DEFS = IN_RT_R0 RT_WITH_VBOX
500RuntimeR0_SOURCES = \
501 assert.cpp \
502 table/avlhcphys.cpp \
503 table/avlgcptr.cpp \
504 table/avlogcphys.cpp \
505 table/avlohcphys.cpp \
506 table/avlpv.cpp \
507 table/avlrogcphys.cpp \
508 table/avlogcptr.cpp \
509 table/avlrogcptr.cpp \
510 table/avlroogcptr.cpp \
511 table/avloioport.cpp \
512 table/avlroioport.cpp \
513 logcom.cpp \
514 logformat.cpp \
515 strformat.cpp \
516 strformatrt.cpp \
517 strprintf.cpp \
518 string/memchr.cpp \
519 string/memcmp.cpp \
520 string/memcpy.cpp \
521 string/memset.cpp \
522 string/strcpy.cpp \
523 string/strlen.cpp \
524 string/strncmp.cpp \
525 string/strpbrk.cpp \
526 VBox/strformat-vbox.cpp \
527 timesup.cpp
528
529RuntimeR0_SOURCES.win.amd64 = $(RuntimeWin64ASM_SOURCES)
530
531RuntimeR0_SOURCES.os2 = \
532 os2/RTErrConvertFromOS2.cpp \
533 os2/sys0.asm
534
535string/memchr.cpp_CXXFLAGS.win = -Oi-
536string/memcmp.cpp_CXXFLAGS.win = -Oi-
537string/memcpy.cpp_CXXFLAGS.win = -Oi-
538string/memset.cpp_CXXFLAGS.win = -Oi-
539string/strcpy.cpp_CXXFLAGS.win = -Oi-
540string/strlen.cpp_CXXFLAGS.win = -Oi-
541
542ifeq ($(BUILD_TARGET),l4)
543RuntimeR0Drv_BLD_TRG = linux
544RuntimeR0Drv_BLD_TRG_ARCH = x86
545RuntimeR0Drv_BLD_TRG_CPU = i386
546endif
547
548#
549# RuntimeR0Drv - Ring0 library for host drivers.
550#
551RuntimeR0Drv_TEMPLATE = VBOXR0DRV
552RuntimeR0Drv_SDKS.win = W2K3DDK WINPSDKINCS
553RuntimeR0Drv_DEFS = IN_RT_R0 RT_WITH_VBOX RT_WITHOUT_NOCRT_WRAPPERS
554RuntimeR0Drv_DEFS.win = IN_SUP_R0
555RuntimeR0Drv_DEFS.linux = MODULE KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) IN_SUP_R0 # why is IN_SUP_R0 here? because!
556
557RuntimeR0Drv_INCS.linux = \
558 r0drv/linux
559
560RuntimeR0Drv_SOURCES = \
561 assert.cpp \
562 log.cpp \
563 logcom.cpp \
564 logformat.cpp \
565 string/strpbrk.cpp \
566 strformat.cpp \
567 strformatrt.cpp \
568 strtonum.cpp \
569 strprintf.cpp \
570 VBox/strformat-vbox.cpp \
571 r0drv/alloc-r0drv.cpp \
572 r0drv/initterm-r0drv.cpp \
573 generic/RTLogWriteStdErr-stub-generic.cpp \
574 generic/RTLogWriteStdOut-stub-generic.cpp \
575 generic/RTLogWriteUser-generic.cpp \
576 VBox/log-vbox.cpp \
577 table/avlpv.cpp \
578 crc32.cpp \
579 crc64.cpp
580
581RuntimeR0Drv_SOURCES.linux = \
582 alloc/heapsimple.cpp \
583 r0drv/linux/alloc-r0drv-linux.c \
584 r0drv/linux/initterm-r0drv-linux.c \
585 r0drv/linux/process-r0drv-linux.c \
586 r0drv/linux/RTLogWriteDebugger-r0drv-linux.c \
587 r0drv/linux/semaphore-r0drv-linux.c \
588 r0drv/linux/spinlock-r0drv-linux.c \
589 r0drv/linux/thread-r0drv-linux.c
590
591RuntimeR0Drv_SOURCES.win = \
592 nt/RTErrConvertFromNtStatus.cpp \
593 r0drv/nt/alloc-r0drv-nt.cpp \
594 r0drv/nt/initterm-r0drv-nt.cpp \
595 r0drv/nt/process-r0drv-nt.cpp \
596 r0drv/nt/RTLogWriteDebugger-r0drv-nt.cpp \
597 r0drv/nt/semaphore-r0drv-nt.cpp \
598 r0drv/nt/spinlock-r0drv-nt.cpp \
599 r0drv/nt/thread-r0drv-nt.cpp \
600 string/strncmp.cpp
601
602RuntimeR0Drv_SOURCES.win.amd64 = \
603 $(RuntimeWin64ASM_SOURCES)
604
605RuntimeR0Drv_SOURCES.darwin = \
606 RTErrConvertFromErrno.cpp \
607 string/memchr.asm \
608 r0drv/memobj-r0drv.cpp \
609 r0drv/darwin/alloc-r0drv-darwin.cpp \
610 r0drv/darwin/memobj-r0drv-darwin.cpp \
611 r0drv/darwin/initterm-r0drv-darwin.cpp \
612 r0drv/darwin/process-r0drv-darwin.cpp \
613 r0drv/darwin/RTLogWriteDebugger-r0drv-darwin.cpp \
614 r0drv/darwin/semaphore-r0drv-darwin.cpp \
615 r0drv/darwin/spinlock-r0drv-darwin.cpp \
616 r0drv/darwin/thread-r0drv-darwin.cpp \
617 r0drv/darwin/thread2-r0drv-darwin.cpp \
618 r0drv/darwin/time-r0drv-darwin.cpp \
619 thread.cpp \
620 generic/timer-generic.cpp \
621
622RuntimeR0Drv_SOURCES.os2 = \
623 os2/RTErrConvertFromOS2.cpp \
624 os2/sys0.asm
625
626## PORTME: Porters create and add their selection of platform specific Ring-0 Driver files here.
627
628#
629# RuntimeW32GuestR0 - Win32 guest driver runtime.
630#
631RuntimeW32GuestR0_TEMPLATE = VBOXW32GUESTR0LIB
632RuntimeW32GuestR0_SDKS = W2K3DDKX86 WINPSDKINCS
633RuntimeW32GuestR0_DEFS = $(RuntimeR0Drv_DEFS.win) $(RuntimeR0Drv_DEFS.win.x86) $(RuntimeR0Drv_DEFS)
634RuntimeW32GuestR0_INCS = $(RuntimeR0Drv_INCS.win) $(RuntimeR0Drv_INCS.win.x86) $(RuntimeR0Drv_INCS)
635RuntimeW32GuestR0_SOURCES = \
636 $(RuntimeR0Drv_SOURCES) \
637 $(RuntimeR0Drv_SOURCES.win) \
638 VBox/logbackdoor.cpp \
639 logR0.cpp
640ifdef VBOX_USE_VCC80
641RuntimeW32GuestR0_SOURCES += \
642 string/memchr.cpp \
643 string/memcmp.cpp \
644 string/memcpy.cpp \
645 string/memset.cpp \
646 string/strlen.cpp
647endif
648
649
650#
651# RuntimeW32NT4GuestR0 - Win32 NT4 guest driver runtime.
652#
653RuntimeW32NT4GuestR0_TEMPLATE = VBOXW32GUESTR0LIB
654RuntimeW32NT4GuestR0_SDKS = $(RuntimeW32GuestR0_SDKS)
655RuntimeW32NT4GuestR0_DEFS = $(RuntimeW32GuestR0_DEFS) IPRT_TARGET_NT4
656RuntimeW32NT4GuestR0_INCS = $(RuntimeW32GuestR0_INCS)
657RuntimeW32NT4GuestR0_SOURCES = $(RuntimeW32GuestR0_SOURCES)
658
659
660#
661# RuntimeLnx32GuestR0 - 32-bit Linux guest driver runtime.
662#
663RuntimeLnx32GuestR0_TEMPLATE = VBOXLNX32GUESTR0
664RuntimeLnx32GuestR0_DEFS = $(RuntimeR0Drv_DEFS.linux) $(RuntimeR0Drv_DEFS) IN_GUEST IN_GUEST_R0
665RuntimeLnx32GuestR0_INCS = $(RuntimeR0Drv_INCS.linux) $(RuntimeR0Drv_INCS)
666RuntimeLnx32GuestR0_SOURCES = \
667 $(RuntimeR0Drv_SOURCES) \
668 $(RuntimeR0Drv_SOURCES.linux) \
669 VBox/logbackdoor.cpp
670
671#
672# RuntimeGC - Guest context library.
673#
674RuntimeGC_TEMPLATE = VBOXGC
675RuntimeGC_DEFS = IN_RT_GC RT_WITH_VBOX
676RuntimeGC_SOURCES = \
677 table/avlogcphys.cpp \
678 table/avlrogcphys.cpp \
679 table/avlogcptr.cpp \
680 table/avlohcphys.cpp \
681 table/avlrogcptr.cpp \
682 table/avlroogcptr.cpp \
683 table/avloioport.cpp \
684 table/avlroioport.cpp \
685 assert.cpp \
686 log.cpp \
687 logcom.cpp \
688 logformat.cpp \
689 string/strpbrk.cpp \
690 string/strncmp.cpp \
691 strformat.cpp \
692 strformatrt.cpp \
693 strprintf.cpp \
694 VBox/strformat-vbox.cpp \
695 timesup.cpp \
696 string/memchr.cpp \
697 string/memcmp.cpp \
698 string/memcpy.cpp \
699 string/memset.cpp \
700 string/strcpy.cpp \
701 string/strlen.cpp
702
703ifeq ($(VBOX_LDR_FMT32),lx)
704RuntimeGC_SOURCES += os2/sys0.asm
705endif
706
707
708#
709# Static library for new & delete for the electric fence.
710#
711RuntimeEFCPP_TEMPLATE = $(RuntimeR3_TEMPLATE)
712RuntimeEFCPP_SDKS = $(RuntimeR3_SDKS)
713RuntimeEFCPP_SDKS.$(BUILD_TARGET) = $(RuntimeR3_SDKS.$(BUILD_TARGET))
714RuntimeEFCPP_DEFS = $(RuntimeR3_DEFS)
715RuntimeEFCPP_DEFS.$(BUILD_TARGET) = $(RuntimeR3_DEFS.$(BUILD_TARGET))
716RuntimeEFCPP_INCS = $(RuntimeR3_INCS)
717RuntimeEFCPP_INCS.$(BUILD_TARGET) = $(RuntimeR3_INCS.$(BUILD_TARGET))
718RuntimeEFCPP_SOURCES = r3/alloc-ef-cpp.cpp
719
720
721
722#
723# errmsg.cpp depends on a generated header.
724#
725errmsg.cpp_DEPS = $(PATH_TARGET)/errmsgdata.h
726errmsg.cpp_INCS = $(PATH_TARGET)
727
728win32/errmsgwin.cpp_DEPS = $(PATH_TARGET)/errmsgcomdata.h
729win32/errmsgwin.cpp_INCS = $(PATH_TARGET)
730
731linux/errmsglinux.cpp_DEPS = $(PATH_TARGET)/errmsgxpcomdata.h
732linux/errmsglinux.cpp_INCS = $(PATH_TARGET)
733
734
735# Generate the rules
736include $(PATH_KBUILD)/footer.kmk
737
738
739#
740# Generate the status code data.
741#
742$(PATH_TARGET)/errmsgdata.h: errmsg.sed $(DEPTH)/include/iprt/err.h $(DEPTH)/include/VBox/err.h
743 $(call MSG_L1,Generating $@)
744 $(QUIET)$(MKDIR) -p $(PATH_TARGET)
745 $(QUIET)$(SED) -f $< $(filter %.h,$^) > $@
746## @todo r=bird: rename this to indicate that it's not only COM errors, but all win32/64 errors.
747$(PATH_TARGET)/errmsgcomdata.h: errmsgcom.sed $(PATH_SDK_WINPSDK_INC)/WinError.h
748 $(call MSG_L1,Generating $@)
749 $(QUIET)$(MKDIR) -p $(PATH_TARGET)
750 $(QUIET)$(SED) -f $< $(filter %.h,$^) > $@
751$(PATH_TARGET)/errmsgxpcomdata.h: errmsgxpcom.sed $(DEPTH)/src/libs/xpcom18a4/xpcom/base/nsError.h
752 $(call MSG_L1,Generating $@)
753 $(QUIET)$(MKDIR) -p $(PATH_TARGET)
754 $(QUIET)$(SED) -f $< $(filter %.h,$^) > $@
755
756
757#
758# Aliases for .cpp.h files so we can more easily do syntax checking from the editor.
759#
760ldrELFRelocatable.cpp.o: ldrELF.o
761ldrELFRelocatable.cpp.obj: ldrELF.obj
762
763
764#
765# Doxygen documentation.
766#
767DOXYGEN_INPUT_DIRS = \
768 $(PATH_ROOT)/include/iprt \
769 $(PATH_ROOT)/include/iprt/nocrt \
770 $(PATH_ROOT)/include/iprt/nocrt/x86 \
771 $(PATH_ROOT)/include/iprt/nocrt/amd64 \
772 include/internal \
773 string \
774 table \
775 $(foreach dir, . r3 r0drv,\
776 $(dir) \
777 $(dir)/darwin \
778 $(dir)/l4 \
779 $(dir)/linux \
780 $(dir)/nt \
781 $(dir)/os2 \
782 $(dir)/win \
783 $(dir)/win32 \
784 $(dir)/win64 \
785 $(dir)/generic \
786 )
787
788# These must come first in order to make things look nice.
789DOXYGEN_INPUT_FIRST =\
790 $(PATH_ROOT)/include/iprt/cdefs.h \
791 $(PATH_ROOT)/include/iprt/types.h \
792 $(PATH_ROOT)/include/iprt/runtime.h \
793 $(PATH_ROOT)/include/iprt/param.h \
794 $(PATH_ROOT)/include/iprt/assert.h \
795 $(PATH_ROOT)/include/iprt/asm.h \
796
797DOXYGEN_INPUT := \
798 $(filter-out %.cpp.h, $(sort $(wildcard $(addsuffix /*.h, $(DOXYGEN_INPUT_DIRS)))) ) \
799 $(foreach dir, $(DOXYGEN_INPUT_DIRS), $(wildcard $(dir)/*.cpp $(dir)/.c $(dir)/.asm))
800DOXYGEN_INPUT := \
801 $(DOXYGEN_INPUT_FIRST) \
802 $(filter-out $(DOXYGEN_INPUT_FIRST), $(DOXYGEN_INPUT))
803
804
805DOXYGEN_OUTPUT = $(PATH_OUT)/docs/iprt
806
807-include $(PATH_TARGET)/Doxyfile.dep
808
809# Generate the Doxyfile
810$(PATH_TARGET)/Doxyfile: Doxyfile \
811 $(comp-vars DOXYGEN_INPUT,DOXYGEN_INPUT_PREV,FORCE) \
812 $(comp-vars DOXYGEN_OUTPUT,DOXYGEN_OUTPUT_PREV,FORCE) \
813 | $(call DIRDEP, $(PATH_TARGET))
814 $(RM) -f $@ $@.tmp $(PATH_TARGET)/Doxyfile.dep
815 $(CP) -f Doxyfile $@.tmp
816 $(APPEND) $@.tmp
817 $(APPEND) $@.tmp "OUTPUT_DIRECTORY = $(DOXYGEN_OUTPUT)"
818 $(APPEND) $@.tmp "WARN_LOGFILE = $(DOXYGEN_OUTPUT)/errors"
819 $(APPEND) $@.tmp "INCLUDE_PATH = $(PATH_ROOT)/include include . table"
820 $(APPEND) $@.tmp "INCLUDE_FILE_PATTERNS = *.cpp.h"
821 $(APPEND) $@.tmp
822 $(APPEND) $@.tmp "INPUT = $(DOXYGEN_INPUT)"
823 $(APPEND) $@.tmp
824 $(MV) -f $@.tmp $@
825 @$(APPEND) $(PATH_TARGET)/Doxyfile.dep "DOXYGEN_OUTPUT_PREV = $(DOXYGEN_OUTPUT)"
826 @$(APPEND) $(PATH_TARGET)/Doxyfile.dep "DOXYGEN_INPUT_PREV = $(DOXYGEN_INPUT)"
827
828# Create the output directory.
829$(call DIRDEP, $(DOXYGEN_OUTPUT)):
830 $(MKDIR) -p $@
831
832# Do the actual job.
833$(PATH_TARGET)/docs.iprt: $(PATH_TARGET)/Doxyfile $(DOXYGEN_INPUT) | $(call DIRDEP, $(DOXYGEN_OUTPUT))
834 $(RM) -f $(wildcard $(DOXYGEN_OUTPUT)/html/*) $(PATH_TARGET)/docs.iprt
835 doxygen $(PATH_TARGET)/Doxyfile
836 $(APPEND) $(PATH_TARGET)/docs.iprt
837
838# alias
839docs: $(PATH_TARGET)/docs.iprt
840
841test:
842 @echo test-$(comp-vars DOXYGEN_OUTPUT,DOXYGEN_OUTPUT_PREV,FORCE)
843 @echo $(DOXYGEN_OUTPUT)
844 @echo $(DOXYGEN_OUTPUT_PREV)
845
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