VirtualBox

source: vbox/trunk/src/VBox/Runtime/Makefile.kmk@ 48902

Last change on this file since 48902 was 48902, checked in by vboxsync, 11 years ago

Fix debug build by adding some symbols that are not elided without
optimizations on.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 81.4 KB
Line 
1# $Id: Makefile.kmk 48902 2013-10-04 22:14:28Z vboxsync $
2## @file
3# Sub-Makefile for the IPRT.
4#
5
6#
7# Copyright (C) 2006-2013 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
27SUB_DEPTH = ../../..
28include $(KBUILD_PATH)/subheader.kmk
29
30ifdef VBOX_ONLY_ADDITIONS
31 #
32 # Only build the additions, sort out the legacy names first.
33 #
34 LIBRARIES += RuntimeGuestR3 RuntimeGuestR3Shared RuntimeGuestR3Mini
35 LIBRARIES.win.amd64 += RuntimeGuestR3-x86 RuntimeGuestR3Shared-x86
36 ifdef VBOX_WITH_ADDITION_DRIVERS
37 LIBRARIES += RuntimeGuestR0
38 #LIBRARIES.os2 += RuntimeGuestR0OS2Warp3
39 LIBRARIES.win.x86 += RuntimeGuestR0NT4
40 endif
41 ifneq ($(VBOX_WITH_COMPATIBLE_LINUX_GUEST_PACKAGE),)
42 LIBRARIES.linux.amd64 += \
43 RuntimeGuestR3-x86 \
44 RuntimeGuestR3Mini-x86 \
45 RuntimeGuestR3Shared-x86
46 endif
47
48else ifdef VBOX_ONLY_TESTSUITE
49 #
50 # Only build the testsuite.
51 #
52 LIBRARIES += RuntimeGuestR3 RuntimeGuestR3Shared RuntimeR3 RuntimeR0
53 LIBRARIES.solaris += RuntimeR0Stub
54 LIBRARIES.win += RuntimeR0Stub
55 LIBRARIES.win.x86 += RuntimeR3VccTricks
56
57else ifdef VBOX_ONLY_DOCS
58 #
59 # Build docs only - need just regular R3 runtime.
60 #
61 LIBRARIES += RuntimeR3 RuntimeBldProg
62
63else ifdef VBOX_ONLY_EXTPACKS_USE_IMPLIBS
64 #
65 # Build docs only - need just regular R3 runtime.
66 #
67 LIBRARIES += RuntimeBldProg
68 LIBRARIES.solaris += RuntimeR0Stub
69 LIBRARIES.win += RuntimeR0Stub RuntimeRCStub
70 include $(PATH_SUB_CURRENT)/tools/Makefile.kmk
71
72else # !VBOX_ONLY_ADDITIONS && !VBOX_ONLY_TESTSUITE && !VBOX_ONLY_DOCS
73
74 #
75 # Normal build.
76 #
77 ifndef VBOX_ONLY_EXTPACKS
78 include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk
79 endif
80 include $(PATH_SUB_CURRENT)/tools/Makefile.kmk
81
82 BLDPROGS += uniread
83 LIBRARIES += RuntimeR3 RuntimeBldProg RuntimeR0 RuntimeEFCPP RuntimeR3NoCRTGCC
84 LIBRARIES.solaris += RuntimeR0Stub
85 LIBRARIES.win += RuntimeR0Stub
86 ifdef VBOX_WITH_RAW_MODE
87 LIBRARIES += RuntimeRC
88 LIBRARIES.win += RuntimeRCStub
89 endif
90 ifdef VBOX_WITH_VBOXDRV
91 LIBRARIES += RuntimeR0Drv
92 endif
93 ifdef VBOX_WITH_ADDITIONS
94 LIBRARIES += RuntimeGuestR3 RuntimeGuestR3Shared RuntimeGuestR3Mini
95 LIBRARIES.win.amd64 += RuntimeGuestR3-x86 RuntimeGuestR3Shared-x86
96 ifneq ($(VBOX_WITH_COMPATIBLE_LINUX_GUEST_PACKAGE),)
97 LIBRARIES.linux.amd64 += \
98 RuntimeGuestR3-x86 \
99 RuntimeGuestR3Mini-x86 \
100 RuntimeGuestR3Shared-x86
101 endif
102 ifdef VBOX_WITH_ADDITION_DRIVERS
103 LIBRARIES += RuntimeGuestR0
104 endif
105 #LIBRARIES.os2 += RuntimeGuestR0OS2Warp3
106 LIBRARIES.win.x86 += RuntimeGuestR0NT4
107 endif # VBOX_WITH_ADDITIONS
108 LIBRARIES.win.x86 += RuntimeR3VccTricks
109 DLLS += VBoxRT
110 ifdef VBOX_WITH_32_ON_64_MAIN_API
111 DLLS += VBoxRT-x86
112 endif
113endif
114
115
116# Always build the ntdll import libraries on windows.
117LIBRARIES.win += RuntimeR3NtDll-x86
118if1of (amd64, $(KBUILD_TARGET_ARCH) $(KBUILD_HOST_ARCH))
119 LIBRARIES.win += RuntimeR3NtDll-amd64
120endif
121
122
123# Always build the import library.
124IMPORT_LIBS += VBoxRTImp
125
126
127# Where the generated stuff goes.
128IPRT_OUT_DIR := $(PATH_TARGET)/Runtime
129BLDDIRS += $(IPRT_OUT_DIR)
130OTHER_CLEAN += \
131 $(IPRT_OUT_DIR)/errmsgdata.h \
132 $(IPRT_OUT_DIR)/errmsgcomdata.h \
133 $(IPRT_OUT_DIR)/errmsgvboxcomdata.h \
134 $(IPRT_OUT_DIR)/errmsgvboxcomdata.h.ts \
135 $(IPRT_OUT_DIR)/Doxyfile.iprt \
136 $(IPRT_OUT_DIR)/Doxyfile.iprt.dep \
137 $(IPRT_OUT_DIR)/docs.iprt
138
139
140#
141# Globals
142#
143VBOX_PATH_RUNTIME_SRC := $(PATH_SUB_CURRENT)
144
145
146#
147# Set the defines that buildconfig.cpp needs. Its used by several targets.
148#
149common/misc/buildconfig.cpp_DEFS = \
150 IPRT_BLDCFG_SCM_REV=$(VBOX_SVN_REV) \
151 IPRT_BLDCFG_VERSION_STRING=\"$(VBOX_VERSION_STRING)\" \
152 IPRT_BLDCFG_VERSION_MAJOR=$(VBOX_VERSION_MAJOR) \
153 IPRT_BLDCFG_VERSION_MINOR=$(VBOX_VERSION_MINOR) \
154 IPRT_BLDCFG_VERSION_BUILD=$(VBOX_VERSION_BUILD) \
155 IPRT_BLDCFG_TARGET=\"$(KBUILD_TARGET)\" \
156 IPRT_BLDCFG_TARGET_ARCH=\"$(KBUILD_TARGET_ARCH)\" \
157 IPRT_BLDCFG_TYPE=\"$(KBUILD_TYPE)\"
158
159#
160# Unicode Specification reader used to regenerate unidata.cpp.
161#
162uniread_TEMPLATE = VBOXBLDPROG
163uniread_SOURCES = common/string/uniread.cpp
164uniread_INCS = include
165
166#
167# Win64 assembly sources.
168#
169RuntimeWin64ASM_SOURCES = \
170 win/amd64/ASMAtomicBitClear.asm \
171 win/amd64/ASMAtomicBitTestAndToggle.asm \
172 win/amd64/ASMAtomicBitToggle.asm \
173 win/amd64/ASMAtomicReadU64.asm \
174 win/amd64/ASMAtomicXchgU16.asm \
175 win/amd64/ASMAtomicXchgU8.asm \
176 win/amd64/ASMBitFirstClear.asm \
177 win/amd64/ASMBitFirstSet.asm \
178 win/amd64/ASMGetCS.asm \
179 win/amd64/ASMGetDS.asm \
180 win/amd64/ASMGetES.asm \
181 win/amd64/ASMGetFlags.asm \
182 win/amd64/ASMGetFS.asm \
183 win/amd64/ASMGetGS.asm \
184 win/amd64/ASMGetSS.asm \
185 win/amd64/ASMProbeReadByte.asm \
186 win/amd64/ASMSetFlags.asm \
187 win/amd64/ASMGetDR0.asm \
188 win/amd64/ASMGetDR1.asm \
189 win/amd64/ASMGetDR2.asm \
190 win/amd64/ASMGetDR3.asm \
191 win/amd64/ASMGetDR6.asm \
192 win/amd64/ASMGetDR7.asm \
193 common/asm/ASMAtomicCmpXchgU8.asm \
194 common/asm/ASMMultU64ByU32DivByU32.asm \
195 common/asm/ASMCpuId_Idx_ECX.asm \
196 common/asm/ASMNopPause.asm \
197 common/asm/ASMGetIDTR.asm \
198 common/asm/ASMGetGDTR.asm \
199 common/asm/ASMGetLDTR.asm \
200 common/asm/ASMGetTR.asm
201
202#
203# Win32 assembly sources.
204#
205RuntimeWin32ASM_SOURCES = \
206 common/asm/ASMAtomicCmpXchgU8.asm \
207 common/asm/ASMMultU64ByU32DivByU32.asm \
208 common/asm/ASMCpuId_Idx_ECX.asm
209
210#
211# NoCRT sources (minus math stuff).
212#
213if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
214RuntimeNoCrt_SOURCES = \
215 common/misc/setjmp.asm \
216 common/string/memchr.asm \
217 common/string/memcmp.asm \
218 common/string/memcpy.asm \
219 common/string/mempcpy.asm \
220 common/string/memmove.asm \
221 common/string/memset.asm \
222 common/string/strchr.asm \
223 common/string/strcpy.asm \
224 common/string/strncpy.asm \
225 common/string/strcmp.asm \
226 common/string/strlen.asm
227endif
228
229
230#
231# RuntimeR3 - Static Runtime for Ring-3 executables.
232#
233RuntimeR3_TEMPLATE = VBoxR3Static
234RuntimeR3_SDKS = VBOX_OPENSSL VBOX_LIBXML2
235RuntimeR3_SDKS.win = $(VBOX_WINPSDK) $(VBOX_WINDDK)
236RuntimeR3_DEFS = IN_RT_R3 IN_SUP_R3 LDR_WITH_NATIVE LDR_WITH_ELF32 LDR_WITH_PE RT_WITH_VBOX RT_NO_GIP
237#RuntimeR3_DEFS += RTMEM_WRAP_TO_EF_APIS
238ifdef IPRT_WITH_KSTUFF
239 RuntimeR3_DEFS += LDR_WITH_KLDR
240endif
241ifdef IPRT_WITH_LZJB
242 RuntimeR3_DEFS += RTZIP_USE_LZJB
243endif
244ifdef IPRT_WITH_LZO
245 RuntimeR3_DEFS += RTZIP_USE_LZO
246endif
247ifn1of ($(KBUILD_TARGET), win)
248 RuntimeR3_DEFS += RT_WITH_ICONV_CACHE
249endif
250ifdef IPRT_WITH_FUTEX_BASED_SEMS
251 RuntimeR3_DEFS.linux += IPRT_WITH_FUTEX_BASED_SEMS
252endif
253RuntimeR3_INCS = \
254 include \
255 $(SDK_VBOX_ZLIB_INCS)
256RuntimeR3_INCS += \
257 $(PATH_ROOT)/src/libs/liblzf-3.4
258ifdef IPRT_WITH_KSTUFF
259 RuntimeR3_INCS += \
260 $(PATH_ROOT)/src/libs/kStuff/kStuff/include
261endif
262
263# RuntimeR3_INCS.solaris = \
264# /usr/include
265
266RuntimeR3_SOURCES = \
267 common/alloc/alloc.cpp \
268 common/alloc/heapsimple.cpp \
269 common/alloc/heapoffset.cpp \
270 common/alloc/memcache.cpp \
271 common/alloc/memtracker.cpp \
272 common/checksum/adler32.cpp \
273 common/checksum/crc32.cpp \
274 common/checksum/crc64.cpp \
275 common/checksum/md5.cpp \
276 common/checksum/md5str.cpp \
277 common/checksum/ipv4.cpp \
278 common/checksum/ipv6.cpp \
279 common/checksum/manifest.cpp \
280 common/checksum/manifest2.cpp \
281 common/checksum/manifest3.cpp \
282 common/checksum/manifest-file.cpp \
283 common/checksum/RTSha1Digest.cpp \
284 common/checksum/RTSha256Digest.cpp \
285 common/checksum/sha1.cpp \
286 common/checksum/sha1str.cpp \
287 common/checksum/sha256.cpp \
288 common/checksum/sha256str.cpp \
289 common/checksum/sha512.cpp \
290 common/checksum/sha512str.cpp \
291 common/dbg/dbg.cpp \
292 common/dbg/dbgas.cpp \
293 common/dbg/dbgcfg.cpp \
294 common/dbg/dbgmod.cpp \
295 common/dbg/dbgmodldr.cpp \
296 common/dbg/dbgmodcontainer.cpp \
297 common/dbg/dbgmoddeferred.cpp \
298 common/dbg/dbgmodexports.cpp \
299 common/dbg/dbgmodcodeview.cpp \
300 common/dbg/dbgmoddwarf.cpp \
301 common/dbg/dbgmodnm.cpp \
302 common/dvm/dvm.cpp \
303 common/dvm/dvmbsdlabel.cpp \
304 common/dvm/dvmgpt.cpp \
305 common/dvm/dvmmbr.cpp \
306 common/dvm/dvmvfs.cpp \
307 common/err/errinfo.cpp \
308 common/err/errmsg.cpp \
309 common/err/RTErrConvertFromErrno.cpp \
310 common/err/RTErrConvertToErrno.cpp \
311 common/filesystem/filesystem.cpp \
312 common/filesystem/filesystemext.cpp \
313 common/ldr/ldr.cpp \
314 common/ldr/ldrELF.cpp \
315 common/ldr/ldrEx.cpp \
316 common/ldr/ldrFile.cpp \
317 common/ldr/ldrMemory.cpp \
318 common/ldr/ldrNative.cpp \
319 common/ldr/ldrPE.cpp \
320 common/log/log.cpp \
321 common/log/logellipsis.cpp \
322 common/log/logrel.cpp \
323 common/log/logrelellipsis.cpp \
324 common/log/logcom.cpp \
325 common/log/logformat.cpp \
326 common/log/tracebuf.cpp \
327 common/log/tracedefault.cpp \
328 common/misc/RTAssertMsg1Weak.cpp \
329 common/misc/RTAssertMsg2.cpp \
330 common/misc/RTAssertMsg2Add.cpp \
331 common/misc/RTAssertMsg2AddWeak.cpp \
332 common/misc/RTAssertMsg2AddWeakV.cpp \
333 common/misc/RTAssertMsg2Weak.cpp \
334 common/misc/RTAssertMsg2WeakV.cpp \
335 common/misc/RTFileModeToFlags.cpp \
336 common/misc/RTFileOpenF.cpp \
337 common/misc/RTFileOpenV.cpp \
338 common/misc/RTMemWipeThoroughly.cpp \
339 common/misc/assert.cpp \
340 common/misc/buildconfig.cpp \
341 common/misc/cidr.cpp \
342 common/misc/getopt.cpp \
343 common/misc/getoptargv.cpp \
344 common/misc/handle.cpp \
345 common/misc/handletable.cpp \
346 common/misc/handletablectx.cpp \
347 common/misc/handletablesimple.cpp \
348 common/misc/lockvalidator.cpp \
349 common/misc/message.cpp \
350 common/misc/once.cpp \
351 common/misc/req.cpp \
352 common/misc/reqpool.cpp \
353 common/misc/reqqueue.cpp \
354 common/misc/sanity-c.c \
355 common/misc/sanity-cpp.cpp \
356 common/misc/semspingpong.cpp \
357 common/misc/sg.cpp \
358 common/misc/circbuf.cpp \
359 common/misc/thread.cpp \
360 common/misc/term.cpp \
361 common/misc/uri.cpp \
362 common/net/netaddrstr.cpp \
363 common/net/netaddrstr2.cpp \
364 common/path/rtPathRootSpecLen.cpp \
365 common/path/rtPathVolumeSpecLen.cpp \
366 common/path/RTPathAbsDup.cpp \
367 common/path/RTPathAbsEx.cpp \
368 common/path/RTPathAbsExDup.cpp \
369 common/path/RTPathAppend.cpp \
370 common/path/RTPathAppendEx.cpp \
371 common/path/RTPathCalcRelative.cpp \
372 common/path/RTPathChangeToDosSlashes.cpp \
373 common/path/RTPathChangeToUnixSlashes.cpp \
374 common/path/RTPathCopyComponents.cpp \
375 common/path/RTPathCountComponents.cpp \
376 common/path/RTPathExt.cpp \
377 common/path/RTPathFilename.cpp \
378 common/path/RTPathHasExt.cpp \
379 common/path/RTPathHasPath.cpp \
380 common/path/RTPathJoin.cpp \
381 common/path/RTPathJoinA.cpp \
382 common/path/RTPathJoinEx.cpp \
383 common/path/RTPathParse.cpp \
384 common/path/RTPathParsedReassemble.cpp \
385 common/path/RTPathParseSimple.cpp \
386 common/path/RTPathRealDup.cpp \
387 common/path/RTPathRmCmd.cpp \
388 common/path/RTPathSplit.cpp \
389 common/path/RTPathSplitA.cpp \
390 common/path/RTPathSplitReassemble.cpp \
391 common/path/RTPathStartsWithRoot.cpp \
392 common/path/RTPathStripExt.cpp \
393 common/path/RTPathStripFilename.cpp \
394 common/path/RTPathStripTrailingSlash.cpp \
395 common/path/RTPathTraverseList.cpp \
396 common/path/comparepaths.cpp \
397 common/rand/rand.cpp \
398 common/rand/randadv.cpp \
399 common/rand/randparkmiller.cpp \
400 common/sort/RTSortIsSorted.cpp \
401 common/sort/RTSortApvIsSorted.cpp \
402 common/sort/shellsort.cpp \
403 common/string/RTStrCat.cpp \
404 common/string/RTStrCatEx.cpp \
405 common/string/RTStrCatP.cpp \
406 common/string/RTStrCatPEx.cpp \
407 common/string/RTStrCmp.cpp \
408 common/string/RTStrCopy.cpp \
409 common/string/RTStrCopyEx.cpp \
410 common/string/RTStrCopyP.cpp \
411 common/string/RTStrCopyPEx.cpp \
412 common/string/RTStrNCmp.cpp \
413 common/string/RTStrNLen.cpp \
414 common/string/RTStrNLenEx.cpp \
415 common/string/RTStrPrintHexBytes.cpp \
416 common/string/RTStrStr.cpp \
417 common/string/base64.cpp \
418 common/string/simplepattern.cpp \
419 common/string/straprintf.cpp \
420 common/string/strformat.cpp \
421 common/string/strformatnum.cpp \
422 common/string/strformatrt.cpp \
423 common/string/strformattype.cpp \
424 common/string/strhash1.cpp \
425 common/string/stringalloc.cpp \
426 common/string/strprintf.cpp \
427 common/string/strcache.cpp \
428 common/string/strspace.cpp \
429 common/string/strstrip.cpp \
430 common/string/strtonum.cpp \
431 common/string/strversion.cpp \
432 common/string/uni.cpp \
433 common/string/unidata.cpp \
434 common/string/utf-16.cpp \
435 common/string/utf-8.cpp \
436 common/string/utf-8-case.cpp \
437 common/string/ministring.cpp \
438 common/table/avlgcptr.cpp \
439 common/table/avlhcphys.cpp \
440 common/table/avlgcphys.cpp \
441 common/table/avllu32.cpp \
442 common/table/avlou32.cpp \
443 common/table/avlogcphys.cpp \
444 common/table/avlogcptr.cpp \
445 common/table/avlohcphys.cpp \
446 common/table/avloioport.cpp \
447 common/table/avlpv.cpp \
448 common/table/avlrgcptr.cpp \
449 common/table/avlrogcphys.cpp \
450 common/table/avlrogcptr.cpp \
451 common/table/avlroioport.cpp \
452 common/table/avlroogcptr.cpp \
453 common/table/avlrpv.cpp \
454 common/table/avlruintptr.cpp \
455 common/table/avlrfoff.cpp \
456 common/table/avlru64.cpp \
457 common/table/avlu32.cpp \
458 common/table/avluintptr.cpp \
459 common/table/avlul.cpp \
460 common/table/table.cpp \
461 common/time/time.cpp \
462 common/time/timeprog.cpp \
463 common/time/timesup.cpp \
464 common/vfs/vfsbase.cpp \
465 common/vfs/vfschain.cpp \
466 common/vfs/vfsiosmisc.cpp \
467 common/vfs/vfsmemory.cpp \
468 common/vfs/vfsmisc.cpp \
469 common/vfs/vfsstdfile.cpp \
470 common/zip/tar.cpp \
471 common/zip/tarcmd.cpp \
472 common/zip/tarvfs.cpp \
473 common/zip/gzipvfs.cpp \
474 common/zip/zip.cpp \
475 generic/createtemp-generic.cpp \
476 generic/critsect-generic.cpp \
477 generic/critsectrw-generic.cpp \
478 generic/env-generic.cpp \
479 generic/RTDirCreateUniqueNumbered-generic.cpp \
480 generic/RTEnvDupEx-generic.cpp \
481 generic/RTFileCopy-generic.cpp \
482 generic/RTFileQuerySize-generic.cpp \
483 generic/RTFileReadAll-generic.cpp \
484 generic/RTFileReadAllEx-generic.cpp \
485 generic/RTFileReadAllByHandle-generic.cpp \
486 generic/RTFileReadAllByHandleEx-generic.cpp \
487 generic/RTFileReadAllFree-generic.cpp \
488 generic/RTLogWriteStdErr-generic.cpp \
489 generic/RTLogWriteStdOut-generic.cpp \
490 generic/RTLogWriteUser-generic.cpp \
491 generic/RTPathIsSame-generic.cpp \
492 generic/RTProcessQueryUsernameA-generic.cpp \
493 generic/RTTimerLRCreate-generic.cpp \
494 generic/mempool-generic.cpp \
495 generic/semfastmutex-generic.cpp \
496 generic/semxroads-generic.cpp \
497 generic/spinlock-generic.cpp \
498 generic/timerlr-generic.cpp \
499 r3/alloc-ef.cpp \
500 r3/alloc.cpp \
501 r3/allocex.cpp \
502 r3/dir.cpp \
503 r3/dir2.cpp \
504 r3/fileio.cpp \
505 r3/fs.cpp \
506 r3/init.cpp \
507 r3/isofs.cpp \
508 r3/path.cpp \
509 r3/poll.cpp \
510 r3/process.cpp \
511 r3/socket.cpp \
512 r3/stream.cpp \
513 r3/test.cpp \
514 r3/testi.cpp \
515 r3/tcp.cpp \
516 r3/udp.cpp \
517 r3/generic/semspinmutex-r3-generic.cpp \
518 r3/xml.cpp \
519 common/zip/xarvfs.cpp
520
521
522#if1of ($(KBUILD_TARGET_ARCH),amd64 x86)
523# RuntimeR3_SOURCES += common/time/timesupA.asm
524#else
525 RuntimeR3_SOURCES += common/time/timesupref.cpp
526#endif
527
528RuntimeR3_SOURCES.x86 += \
529 generic/RTMpGetDescription-generic.cpp
530RuntimeR3_SOURCES.amd64 += \
531 generic/RTMpGetDescription-generic.cpp
532RuntimeR3_SOURCES.sparc32 += \
533 generic/RTMpGetDescription-generic-stub.cpp \
534 common/asm/asm-fake.cpp
535RuntimeR3_SOURCES.sparc64 += \
536 generic/RTMpGetDescription-generic-stub.cpp \
537 common/asm/asm-fake.cpp
538
539ifdef IPRT_WITH_LZJB
540 RuntimeR3_SOURCES += common/misc/lzjb.c
541endif
542
543# Some versions of GCC might require this.
544RuntimeR3_SOURCES.x86 += \
545 common/asm/ASMAtomicXchgU64.asm \
546 common/asm/ASMAtomicCmpXchgU64.asm \
547 common/asm/ASMAtomicCmpXchgExU64.asm \
548 common/asm/ASMAtomicReadU64.asm \
549 common/asm/ASMAtomicUoReadU64.asm
550
551ifdef IPRT_WITH_KSTUFF
552 RuntimeR3_SOURCES += \
553 common/ldr/ldrkStuff.cpp
554endif
555
556# VBox specific stuff.
557RuntimeR3_SOURCES += \
558 VBox/RTAssertShouldPanic-vbox.cpp \
559 VBox/log-vbox.cpp
560ifneq ($(KBUILD_TARGET),win)
561RuntimeR3_SOURCES += \
562 common/err/errmsgxpcom.cpp
563endif
564if1of ($(KBUILD_TARGET),freebsd linux netbsd openbsd solaris)
565RuntimeR3_SOURCES += \
566 $(if $(VBOX_WITH_DBUS),VBox/dbus.cpp,)
567endif
568
569RuntimeR3_SOURCES.win = \
570 common/dbg/dbgmoddbghelp.cpp \
571 generic/cdrom-generic.cpp \
572 generic/RTDirExists-generic.cpp \
573 generic/RTDirQueryInfo-generic.cpp \
574 generic/RTDirSetTimes-generic.cpp \
575 generic/RTFileExists-generic.cpp \
576 generic/RTMpGetCurFrequency-generic.cpp \
577 generic/RTMpGetMaxFrequency-generic.cpp \
578 generic/RTRandAdvCreateSystemFaster-generic.cpp \
579 generic/RTRandAdvCreateSystemTruer-generic.cpp \
580 generic/RTSemEventWait-generic.cpp \
581 generic/RTSemEventMultiWait-2-ex-generic.cpp \
582 generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
583 generic/RTSemMutexRequest-generic.cpp \
584 generic/RTSemMutexRequestDebug-generic.cpp \
585 generic/RTThreadSetAffinityToCpu-generic.cpp \
586 generic/mppresent-generic.cpp \
587 generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),lockless-,)generic.cpp \
588 generic/uuid-generic.cpp \
589 generic/RTProcDaemonize-generic.cpp \
590 generic/RTProcIsRunningByName-generic.cpp \
591 generic/RTThreadGetNativeState-generic.cpp \
592 nt/RTErrConvertFromNtStatus.cpp \
593 r3/nt/fs-nt.cpp \
594 r3/nt/pathint-nt.cpp \
595 r3/posix/env-posix.cpp \
596 r3/win/RTHandleGetStandard-win.cpp \
597 r3/win/RTSystemQueryOSInfo-win.cpp \
598 r3/win/RTSystemShutdown-win.cpp \
599 r3/win/RTSystemQueryDmiString-win.cpp \
600 r3/win/RTSystemQueryTotalRam-win.cpp \
601 r3/win/alloc-win.cpp \
602 r3/win/allocex-win.cpp \
603 r3/win/dir-win.cpp \
604 $(if-expr defined(VBOX_WITH_NT_DIRENUM),r3/nt/direnum-r3-nt.cpp,r3/win/direnum-win.cpp) \
605 r3/win/errvars-win.cpp \
606 r3/win/fileio-win.cpp \
607 r3/win/init-win.cpp \
608 r3/win/ldrNative-win.cpp \
609 r3/win/localipc-win.cpp \
610 r3/win/mp-win.cpp \
611 r3/win/path-win.cpp \
612 r3/win/pipe-win.cpp \
613 r3/win/process-win.cpp \
614 r3/win/RTLogWriteDebugger-win.cpp \
615 r3/win/rtProcInitExePath-win.cpp \
616 r3/win/sched-win.cpp \
617 r3/win/semevent-win.cpp \
618 r3/win/semeventmulti-win.cpp \
619 r3/win/semmutex-win.cpp \
620 r3/win/symlink-win.cpp \
621 r3/win/rtFileNativeSetAttributes-win.cpp \
622 r3/win/thread-win.cpp \
623 r3/win/thread2-win.cpp \
624 r3/win/time-win.cpp \
625 r3/win/timer-win.cpp \
626 r3/win/tls-win.cpp \
627 r3/win/utf16locale-win.cpp \
628 r3/win/utf8-win.cpp \
629 r3/win/RTUuidCreate-win.cpp \
630 win/errmsgwin.cpp \
631 win/RTErrConvertFromWin32.cpp
632
633RuntimeR3_SOURCES.win.amd64 := $(RuntimeWin64ASM_SOURCES)
634RuntimeR3_SOURCES.win.x86 := $(RuntimeWin32ASM_SOURCES)
635
636RuntimeR3_SOURCES.linux = \
637 generic/cdrom-generic.cpp \
638 generic/RTDirQueryInfo-generic.cpp \
639 generic/RTDirSetTimes-generic.cpp \
640 generic/RTFileMove-generic.cpp \
641 generic/RTLogWriteDebugger-generic.cpp \
642 generic/RTProcDaemonize-generic.cpp \
643 generic/RTSemEventMultiWait-2-ex-generic.cpp \
644 generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
645 generic/RTTimeLocalNow-generic.cpp \
646 generic/RTTimerCreate-generic.cpp \
647 generic/RTThreadSetAffinityToCpu-generic.cpp \
648 generic/RTUuidCreate-generic.cpp \
649 generic/mppresent-generic.cpp \
650 generic/utf16locale-generic.cpp \
651 generic/uuid-generic.cpp \
652 r3/posix/allocex-r3-posix.cpp \
653 r3/linux/RTThreadGetNativeState-linux.cpp \
654 r3/linux/mp-linux.cpp \
655 r3/linux/rtProcInitExePath-linux.cpp \
656 r3/linux/sched-linux.cpp \
657 r3/linux/sysfs.cpp \
658 r3/linux/time-linux.cpp \
659 r3/linux/thread-affinity-linux.cpp \
660 r3/linux/RTProcIsRunningByName-linux.cpp \
661 r3/linux/RTSystemQueryDmiString-linux.cpp \
662 r3/linux/RTSystemShutdown-linux.cpp \
663 r3/posix/RTFileQueryFsSizes-posix.cpp \
664 r3/posix/RTHandleGetStandard-posix.cpp \
665 r3/posix/RTMemProtect-posix.cpp \
666 r3/posix/RTPathUserHome-posix.cpp \
667 r3/posix/RTSystemQueryOSInfo-posix.cpp \
668 r3/linux/systemmem-linux.cpp \
669 r3/posix/RTTimeNow-posix.cpp \
670 r3/posix/RTTimeSet-posix.cpp \
671 r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
672 r3/posix/dir-posix.cpp \
673 r3/posix/env-posix.cpp \
674 r3/posix/errvars-posix.cpp \
675 r3/posix/fileio-posix.cpp \
676 r3/posix/fileio2-posix.cpp \
677 r3/posix/filelock-posix.cpp \
678 r3/posix/fs-posix.cpp \
679 r3/posix/fs2-posix.cpp \
680 r3/posix/fs3-posix.cpp \
681 r3/posix/ldrNative-posix.cpp \
682 r3/posix/path-posix.cpp \
683 r3/posix/path2-posix.cpp \
684 r3/posix/pathhost-posix.cpp \
685 r3/posix/RTPathUserDocuments-posix.cpp \
686 r3/posix/pipe-posix.cpp \
687 r3/posix/process-posix.cpp \
688 r3/posix/process-creation-posix.cpp \
689 r3/posix/rand-posix.cpp \
690 r3/posix/semrw-posix.cpp \
691 r3/posix/symlink-posix.cpp \
692 r3/posix/thread-posix.cpp \
693 r3/posix/thread2-posix.cpp \
694 r3/posix/timelocal-posix.cpp \
695 r3/posix/timer-posix.cpp \
696 r3/posix/tls-posix.cpp \
697 r3/posix/utf8-posix.cpp
698ifdef IPRT_WITH_FUTEX_BASED_SEMS
699 RuntimeR3_SOURCES.linux += \
700 r3/linux/semevent-linux.cpp \
701 r3/linux/semeventmulti-linux.cpp \
702 r3/linux/semmutex-linux.cpp
703else
704 RuntimeR3_SOURCES.linux.x86 += \
705 r3/posix/semevent-posix.cpp \
706 r3/posix/semeventmulti-posix.cpp \
707 r3/posix/semmutex-posix.cpp
708 RuntimeR3_SOURCES.linux.amd64 += \
709 r3/linux/semevent-linux.cpp \
710 r3/linux/semeventmulti-linux.cpp
711 ifdef RT_NEW_LINUX_MUTEX_CODE
712 RuntimeR3_SOURCES.linux.amd64 += \
713 r3/linux/semmutex-linux.cpp
714 else
715 RuntimeR3_SOURCES.linux.amd64 += \
716 r3/posix/semmutex-posix.cpp
717 endif
718endif
719
720RuntimeR3_SOURCES.os2 = \
721 generic/cdrom-generic.cpp \
722 generic/RTDirQueryInfo-generic.cpp \
723 generic/RTDirSetTimes-generic.cpp \
724 generic/RTFileMove-generic.cpp \
725 generic/RTLogWriteDebugger-generic.cpp \
726 generic/RTProcDaemonize-generic.cpp \
727 generic/RTRandAdvCreateSystemFaster-generic.cpp \
728 generic/RTRandAdvCreateSystemTruer-generic.cpp \
729 generic/RTSystemQueryDmiString-generic.cpp \
730 generic/RTSystemShutdown-generic.cpp \
731 generic/RTTimeLocalNow-generic.cpp \
732 generic/RTTimerCreate-generic.cpp \
733 generic/RTThreadSetAffinityToCpu-generic.cpp \
734 generic/RTUuidCreate-generic.cpp \
735 generic/mppresent-generic.cpp \
736 generic/RTSemEventWait-generic.cpp \
737 generic/RTSemEventMultiWait-generic.cpp \
738 generic/RTSemMutexRequest-generic.cpp \
739 generic/RTSemMutexRequestDebug-generic.cpp \
740 generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),lockless-,)generic.cpp \
741 generic/timer-generic.cpp \
742 generic/utf16locale-generic.cpp \
743 generic/uuid-generic.cpp \
744 generic/RTMpGetCoreCount-generic.cpp \
745 generic/RTMpGetOnlineCoreCount-generic.cpp \
746 generic/RTMpGetCurFrequency-generic.cpp \
747 generic/RTMpGetMaxFrequency-generic.cpp \
748 generic/RTProcIsRunningByName-generic.cpp \
749 generic/RTThreadGetNativeState-generic.cpp \
750 os2/RTErrConvertFromOS2.cpp \
751 r3/generic/allocex-r3-generic.cpp \
752 r3/os2/filelock-os2.cpp \
753 r3/os2/mp-os2.cpp \
754 r3/os2/pipe-os2.cpp \
755 r3/os2/rtProcInitExePath-os2.cpp \
756 r3/os2/sched-os2.cpp \
757 r3/os2/sems-os2.cpp \
758 r3/os2/systemmem-os2.cpp \
759 r3/os2/thread-os2.cpp \
760 r3/os2/time-os2.cpp \
761 r3/posix/RTFileQueryFsSizes-posix.cpp \
762 r3/posix/RTHandleGetStandard-posix.cpp \
763 r3/posix/RTMemProtect-posix.cpp \
764 r3/posix/RTPathUserHome-posix.cpp \
765 r3/posix/RTSystemQueryOSInfo-posix.cpp \
766 r3/posix/RTTimeNow-posix.cpp \
767 r3/posix/RTTimeSet-posix.cpp \
768 r3/posix/dir-posix.cpp \
769 r3/posix/env-posix.cpp \
770 r3/posix/errvars-posix.cpp \
771 r3/posix/fileio-posix.cpp \
772 r3/posix/fileio2-posix.cpp \
773 r3/posix/fs-posix.cpp \
774 r3/posix/fs2-posix.cpp \
775 r3/posix/fs3-posix.cpp \
776 r3/posix/ldrNative-posix.cpp \
777 r3/posix/path-posix.cpp \
778 r3/posix/path2-posix.cpp \
779 r3/posix/pathhost-posix.cpp \
780 r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
781 r3/posix/RTPathUserDocuments-posix.cpp \
782 r3/posix/process-posix.cpp \
783 r3/posix/process-creation-posix.cpp \
784 r3/posix/symlink-posix.cpp \
785 r3/posix/timelocal-posix.cpp \
786 r3/posix/utf8-posix.cpp
787
788RuntimeR3_SOURCES.darwin = \
789 darwin/RTErrConvertFromDarwin.cpp \
790 darwin/RTErrConvertFromDarwinCOM.cpp \
791 darwin/RTErrConvertFromDarwinIO.cpp \
792 darwin/RTErrConvertFromDarwinKern.cpp \
793 generic/cdrom-generic.cpp \
794 generic/RTDirQueryInfo-generic.cpp \
795 generic/RTDirSetTimes-generic.cpp \
796 generic/RTFileMove-generic.cpp \
797 generic/RTLogWriteDebugger-generic.cpp \
798 generic/RTProcDaemonize-generic.cpp \
799 generic/RTThreadGetAffinity-stub-generic.cpp \
800 generic/RTThreadSetAffinity-stub-generic.cpp \
801 generic/RTThreadSetAffinityToCpu-generic.cpp \
802 generic/RTTimeLocalNow-generic.cpp \
803 generic/RTTimerCreate-generic.cpp \
804 generic/RTUuidCreate-generic.cpp \
805 generic/mppresent-generic.cpp \
806 generic/RTMpGetOnlineCoreCount-generic.cpp \
807 generic/RTSemEventMultiWait-2-ex-generic.cpp \
808 generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
809 generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),lockless-,)generic.cpp \
810 generic/RTSystemShutdown-generic.cpp \
811 generic/timer-generic.cpp \
812 generic/utf16locale-generic.cpp \
813 generic/uuid-generic.cpp\
814 generic/RTProcIsRunningByName-generic.cpp \
815 generic/RTThreadGetNativeState-generic.cpp \
816 r3/darwin/filelock-darwin.cpp \
817 r3/darwin/mp-darwin.cpp \
818 r3/darwin/pathhost-darwin.cpp \
819 r3/darwin/rtProcInitExePath-darwin.cpp \
820 r3/darwin/RTSystemQueryDmiString-darwin.cpp \
821 r3/darwin/sched-darwin.cpp \
822 r3/darwin/systemmem-darwin.cpp \
823 r3/darwin/time-darwin.cpp \
824 r3/darwin/RTPathUserDocuments-darwin.cpp \
825 r3/generic/allocex-r3-generic.cpp \
826 r3/posix/RTFileQueryFsSizes-posix.cpp \
827 r3/posix/RTHandleGetStandard-posix.cpp \
828 r3/posix/RTMemProtect-posix.cpp \
829 r3/posix/RTPathUserHome-posix.cpp \
830 r3/posix/RTSystemQueryOSInfo-posix.cpp \
831 r3/posix/RTTimeSet-posix.cpp \
832 r3/posix/dir-posix.cpp \
833 r3/posix/env-posix.cpp \
834 r3/posix/errvars-posix.cpp \
835 r3/posix/fileio-posix.cpp \
836 r3/posix/fileio2-posix.cpp \
837 r3/posix/fs-posix.cpp \
838 r3/posix/fs2-posix.cpp \
839 r3/posix/fs3-posix.cpp \
840 r3/posix/ldrNative-posix.cpp \
841 r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
842 r3/posix/path-posix.cpp \
843 r3/posix/path2-posix.cpp \
844 r3/posix/pipe-posix.cpp \
845 r3/posix/process-posix.cpp \
846 r3/posix/process-creation-posix.cpp \
847 r3/posix/rand-posix.cpp \
848 r3/posix/semevent-posix.cpp \
849 r3/posix/semeventmulti-posix.cpp \
850 r3/posix/semmutex-posix.cpp \
851 r3/posix/symlink-posix.cpp \
852 r3/posix/thread-posix.cpp \
853 r3/posix/thread2-posix.cpp \
854 r3/posix/timelocal-posix.cpp \
855 r3/posix/tls-posix.cpp \
856 r3/posix/utf8-posix.cpp
857
858## @todo Make BSD sched, implement RTMP*.
859RuntimeR3_SOURCES.freebsd = \
860 generic/cdrom-generic.cpp \
861 generic/RTDirQueryInfo-generic.cpp \
862 generic/RTDirSetTimes-generic.cpp \
863 generic/RTFileMove-generic.cpp \
864 generic/RTLogWriteDebugger-generic.cpp \
865 generic/RTSemEventMultiWait-2-ex-generic.cpp \
866 generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
867 generic/RTSystemQueryDmiString-generic.cpp \
868 generic/RTSystemShutdown-generic.cpp \
869 generic/RTThreadGetAffinity-stub-generic.cpp \
870 generic/RTThreadSetAffinity-stub-generic.cpp \
871 generic/RTThreadSetAffinityToCpu-generic.cpp \
872 generic/RTTimeLocalNow-generic.cpp \
873 generic/RTTimerCreate-generic.cpp \
874 generic/RTUuidCreate-generic.cpp \
875 generic/mppresent-generic.cpp \
876 generic/sched-generic.cpp \
877 generic/utf16locale-generic.cpp \
878 generic/uuid-generic.cpp \
879 generic/RTMpCpuId-generic.cpp \
880 generic/RTMpGetCoreCount-generic.cpp \
881 generic/RTMpGetOnlineCoreCount-generic.cpp \
882 generic/RTProcDaemonize-generic.cpp \
883 generic/RTProcIsRunningByName-generic.cpp \
884 generic/RTThreadGetNativeState-generic.cpp \
885 r3/freebsd/mp-freebsd.cpp \
886 r3/freebsd/rtProcInitExePath-freebsd.cpp \
887 r3/generic/allocex-r3-generic.cpp \
888 r3/posix/RTFileQueryFsSizes-posix.cpp \
889 r3/posix/RTHandleGetStandard-posix.cpp \
890 r3/posix/RTMemProtect-posix.cpp \
891 r3/posix/RTPathUserHome-posix.cpp \
892 r3/posix/RTSystemQueryOSInfo-posix.cpp \
893 r3/posix/RTSystemQueryTotalRam-posix.cpp \
894 r3/posix/RTTimeNow-posix.cpp \
895 r3/posix/RTTimeSet-posix.cpp \
896 r3/posix/dir-posix.cpp \
897 r3/posix/env-posix.cpp \
898 r3/posix/errvars-posix.cpp \
899 r3/posix/fileio-posix.cpp \
900 r3/posix/fileio2-posix.cpp \
901 r3/posix/filelock-posix.cpp \
902 r3/posix/fs-posix.cpp \
903 r3/posix/fs2-posix.cpp \
904 r3/posix/fs3-posix.cpp \
905 r3/posix/ldrNative-posix.cpp \
906 r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
907 r3/posix/path-posix.cpp \
908 r3/posix/path2-posix.cpp \
909 r3/posix/pathhost-posix.cpp \
910 r3/posix/RTPathUserDocuments-posix.cpp \
911 r3/posix/pipe-posix.cpp \
912 r3/posix/process-posix.cpp \
913 r3/posix/process-creation-posix.cpp \
914 r3/posix/rand-posix.cpp \
915 r3/posix/semevent-posix.cpp \
916 r3/posix/semeventmulti-posix.cpp \
917 r3/posix/semmutex-posix.cpp \
918 r3/posix/semrw-posix.cpp \
919 r3/posix/symlink-posix.cpp \
920 r3/posix/thread-posix.cpp \
921 r3/posix/thread2-posix.cpp \
922 r3/posix/time-posix.cpp \
923 r3/posix/timelocal-posix.cpp \
924 r3/posix/timer-posix.cpp \
925 r3/posix/tls-posix.cpp \
926 r3/posix/utf8-posix.cpp
927
928RuntimeR3_SOURCES.solaris = \
929 generic/cdrom-generic.cpp \
930 generic/RTDirQueryInfo-generic.cpp \
931 generic/RTDirSetTimes-generic.cpp \
932 generic/RTFileMove-generic.cpp \
933 generic/RTLogWriteDebugger-generic.cpp \
934 generic/RTProcDaemonize-generic.cpp \
935 generic/RTProcIsRunningByName-generic.cpp \
936 generic/RTSemEventMultiWait-2-ex-generic.cpp \
937 generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
938 generic/RTThreadSetAffinityToCpu-generic.cpp \
939 generic/RTTimeLocalNow-generic.cpp \
940 generic/RTTimerCreate-generic.cpp \
941 generic/RTUuidCreate-generic.cpp \
942 generic/sched-generic.cpp \
943 generic/utf16locale-generic.cpp \
944 generic/uuid-generic.cpp \
945 generic/RTThreadGetNativeState-generic.cpp \
946 r3/generic/allocex-r3-generic.cpp \
947 r3/posix/RTFileQueryFsSizes-posix.cpp \
948 r3/posix/RTHandleGetStandard-posix.cpp \
949 r3/posix/RTMemProtect-posix.cpp \
950 r3/posix/RTPathUserHome-posix.cpp \
951 r3/posix/RTSystemQueryOSInfo-posix.cpp \
952 r3/posix/RTTimeNow-posix.cpp \
953 r3/posix/RTTimeSet-posix.cpp \
954 r3/posix/dir-posix.cpp \
955 r3/posix/env-posix.cpp \
956 r3/posix/errvars-posix.cpp \
957 r3/posix/fileio-posix.cpp \
958 r3/posix/fileio2-posix.cpp \
959 r3/posix/filelock-posix.cpp \
960 r3/posix/fs-posix.cpp \
961 r3/posix/fs2-posix.cpp \
962 r3/posix/fs3-posix.cpp \
963 r3/posix/ldrNative-posix.cpp \
964 r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
965 r3/posix/path-posix.cpp \
966 r3/posix/path2-posix.cpp \
967 r3/posix/pathhost-posix.cpp \
968 r3/posix/RTPathUserDocuments-posix.cpp \
969 r3/posix/pipe-posix.cpp \
970 r3/posix/process-posix.cpp \
971 r3/posix/process-creation-posix.cpp \
972 r3/posix/rand-posix.cpp \
973 r3/posix/semevent-posix.cpp \
974 r3/posix/semeventmulti-posix.cpp \
975 r3/posix/semmutex-posix.cpp \
976 r3/posix/semrw-posix.cpp \
977 r3/posix/symlink-posix.cpp \
978 r3/posix/thread-posix.cpp \
979 r3/posix/thread2-posix.cpp \
980 r3/posix/time-posix.cpp \
981 r3/posix/timelocal-posix.cpp \
982 r3/posix/timer-posix.cpp \
983 r3/posix/tls-posix.cpp \
984 r3/posix/utf8-posix.cpp \
985 r3/solaris/systemmem-solaris.cpp \
986 r3/solaris/mp-solaris.cpp \
987 r3/solaris/rtProcInitExePath-solaris.cpp \
988 r3/solaris/RTSystemShutdown-solaris.cpp \
989 r3/solaris/thread-affinity-solaris.cpp
990RuntimeR3_SOURCES.solaris.amd64 = \
991 r3/solaris/coredumper-solaris.cpp \
992 r3/solaris/RTSystemQueryDmiString-solaris.cpp
993RuntimeR3_SOURCES.solaris.x86 = \
994 r3/solaris/coredumper-solaris.cpp \
995 r3/solaris/RTSystemQueryDmiString-solaris.cpp
996RuntimeR3_SOURCES.solaris.sparc32 = \
997 generic/RTSystemQueryDmiString-generic.cpp
998RuntimeR3_SOURCES.solaris.sparc64 = \
999 generic/RTSystemQueryDmiString-generic.cpp
1000
1001RuntimeR3_SOURCES.haiku = \
1002 generic/RTDirQueryInfo-generic.cpp \
1003 generic/RTDirSetTimes-generic.cpp \
1004 generic/RTFileMove-generic.cpp \
1005 generic/RTLogWriteDebugger-generic.cpp \
1006 generic/RTProcDaemonize-generic.cpp \
1007 generic/RTTimeLocalNow-generic.cpp \
1008 generic/RTTimerCreate-generic.cpp \
1009 generic/RTUuidCreate-generic.cpp \
1010 generic/mppresent-generic.cpp \
1011 generic/RTSemEventMultiWait-2-ex-generic.cpp \
1012 generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
1013 generic/sched-generic.cpp \
1014 generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),ockless-,)generic.cpp \
1015 generic/timer-generic.cpp \
1016 generic/utf16locale-generic.cpp \
1017 generic/uuid-generic.cpp\
1018 generic/RTProcIsRunningByName-generic.cpp \
1019 generic/RTThreadGetNativeState-generic.cpp \
1020 generic/RTMpGetCoreCount-generic.cpp \
1021 generic/RTMpGetOnlineCoreCount-generic.cpp \
1022 r3/haiku/rtProcInitExePath-haiku.cpp \
1023 r3/haiku/time-haiku.cpp \
1024 r3/generic/allocex-r3-generic.cpp \
1025 r3/posix/RTFileQueryFsSizes-posix.cpp \
1026 r3/posix/RTHandleGetStandard-posix.cpp \
1027 r3/posix/RTMemProtect-posix.cpp \
1028 r3/posix/RTPathUserHome-posix.cpp \
1029 r3/posix/RTSystemQueryOSInfo-posix.cpp \
1030 r3/posix/RTSystemQueryTotalRam-posix.cpp \
1031 r3/posix/RTTimeNow-posix.cpp \
1032 r3/posix/dir-posix.cpp \
1033 r3/posix/env-posix.cpp \
1034 r3/posix/errvars-posix.cpp \
1035 r3/posix/fileio-posix.cpp \
1036 r3/posix/fileio2-posix.cpp \
1037 r3/posix/filelock-posix.cpp \
1038 r3/posix/fs-posix.cpp \
1039 r3/posix/fs2-posix.cpp \
1040 r3/posix/fs3-posix.cpp \
1041 r3/posix/ldrNative-posix.cpp \
1042 r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
1043 r3/posix/path-posix.cpp \
1044 r3/posix/path2-posix.cpp \
1045 r3/posix/pathhost-posix.cpp \
1046 r3/posix/pipe-posix.cpp \
1047 r3/posix/process-posix.cpp \
1048 r3/posix/process-creation-posix.cpp \
1049 r3/posix/rand-posix.cpp \
1050 r3/posix/semevent-posix.cpp \
1051 r3/posix/semeventmulti-posix.cpp \
1052 r3/posix/semmutex-posix.cpp \
1053 r3/posix/symlink-posix.cpp \
1054 r3/posix/thread-posix.cpp \
1055 r3/posix/thread2-posix.cpp \
1056 r3/posix/timelocal-posix.cpp \
1057 r3/posix/tls-posix.cpp \
1058 r3/posix/utf8-posix.cpp
1059
1060## PORTME: Porters add their selection of platform specific files for Ring-3 here.
1061
1062
1063#
1064# RuntimeBldProg - Static Runtime for build programs.
1065#
1066# Note! This is a bit of hacky since kBuild doesn't support building libraries
1067# for build programs.
1068#
1069RuntimeBldProg_TEMPLATE := VBoxAdvBldProg
1070RuntimeBldProg_EXTENDS := RuntimeR3
1071RuntimeBldProg_BLD_TRG := $(KBUILD_HOST)
1072RuntimeBldProg_BLD_TRG_ARCH := $(KBUILD_HOST_ARCH)
1073RuntimeBldProg_BLD_TRG_CPU := $(KBUILD_HOST_CPU)
1074RuntimeBldProg_SOURCES = $(filter-out \
1075 r3/xml.cpp \
1076 common/zip/xarvfs.cpp \
1077 , $(RuntimeR3_SOURCES))
1078
1079
1080
1081#
1082# RuntimeGuestR3 - Guest Additions Runtime (static/exe).
1083# (The KBUILD_HOST inheritance here is for cross building the linux
1084# additions, while .x86 is for cross building x86 while targeting amd64.)
1085#
1086RuntimeGuestR3_TEMPLATE := VBoxGuestR3Lib
1087## @todo change this to EXTEND the RuntimeR3 target.
1088RuntimeGuestR3_SDKS.win := $(RuntimeR3_SDKS.win)
1089RuntimeGuestR3_DEFS := $(filter-out RTCRITSECT_STRICT RT_NO_GIP, $(RuntimeR3_DEFS))
1090RuntimeGuestR3_DEFS.$(KBUILD_TARGET) := $(RuntimeR3_DEFS.$(KBUILD_TARGET))
1091RuntimeGuestR3_DEFS.$(KBUILD_HOST) := $(RuntimeR3_DEFS.$(KBUILD_HOST))
1092RuntimeGuestR3_INCS := $(RuntimeR3_INCS)
1093RuntimeGuestR3_INCS.$(KBUILD_TARGET) := $(RuntimeR3_INCS.$(KBUILD_TARGET))
1094RuntimeGuestR3_INCS.$(KBUILD_HOST) := $(RuntimeR3_INCS.$(KBUILD_HOST))
1095RuntimeGuestR3_SOURCES := $(filter-out \
1096 common/time/timesupref.cpp \
1097 common/time/timesupA.asm \
1098 common/time/timesup.cpp \
1099 common/checksum/RTSha1Digest.cpp \
1100 common/checksum/RTSha256Digest.cpp \
1101 common/checksum/sha% \
1102 generic/RTLogWriteUser-generic.cpp \
1103 r3/xml.cpp \
1104 common/zip/xarvfs.cpp \
1105 , $(RuntimeR3_SOURCES))
1106RuntimeGuestR3_SOURCES += \
1107 common/time/timesysalias.cpp \
1108 VBox/logbackdoor.cpp
1109RuntimeGuestR3_SOURCES.$(KBUILD_TARGET) := $(RuntimeR3_SOURCES.$(KBUILD_TARGET))
1110RuntimeGuestR3_SOURCES.$(KBUILD_HOST) := $(RuntimeR3_SOURCES.$(KBUILD_HOST))
1111RuntimeGuestR3_SOURCES.$(KBUILD_TARGET_ARCH) := $(RuntimeR3_SOURCES.$(KBUILD_TARGET_ARCH))
1112RuntimeGuestR3_SOURCES.x86 := $(RuntimeR3_SOURCES.x86)
1113RuntimeGuestR3_SOURCES.amd64 := $(RuntimeR3_SOURCES.amd64)
1114RuntimeGuestR3_SOURCES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) := $(RuntimeR3_SOURCES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH))
1115RuntimeGuestR3_SOURCES.$(KBUILD_TARGET).x86 := $(RuntimeR3_SOURCES.$(KBUILD_TARGET).x86)
1116RuntimeGuestR3_SOURCES.$(KBUILD_TARGET).amd64:= $(RuntimeR3_SOURCES.$(KBUILD_TARGET).amd64)
1117RuntimeGuestR3_SOURCES.$(KBUILD_HOST).$(KBUILD_TARGET_ARCH) := $(RuntimeR3_SOURCES.$(KBUILD_HOST).$(KBUILD_TARGET_ARCH))
1118RuntimeGuestR3_SOURCES.win.x86 += \
1119 r3/win/vcc100-kernel32-fakes.cpp \
1120 r3/win/vcc100-kernel32-fakesA.asm
1121
1122#
1123# RuntimeGuestR3-x86 - Same as RuntimeGuestR3, except that it's targeting x86.
1124#
1125RuntimeGuestR3-x86_EXTENDS := RuntimeGuestR3
1126RuntimeGuestR3-x86_BLD_TRG_ARCH := x86
1127
1128
1129#
1130# RuntimeGuestR3Shared - Guest Additions Runtime (static/dll).
1131#
1132RuntimeGuestR3Shared_TEMPLATE := VBoxGuestR3Dll
1133RuntimeGuestR3Shared_EXTENDS := RuntimeGuestR3
1134RuntimeGuestR3Shared_INST = $(INST_ADDITIONS_LIB)
1135
1136
1137#
1138# RuntimeGuestR3Shared-x86 - Same as RuntimeGuestR3Shared, except that it's targeting x86.
1139#
1140RuntimeGuestR3Shared-x86_EXTENDS := RuntimeGuestR3Shared
1141RuntimeGuestR3Shared-x86_BLD_TRG_ARCH := x86
1142
1143
1144#
1145# RuntimeGuestR3Mini - Minimal Guest Additions Runtime which does not require
1146# initialization and can be linked into an .so. Intended
1147# for X11 drivers, GRADD and similar.
1148#
1149RuntimeGuestR3Mini_TEMPLATE := VBoxGuestR3Dll
1150## @todo change this to EXTEND the RuntimeGuestR3 target.
1151RuntimeGuestR3Mini_INST := $(INST_ADDITIONS_LIB)
1152RuntimeGuestR3Mini_SDKS.win := $(RuntimeR3_SDKS.win)
1153RuntimeGuestR3Mini_DEFS := \
1154 $(filter-out RTCRITSECT_STRICT RT_NO_GIP RT_WITH_ICONV_CACHE, $(RuntimeR3_DEFS)) \
1155 RT_MINI IN_RT_STATIC RTMEM_NO_WRAP_TO_EF_APIS
1156RuntimeGuestR3Mini_DEFS.$(KBUILD_TARGET) := $(RuntimeR3_DEFS.$(KBUILD_TARGET))
1157RuntimeGuestR3Mini_DEFS.$(KBUILD_HOST) := $(RuntimeR3_DEFS.$(KBUILD_HOST))
1158RuntimeGuestR3Mini_INCS := $(RuntimeR3_INCS)
1159RuntimeGuestR3Mini_INCS.$(KBUILD_TARGET) := $(RuntimeR3_INCS.$(KBUILD_TARGET))
1160RuntimeGuestR3Mini_INCS.$(KBUILD_HOST) := $(RuntimeR3_INCS.$(KBUILD_HOST))
1161RuntimeGuestR3Mini_SOURCES = \
1162 common/alloc/alloc.cpp \
1163 common/err/errmsg.cpp \
1164 common/err/RTErrConvertFromErrno.cpp \
1165 common/log/logformat.cpp \
1166 common/misc/RTAssertMsg1Weak.cpp \
1167 common/misc/RTAssertMsg2.cpp \
1168 common/misc/RTAssertMsg2Add.cpp \
1169 common/misc/RTAssertMsg2AddWeak.cpp \
1170 common/misc/RTAssertMsg2AddWeakV.cpp \
1171 common/misc/RTAssertMsg2Weak.cpp \
1172 common/misc/RTAssertMsg2WeakV.cpp \
1173 common/misc/assert.cpp \
1174 common/misc/buildconfig.cpp \
1175 common/misc/sanity-c.c \
1176 common/misc/sanity-cpp.cpp \
1177 common/misc/sg.cpp \
1178 common/path/rtPathVolumeSpecLen.cpp \
1179 common/path/RTPathAbsDup.cpp \
1180 common/path/RTPathAbsEx.cpp \
1181 common/path/RTPathAbsExDup.cpp \
1182 common/path/RTPathAppend.cpp \
1183 common/path/RTPathAppendEx.cpp \
1184 common/path/RTPathExt.cpp \
1185 common/path/RTPathFilename.cpp \
1186 common/path/RTPathHasExt.cpp \
1187 common/path/RTPathHasPath.cpp \
1188 common/path/RTPathJoin.cpp \
1189 common/path/RTPathJoinA.cpp \
1190 common/path/RTPathParseSimple.cpp \
1191 common/path/RTPathRealDup.cpp \
1192 common/path/RTPathStripExt.cpp \
1193 common/path/RTPathStripFilename.cpp \
1194 common/path/RTPathStripTrailingSlash.cpp \
1195 common/string/RTStrCat.cpp \
1196 common/string/RTStrCatEx.cpp \
1197 common/string/RTStrCatP.cpp \
1198 common/string/RTStrCatPEx.cpp \
1199 common/string/RTStrCmp.cpp \
1200 common/string/RTStrCopy.cpp \
1201 common/string/RTStrCopyEx.cpp \
1202 common/string/RTStrCopyP.cpp \
1203 common/string/RTStrCopyPEx.cpp \
1204 common/string/RTStrNCmp.cpp \
1205 common/string/RTStrNLen.cpp \
1206 common/string/RTStrNLenEx.cpp \
1207 common/string/RTStrStr.cpp \
1208 common/string/straprintf.cpp \
1209 common/string/strformat.cpp \
1210 common/string/strformatnum.cpp \
1211 common/string/strformatrt.cpp \
1212 common/string/strformattype.cpp \
1213 common/string/stringalloc.cpp \
1214 common/string/strprintf.cpp \
1215 common/string/strtonum.cpp \
1216 common/string/unidata.cpp \
1217 common/string/utf-8.cpp \
1218 common/string/utf-8-case.cpp \
1219 common/string/utf-16.cpp \
1220 common/table/avlpv.cpp \
1221 generic/critsect-generic.cpp \
1222 generic/pathhost-generic.cpp \
1223 generic/RTAssertShouldPanic-generic.cpp \
1224 generic/errvars-generic.cpp \
1225 r3/alloc.cpp \
1226 r3/alloc-ef.cpp \
1227 r3/fileio.cpp \
1228 r3/fs.cpp
1229RuntimeGuestR3Mini_SOURCES.freebsd = \
1230 r3/posix/RTMemProtect-posix.cpp \
1231 r3/posix/rtmempage-exec-mmap-posix.cpp \
1232 r3/posix/RTPathUserHome-posix.cpp \
1233 r3/posix/env-posix.cpp \
1234 r3/posix/fileio-posix.cpp \
1235 r3/posix/fileio2-posix.cpp \
1236 r3/posix/path-posix.cpp \
1237 r3/posix/path2-posix.cpp \
1238 r3/posix/utf8-posix.cpp \
1239 r3/posix/thread2-posix.cpp \
1240 common/err/errmsgxpcom.cpp
1241RuntimeGuestR3Mini_SOURCES.linux = \
1242 r3/posix/RTMemProtect-posix.cpp \
1243 r3/posix/rtmempage-exec-mmap-posix.cpp \
1244 r3/posix/RTPathUserHome-posix.cpp \
1245 r3/posix/env-posix.cpp \
1246 r3/posix/fileio-posix.cpp \
1247 r3/posix/fileio2-posix.cpp \
1248 r3/posix/path-posix.cpp \
1249 r3/posix/path2-posix.cpp \
1250 r3/posix/utf8-posix.cpp \
1251 r3/posix/thread2-posix.cpp \
1252 common/err/errmsgxpcom.cpp
1253RuntimeGuestR3Mini_SOURCES.solaris = \
1254 r3/posix/RTMemProtect-posix.cpp \
1255 r3/posix/rtmempage-exec-mmap-posix.cpp \
1256 r3/posix/RTPathUserHome-posix.cpp \
1257 r3/posix/env-posix.cpp \
1258 r3/posix/fileio-posix.cpp \
1259 r3/posix/fileio2-posix.cpp \
1260 r3/posix/path-posix.cpp \
1261 r3/posix/path2-posix.cpp \
1262 r3/posix/utf8-posix.cpp \
1263 r3/posix/thread2-posix.cpp \
1264 common/err/errmsgxpcom.cpp
1265RuntimeGuestR3Mini_SOURCES.win = \
1266 r3/win/alloc-win.cpp \
1267 r3/win/fileio-win.cpp \
1268 r3/win/path-win.cpp \
1269 r3/win/utf8-win.cpp \
1270 r3/win/thread2-win.cpp \
1271 win/errmsgwin.cpp \
1272 win/RTErrConvertFromWin32.cpp
1273
1274#
1275# RuntimeGuestR3Mini-x86 - Same as RuntimeGuestR3Mini, except that it's targeting x86.
1276#
1277RuntimeGuestR3Mini-x86_EXTENDS := RuntimeGuestR3Mini
1278RuntimeGuestR3Mini-x86_BLD_TRG_ARCH := x86
1279
1280
1281# VBox specific stuff.
1282RuntimeGuestR3Mini_SOURCES += \
1283 VBox/logbackdoor.cpp \
1284 VBox/logbackdoor-redirect.cpp
1285
1286
1287#
1288# VBoxRT - Shared Object / DLL version.
1289#
1290VBoxRT_TEMPLATE = VBoxR3DllNoPic
1291VBoxRT_SDKS = VBOX_LIBXML2
1292ifdef VBOX_WITH_LIBCURL
1293 VBoxRT_SDKS += VBOX_LIBCURL
1294endif
1295VBoxRT_SDKS += VBOX_OPENSSL
1296VBoxRT_SDKS.win = $(VBOX_WINPSDK) $(VBOX_WINDDK) VBOX_NTDLL
1297if1of ($(KBUILD_TARGET)$(VBOX_WITH_HARDENING), darwin win)
1298VBoxRT_INST = $(INST_DLL) $(INST_TESTCASE)
1299endif
1300VBoxRT_DEFS := $(filter-out RT_NO_GIP,$(RuntimeR3_DEFS)) IN_SUP_R3 IN_SUP_R3 IPRT_WITH_XAR
1301ifn1of ($(KBUILD_TARGET_ARCH), amd64 x86)
1302 VBoxRT_DEFS += RT_NO_GIP
1303endif
1304ifdef VBOX_WITH_LIBCURL
1305 VBoxRT_DEFS += IPRT_WITH_HTTP
1306endif
1307VBoxRT_DEFS.$(KBUILD_TYPE) := $(RuntimeR3_DEFS.$(KBUILD_TYPE))
1308VBoxRT_SOURCES := \
1309 VBox/VBoxRTDeps.cpp \
1310 $(filter-out common/checksum/crc32.cpp, $(RuntimeR3_SOURCES)) \
1311 common/checksum/crc32-zlib.cpp \
1312 common/misc/aiomgr.cpp
1313ifdef VBOX_WITH_LIBCURL
1314 VBoxRT_SOURCES += common/misc/s3.cpp
1315 VBoxRT_SOURCES += common/misc/http.cpp
1316endif
1317VBoxRT_SOURCES.$(KBUILD_TARGET) = $(RuntimeR3_SOURCES.$(KBUILD_TARGET))
1318VBoxRT_SOURCES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) := $(RuntimeR3_SOURCES.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH))
1319VBoxRT_SOURCES.$(KBUILD_TARGET).x86 := $(RuntimeR3_SOURCES.$(KBUILD_TARGET).x86)
1320VBoxRT_SOURCES.$(KBUILD_TARGET).amd64 := $(RuntimeR3_SOURCES.$(KBUILD_TARGET).amd64)
1321VBoxRT_SOURCES.$(KBUILD_TARGET_ARCH) := $(RuntimeR3_SOURCES.$(KBUILD_TARGET_ARCH))
1322VBoxRT_SOURCES.x86 := $(RuntimeR3_SOURCES.x86)
1323VBoxRT_SOURCES.amd64 := $(RuntimeR3_SOURCES.amd64)
1324VBoxRT_SOURCES.win += \
1325 r3/win/dllmain-win.cpp \
1326 r3/win/fileaio-win.cpp \
1327 $(VBoxRT_0_OUTDIR)/VBoxRT.def
1328VBoxRT_SOURCES.linux += \
1329 r3/linux/fileaio-linux.cpp
1330VBoxRT_SOURCES.solaris += \
1331 r3/solaris/fileaio-solaris.cpp
1332VBoxRT_SOURCES.darwin += \
1333 r3/posix/fileaio-posix.cpp
1334VBoxRT_SOURCES.freebsd += \
1335 r3/freebsd/fileaio-freebsd.cpp
1336VBoxRT_INCS := $(RuntimeR3_INCS)
1337VBoxRT_INCS.$(KBUILD_TARGET) := $(RuntimeR3_INCS.$(KBUILD_TARGET))
1338VBoxRT_INCS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) := $(RuntimeR3_INCS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH))
1339VBoxRT_LIBS = \
1340 $(PATH_STAGE_LIB)/VBox-liblzf$(VBOX_SUFF_LIB)
1341if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
1342VBoxRT_LIBS += \
1343 $(PATH_STAGE_LIB)/SUPR3$(VBOX_SUFF_LIB)
1344endif
1345ifdef IPRT_WITH_KSTUFF
1346 VBoxRT_LIBS += \
1347 $(PATH_STAGE_LIB)/VBox-kStuff$(VBOX_SUFF_LIB)
1348endif
1349ifndef SDK_VBOX_LIBXML2_LIBS
1350 VBoxRT_LIBS += \
1351 $(PATH_STAGE_LIB)/VBox-libxml2$(VBOX_SUFF_LIB)
1352endif
1353VBoxRT_LIBS += \
1354 $(SDK_VBOX_ZLIB_LIBS)
1355ifndef SDK_VBOX_OPENSSL_LIBS
1356 VBoxRT_LIBS += \
1357 $(PATH_STAGE_LIB)/VBox-libcrypto$(VBOX_SUFF_LIB) \
1358 $(PATH_STAGE_LIB)/VBox-libssl$(VBOX_SUFF_LIB)
1359endif
1360ifdef IPRT_WITH_LZO
1361 VBoxRT_LIBS += lzo2
1362endif
1363VBoxRT_LIBS.linux = \
1364 crypt
1365VBoxRT_LIBS.darwin = \
1366 iconv
1367VBoxRT_LIBS.freebsd = \
1368 iconv \
1369 rt
1370VBoxRT_LIBS.haiku = \
1371 iconv
1372VBoxRT_LIBS.solaris = \
1373 kstat \
1374 contract
1375ifn1of ($(KBUILD_TARGET_ARCH), sparc32 sparc64)
1376 # SMBIOS not available on Solaris SPARC.
1377 VBoxRT_LIBS.solaris += smbios
1378endif
1379VBoxRT_LIBS.win = \
1380 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/vccomsup.lib \
1381 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/wbemuuid.lib
1382VBoxRT_LDFLAGS.darwin = -framework IOKit -framework CoreFoundation -framework CoreServices -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxRT.dylib
1383VBoxRT_LDFLAGS.win = /MANIFEST
1384
1385if1of ($(DLLS), VBoxRT)
1386$$(VBoxRT_0_OUTDIR)/VBoxRT.def: \
1387 $(PATH_SUB_CURRENT)/r3/win/VBoxRT-$$(if-expr $$(KBUILD_TARGET_ARCH) == amd64,win64,win32).def \
1388 $(PATH_SUB_CURRENT)/r3/win/$(if $(VBOX_OSE),VBoxRT-openssl-ose.def,VBoxRT-openssl.def)
1389 $(RM) -f -- $@
1390 $(REDIRECT) -wto $@ -- $(CAT_EXT) $^
1391endif
1392
1393
1394#
1395# HACK ALERT! Make testcase run during build on SELinux boxes.
1396# Create a dummy DLL that ensure that VBoxRT is installed
1397# during the DLL pass and cleaned up later.
1398#
1399ifeq ($(KBUILD_TARGET),linux)
1400 if1of (VBoxRT, $(DLLS))
1401 ifneq ($(wildcard /usr/bin/chcon),)
1402VBoxRT_INSTTYPE = none
1403VBoxRT_DEBUG_INSTTYPE = both
1404
1405DLLS += VBoxRTDummy
1406VBoxRTDummy_TEMPLATE = VBOXR3
1407VBoxRTDummy_INSTTYPE = none
1408VBoxRTDummy_LIBS = $(PATH_STAGE_BIN)/VBoxRT.so
1409VBoxRTDummy_CLEAN = $(PATH_STAGE_BIN)/VBoxRT.so
1410BLDDIRS += $(PATH_STAGE_BIN)
1411
1412$(PATH_STAGE_BIN)/VBoxRT.so: $$(VBoxRT_1_TARGET) | $$(dir $$@)
1413 $(INSTALL) $< $@
1414 chcon -t texrel_shlib_t $@ || true
1415
1416VBoxRT:: VBoxRTDummy
1417 endif # chcon present.
1418 endif # building VBoxRT
1419endif # linux
1420
1421
1422#
1423# VBoxRT-x86 - 32-bit version of VBoxRT
1424#
1425VBoxRT-x86_EXTENDS = VBoxRT
1426VBoxRT-x86_TEMPLATE = VBoxR3Dll-x86
1427VBoxRT-x86_SDKS = VBOX_LIBXML2
1428ifdef VBOX_WITH_LIBCURL
1429 VBoxRT-x86_SDKS += VBOX_LIBCURL-x86
1430endif
1431VBoxRT-x86_SDKS += VBOX_OPENSSL-x86
1432
1433VBoxRT-x86_LIBS = \
1434 $(PATH_STAGE_LIB)/VBox-liblzf-x86$(VBOX_SUFF_LIB)
1435if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
1436VBoxRT-x86_LIBS += \
1437 $(PATH_STAGE_LIB)/SUPR3-x86$(VBOX_SUFF_LIB)
1438endif
1439ifdef IPRT_WITH_KSTUFF
1440 VBoxRT-x86_LIBS += \
1441 $(PATH_STAGE_LIB)/VBox-kStuff-x86$(VBOX_SUFF_LIB)
1442endif
1443ifndef SDK_VBOX_LIBXML2_LIBS
1444 VBoxRT-x86_LIBS += \
1445 $(PATH_STAGE_LIB)/VBox-libxml2-x86$(VBOX_SUFF_LIB)
1446endif
1447VBoxRT-x86_LIBS += \
1448 $(SDK_VBOX_ZLIB_LIBS-x86)
1449ifndef SDK_VBOX_OPENSSL_LIBS
1450 VBoxRT-x86_LIBS += \
1451 $(PATH_STAGE_LIB)/VBox-libcrypto-x86$(VBOX_SUFF_LIB) \
1452 $(PATH_STAGE_LIB)/VBox-libssl-x86$(VBOX_SUFF_LIB)
1453endif
1454ifdef IPRT_WITH_LZO
1455 VBoxRT-x86_LIBS += lzo2
1456endif
1457VBoxRT-x86_LIBS.linux = \
1458 crypt
1459VBoxRT-x86_LIBS.darwin = \
1460 iconv
1461VBoxRT-x86_LIBS.freebsd = \
1462 iconv \
1463 rt
1464VBoxRT-x86_LIBS.haiku = \
1465 iconv
1466VBoxRT-x86_LIBS.solaris = \
1467 kstat \
1468 contract
1469ifn1of ($(KBUILD_TARGET_ARCH), sparc32 sparc64)
1470 # SMBIOS not available on Solaris SPARC.
1471 VBoxRT-x86_LIBS.solaris += smbios
1472endif
1473VBoxRT-x86_LIBS.win = \
1474 $(PATH_SDK_$(VBOX_WINDDK)_LIB.x86)/vccomsup.lib \
1475 $(PATH_SDK_$(VBOX_WINDDK)_LIB.x86)/wbemuuid.lib
1476
1477VBoxRT-x86_SOURCES.win = $(filter-out %.def,$(VBoxRT_SOURCES.win)) \
1478 $(VBoxRT-x86_0_OUTDIR)/VBoxRT-x86.def
1479if1of ($(DLLS), VBoxRT-x86)
1480$$(VBoxRT-x86_0_OUTDIR)/VBoxRT-x86.def: \
1481 $(PATH_SUB_CURRENT)/r3/win/VBoxRT-win32.def \
1482 $(PATH_SUB_CURRENT)/r3/win/$(if $(VBOX_OSE),VBoxRT-openssl-ose.def,VBoxRT-openssl.def)
1483 $(RM) -f -- $@
1484 $(REDIRECT) -wto $@ -- $(CAT_EXT) $^
1485endif
1486
1487#
1488# VBoxRTImp - Import library/hack.
1489#
1490ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),win.amd64)
1491$(call VBOX_GENERATE_IMPORT_TARGET_FN,VBoxRTImp,VBoxRT,VBox/VBoxRTImp.def r3/win/VBoxRT-openssl-ose.def r3/win/VBoxRT-win64.def)
1492else ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),win.x86)
1493$(call VBOX_GENERATE_IMPORT_TARGET_FN,VBoxRTImp,VBoxRT,VBox/VBoxRTImp.def r3/win/VBoxRT-openssl-ose.def r3/win/VBoxRT-win32.def)
1494else
1495$(call VBOX_GENERATE_IMPORT_TARGET_FN,VBoxRTImp,VBoxRT,VBox/VBoxRTImp.def r3/win/VBoxRT-openssl-ose.def)
1496endif
1497
1498
1499#
1500# RuntimeR3NoCRTGCC - CRT replacement lib for VBoxREM.
1501# This is used together with VBoxRT.
1502#
1503## @todo the *_alias.c stuff is busted, remove and use RT_WITH_NOCRT_ALIASES instead.
1504RuntimeR3NoCRTGCC_TEMPLATE = VBOXNOCRTGCC
1505RuntimeR3NoCRTGCC_LIBSUFF = $(VBOX_SUFF_LIB)
1506ifn1of ($(KBUILD_TARGET_ARCH), amd64 x86)
1507 RuntimeR3NoCRTGCC_DEFS += RT_NO_GIP
1508endif
1509RuntimeR3NoCRTGCC_INCS = include
1510RuntimeR3NoCRTGCC_SOURCES := \
1511 common/misc/sanity-cpp.cpp \
1512 common/misc/sanity-c.c \
1513 \
1514 $(RuntimeNoCrt_SOURCES)
1515
1516if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
1517RuntimeR3NoCRTGCC_SOURCES += \
1518 common/math/ceill.asm \
1519 common/math/cosl.asm \
1520 common/math/fabs.asm \
1521 common/math/fabsf.asm \
1522 common/math/fabsl.asm \
1523 common/math/floor.asm \
1524 common/math/floorf.asm \
1525 common/math/floorl.asm \
1526 common/math/ldexpl.asm \
1527 common/math/llrint.asm \
1528 common/math/llrintf.asm \
1529 common/math/llrintl.asm \
1530 common/math/logl.asm \
1531 common/math/lrint.asm \
1532 common/math/lrintf.asm \
1533 common/math/lrintl.asm \
1534 common/math/remainder.asm \
1535 common/math/remainderf.asm \
1536 common/math/remainderl.asm \
1537 common/math/sinl.asm \
1538 common/math/tanl.asm \
1539 common/math/trunc.asm \
1540 common/math/truncf.asm \
1541 common/math/truncl.asm \
1542 \
1543 common/string/memchr_alias.c \
1544 common/string/memcmp_alias.c \
1545 common/string/memcpy_alias.c \
1546 common/string/memmove_alias.c \
1547 common/string/memset_alias.c \
1548 common/string/strchr_alias.c \
1549 common/string/strcmp_alias.c \
1550 common/string/strlen_alias.c
1551endif
1552
1553RuntimeR3NoCRTGCC_SOURCES.x86 = \
1554 common/math/x86/fenv-x86.c \
1555 common/math/gcc/adddi3.c \
1556 common/math/gcc/anddi3.c \
1557 common/math/gcc/ashldi3.c \
1558 common/math/gcc/ashrdi3.c \
1559 common/math/gcc/cmpdi2.c \
1560 common/math/gcc/divdi3.c \
1561 common/math/gcc/iordi3.c \
1562 common/math/gcc/lshldi3.c \
1563 common/math/gcc/lshrdi3.c \
1564 common/math/gcc/moddi3.c \
1565 common/math/gcc/muldi3.c \
1566 common/math/gcc/negdi2.c \
1567 common/math/gcc/notdi2.c \
1568 common/math/gcc/qdivrem.c \
1569 common/math/gcc/subdi3.c \
1570 common/math/gcc/ucmpdi2.c \
1571 common/math/gcc/udivdi3.c \
1572 common/math/gcc/umoddi3.c \
1573 common/math/gcc/xordi3.c
1574
1575
1576## @todo stop using the old memcpy.c and memset.c code.
1577
1578#
1579# RuntimeR0 - Ring-0 library for VMMR0.
1580#
1581RuntimeR0_TEMPLATE = VBoxR0
1582RuntimeR0_DEFS = IN_RT_R0 RT_WITH_VBOX
1583ifn1of ($(KBUILD_TARGET_ARCH), amd64 x86)
1584 RuntimeR0_DEFS += RT_NO_GIP
1585endif
1586RuntimeR0_INCS = include
1587RuntimeR0_SOURCES := \
1588 common/log/logellipsis.cpp \
1589 common/log/logrelellipsis.cpp \
1590 common/log/logcom.cpp \
1591 common/log/logformat.cpp \
1592 common/log/tracebuf.cpp \
1593 common/log/tracedefault.cpp \
1594 common/misc/RTAssertMsg1Weak.cpp \
1595 common/misc/RTAssertMsg2.cpp \
1596 common/misc/RTAssertMsg2Add.cpp \
1597 common/misc/RTAssertMsg2AddWeak.cpp \
1598 common/misc/RTAssertMsg2AddWeakV.cpp \
1599 common/misc/RTAssertMsg2Weak.cpp \
1600 common/misc/RTAssertMsg2WeakV.cpp \
1601 common/misc/buildconfig.cpp \
1602 common/misc/once.cpp \
1603 common/misc/sanity-c.c \
1604 common/misc/sanity-cpp.cpp \
1605 common/misc/term.cpp \
1606 common/path/RTPathFilename.cpp \
1607 common/string/strhash1.cpp \
1608 common/string/strncmp.cpp \
1609 common/string/strpbrk.cpp \
1610 common/string/RTStrCat.cpp \
1611 common/string/RTStrCatEx.cpp \
1612 common/string/RTStrCatP.cpp \
1613 common/string/RTStrCatPEx.cpp \
1614 common/string/RTStrCopy.cpp \
1615 common/string/RTStrCopyEx.cpp \
1616 common/string/RTStrCopyP.cpp \
1617 common/string/RTStrCopyPEx.cpp \
1618 common/string/RTStrNLen.cpp \
1619 common/string/RTStrNLenEx.cpp \
1620 common/table/avlgcptr.cpp \
1621 common/table/avlhcphys.cpp \
1622 common/table/avllu32.cpp \
1623 common/table/avlogcphys.cpp \
1624 common/table/avlogcptr.cpp \
1625 common/table/avlohcphys.cpp \
1626 common/table/avloioport.cpp \
1627 common/table/avlpv.cpp \
1628 common/table/avlrogcphys.cpp \
1629 common/table/avlrogcptr.cpp \
1630 common/table/avlroioport.cpp \
1631 common/table/avlroogcptr.cpp \
1632 common/table/avlu32.cpp \
1633 common/table/avlou32.cpp \
1634 common/time/timesup.cpp \
1635 generic/RTAssertShouldPanic-generic.cpp \
1636 \
1637 $(RuntimeNoCrt_SOURCES)
1638
1639if1of ($(KBUILD_TARGET), darwin solaris freebsd)
1640RuntimeR0_SOURCES += \
1641 common/math/gcc/adddi3.c \
1642 common/math/gcc/anddi3.c \
1643 common/math/gcc/ashldi3.c \
1644 common/math/gcc/ashrdi3.c \
1645 common/math/gcc/cmpdi2.c \
1646 common/math/gcc/divdi3.c \
1647 common/math/gcc/iordi3.c \
1648 common/math/gcc/lshldi3.c \
1649 common/math/gcc/lshrdi3.c \
1650 common/math/gcc/moddi3.c \
1651 common/math/gcc/muldi3.c \
1652 common/math/gcc/negdi2.c \
1653 common/math/gcc/notdi2.c \
1654 common/math/gcc/qdivrem.c \
1655 common/math/gcc/subdi3.c \
1656 common/math/gcc/ucmpdi2.c \
1657 common/math/gcc/udivdi3.c \
1658 common/math/gcc/umoddi3.c \
1659 common/math/gcc/xordi3.c
1660endif
1661
1662#if1of ($(KBUILD_TARGET_ARCH),amd64 x86)
1663# RuntimeR0_SOURCES += common/time/timesupA.asm
1664#else
1665 RuntimeR0_SOURCES += common/time/timesupref.cpp
1666#endif
1667
1668RuntimeR0_SOURCES.win.amd64 := $(RuntimeWin64ASM_SOURCES)
1669RuntimeR0_SOURCES.win.x86 := $(RuntimeWin32ASM_SOURCES)
1670RuntimeR0_SOURCES.win = \
1671 nt/NtProcessStartup-stub.cpp
1672
1673RuntimeR0_SOURCES.os2 = \
1674 os2/sys0.asm
1675
1676
1677#
1678# RuntimeR0Stub - Ring-0 context startup stub for Windows and Solaris.
1679#
1680RuntimeR0Stub_TEMPLATE = $(if-expr "$(KBUILD_TARGET)" == "solaris",VBoxR0DrvLib,VBoxR0)
1681RuntimeR0Stub_SOURCES.win = \
1682 nt/NtProcessStartup-stub.cpp
1683RuntimeR0Stub_SOURCES.solaris = \
1684 r0drv/solaris/modulestub-r0drv-solaris.c
1685
1686
1687#
1688# RuntimeR0Drv - Ring-0 library for host drivers.
1689#
1690RuntimeR0Drv_TEMPLATE = VBoxR0DrvLib
1691RuntimeR0Drv_SDKS.win = ReorderCompilerIncs $(VBOX_WINDDK) $(VBOX_WINPSDK)INCS
1692RuntimeR0Drv_DEFS = IN_RT_R0 RT_WITH_VBOX RT_WITHOUT_NOCRT_WRAPPERS RT_NO_EXPORT_SYMBOL
1693RuntimeR0Drv_DEFS.win = IN_SUP_R0
1694RuntimeR0Drv_DEFS.linux = MODULE KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) IN_SUP_R0
1695
1696RuntimeR0Drv_INCS := $(PATH_SUB_CURRENT) include
1697RuntimeR0Drv_INCS.freebsd = \
1698 $(PATH_STAGE)/gen-sys-hdrs
1699RuntimeR0Drv_INCS.linux = \
1700 r0drv/linux
1701RuntimeR0Drv_INCS.solaris = \
1702 r0drv/solaris/vbi/i86pc \
1703 r0drv/solaris/vbi/i86pc/sys
1704
1705RuntimeR0Drv_SOURCES = \
1706 common/alloc/alloc.cpp \
1707 common/alloc/heapsimple.cpp \
1708 common/alloc/heapoffset.cpp \
1709 common/checksum/crc32.cpp \
1710 common/checksum/crc64.cpp \
1711 common/checksum/md5.cpp \
1712 common/checksum/ipv4.cpp \
1713 common/checksum/ipv6.cpp \
1714 common/err/RTErrConvertToErrno.cpp \
1715 common/err/RTErrConvertFromErrno.cpp \
1716 common/log/log.cpp \
1717 common/log/logellipsis.cpp \
1718 common/log/logrel.cpp \
1719 common/log/logrelellipsis.cpp \
1720 common/log/logcom.cpp \
1721 common/log/logformat.cpp \
1722 common/log/tracebuf.cpp \
1723 common/log/tracedefault.cpp \
1724 common/misc/RTAssertMsg1Weak.cpp \
1725 common/misc/RTAssertMsg2.cpp \
1726 common/misc/RTAssertMsg2Add.cpp \
1727 common/misc/RTAssertMsg2AddWeak.cpp \
1728 common/misc/RTAssertMsg2AddWeakV.cpp \
1729 common/misc/RTAssertMsg2Weak.cpp \
1730 common/misc/RTAssertMsg2WeakV.cpp \
1731 common/misc/assert.cpp \
1732 common/misc/buildconfig.cpp \
1733 common/misc/handletable.cpp \
1734 common/misc/handletablectx.cpp \
1735 common/misc/handletablesimple.cpp \
1736 common/misc/once.cpp \
1737 common/misc/sanity-c.c \
1738 common/misc/sanity-cpp.cpp \
1739 common/misc/term.cpp \
1740 common/path/rtPathVolumeSpecLen.cpp \
1741 common/path/RTPathAbsDup.cpp \
1742 common/path/RTPathAbsEx.cpp \
1743 common/path/RTPathAbsExDup.cpp \
1744 common/path/RTPathAppend.cpp \
1745 common/path/RTPathAppendEx.cpp \
1746 common/path/RTPathExt.cpp \
1747 common/path/RTPathFilename.cpp \
1748 common/path/RTPathHasExt.cpp \
1749 common/path/RTPathHasPath.cpp \
1750 common/path/RTPathParseSimple.cpp \
1751 common/path/RTPathRealDup.cpp \
1752 common/path/RTPathStripExt.cpp \
1753 common/path/RTPathStripFilename.cpp \
1754 common/path/RTPathStripTrailingSlash.cpp \
1755 common/rand/rand.cpp \
1756 common/rand/randadv.cpp \
1757 common/rand/randparkmiller.cpp \
1758 common/string/RTStrCat.cpp \
1759 common/string/RTStrCatEx.cpp \
1760 common/string/RTStrCatP.cpp \
1761 common/string/RTStrCatPEx.cpp \
1762 common/string/RTStrCmp.cpp \
1763 common/string/RTStrCopy.cpp \
1764 common/string/RTStrCopyEx.cpp \
1765 common/string/RTStrCopyP.cpp \
1766 common/string/RTStrCopyPEx.cpp \
1767 common/string/RTStrNCmp.cpp \
1768 common/string/RTStrNLen.cpp \
1769 common/string/RTStrNLenEx.cpp \
1770 common/string/straprintf.cpp \
1771 common/string/strformat.cpp \
1772 common/string/strformatnum.cpp \
1773 common/string/strformatrt.cpp \
1774 common/string/strformattype.cpp \
1775 common/string/strhash1.cpp \
1776 common/string/strprintf.cpp \
1777 common/string/strtonum.cpp \
1778 common/string/stringalloc.cpp \
1779 common/string/utf-16.cpp \
1780 common/string/utf-8.cpp \
1781 common/table/avlpv.cpp \
1782 common/time/time.cpp \
1783 generic/RTLogWriteStdErr-stub-generic.cpp \
1784 generic/RTLogWriteUser-generic.cpp \
1785 generic/RTMpGetArraySize-generic.cpp \
1786 generic/RTRandAdvCreateSystemFaster-generic.cpp \
1787 generic/RTSemEventWait-2-ex-generic.cpp \
1788 generic/RTSemEventWaitNoResume-2-ex-generic.cpp \
1789 generic/RTSemEventMultiWait-2-ex-generic.cpp \
1790 generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
1791 generic/errvars-generic.cpp \
1792 generic/uuid-generic.cpp \
1793 r0drv/alloc-r0drv.cpp \
1794 r0drv/initterm-r0drv.cpp \
1795 r0drv/generic/semspinmutex-r0drv-generic.c \
1796 VBox/log-vbox.cpp \
1797
1798RuntimeR0Drv_SOURCES.linux = \
1799 common/misc/thread.cpp \
1800 common/string/strpbrk.cpp \
1801 generic/RTAssertShouldPanic-generic.cpp \
1802 generic/RTLogWriteStdOut-stub-generic.cpp \
1803 generic/RTMpGetCoreCount-generic.cpp \
1804 generic/mppresent-generic.cpp \
1805 r0drv/linux/alloc-r0drv-linux.c \
1806 r0drv/linux/assert-r0drv-linux.c \
1807 r0drv/linux/initterm-r0drv-linux.c \
1808 r0drv/linux/memobj-r0drv-linux.c \
1809 r0drv/linux/memuserkernel-r0drv-linux.c \
1810 r0drv/linux/mp-r0drv-linux.c \
1811 r0drv/linux/mpnotification-r0drv-linux.c \
1812 r0drv/linux/process-r0drv-linux.c \
1813 r0drv/linux/RTLogWriteDebugger-r0drv-linux.c \
1814 r0drv/linux/semevent-r0drv-linux.c \
1815 r0drv/linux/semeventmulti-r0drv-linux.c \
1816 r0drv/linux/semfastmutex-r0drv-linux.c \
1817 r0drv/linux/semmutex-r0drv-linux.c \
1818 r0drv/linux/spinlock-r0drv-linux.c \
1819 r0drv/linux/thread-r0drv-linux.c \
1820 r0drv/linux/thread2-r0drv-linux.c \
1821 r0drv/linux/threadctxhooks-r0drv-linux.c \
1822 r0drv/linux/time-r0drv-linux.c \
1823 r0drv/linux/timer-r0drv-linux.c \
1824 r0drv/memobj-r0drv.cpp \
1825 r0drv/mpnotification-r0drv.c \
1826 r0drv/powernotification-r0drv.c
1827
1828RuntimeR0Drv_SOURCES.win = \
1829 common/misc/thread.cpp \
1830 common/string/memcmp.asm \
1831 common/string/memchr.asm \
1832 common/string/memcpy.asm \
1833 common/string/memset.asm \
1834 common/string/memmove.asm \
1835 common/string/strlen.asm \
1836 common/string/strncmp.cpp \
1837 common/string/strpbrk.cpp \
1838 generic/RTAssertShouldPanic-generic.cpp \
1839 generic/RTLogWriteStdOut-stub-generic.cpp \
1840 generic/RTTimerCreate-generic.cpp \
1841 generic/mppresent-generic.cpp \
1842 generic/RTMpGetCoreCount-generic.cpp \
1843 nt/RTErrConvertFromNtStatus.cpp \
1844 r0drv/generic/threadctxhooks-r0drv-generic.cpp \
1845 r0drv/memobj-r0drv.cpp \
1846 r0drv/mpnotification-r0drv.c \
1847 r0drv/powernotification-r0drv.c \
1848 r0drv/nt/alloc-r0drv-nt.cpp \
1849 r0drv/nt/assert-r0drv-nt.cpp \
1850 r0drv/nt/initterm-r0drv-nt.cpp \
1851 r0drv/nt/memobj-r0drv-nt.cpp \
1852 r0drv/nt/memuserkernel-r0drv-nt.cpp \
1853 r0drv/nt/mp-r0drv-nt.cpp \
1854 r0drv/nt/mpnotification-r0drv-nt.cpp \
1855 r0drv/nt/process-r0drv-nt.cpp \
1856 r0drv/nt/RTLogWriteDebugger-r0drv-nt.cpp \
1857 r0drv/nt/semevent-r0drv-nt.cpp \
1858 r0drv/nt/semeventmulti-r0drv-nt.cpp \
1859 r0drv/nt/semfastmutex-r0drv-nt.cpp \
1860 r0drv/nt/semmutex-r0drv-nt.cpp \
1861 r0drv/nt/spinlock-r0drv-nt.cpp \
1862 r0drv/nt/thread-r0drv-nt.cpp \
1863 r0drv/nt/thread2-r0drv-nt.cpp \
1864 r0drv/nt/time-r0drv-nt.cpp \
1865 r0drv/nt/timer-r0drv-nt.cpp \
1866 r0drv/nt/RTTimerGetSystemGranularity-r0drv-nt.cpp
1867
1868RuntimeR0Drv_SOURCES.win.amd64 := $(RuntimeWin64ASM_SOURCES)
1869RuntimeR0Drv_SOURCES.win.x86 := $(RuntimeWin32ASM_SOURCES)
1870
1871RuntimeR0Drv_SOURCES.darwin = \
1872 common/misc/thread.cpp \
1873 common/string/memchr.asm \
1874 common/string/strpbrk.cpp \
1875 darwin/RTErrConvertFromDarwin.cpp \
1876 darwin/RTErrConvertFromDarwinIO.cpp \
1877 darwin/RTErrConvertFromDarwinKern.cpp \
1878 generic/RTAssertShouldPanic-generic.cpp \
1879 generic/RTTimerCreate-generic.cpp \
1880 generic/RTMpGetCoreCount-generic.cpp \
1881 generic/mppresent-generic.cpp \
1882 generic/timer-generic.cpp \
1883 r0drv/generic/mpnotification-r0drv-generic.cpp \
1884 r0drv/generic/threadctxhooks-r0drv-generic.cpp \
1885 r0drv/darwin/alloc-r0drv-darwin.cpp \
1886 r0drv/darwin/assert-r0drv-darwin.cpp \
1887 r0drv/darwin/initterm-r0drv-darwin.cpp \
1888 r0drv/darwin/dbgkrnlinfo-r0drv-darwin.cpp \
1889 r0drv/darwin/memobj-r0drv-darwin.cpp \
1890 r0drv/darwin/mp-r0drv-darwin.cpp \
1891 r0drv/darwin/memuserkernel-r0drv-darwin.cpp \
1892 r0drv/darwin/process-r0drv-darwin.cpp \
1893 r0drv/darwin/RTLogWriteDebugger-r0drv-darwin.cpp \
1894 r0drv/darwin/RTLogWriteStdOut-r0drv-darwin.cpp \
1895 r0drv/darwin/semevent-r0drv-darwin.cpp \
1896 r0drv/darwin/semeventmulti-r0drv-darwin.cpp \
1897 r0drv/darwin/semfastmutex-r0drv-darwin.cpp \
1898 r0drv/darwin/semmutex-r0drv-darwin.cpp \
1899 r0drv/darwin/spinlock-r0drv-darwin.cpp \
1900 r0drv/darwin/thread-r0drv-darwin.cpp \
1901 r0drv/darwin/thread2-r0drv-darwin.cpp \
1902 r0drv/darwin/threadpreempt-r0drv-darwin.cpp \
1903 r0drv/darwin/time-r0drv-darwin.cpp \
1904 r0drv/memobj-r0drv.cpp \
1905 r0drv/powernotification-r0drv.c
1906
1907RuntimeR0Drv_SOURCES.os2 = \
1908 common/string/memchr.asm \
1909 common/string/memcmp.asm \
1910 common/string/memcpy.asm \
1911 common/string/mempcpy.asm \
1912 common/string/memmove.asm \
1913 common/string/memset.asm \
1914 common/string/strchr.asm \
1915 common/string/strcmp.asm \
1916 common/string/strcpy.asm \
1917 common/string/strlen.asm \
1918 \
1919 common/string/strncmp.cpp \
1920 common/string/strpbrk.cpp \
1921 \
1922 common/misc/thread.cpp \
1923 generic/RTAssertShouldPanic-generic.cpp \
1924 generic/RTLogWriteDebugger-generic.cpp \
1925 generic/RTLogWriteStdOut-stub-generic.cpp \
1926 generic/RTMpCpuId-generic.cpp \
1927 generic/RTMpCpuIdFromSetIndex-generic.cpp \
1928 generic/RTMpCpuIdToSetIndex-generic.cpp \
1929 generic/RTMpIsCpuPossible-generic.cpp \
1930 generic/RTMpGetCount-generic.cpp \
1931 generic/RTMpGetMaxCpuId-generic.cpp \
1932 generic/RTMpGetOnlineCount-generic.cpp \
1933 generic/RTMpGetOnlineSet-generic.cpp \
1934 generic/RTMpGetSet-generic.cpp \
1935 generic/RTMpIsCpuOnline-generic.cpp \
1936 generic/RTTimerCreate-generic.cpp \
1937 generic/mppresent-generic.cpp \
1938 os2/RTErrConvertFromOS2.cpp \
1939 os2/rtSemWaitOs2ConvertTimeout.cpp \
1940 os2/sys0.asm \
1941 r0drv/generic/RTMpIsCpuWorkPending-r0drv-generic.cpp \
1942 r0drv/generic/RTMpOn-r0drv-generic.cpp \
1943 r0drv/generic/mpnotification-r0drv-generic.cpp \
1944 r0drv/generic/threadctxhooks-r0drv-generic.cpp \
1945 r0drv/memobj-r0drv.cpp \
1946 r0drv/powernotification-r0drv.c \
1947 r0drv/os2/alloc-r0drv-os2.cpp \
1948 r0drv/os2/assert-r0drv-os2.cpp \
1949 r0drv/os2/assertA-r0drv-os2.asm \
1950 r0drv/os2/initterm-r0drv-os2.cpp \
1951 r0drv/os2/memobj-r0drv-os2.cpp \
1952 r0drv/os2/memuserkernel-r0drv-os2.cpp \
1953 r0drv/os2/os2imports.imp \
1954 r0drv/os2/process-r0drv-os2.cpp \
1955 r0drv/os2/RTR0AssertPanicSystem-r0drv-os2.asm \
1956 r0drv/os2/RTR0Os2DHQueryDOSVar.asm \
1957 r0drv/os2/RTR0Os2DHVMGlobalToProcess.asm \
1958 r0drv/os2/semevent-r0drv-os2.cpp \
1959 r0drv/os2/semeventmulti-r0drv-os2.cpp \
1960 r0drv/os2/semfastmutex-r0drv-os2.cpp \
1961 r0drv/os2/spinlock-r0drv-os2.cpp \
1962 r0drv/os2/thread-r0drv-os2.cpp \
1963 r0drv/os2/thread2-r0drv-os2.cpp \
1964 r0drv/os2/time-r0drv-os2.cpp \
1965 r0drv/os2/timer-r0drv-os2.cpp \
1966 r0drv/os2/timerA-r0drv-os2.asm
1967
1968RuntimeR0Drv_SOURCES.freebsd = \
1969 common/misc/thread.cpp \
1970 common/string/memchr.asm \
1971 common/string/memmove.asm \
1972 common/string/strpbrk.cpp \
1973 common/string/memcmp.asm \
1974 common/string/strchr.asm \
1975 generic/RTAssertShouldPanic-generic.cpp \
1976 generic/RTLogWriteDebugger-generic.cpp \
1977 generic/RTLogWriteStdOut-stub-generic.cpp \
1978 generic/RTTimerCreate-generic.cpp \
1979 generic/mppresent-generic.cpp \
1980 r0drv/generic/RTMpIsCpuWorkPending-r0drv-generic.cpp \
1981 r0drv/generic/mpnotification-r0drv-generic.cpp \
1982 r0drv/generic/threadctxhooks-r0drv-generic.cpp \
1983 r0drv/freebsd/alloc-r0drv-freebsd.c \
1984 r0drv/freebsd/assert-r0drv-freebsd.c \
1985 r0drv/freebsd/initterm-r0drv-freebsd.c \
1986 r0drv/freebsd/memobj-r0drv-freebsd.c \
1987 r0drv/freebsd/memuserkernel-r0drv-freebsd.c \
1988 r0drv/freebsd/process-r0drv-freebsd.c \
1989 r0drv/freebsd/semevent-r0drv-freebsd.c \
1990 r0drv/freebsd/semeventmulti-r0drv-freebsd.c \
1991 r0drv/freebsd/semfastmutex-r0drv-freebsd.c \
1992 r0drv/freebsd/semmutex-r0drv-freebsd.c \
1993 r0drv/freebsd/spinlock-r0drv-freebsd.c \
1994 r0drv/freebsd/thread-r0drv-freebsd.c \
1995 r0drv/freebsd/thread2-r0drv-freebsd.c \
1996 r0drv/freebsd/time-r0drv-freebsd.c \
1997 r0drv/freebsd/mp-r0drv-freebsd.c \
1998 generic/timer-generic.cpp \
1999 r0drv/memobj-r0drv.cpp \
2000 r0drv/powernotification-r0drv.c
2001
2002RuntimeR0Drv_SOURCES.solaris = \
2003 common/misc/thread.cpp \
2004 common/string/memchr.asm \
2005 generic/RTAssertShouldPanic-generic.cpp \
2006 generic/RTLogWriteStdOut-stub-generic.cpp \
2007 generic/RTMpGetCoreCount-generic.cpp \
2008 generic/RTTimerCreate-generic.cpp \
2009 generic/mppresent-generic.cpp \
2010 r0drv/memobj-r0drv.cpp \
2011 r0drv/mpnotification-r0drv.c \
2012 r0drv/powernotification-r0drv.c \
2013 r0drv/solaris/RTLogWriteDebugger-r0drv-solaris.c \
2014 r0drv/solaris/RTMpPokeCpu-r0drv-solaris.c \
2015 r0drv/solaris/alloc-r0drv-solaris.c \
2016 r0drv/solaris/assert-r0drv-solaris.c \
2017 r0drv/solaris/dbgkrnlinfo-r0drv-solaris.c \
2018 r0drv/solaris/initterm-r0drv-solaris.c \
2019 r0drv/solaris/memuserkernel-r0drv-solaris.c \
2020 r0drv/solaris/mpnotification-r0drv-solaris.c \
2021 r0drv/solaris/memobj-r0drv-solaris.c \
2022 r0drv/solaris/mp-r0drv-solaris.c \
2023 r0drv/solaris/process-r0drv-solaris.c \
2024 r0drv/solaris/semevent-r0drv-solaris.c \
2025 r0drv/solaris/semeventmulti-r0drv-solaris.c \
2026 r0drv/solaris/semfastmutex-r0drv-solaris.c \
2027 r0drv/solaris/semmutex-r0drv-solaris.c \
2028 r0drv/solaris/spinlock-r0drv-solaris.c \
2029 r0drv/solaris/thread-r0drv-solaris.c \
2030 r0drv/solaris/thread2-r0drv-solaris.c \
2031 r0drv/solaris/threadctxhooks-r0drv-solaris.c \
2032 r0drv/solaris/time-r0drv-solaris.c \
2033 r0drv/solaris/timer-r0drv-solaris.c
2034
2035RuntimeR0Drv_SOURCES.haiku = \
2036 common/misc/thread.cpp \
2037 common/string/memchr.asm \
2038 common/string/memmove.asm \
2039 common/string/strpbrk.cpp \
2040 common/string/memcmp.asm \
2041 common/string/strchr.asm \
2042 generic/RTAssertShouldPanic-generic.cpp \
2043 generic/RTTimerCreate-generic.cpp \
2044 generic/mppresent-generic.cpp \
2045 r0drv/generic/RTMpIsCpuWorkPending-r0drv-generic.cpp \
2046 r0drv/generic/mpnotification-r0drv-generic.cpp \
2047 r0drv/generic/threadctxhooks-r0drv-generic.cpp \
2048 r0drv/haiku/alloc-r0drv-haiku.c \
2049 r0drv/haiku/assert-r0drv-haiku.c \
2050 r0drv/haiku/initterm-r0drv-haiku.c \
2051 r0drv/haiku/memobj-r0drv-haiku.c \
2052 r0drv/haiku/mp-r0drv-haiku.c \
2053 r0drv/haiku/process-r0drv-haiku.c \
2054 r0drv/haiku/RTLogWriteDebugger-r0drv-haiku.c \
2055 r0drv/haiku/RTLogWriteStdOut-r0drv-haiku.c \
2056 r0drv/haiku/semevent-r0drv-haiku.c \
2057 r0drv/haiku/semeventmulti-r0drv-haiku.c \
2058 r0drv/haiku/semfastmutex-r0drv-haiku.c \
2059 r0drv/haiku/semmutex-r0drv-haiku.c \
2060 r0drv/haiku/spinlock-r0drv-haiku.c \
2061 r0drv/haiku/thread-r0drv-haiku.c \
2062 r0drv/haiku/thread2-r0drv-haiku.c \
2063 r0drv/haiku/time-r0drv-haiku.c \
2064 generic/timer-generic.cpp \
2065 r0drv/memobj-r0drv.cpp \
2066 r0drv/powernotification-r0drv.c
2067
2068## PORTME: Porters create and add their selection of platform specific Ring-0 Driver files here.
2069
2070RuntimeR0Drv_ORDERDEPS.freebsd = \
2071 $(PATH_STAGE)/gen-sys-hdrs/bus_if.h \
2072 $(PATH_STAGE)/gen-sys-hdrs/device_if.h
2073
2074
2075#
2076# RuntimeGuestR0 - Guest driver runtime.
2077# This is almost the same as the RuntimeR0Drv, the main difference
2078# is in the backdoor logging and the lack of sup.h (which should be
2079# made irrelevant even for RuntimeR0Drv).
2080#
2081RuntimeGuestR0_TEMPLATE := VBOXGUESTR0LIB
2082RuntimeGuestR0_EXTENDS = RuntimeR0Drv
2083RuntimeGuestR0_SOURCES := $(filter-out generic/RTLogWriteUser-generic.cpp, $(RuntimeR0Drv_SOURCES))
2084RuntimeGuestR0_SOURCES += \
2085 VBox/logbackdoor.cpp
2086
2087
2088#
2089# RuntimeGuestR0NT4 - Win32 NT4 guest driver runtime.
2090#
2091RuntimeGuestR0NT4_EXTENDS = RuntimeGuestR0
2092RuntimeGuestR0NT4_EXTENDS_BY = appending
2093RuntimeGuestR0NT4_DEFS = IPRT_TARGET_NT4
2094
2095
2096ifdef VBOX_WITH_RAW_MODE
2097 #
2098 # RuntimeRC - Raw-mode context library.
2099 #
2100 RuntimeRC_TEMPLATE = VBoxRc
2101 RuntimeRC_DEFS = IN_RT_RC RT_WITH_VBOX
2102 RuntimeRC_INCS = include
2103 RuntimeRC_SOURCES := \
2104 common/checksum/crc32.cpp \
2105 common/checksum/crc64.cpp \
2106 common/checksum/md5.cpp \
2107 common/log/log.cpp \
2108 common/log/logellipsis.cpp \
2109 common/log/logrel.cpp \
2110 common/log/logrelellipsis.cpp \
2111 common/log/logcom.cpp \
2112 common/log/logformat.cpp \
2113 common/log/tracebuf.cpp \
2114 common/log/tracedefault.cpp \
2115 common/misc/RTAssertMsg1Weak.cpp \
2116 common/misc/RTAssertMsg2.cpp \
2117 common/misc/RTAssertMsg2Add.cpp \
2118 common/misc/RTAssertMsg2AddWeak.cpp \
2119 common/misc/RTAssertMsg2AddWeakV.cpp \
2120 common/misc/RTAssertMsg2Weak.cpp \
2121 common/misc/RTAssertMsg2WeakV.cpp \
2122 common/misc/assert.cpp \
2123 common/misc/buildconfig.cpp \
2124 common/misc/sanity-c.c \
2125 common/misc/sanity-cpp.cpp \
2126 common/path/RTPathFilename.cpp \
2127 common/string/strformat.cpp \
2128 common/string/strformatnum.cpp \
2129 common/string/strformatrt.cpp \
2130 common/string/strformattype.cpp \
2131 common/string/strncmp.cpp \
2132 common/string/strpbrk.cpp \
2133 common/string/strprintf.cpp \
2134 common/string/RTStrCopy.cpp \
2135 common/string/RTStrCopyEx.cpp \
2136 common/table/avllu32.cpp \
2137 common/table/avlou32.cpp \
2138 common/table/avlogcphys.cpp \
2139 common/table/avlogcptr.cpp \
2140 common/table/avlohcphys.cpp \
2141 common/table/avloioport.cpp \
2142 common/table/avlrogcphys.cpp \
2143 common/table/avlrogcptr.cpp \
2144 common/table/avlroioport.cpp \
2145 common/table/avlroogcptr.cpp \
2146 common/table/avlu32.cpp \
2147 common/time/timeprog.cpp \
2148 common/time/timesup.cpp \
2149 gc/initterm-gc.cpp \
2150 generic/RTAssertShouldPanic-generic.cpp \
2151 generic/errvars-generic.cpp \
2152 \
2153 $(RuntimeNoCrt_SOURCES)
2154
2155 #if1of ($(KBUILD_TARGET_ARCH),amd64 x86)
2156 # RuntimeRC_SOURCES += common/time/timesupA.asm
2157 #else
2158 RuntimeRC_SOURCES += common/time/timesupref.cpp
2159 #endif
2160
2161 RuntimeRC_SOURCES.win.x86 = $(RuntimeWin32ASM_SOURCES)
2162
2163 ifeq ($(VBOX_LDR_FMT32),lx)
2164 RuntimeRC_SOURCES += os2/sys0.asm
2165 endif
2166
2167 if1of ($(KBUILD_TARGET), darwin solaris freebsd)
2168 RuntimeRC_SOURCES += \
2169 common/math/gcc/adddi3.c \
2170 common/math/gcc/anddi3.c \
2171 common/math/gcc/ashldi3.c \
2172 common/math/gcc/ashrdi3.c \
2173 common/math/gcc/cmpdi2.c \
2174 common/math/gcc/divdi3.c \
2175 common/math/gcc/iordi3.c \
2176 common/math/gcc/lshldi3.c \
2177 common/math/gcc/lshrdi3.c \
2178 common/math/gcc/moddi3.c \
2179 common/math/gcc/muldi3.c \
2180 common/math/gcc/negdi2.c \
2181 common/math/gcc/notdi2.c \
2182 common/math/gcc/qdivrem.c \
2183 common/math/gcc/subdi3.c \
2184 common/math/gcc/ucmpdi2.c \
2185 common/math/gcc/udivdi3.c \
2186 common/math/gcc/umoddi3.c \
2187 common/math/gcc/xordi3.c
2188 endif
2189
2190
2191 #
2192 # RuntimeRCStub - Raw-mode context startup stub for Windows.
2193 #
2194 RuntimeRCStub_TEMPLATE = VBoxRc
2195 RuntimeRCStub_SOURCES.win = \
2196 nt/NtProcessStartup-stub.cpp
2197
2198
2199endif # VBOX_WITH_RAW_MODE
2200
2201
2202#
2203# Static library for new & delete for the electric fence.
2204#
2205RuntimeEFCPP_TEMPLATE := $(VBoxRT_TEMPLATE)
2206RuntimeEFCPP_SDKS := $(RuntimeR3_SDKS)
2207RuntimeEFCPP_SDKS.$(KBUILD_TARGET) := $(RuntimeR3_SDKS.$(KBUILD_TARGET))
2208RuntimeEFCPP_DEFS := $(RuntimeR3_DEFS)
2209RuntimeEFCPP_DEFS.$(KBUILD_TARGET) := $(RuntimeR3_DEFS.$(KBUILD_TARGET))
2210RuntimeEFCPP_INCS := $(RuntimeR3_INCS)
2211RuntimeEFCPP_INCS.$(KBUILD_TARGET) := $(RuntimeR3_INCS.$(KBUILD_TARGET))
2212RuntimeEFCPP_SOURCES := r3/alloc-ef-cpp.cpp
2213
2214
2215
2216#
2217# The NTDLL mini import library.
2218#
2219# Note! The reason for doing this is to avoid importing CRT symbols from the
2220# NTDLL. We do not wish to do this because:
2221# - Our compiler is usually a different one and we should use the
2222# matching CRT,
2223# - Older versions of NTDLL may not sport all the exports our w2k3 or
2224# later WINDDK ntdll.lib have and thus we may easily end up with
2225# images that does not load on older windows versions.
2226#
2227RuntimeR3NtDll-amd64_TEMPLATE = VBoxR3Dll
2228RuntimeR3NtDll-amd64_BLD_TRG_ARCH = amd64
2229RuntimeR3NtDll-amd64_ARFLAGS = /NODEFAULTLIB /MACHINE:amd64
2230RuntimeR3NtDll-amd64_SOURCES = \
2231 r3/win/ntdll-mini-implib.c \
2232 r3/win/ntdll-mini-implib.def
2233
2234RuntimeR3NtDll-x86_EXTENDS = RuntimeR3NtDll-amd64
2235RuntimeR3NtDll-x86_BLD_TRG_ARCH = x86
2236RuntimeR3NtDll-x86_ARFLAGS = /NODEFAULTLIB /MACHINE:x86
2237
2238
2239#
2240# Bag of tricks required for making VCC100 output binaries work on NT4, W2K
2241# early XP and early W2K3.
2242#
2243RuntimeR3VccTricks_TEMPLATE = VBoxR3Dll
2244RuntimeR3VccTricks_SOURCES = \
2245 r3/win/vcc100-kernel32-fakes.cpp \
2246 r3/win/vcc100-kernel32-fakesA.asm
2247
2248
2249#
2250# errmsg.cpp depends on a generated header.
2251#
2252common/err/errmsg.cpp_DEPS = $(IPRT_OUT_DIR)/errmsgdata.h
2253common/err/errmsg.cpp_INCS = $(IPRT_OUT_DIR)
2254
2255win/errmsgwin.cpp_DEPS = $(IPRT_OUT_DIR)/errmsgcomdata.h
2256win/errmsgwin.cpp_INCS = $(IPRT_OUT_DIR)
2257
2258# Our COM errors only for R3 libraries on the host
2259define def_errmsgwin_deps
2260 $(lib)_win/errmsgwin.cpp_DEPS = $(IPRT_OUT_DIR)/errmsgvboxcomdata.h
2261 $(lib)_common/err/errmsgxpcom.cpp_INCS = $(IPRT_OUT_DIR)
2262 $(lib)_common/err/errmsgxpcom.cpp_DEPS = $(IPRT_OUT_DIR)/errmsgvboxcomdata.h
2263endef
2264$(foreach lib,RuntimeR3 RuntimeBldProg VBoxRT VBoxRT-x86,$(eval $(def_errmsgwin_deps)))
2265
2266
2267#
2268# Generate the status code data.
2269#
2270$(IPRT_OUT_DIR)/errmsgdata.h: \
2271 $(VBOX_PATH_RUNTIME_SRC)/common/err/errmsg.sed \
2272 $(PATH_ROOT)/include/iprt/err.h \
2273 $(PATH_ROOT)/include/VBox/err.h \
2274 | $$(dir $$@)
2275 $(call MSG_GENERATE,,$@,$(filter %.h,$^))
2276 $(QUIET)$(REDIRECT) -wo $@ -- $(SED) -f $< $(filter %.h,$^)
2277
2278## @todo r=bird: rename this to indicate that it's not only COM errors, but all win32/64 errors.
2279$(IPRT_OUT_DIR)/errmsgcomdata.h: \
2280 $(VBOX_PATH_RUNTIME_SRC)/common/err/errmsgcom.sed \
2281 $$(PATH_SDK_$(VBOX_WINPSDK)_INC)/WinError.h \
2282 | $$(dir $$@)
2283 $(call MSG_GENERATE,,$@,$(filter %.h,$^))
2284 $(QUIET)$(REDIRECT) -wo $@ -- $(SED) -f $< $(filter %.h,$^)
2285
2286$(IPRT_OUT_DIR)/errmsgvboxcomdata.h.ts +| $(IPRT_OUT_DIR)/errmsgvboxcomdata.h: \
2287 $(VBOX_PATH_RUNTIME_SRC)/VBox/errmsgvboxcom.xsl \
2288 $(VBOX_XIDL_FILE_SRC) \
2289 | $$(dir $$@)
2290 $(call MSG_GENERATE,,$@,$(filter %.xidl,$^))
2291 $(QUIET)$(VBOX_XSLTPROC) -o $(IPRT_OUT_DIR)/errmsgvboxcomdata.h.ts $< $(filter %.xidl,$^)
2292 $(QUIET)$(CP) --changed -fv $(IPRT_OUT_DIR)/errmsgvboxcomdata.h.ts $(IPRT_OUT_DIR)/errmsgvboxcomdata.h
2293
2294
2295if "$(KBUILD_TARGET)" == "freebsd"
2296#
2297# FreeBSDGeneratedKernelHeaders - Generate some kernel interface headers.
2298#
2299# These are used by:
2300# - The RTMp* API in IPRT.
2301# - VBoxGuest
2302#
2303# Note! We cannot give a output path to the awk program, it will always
2304# generate the header next to the source. So, we'll have to temporarily copy
2305# the source file to the destination directory to work.
2306#
2307VBOX_AWK := /usr/bin/awk
2308INSTALLS += FreeBSDGeneratedKernelHeaders
2309FreeBSDGeneratedKernelHeaders_INST = gen-sys-hdrs/
2310FreeBSDGeneratedKernelHeaders_SOURCES = \
2311 $(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/bus_if.h \
2312 $(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/device_if.h \
2313 $(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/pci_if.h
2314FreeBSDGeneratedKernelHeaders_CLEAN = $(FreeBSDGeneratedKernelHeaders_SOURCES)
2315
2316$$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/bus_if.h: $(VBOX_FREEBSD_SRC)/kern/bus_if.m | $$(dir $$@)
2317 $(call MSG_TOOL,awk,FreeBSDGeneratedKernelHeaders,$<,$@)
2318 $(QUIET)$(CP) -f $< $(@D)/bus_if.m
2319 $(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(@D)/bus_if.m -h -p
2320 $(QUIET)$(RM) $(@D)/bus_if.m
2321
2322$$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/device_if.h: $(VBOX_FREEBSD_SRC)/kern/device_if.m | $$(dir $$@)
2323 $(call MSG_TOOL,awk,FreeBSDGeneratedKernelHeaders,$<,$@)
2324 $(QUIET)$(CP) -f $< $(@D)/device_if.m
2325 $(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(@D)/device_if.m -h -p
2326 $(QUIET)$(RM) $(@D)/device_if.m
2327
2328$$(FreeBSDGeneratedKernelHeaders_0_OUTDIR)/pci_if.h: $(VBOX_FREEBSD_SRC)/dev/pci/pci_if.m | $$(dir $$@)
2329 $(call MSG_TOOL,awk,FreeBSDGeneratedKernelHeaders,$<,$@)
2330 $(QUIET)$(CP) -f $< $(@D)/pci_if.m
2331 $(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/makeobjops.awk $(@D)/pci_if.m -h -p
2332 $(QUIET)$(RM) $(@D)/pci_if.m
2333endif # FreeBSD
2334
2335
2336#
2337# Aliases for .cpp.h files so we can more easily do syntax checking from the editor.
2338#
2339ldrELFRelocatable.cpp.o: ldrELF.o
2340ldrELFRelocatable.cpp.obj: ldrELF.obj
2341
2342
2343#
2344# Doxygen documentation.
2345#
2346IPRT_DOXYFILE_INPUT_DIRS = \
2347 $(PATH_ROOT)/include/iprt \
2348 $(PATH_ROOT)/include/iprt/cpp \
2349 $(PATH_ROOT)/include/iprt/linux \
2350 $(PATH_ROOT)/include/iprt/nocrt \
2351 $(PATH_ROOT)/include/iprt/nocrt/x86 \
2352 $(PATH_ROOT)/include/iprt/nocrt/amd64 \
2353 $(PATH_ROOT)/include/iprt/nocrt/compiler \
2354 $(VBOX_PATH_RUNTIME_SRC)/include/internal \
2355 $(VBOX_PATH_RUNTIME_SRC)/common/alloc \
2356 $(VBOX_PATH_RUNTIME_SRC)/common/asm \
2357 $(VBOX_PATH_RUNTIME_SRC)/common/checksum \
2358 $(VBOX_PATH_RUNTIME_SRC)/common/dbg \
2359 $(VBOX_PATH_RUNTIME_SRC)/common/err \
2360 $(VBOX_PATH_RUNTIME_SRC)/common/ldr \
2361 $(VBOX_PATH_RUNTIME_SRC)/common/log \
2362 $(VBOX_PATH_RUNTIME_SRC)/common/math \
2363 $(VBOX_PATH_RUNTIME_SRC)/common/math/amd64 \
2364 $(VBOX_PATH_RUNTIME_SRC)/common/math/gcc \
2365 $(VBOX_PATH_RUNTIME_SRC)/common/math/x86 \
2366 $(VBOX_PATH_RUNTIME_SRC)/common/misc \
2367 $(VBOX_PATH_RUNTIME_SRC)/common/path \
2368 $(VBOX_PATH_RUNTIME_SRC)/common/rand \
2369 $(VBOX_PATH_RUNTIME_SRC)/common/string \
2370 $(VBOX_PATH_RUNTIME_SRC)/common/table \
2371 $(VBOX_PATH_RUNTIME_SRC)/common/time \
2372 $(VBOX_PATH_RUNTIME_SRC)/VBox \
2373 $(foreach dir, $(VBOX_PATH_RUNTIME_SRC) $(VBOX_PATH_RUNTIME_SRC)/r3 $(VBOX_PATH_RUNTIME_SRC)/r0drv,\
2374 $(dir) \
2375 $(dir)/darwin \
2376 $(dir)/haiku \
2377 $(dir)/linux \
2378 $(dir)/nt \
2379 $(dir)/os2 \
2380 $(dir)/solaris \
2381 $(dir)/win \
2382 $(dir)/win32 \
2383 $(dir)/win64 \
2384 $(dir)/generic \
2385 )
2386
2387# These must come first in order to make things look nice.
2388IPRT_DOXYFILE_INPUT_FIRST =\
2389 $(PATH_ROOT)/include/iprt/cdefs.h \
2390 $(PATH_ROOT)/include/iprt/types.h \
2391 $(PATH_ROOT)/include/iprt/runtime.h \
2392 $(PATH_ROOT)/include/iprt/param.h \
2393 $(PATH_ROOT)/include/iprt/assert.h \
2394 $(PATH_ROOT)/include/iprt/asm.h \
2395
2396IPRT_DOXYFILE_INPUT := \
2397 $(filter-out %.cpp.h, $(sort $(wildcard $(addsuffix /*.h, $(IPRT_DOXYFILE_INPUT_DIRS)))) ) \
2398 $(foreach dir, $(IPRT_DOXYFILE_INPUT_DIRS), $(wildcard $(dir)/*.cpp $(dir)/.c $(dir)/.asm))
2399IPRT_DOXYFILE_INPUT := \
2400 $(IPRT_DOXYFILE_INPUT_FIRST) \
2401 $(filter-out $(IPRT_DOXYFILE_INPUT_FIRST), $(IPRT_DOXYFILE_INPUT))
2402
2403
2404IPRT_DOXYFILE_OUTPUT = $(PATH_OUT)/docs/iprt
2405BLDDIRS += $(IPRT_DOXYFILE_OUTPUT)
2406
2407includedep $(IPRT_OUT_DIR)/Doxyfile.iprt.dep
2408
2409# Generate the Doxyfile
2410$(IPRT_OUT_DIR)/Doxyfile.iprt: \
2411 $(VBOX_PATH_RUNTIME_SRC)/Doxyfile \
2412 $(VBOX_PATH_RUNTIME_SRC)/Makefile.kmk \
2413 $(comp-vars IPRT_DOXYFILE_INPUT,DOXYGEN_INPUT_PREV,FORCE) \
2414 $(comp-vars IPRT_DOXYFILE_OUTPUT,DOXYGEN_OUTPUT_PREV,FORCE) \
2415 | $$(dir $$@)
2416 $(RM) -f $@ [email protected] [email protected]
2417 $(CP) -f $(VBOX_PATH_RUNTIME_SRC)/Doxyfile [email protected]
2418 $(APPEND) [email protected]
2419 $(APPEND) [email protected] "OUTPUT_DIRECTORY = $(IPRT_DOXYFILE_OUTPUT)"
2420 $(APPEND) [email protected] "WARN_LOGFILE = $(IPRT_DOXYFILE_OUTPUT)/errors"
2421 $(APPEND) [email protected] "INCLUDE_PATH = $(PATH_ROOT)/include include . common/table"
2422 $(APPEND) [email protected] "INCLUDE_FILE_PATTERNS = *.cpp.h"
2423 $(APPEND) [email protected] "PREDEFINED += $(ARCH_BITS_DEFS)"
2424 $(APPEND) [email protected]
2425 $(APPEND) [email protected] "INPUT = $(IPRT_DOXYFILE_INPUT)"
2426 $(APPEND) [email protected]
2427 $(MV) -f [email protected] $@
2428 @$(APPEND) [email protected] "DOXYGEN_OUTPUT_PREV = $(IPRT_DOXYFILE_OUTPUT)"
2429 @$(APPEND) [email protected] "DOXYGEN_INPUT_PREV = $(IPRT_DOXYFILE_INPUT)"
2430
2431# Do the actual job.
2432$(IPRT_OUT_DIR)/docs.iprt: $(IPRT_OUT_DIR)/Doxyfile.iprt $$(IPRT_DOXYFILE_INPUT) | $(IPRT_DOXYFILE_OUTPUT)/
2433 $(RM) -f $(wildcard $(IPRT_DOXYFILE_OUTPUT)/html/*) $(IPRT_OUT_DIR)/docs.iprt
2434 doxygen $(IPRT_OUT_DIR)/Doxyfile.iprt
2435 $(APPEND) $(IPRT_OUT_DIR)/docs.iprt
2436
2437# aliases
2438docs.iprt: $(IPRT_OUT_DIR)/docs.iprt
2439if !defined(VBOX_ONLY_DOCS) && defined(VBOX_WITH_ALL_DOXYGEN_TARGETS)
2440docs: $(IPRT_OUT_DIR)/docs.iprt
2441endif
2442
2443test-doxygen::
2444 @echo test-$(comp-vars IPRT_DOXYFILE_OUTPUT,DOXYGEN_OUTPUT_PREV,FORCE)
2445 @echo $(IPRT_DOXYFILE_OUTPUT)
2446 @echo $(DOXYGEN_OUTPUT_PREV)
2447 @echo $(IPRT_DOXYFILE_INPUT)
2448
2449
2450#
2451# Test mangling.
2452#
2453if1of ($(LIBRARIES),RuntimeR3 RuntimeR0 RuntimeR0Drv RuntimeRC)
2454 test-mangling:: $(IPRT_OUT_DIR)/mangling.run
2455 OTHERS += $(IPRT_OUT_DIR)/mangling.run
2456 CLEANS += $(IPRT_OUT_DIR)/mangling.run
2457 $(IPRT_OUT_DIR)/mangling.run: \
2458 $$(RuntimeR3_1_TARGET) \
2459 $$(RuntimeR0_1_TARGET) \
2460 $$(RuntimeR0Drv_1_TARGET) \
2461 $$(RuntimeRC_1_TARGET)
2462 if1of ($(KBUILD_TARGET), win os2)
2463 $(call MSG_L1,IPRT: skipped mangling test.)
2464 else
2465# Generate a SED script from mangling.h that checks for known symbols.
2466 @$(SED) \
2467 -e '/# *define.*RT_MANGLER/!d' \
2468 -e 's/^.*RT_MANGLER(\([^)][^)]*\)).*$(DOLLAR)/\/^\1$(DOLLAR)\/b ok/' \
2469 $(PATH_ROOT)/include/iprt/mangling.h \
2470 --output "$@"
2471 @$(APPEND) -n '$@' \
2472 ':bad' \
2473 's/^\(.*\)$(DOLLAR)/error: Missing # define \1 RT_MANGLER(\1)/' \
2474 'p' \
2475 'q 1' \
2476 '' \
2477 ':ok' \
2478 'd'
2479# Find the best way to generate a symbol list and subject it to mangling.h.
2480 if $(intersects $(KBUILD_TARGET), linux) && "$(VBOX_GCC_fvisibility-hidden)"
2481 $(call MSG_L1,IPRT: Testing mangling and visiblity...)
2482 @readelf -Ws $^ \
2483 | $(SED) \
2484 -e '/^ *[[:digit:]]\+:/!d' \
2485 -e 's/^ \+[[:digit:]]\+: \+[[:xdigit:]]\+ \+[[:digit:]]\+ \+//' \
2486 -e '/^SECTION/d' \
2487 -e '/^FILE/d' \
2488 -e 's/^[[:alpha:]]\+ \+//' \
2489 -e '/LOCAL/d' \
2490 -e 's/^[[:alpha:]]\+ \+//' \
2491 -e '/^HIDDEN/d' \
2492 -e 's/^[[:alpha:]]\+ \+//' \
2493 -e '/^UND/d' \
2494 -e 's/^[[:digit:]]\+ \+//' \
2495 \
2496 -e '/^nocrt_/d' \
2497 -e '/^memchr/d' \
2498 -e '/^memcmp/d' \
2499 -e '/^memcpy/d' \
2500 -e '/^mempcpy/d' \
2501 -e '/^memmove/d' \
2502 -e '/^memset/d' \
2503 -e '/^strchr/d' \
2504 -e '/^strpbrk/d' \
2505 -e '/^_Z7strpbrk/d' \
2506 -e '/^strcmp/d' \
2507 -e '/^strcpy/d' \
2508 -e '/^strncpy/d' \
2509 -e '/^strlen/d' \
2510 -e '/^_Z[[:alpha:]]*[[:digit:]]\+RTC/d' \
2511 -e '/^_Z[[:alpha:]]*[[:digit:]]\+RTC/d' \
2512 \
2513 -e '/^_ZnwjPv/d' \
2514 -e '/^_ZnwmPv/d' \
2515 -e '/^_ZNSt9bad_allocC1Ev/d' \
2516 -e '/^_ZNSt9exceptionC2Ev/d' \
2517 -e '/^_ZNSt9exceptionC[12]ERKS_/d' \
2518 \
2519 -e '/^_ZN[a-zA-Z]*St[[:digit:]]*_*[lL]ist/d' \
2520 -e '/^_ZN[a-zA-Z]*[[:digit:]]*__gnu_cxx/d' \
2521 -e '/^_ZNSa.*ElementNode.*/d' \
2522 -e '/^_ZSt.*ElementNode.*/d' \
2523 \
2524 -e '/^_Z[[:digit:]]\+dbus/d' \
2525 -e '/^_Z13RTDBusLoadLibv/d' \
2526 \
2527 -e '/^VBoxHost_/d'\
2528 -e '/^VBoxGuest_/d'\
2529 | $(SED) -nf "$@"
2530 else
2531 $(call MSG_L1,IPRT: Testing mangling...)
2532 nm $^ | $(SED) -n \
2533 -e 's/^[0-9a-f][0-9a-f]* //' \
2534 -e '/^[TUDB] /!d' \
2535 -e 's/^. //' \
2536 \
2537 -e '/^g_cchrt/d'\
2538 -e '/^g_frt/d'\
2539 -e '/^g_offrt/d'\
2540 -e '/^g_pfnrt/d'\
2541 -e '/^g_rt/d'\
2542 -e '/^g_szrt/d'\
2543 -e '/^g_ProcessSelf/d'\
2544 -e '/^g_u64ProgramStart/d'\
2545 -e '/^g_enmProcessPriority/d'\
2546 -e '/^g_hDbgModStrCache/d'\
2547 \
2548 -e '/^RTDBusLoadLib/d' \
2549 \
2550 -e '/^RT/p' \
2551 -e '/^g_/p' \
2552 | $(SED) -nf "$@"
2553 endif
2554 endif
2555endif
2556 $(QUIET)$(APPEND) -t $@
2557
2558if !defined(VBOX_ONLY_ADDITIONS) && !defined(VBOX_ONLY_TESTSUITE) && !defined(VBOX_ONLY_DOCS)
2559#
2560# Windows build tool.
2561#
2562BLDPROGS.win += ntBldSymDb
2563ntBldSymDb_TEMPLATE = VBoxAdvBldProg
2564ntBldSymDb_INCS = .
2565ntBldSymDb_SOURCES = r0drv/nt/ntBldSymDb.cpp
2566endif
2567
2568#
2569# Generate the rules (we're the to sub-makefile).
2570#
2571include $(FILE_KBUILD_SUB_FOOTER)
2572
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