3 # The global build configuration file for VBox.
5 # This file gets included by all makefiles through the
6 # include $(KBUILD_PATH)/header.kmk statement.
10 # Copyright (C) 2006-2012 Oracle Corporation
12 # This file is part of VirtualBox Open Source Edition (OSE), as
13 # available from http://www.virtualbox.org. This file is free software;
14 # you can redistribute it and/or modify it under the terms of the GNU
15 # General Public License (GPL) as published by the Free Software
16 # Foundation, in version 2 as it comes in the "COPYING" file of the
17 # VirtualBox OSE distribution. VirtualBox OSE is distributed in the
18 # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
22 VBOX_ROOT_CONFIG_KMK_INCLUDED
= 1
28 # Build with umask 022 (requires kBuild r2556 to work, harmless on earlier).
31 # Modify the build types.
32 KBUILD_BLD_TYPES
= release profile debug kprofile
35 # Same as release builds, except that RT_STRICT and VBOX_STRICT are defined,
36 # meaning all assertions are in action. (Appending means '.strict' props take
37 # precedence in argument lists.)
38 KBUILD_BLD_TYPES
+= strict
39 BLD_TYPE_strict_EXTENDS
= release
40 BLD_TYPE_strict_EXTENDS_BY
= appending
43 # Same as debug builds, except that compiler optimizations are enabled. This
44 # intended for cases where all the debug facitities (logging, assertions, ++)
45 # is wanted but actual source level debugging as important as execution speed.
46 KBUILD_BLD_TYPES
+= dbgopt
47 BLD_TYPE_dbgopt_EXTENDS
= debug
48 BLD_TYPE_dbgopt_EXTENDS_BY
= overriding
50 # Temporary hack for kBuild ticket #83.
51 ## @todo kBuild: remove after closing ticket #83.
52 PROPS_ACCUMULATE_L_LNK
+= INTERMEDIATES
53 PROPS_PROGRAMS_ACCUMULATE_L
+= INTERMEDIATES
54 PROPS_LIBRARIES_ACCUMULATE_L
+= INTERMEDIATES
55 PROPS_DLLS_ACCUMULATE_L
+= INTERMEDIATES
56 PROPS_SYSMODS_ACCUMULATE_L
+= INTERMEDIATES
57 PROPS_MISCBINS_ACCUMULATE_L
+= INTERMEDIATES
59 # Misc names used bye the install paths below.
60 VBOX_PUEL_MANGLED_NAME
:= Oracle_VM_VirtualBox_Extension_Pack
63 ## @todo This will change after 4.1 is branched off!
64 # What is now 'bin' and 'lib' will be moved down under 'staged/', except on
65 # darwin where it's currently called 'dist' which will be renamed to 'staged'.
66 # When running 'kmk install' files will be copied to 'dist/', on unix systems
67 # this will be done in FHS fashion assuming /usr/local or /usr as 'prefix'.
69 # Changes related to this are marked VBOX_WITH_NEW_LAYOUT.
70 ifndef VBOX_WITH_NEW_LAYOUT
71 PATH_INS
= $(PATH_OUT
)/dist
72 PATH_STAGE
= $(PATH_OUT
)
73 INST_DEBUG
:= stage
/debug
/
76 ifeq ($(KBUILD_TARGET
),darwin
)
77 ifndef VBOX_WITH_NEW_LAYOUT
82 INST_SDK
= $(INST_DIST
)sdk
/
85 INST_VIRTUALBOX
= $(INST_DIST
)VirtualBox.app
/
86 INST_VBOXDRV
= $(INST_DIST
)VBoxDrv.kext
/
87 INST_VBOXNETFLT
= $(INST_DIST
)VBoxNetFlt.kext
/
88 INST_VBOXNETADP
= $(INST_DIST
)VBoxNetAdp.kext
/
89 INST_VBOXUSB
= $(INST_DIST
)VBoxUSB.kext
/
91 # put everything in the VirtualBox app bundle.
92 INST_BIN
= $(INST_VIRTUALBOX
)Contents
/MacOS
/
93 INST_DLL
= $(INST_BIN
)
94 INST_SYS
= $(INST_BIN
)
95 INST_TESTCASE
= $(INST_BIN
)testcase
/
96 INST_ADDITIONS
= $(INST_BIN
)additions
/
97 INST_ADDITIONS_ISO
= $(INST_BIN
)
100 INST_TESTSUITE
= testsuite
/
102 INST_ADDITIONS_LIB
= $(INST_LIB
)additions
/
103 VBOX_INST_DTRACE_LIB
= $(INST_BIN
)dtrace
/lib
/
104 VBOX_INST_DTRACE_TST
= $(INST_BIN
)dtrace
/testcase
/
109 INST_DIST
= $(INST_BIN
)
110 INST_SDK
= $(INST_BIN
)sdk
/
112 INST_VIRTUALBOX
= $(INST_BIN
)
113 INST_VBOXDRV
= $(INST_BIN
)
114 INST_VBOXNETFLT
= $(INST_BIN
)
115 INST_VBOXNETADP
= $(INST_BIN
)
116 INST_VBOXUSB
= $(INST_BIN
)
118 INST_DLL
= $(INST_BIN
)
119 INST_SYS
= $(INST_BIN
)
120 INST_TESTCASE
= $(INST_BIN
)testcase
/
121 INST_ADDITIONS
= $(INST_BIN
)additions
/
122 INST_ADDITIONS_ISO
= $(INST_ADDITIONS
)
124 INST_TESTSUITE
= testsuite
/
126 INST_ADDITIONS_LIB
= $(INST_LIB
)additions
/
127 VBOX_INST_DTRACE_LIB
= $(INST_BIN
)dtrace
/lib
/
128 VBOX_INST_DTRACE_TST
= $(INST_BIN
)dtrace
/testcase
/
132 INST_EXTPACK
= $(INST_BIN
)ExtensionPacks
/
133 INST_EXTPACK_CERTS
= $(INST_BIN
)ExtPackCertificates
/
134 INST_EXTPACK_PUEL
= $(INST_EXTPACK
)$(VBOX_PUEL_MANGLED_NAME
)/
135 INST_PACKAGES
= packages
/
137 VBOX_PATH_SDK
= $(patsubst %/,%,$(PATH_STAGE
)/$(INST_SDK
))
138 VBOX_PATH_DIST
= $(patsubst %/,%,$(PATH_STAGE
)/$(INST_DIST
))
139 VBOX_PATH_TESTSUITE
= $(patsubst %/,%,$(PATH_STAGE
)/$(INST_TESTSUITE
))
140 VBOX_PATH_ADDITIONS
= $(patsubst %/,%,$(PATH_STAGE
)/$(INST_ADDITIONS
))
141 VBOX_PATH_ADDITIONS_ISO
= $(patsubst %/,%,$(PATH_STAGE
)/$(INST_ADDITIONS_ISO
))
142 VBOX_PATH_ADDITIONS_LIB
= $(patsubst %/,%,$(PATH_STAGE
)/$(INST_ADDITIONS_LIB
))
143 VBOX_PATH_EXTPACK_PUEL
= $(patsubst %/,%,$(PATH_STAGE
)/$(INST_EXTPACK_PUEL
))
144 VBOX_PATH_PACKAGES
= $(patsubst %/,%,$(PATH_STAGE
)/$(INST_PACKAGES
))
147 # Delete targets on failure.
150 # Notify about important kBuild updates.
151 if
$(KBUILD_VERSION_MAJOR
) == 0 \
152 && ( $(KBUILD_VERSION_MINOR
) >= 2 \
153 ||
( $(KBUILD_VERSION_MINOR
) == 1 \
154 && $(KBUILD_VERSION_PATCH
) >= 999))
155 if
$(KMK_REVISION
) >= 2577
158 $(error You must update kBuild
! Requires kBuild revision
2577 or later
, found
$(KMK_REVISION
) ($(KBUILD_VERSION
)))
161 $(error You must update kBuild
! Requires
0.1.999 or later
, found
$(KBUILD_VERSION
))
165 # Define USERNAME early on.
171 $(warning Warning
: You must have USERNAME or USER in your environment.
)
176 # Detect the darwin host version number so we can disable stuff that doesn't
177 # currently build on Lion.
179 ifeq ($(KBUILD_HOST
),darwin
)
180 VBOX_DARWIN_HOST_VERSION
:= $(subst .
, ,$(shell uname
-r
))
181 VBOX_DARWIN_HOST_VERSION_MAJOR
:= $(expr
$(word 1, $(VBOX_DARWIN_HOST_VERSION
)) - 4)
182 VBOX_DARWIN_HOST_VERSION_MINOR
:= $(word 2, $(VBOX_DARWIN_HOST_VERSION
))
183 VBOX_DARWIN_HOST_VERSION_PATCH
:= $(word 3, $(VBOX_DARWIN_HOST_VERSION
))
184 VBOX_DARWIN_HOST_VERSION
:= 10.
$(VBOX_DARWIN_HOST_VERSION_MAJOR
).
$(VBOX_DARWIN_HOST_VERSION_MINOR
)
189 # The VirtualBox version.
193 VBOX_VERSION_MAJOR
= 4
195 VBOX_VERSION_MINOR
= 2
196 # This is the current build number. It should be increased every time we publish a
197 # new build. The define is available in every source file. Only even build numbers
198 # will be published, odd numbers are set during development.
199 VBOX_VERSION_BUILD
= 51
200 # The raw version string. This *must not* contain any other information/fields than
201 # major, minor and build revision (as it is now) -- also will be used for host/guest version
203 VBOX_VERSION_STRING_RAW
= $(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
)
204 # This can be overridden in LocalConfig.kmk or elsewhere.
205 # For the convension, see checks near the end of Config.kmk.
206 VBOX_BUILD_PUBLISHER
=
207 # Full version string (may include more than just x.y.z, but no spaces or other problematic chars).
208 # Note! The BETA[n],ALPHA[n],RC[n] indicators should be inserted before the
209 # publisher so that RTStrVersionCompare have a chance of comparing
210 # prerelease from different publishers correctly.
211 VBOX_VERSION_STRING
= $(VBOX_VERSION_STRING_RAW
)$(VBOX_BUILD_PUBLISHER
)
213 # Force the additions.sh script to get an exact additions build when we're doing the release.
214 ifeq ($(int-mod
$(VBOX_VERSION_BUILD
),2),0)
215 export VBOX_ADDITIONS_SH_MODE
= release
216 export VBOX_DOCUMENTATION_SH_MODE
= release
217 export VBOX_EFI_SH_MODE
= release
218 export VBOX_EXTPACKS_SH_MODE
= release
221 # Some info on the vendor
222 VBOX_VENDOR
= Oracle Corporation
223 VBOX_VENDOR_SHORT
= Oracle
224 VBOX_PRODUCT
= Oracle VM VirtualBox
225 # Not all could be done automatically. Here is a list of known places which
226 # have to be updated manually, please keep this up to date:
227 # src/VBox/Devices/PC/PXE/client/uinit.asm
228 # src/VBox/RDP/webclient/flash/com/sun/network/rdp/Version.as
229 # src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
230 # src/VBox/Frontends/VirtualBox/src/settings/global/VBoxGLSettingsLanguage.cpp
231 # src/VBox/Frontends/VirtualBox/nls/*.ts
233 # src/VBox/Installer/linux/{debian,rpm}
234 # src/VBox/Installer/linux/virtualbox.desktop
235 # src/VBox/Additions/WINNT/Installer/ISO/ReadmeDrivers.txt
238 # Maybe we want set this manually.
239 VBOX_C_YEAR
= $(date-utc
%Y
)
242 # The VirtualBox package type.
244 ifeq ($(KBUILD_TARGET
),win
)
245 VBOX_PACKAGE_OS
= WINDOWS
246 else ifeq ($(KBUILD_TARGET
),linux
)
247 VBOX_PACKAGE_OS
= LINUX
248 else ifeq ($(KBUILD_TARGET
),darwin
)
249 VBOX_PACKAGE_OS
= DARWIN
250 else ifeq ($(KBUILD_TARGET
),solaris
)
251 VBOX_PACKAGE_OS
= SOLARIS
252 else ifeq ($(KBUILD_TARGET
),os2
)
253 VBOX_PACKAGE_OS
= OS2
254 else ifeq ($(KBUILD_TARGET
),haiku
)
255 VBOX_PACKAGE_OS
= HAIKU
256 else if1of
($(KBUILD_TARGET
), dragonfly freebsd netbsd openbsd
)
257 VBOX_PACKAGE_OS
= BSD
259 $(error Cannot determine VBOX_PACKAGE_OS
)
261 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
262 VBOX_PACKAGE_ARCH
= 32BITS
264 VBOX_PACKAGE_ARCH
= 64BITS
266 # distribution, mostly for Linux/Solaris where we support different distributions
267 # this strip will be overridden by the Linux packaging scripts
268 VBOX_PACKAGE_DIST ?
= GENERIC
270 VBOX_PACKAGE_STRING
= $(VBOX_PACKAGE_OS
)_
$(VBOX_PACKAGE_ARCH
)_
$(VBOX_PACKAGE_DIST
)
274 # The VirtualBox Configuration Defaults.
276 # We try to document all the build configuration options here, thing which
277 # aren't enabled by default is left commented out just to show that they
278 # exist and which value they should have (usually 1, but anyway).
283 # This indicates that additions (of some kind or another) is being _built_.
284 # VBOX_WITHOUT_ADDITIONS overrides it.
285 #if1of ($(KBUILD_TARGET), freebsd linux os2 solaris win)
286 if1of
($(KBUILD_TARGET
), freebsd linux solaris win
)
287 VBOX_WITH_ADDITIONS
= 1
289 # Build the optional ring-0 part of the additions for syntax checking.
290 # (Except when cross-building on linux since we're using /usr/src/...)
291 ifn1of
($(KBUILD_TARGET
).
$(KBUILD_HOST_ARCH
).
$(KBUILD_TARGET_ARCH
), linux.x86.amd64 linux.amd64.x86
)
292 VBOX_WITH_ADDITION_DRIVERS
= 1
294 # Build X11 additions. Can be disabled separately.
295 if1of
($(KBUILD_TARGET
), dragonfly freebsd linux netbsd openbsd solaris
)
296 VBOX_WITH_X11_ADDITIONS
= 1
298 # Enable the building of shared folders in the windows additions.
299 VBOX_WITH_WIN32_ADDITIONS_SHAREDFOLDERS
= 1
300 # Take the binaries of the OS/2 Additions.
301 VBOX_WITH_OS2_ADDITIONS_BIN
= 1
302 # Use additions from the build server.
303 #VBOX_WITH_ADDITIONS_FROM_BUILD_SERVER = 1
304 # Include additions in the package
305 VBOX_WITH_ADDITIONS_PACKING
= 1
306 # Only build the additions (for the additions build server).
307 #VBOX_ONLY_ADDITIONS = 1
308 ifdef VBOX_ADDITIONS_ONLY
# typical mistake.
309 $(error It is VBOX_ONLY_ADDITIONS
=1 not VBOX_ADDITIONS_ONLY
!)
311 # Don't bother with additions, overrides VBOX_WITH_ADDITIONS.
312 # This is not used by makefiles, only Config.kmk, see below.
314 VBOX_WITHOUT_ADDITIONS
= 1
316 # Don't create the additions ISO.
317 # (Used by the additions build server, don't invert it.)
318 #VBOX_WITHOUT_ADDITIONS_ISO = 1
321 ## @name Documentation
325 # Use documentation from the build server.
326 #VBOX_WITH_DOCS_FROM_BUILD_SERVER = 1
327 # Include documentation in the package
328 VBOX_WITH_DOCS_PACKING
= 1
329 # Include CHM when building docs (unset in LocalConfig.kmk to suppress CHM)
330 ifn1of
($(KBUILD_TARGET
), linux
)
331 VBOX_WITH_DOCS_CHM
= 1
333 # Don't bother with documentation, overrides VBOX_WITH_DOCS.
334 # This is not used by makefiles, only Config.kmk, see below.
335 #VBOX_WITHOUT_DOCS = 1
336 # Only build the documentation (for the documentation build server).
338 ifdef VBOX_DOCS_ONLY
# typical mistake.
339 $(error It is VBOX_ONLY_DOCS
=1 not VBOX_DOCS_ONLY
!)
343 ## @name VMM related settings.
345 # Enable the tradition raw-mode virtualization.
346 VBOX_WITH_RAW_MODE
= 1
347 # Enable support for 64-bit guests.
348 VBOX_WITH_64_BITS_GUESTS
= 1
349 # Enable multi-core VCPUs.
350 VBOX_WITH_MULTI_CORE
= 1
351 # Activate this to force the VM to pre-allocate the guest RAM before startup
352 VBOX_WITH_PREALLOC_RAM_BY_DEFAULT
=
353 # Enable the debugger.
354 VBOX_WITH_DEBUGGER
= 1
355 # Enable the debugger GUI.
356 VBOX_WITH_DEBUGGER_GUI
= 1
357 # Enable the PDM Lock and let I/O threads call into the PICs.
358 # TODO: Eliminate VBOX_WITH_PDM_LOCK.
359 VBOX_WITH_PDM_LOCK
= 1
363 ## @name Devices, Drivers, ...
365 # Build the Host Guest Communication Manager component.
367 ## Build the bugcheck detection code.
368 #VBOX_WITH_GUEST_BUGCHECK_DETECTION =
369 # Enable the USB feature. This includes VBOX_WITH_VUSB!
371 # Enable the USB 1.1 controller plus virtual USB HID devices.
373 # Enable the USB 2.0 controller.
375 # Enable the ISCSI feature.
377 # Enable INIP support in the ISCSI feature.
379 # Enable the E1000 feature.
381 # Enable the Virtio feature.
383 # Enable ALSA support for Linux.
385 # Enable Pulse support for Linux.
387 # Enable PCI passthrough support.
388 VBOX_WITH_PCI_PASSTHROUGH
= 1
389 # Enable statically linked dbus support.
390 if1of
($(KBUILD_TARGET
), linux solaris
)
393 # Enable building PAM modules.
394 if1of
($(KBUILD_TARGET
), linux solaris
)
397 # Disable WINMM support for Windows (not implemented).
399 # Enabled internal networking.
400 VBOX_WITH_INTERNAL_NETWORKING
= 1
401 # Enable Host Guest Shared Memory Interface.
403 # Enable Video 2D Acceleration.
404 if1of
($(KBUILD_TARGET
), darwin linux win freebsd
)
405 VBOX_WITH_VIDEOHWACCEL
= 1
407 # Enable Wddm Video driver for Vista+ guests.
409 # Enable Wddm Video driver for Windows 8 guests.
410 VBOX_WITH_WDDM_W8
= 1
412 VBOXWDDM_WITH_VBVA
= 1
416 else ifdef VBOX_WITH_VDMA
419 # Disable the Intel PXE ROM (uses Etherboot).
420 VBOX_WITH_INTEL_PXE
=
423 # Enable EFI/Ovmf support
425 # Fetch EFI firmware image from the build server
426 #VBOX_WITH_EFIFW_FROM_BUILD_SERVER = 1
427 # Include the EFI firmware into the package
428 VBOX_WITH_EFIFW_PACKING
= 1
429 # Use kStuff for MACH-O and LX binary loading.
430 if1of
($(KBUILD_TARGET_ARCH
), x86 amd64
)
433 # Enable setuid wrapper for Solaris host DVD.
434 #VBOX_WITH_SUID_WRAPPER = 1
435 # Enable the virtual SATA/AHCI controller
437 # Enable the new async completion manager
438 VBOX_WITH_PDM_ASYNC_COMPLETION
= 1
439 # Temporary switch for enabling / disabling the new USB code on Darwin.
440 VBOX_WITH_NEW_USB_CODE_ON_DARWIN
= 1
445 VBOX_WITH_EHCI_IMPL
= 1
447 ifdef VBOX_WITH_PCI_PASSTHROUGH
448 VBOX_WITH_PCI_PASSTHROUGH_IMPL
= 1
450 # Enable the hal/sysfs USB code on Linux.
451 ifeq ($(KBUILD_TARGET
),linux
)
452 VBOX_USB_WITH_SYSFS
= 1
454 # VBOX_USB_WITH_DBUS = 1
455 VBOX_USB_WITH_INOTIFY
= 1
457 # Enable performance API.
458 VBOX_WITH_RESOURCE_USAGE_API
= 1
459 # Enable BusLogic SCSI host adapter
460 VBOX_WITH_BUSLOGIC
= 1
461 # Enable LsiLogic SCSI host adapter
462 VBOX_WITH_LSILOGIC
= 1
463 # Enable SCSI drivers
465 # Enable this setting to force a fallback to default DMI data on configuration errors
466 VBOX_BIOS_DMI_FALLBACK
=
467 # Enable the builtin PXE ROM
468 VBOX_WITH_PXE_ROM
= 1
469 # Enable MSI support in devices
470 VBOX_WITH_MSI_DEVICES
= 1
471 # Enable host network interface API.
472 if1of
($(KBUILD_TARGET
), darwin freebsd linux solaris win
)
473 VBOX_WITH_HOSTNETIF_API
= 1
475 # Emulated USB smart card reader
476 VBOX_WITH_USB_CARDREADER
= 1
480 ## @name Other Component
482 # Build the installer.
483 VBOX_WITH_INSTALLER
= 1
484 # The kernel driver/module and related runtime libraries.
485 VBOX_WITH_VBOXDRV
= 1
490 # Set this to prefix all C symbols in XPCOM, to avoid dynamic linking problems
491 # caused by our XPCOM library polluting the symbol namespace for system libs.
492 if1of
($(KBUILD_TARGET
), linux solaris
)
493 VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
= 1
495 # Set this to not use COM or XPCOM in places where it can be avoided.
496 #VBOX_WITHOUT_COM = 1
497 # The webservices api.
498 VBOX_WITH_WEBSERVICES
= 1
499 VBOX_WITH_WEBSERVICES_SSL
= 1
502 # Indicates the Qt is Cocoa based on the Mac.
503 ifeq ($(KBUILD_TARGET
),darwin
)
504 VBOX_WITH_COCOA_QT
= 1
507 VBOX_WITH_VBOXSDL
= 1
508 # Build VBoxSDL with secure label support.
509 ifeq ($(filter win.amd64
,$(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
)),) # too much work with freetype and all that.
510 VBOX_WITH_SECURELABEL
= 1
512 # The headless frontend.
513 VBOX_WITH_HEADLESS
= 1
514 # Enable the build of VRDP server.
516 # Enable support for video redirection VRDP channel.
517 VBOX_WITH_VRDP_VIDEO_CHANNEL
= 1
518 # Enable memory consumption limit in VRDP server.
519 VBOX_WITH_VRDP_SB_LIMIT
= 1
520 # Build the VRDP authentication modules.
521 VBOX_WITH_VRDP_AUTHMOD
= 1
522 # Build enhanced version of rdesktop.
523 VBOX_WITH_VRDP_RDESKTOP
= 1
524 # The basic frontend (w/o Main).
525 VBOX_WITH_VBOXBFE
= 1
526 ## The Direct Framebuffer GUI.
527 #VBOX_WITH_VBOXFB = 1
528 # Enables the Python<->XPCOM and Python<->COM bindings.
529 VBOX_WITH_PYTHON ?
= 1
530 if1of
($(KBUILD_TARGET
), darwin linux solaris
)
531 # Enable Java<->XPCOM bridge + glue code
532 VBOX_WITH_JXPCOM ?
= 1
534 if1of
($(KBUILD_TARGET
), )
535 # Enable Java<->MSCOM glue, bridge is provided by an external lib (Jacob)
536 VBOX_WITH_JMSCOM ?
= 1
538 if1of
($(KBUILD_TARGET
), darwin linux solaris
)
539 # Enable Java<->JAX-WS bridge
542 # Use XPIDL instead of XSLT stylesheet
543 VBOX_WITH_JAVA_SUPPORT_IN_XPIDL ?
=
544 # Build against multiple Python versions present in the system
545 VBOX_WITH_MULTIVERSION_PYTHON ?
= 1
546 # Enable the kchmviewer.
547 VBOX_WITH_KCHMVIEWER
= 1
548 # Build the testsuite.
549 VBOX_WITH_TESTSUITE
= 1
550 # Build the testcases.
551 VBOX_WITH_TESTCASES
= 1
552 # Enables the ffmpeg module for recording test runs.
553 # TODO: Enable this for normal build server builds?
554 #if1of ($(KBUILD_TARGET), linux)
555 # VBOX_WITH_FFMPEG = 1
557 # Enable shared folders
558 VBOX_WITH_SHARED_FOLDERS
= 1
559 # Enable shared clipboard
560 VBOX_WITH_SHARED_CLIPBOARD
= 1
561 # Enable the host/guest information service (aka guest properties).
562 VBOX_WITH_GUEST_PROPS
= 1
563 # Enable this to prevent the guest from writing guest properties.
564 VBOX_WITH_GUEST_PROPS_RDONLY_GUEST
=
565 # Enable the guest control service.
566 if1of
($(KBUILD_TARGET
), darwin freebsd linux solaris win
)
567 VBOX_WITH_GUEST_CONTROL
= 1
570 VBOX_WITH_MEMBALLOON
= 1
571 # Enable crOpenGL service
572 if1of
($(KBUILD_TARGET
), darwin freebsd linux solaris win
)
575 # Enable the VNC server extension pack (GPL only).
576 #VBOX_WITH_EXTPACK_VNC = 1
577 # Enable S3 support (requires libcurl)
579 # Enable Host=>Guest Drag'n'Drop
580 if1of
($(KBUILD_TARGET
), darwin linux solaris win
)
581 VBOX_WITH_DRAG_AND_DROP
= 1
582 # Guest=>Host drag'n'drop doesn't work
583 #VBOX_WITH_DRAG_AND_DROP_GH = 1
590 # Use VBoxNetFlt for host interface networking.
591 if1of
($(KBUILD_TARGET
), darwin freebsd linux solaris win
)
593 ifeq ($(KBUILD_TARGET
),solaris
)
595 VBOX_WITH_NETFLT_CROSSBOW
= 1
597 # Use VBoxNetAdp for host only networking.
598 if1of
($(KBUILD_TARGET
), darwin freebsd linux solaris
) ## @todo this should be set and used on windows too.
602 # Enables the UDP tunnel transport.
603 VBOX_WITH_UDPTUNNEL
= 1
604 # Enable the netshaper support
605 VBOX_WITH_NETSHAPER
= 1
606 # Enable Virtual Distributed Ethernet or not.
607 if1of
($(KBUILD_TARGET
), freebsd linux
)
613 ## @name Extension pack
615 # Enables the extension pack feature.
616 VBOX_WITH_EXTPACK
= 1
617 # Enables separating code into the Oracle VM VirtualBox Extension Pack, dubbed PUEL.
618 VBOX_WITH_EXTPACK_PUEL
= 1
619 # Enables building+packing the Oracle VM VirtualBox Extension Pack, includes VBOX_WITH_EXTPACK_PUEL
620 VBOX_WITH_EXTPACK_PUEL_BUILD
= 1
625 # Enable Seamless mode
626 VBOX_X11_SEAMLESS_GUEST
= 1
627 # Enables all the doxgen bits.
628 VBOX_WITH_ALL_DOXYGEN_TARGETS
= 1
629 # Set this to skip installing the redistributable compiler runtime.
630 #VBOX_WITHOUT_COMPILER_REDIST = 1
631 # Enables VMMR0.r0 (++) loading using the native loader on solaris.
632 # Good for debugging and analysis. Experimental.
633 #VBOX_WITH_NATIVE_SOLARIS_LOADING = 1
634 # Set this to enable user mode dtrace probes.
635 if1of
($(KBUILD_TARGET
), darwin linux solaris
)
636 VBOX_WITH_DTRACE_R3
= 1
638 # Set this to enable kernel driver dtrace probes.
639 if1of
($(KBUILD_TARGET
), darwin solaris
)
640 VBOX_WITH_DTRACE_R0DRV
= 1
642 # Set this to enable dtrace probes in platform agnostic kernel code.
643 ifn1of
($(KBUILD_TARGET
), os2
)
644 VBOX_WITH_DTRACE_R0
= 1
646 # Set this to enable dtrace probes raw-mode context code.
647 if1of
($(KBUILD_TARGET
), linux solaris
)
648 VBOX_WITH_DTRACE_RC
= 1
650 # Set this to enable support for dtrace probes in guest code.
651 #VBOX_WITH_DTRACE_GST = 1
652 # Set this to indicate that the host ships with DTrace.
653 if1of
($(KBUILD_TARGET
), darwin solaris freebsd
)
654 VBOX_WITH_NATIVE_DTRACE
= 1
659 ## @name Compiler and linker config
661 # For treating compiler and linker warnings as errors where possible.
662 if1of
($(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
), darwin.x86 darwin.amd64 linux.x86 linux.amd64 win.x86 win.amd64
)
663 VBOX_WITH_WARNINGS_AS_ERRORS
= 1
665 # Whether we can use Open Watcom to build stuff.
666 if1of
($(KBUILD_TARGET
), darwin linux os2 win
)
667 VBOX_WITH_OPEN_WATCOM
= 1
675 # Most developers will want to disable this in their LocalConfig.kmk.
676 ifn1of
($(KBUILD_TARGET
), win
)
677 VBOX_WITH_HARDENING
= 1
679 # Where the application files are (going to be) installed.
680 #VBOX_PATH_APP_PRIVATE = /usr/lib/virtualbox
681 ifdef VBOX_WITH_HARDENING
682 if1of
($(KBUILD_TARGET
), linux solaris
)
683 VBOX_PATH_APP_PRIVATE
= /opt
/VirtualBox
684 else ifeq ($(KBUILD_TARGET
),darwin
)
685 VBOX_PATH_APP_PRIVATE
= /Applications
/VirtualBox.app
/Contents
/MacOS
686 else ifeq ($(KBUILD_TARGET
),freebsd
)
687 VBOX_PATH_APP_PRIVATE
= /usr
/local
/lib
/virtualbox
688 else ifeq ($(KBUILD_TARGET
),haiku
)
689 VBOX_PATH_APP_PRIVATE
= /boot
/apps
/VirtualBox
692 # Where the architecture specific application files are (going to be) installed.
693 #VBOX_PATH_APP_PRIVATE_ARCH = /usr/lib/virtualbox
694 ifdef VBOX_WITH_HARDENING
695 if1of
($(KBUILD_TARGET
), solaris
)
696 VBOX_PATH_APP_PRIVATE_ARCH_TOP
= $(VBOX_PATH_APP_PRIVATE
)
697 VBOX_PATH_APP_PRIVATE_ARCH
= $(VBOX_PATH_APP_PRIVATE_ARCH_TOP
)/$(if-expr
$(KBUILD_TARGET_ARCH
) == "amd64",amd64
,i386
)
698 else if1of
($(KBUILD_TARGET
), darwin
)
699 VBOX_PATH_APP_PRIVATE_ARCH
= $(VBOX_PATH_APP_PRIVATE
)
702 # Where the shared libraries are (going to be) installed.
703 #VBOX_PATH_SHARED_LIBS = /usr/lib
704 ifdef VBOX_WITH_HARDENING
705 if1of
($(KBUILD_TARGET
), solaris
)
706 VBOX_PATH_SHARED_LIBS
= $(VBOX_PATH_APP_PRIVATE
)/$(if-expr
$(KBUILD_TARGET_ARCH
) == "amd64",amd64
,i386
)
707 else if1of
($(KBUILD_TARGET
), darwin
)
708 VBOX_PATH_SHARED_LIBS
= $(VBOX_PATH_APP_PRIVATE
)
711 # Where the documentation is (going to be) installed.
712 #VBOX_PATH_APP_DOCS = /usr/share/doc/virtualbox
713 ifdef VBOX_WITH_HARDENING
714 if1of
($(KBUILD_TARGET
), darwin solaris
)
715 VBOX_PATH_APP_DOCS
= $(VBOX_PATH_APP_PRIVATE
)
718 # The DT_RPATH/DT_RUNPATH to embed into the binaries (ELF).
719 # (This one is used for all binaries, there is no need to adjust this
720 # depending on the location of the object.)
721 #VBOX_WITH_RUNPATH = /usr/lib/virtualbox
722 ifdef VBOX_WITH_HARDENING
723 if1of
($(KBUILD_TARGET
), solaris
)
724 VBOX_WITH_RUNPATH
= $(VBOX_PATH_APP_PRIVATE
)/$(if-expr
$(KBUILD_TARGET_ARCH
) == "amd64",amd64
,i386
)
725 else if1of
($(KBUILD_TARGET
), freebsd linux
)
726 VBOX_WITH_RUNPATH
= $(VBOX_PATH_APP_PRIVATE
)
729 # Enable use of the $ORIGIN DT_RPATH/DT_RUNPATH feature (ELF).
730 # Because of the setuid usage on all ELF platforms when hardening the build
731 # things gets a bit complicated since the $ORIGIN+setuid policy differs.
732 #VBOX_WITH_ORIGIN = 1
733 ifndef VBOX_WITH_HARDENING
734 if1of
($(KBUILD_TARGET
), linux solaris
)
738 # Enable the system wide support service/daemon.
739 # Work in progress, but required for hardening on Windows.
740 #VBOX_WITH_SUPSVC = 1
741 ifdef VBOX_WITH_HARDENING
742 if1of
($(KBUILD_TARGET
), win
)
749 # Strip binaries of release and profile builds before packing them into the installer
750 # archive. When building .deb/.rpms, don't strip the symbols as they are required for
751 # the debug packages containing symbols for gdb located in /usr/lib/debug.
752 VBOX_DO_STRIP
:= $(if
$(filter release profile
,$(KBUILD_TYPE
)),1,)
753 # Strip R0/GC modules (current requirement for our loader)
754 # TODO: This shouldn't be a requirement any longer. FIXME XXX
755 VBOX_DO_STRIP_MODULES
= 1
759 # Config items for enabling work in progress.
761 # It's good pratice to add stuff here even if it is currently disabled by
764 # Note! Please, do *not* add stuff to the global DEFS unless it is *really*
765 # necessary! The other guys will hate for it you when they have to
766 # recompile everything when the feature is enabled or disabled. Put
767 # the ifdefs in target or template definitions.
770 ## For experimenting with disabling preemption instead of interrupts
771 # when working VT-x/AMD-V in VMMR0.
772 ## @todo os2? Reconsider perhaps windows? (see defect) This should be made the default.
773 if1of
($(KBUILD_TARGET
), darwin freebsd linux solaris win
)
774 VBOX_WITH_VMMR0_DISABLE_PREEMPTION
= 1
776 # Mask all Local APIC interrupt vectors which are set up to NMI mode when switching
777 # to/from the guest in raw mode. Modern Linux kernels use the performance counter
778 # to raise an NMI from time to time.
779 if1of
($(KBUILD_TARGET
), linux
)
780 VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
= 1
782 ## For testing deadlock detection and lock order validation.
783 # If issues are found, create high priority defects and temporarily comment
785 VBOX_WITH_STRICT_LOCKS
= 1
791 VBOX_BRAND_BIOS_LOGO
:= $(PATH_ROOT
)/src
/VBox
/Devices
/Graphics
/BIOS
/puel_logo.bmp
792 VBOX_BRAND_LICENSE_HTML
:= $(PATH_ROOT
)/doc
/License-gpl-2.0.html
793 VBOX_BRAND_LICENSE_RTF
:= $(PATH_ROOT
)/doc
/License-gpl-2.0.rtf
794 VBOX_BRAND_LICENSE_TXT
:= $(PATH_ROOT
)/doc
/License-gpl-2.0.txt
795 VBOX_BRAND_LICENSE_VER
:=
796 VBOX_BRAND_GUI_ABOUT_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/NonOSE
/about.png
797 VBOX_BRAND_GUI_ABOUT_16PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/NonOSE
/about_16px.png
798 VBOX_BRAND_GUI_VBOX_16PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/NonOSE
/VirtualBox_16px.png
799 VBOX_BRAND_GUI_VBOX_20PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/NonOSE
/VirtualBox_20px.png
800 VBOX_BRAND_GUI_VBOX_32PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/NonOSE
/VirtualBox_32px.png
801 VBOX_BRAND_GUI_VBOX_40PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/NonOSE
/VirtualBox_40px.png
802 VBOX_BRAND_GUI_VBOX_48PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/NonOSE
/VirtualBox_48px.png
803 VBOX_BRAND_GUI_VBOX_64PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/NonOSE
/VirtualBox_64px.png
804 VBOX_BRAND_WIN_INST_DLGJPG
:= $(PATH_ROOT
)/src
/VBox
/Installer
/win
/Binary
/Dialog.jpg
805 VBOX_BRAND_WIN_INST_EXT
:=
806 VBOX_BRAND_WIN_ADD_INST_DLGBMP
:= $(PATH_ROOT
)/src
/VBox
/Additions
/WINNT
/Installer
/welcome.bmp
807 VBOX_BRAND_DARWIN_DISKIMAGE_DS_STORE
:= $(PATH_ROOT
)/src
/VBox
/Installer
/darwin
/DiskImage
/DS_Store
808 VBOX_BRAND_DARWIN_DISKIMAGE_BG
:= $(PATH_ROOT
)/src
/VBox
/Installer
/darwin
/DiskImage
/vbox_folder.tiff
809 VBOX_BRAND_DARWIN_INSTALLER_BG
:= $(PATH_ROOT
)/src
/VBox
/Installer
/darwin
/VirtualBox_mpkg
/background.tif
815 ifdef VBOX_ONLY_EXTPACKS
816 # Clear some VBOX_WITH_XXX variables instead of adding ifdefs all over the place.
818 VBOX_WITH_ADDITIONS
=
820 VBOX_WITH_TESTCASES
=
823 # VBOX_QUICK can be used by core developers to speed to the build
825 # undefine variables by assigning blank.
832 VBOX_WITH_DEBUGGER_GUI
=
836 ifeq ($(KBUILD_TARGET
),darwin
)
837 # Don't bother with SDL ttf for now.
838 VBOX_WITH_SECURELABEL
=
839 # We'll use the native html/help viewer.
840 VBOX_WITH_KCHMVIEWER
=
841 VBOX_WITH_VRDP_RDESKTOP
=
842 # Permanent (no working SDL).
847 ifeq ($(KBUILD_TARGET
),freebsd
)
851 ifeq ($(KBUILD_TARGET
),haiku
)
852 # Don't bother with SDL ttf for now.
853 VBOX_WITH_SECURELABEL
=
854 # We'll use the native html/help viewer.
855 VBOX_WITH_KCHMVIEWER
=
856 VBOX_WITH_VRDP_RDESKTOP
=
857 # Permanent (no working SDL).
870 VBOX_WITH_INTERNAL_NETWORKING
=
871 VBOX_WITH_PDM_ASYNC_COMPLETION
=
872 VBOX_WITH_KCHMVIEWER
=
877 ifeq ($(KBUILD_TARGET
),l4
)
879 VBOX_WITH_ADDITION_DRIVERS
=
888 VBOX_WITH_INTERNAL_NETWORKING
=
889 VBOX_WITH_PDM_ASYNC_COMPLETION
=
890 VBOX_WITH_KCHMVIEWER
=
894 ifeq ($(KBUILD_TARGET
),os2
)
895 VBOX_WITH_WEBSERVICES
=
897 VBOX_WITH_SECURELABEL
=
898 VBOX_WITH_VRDP_AUTHMOD
=
899 VBOX_WITH_VRDP_RDESKTOP
=
905 VBOX_WITH_PDM_ASYNC_COMPLETION
=
906 VBOX_WITH_KCHMVIEWER
=
910 ifeq ($(KBUILD_TARGET
),solaris
)
911 VBOX_WITH_SECURELABEL
=
915 ifeq ($(KBUILD_TARGET
),win
)
916 VBOX_WITH_VRDP_RDESKTOP
=
917 VBOX_WITH_KCHMVIEWER
=
920 ifn1of
($(KBUILD_TARGET_ARCH
), x86 amd64
)
921 VBOX_WITH_ADDITION_DRIVERS
=
932 VBOX_WITH_INTERNAL_NETWORKING
=
934 VBOX_WITH_KCHMVIEWER
=
936 VBOX_WITH_PDM_ASYNC_COMPLETION
=
939 VBOX_WITH_SECURELABEL
=
945 VBOX_WITH_WEBSERVICES
=
947 VBOX_WITHOUT_HARDENING
=1
950 VBOX_WITH_VRDP_AUTHMOD
=
951 VBOX_WITH_VRDP_RDESKTOP
=
956 # Include automatic and local config file to override the above settings
957 # and to provide defaults for the settings below this point.
960 AUTOCFG
:= $(wildcard $(PATH_ROOT
)/AutoConfig.kmk
)
967 LOCALCFG
:= $(wildcard $(PATH_ROOT
)/LocalConfig.kmk
)
972 # Ignore it if it doesn't exist.
973 if exists
"$(LOCALCFG)"
976 $(warning LOCALCFG
='$(LOCALCFG)' does not exist
)
982 # Allow to overwrite the branding information from an external file
984 ifdef VBOX_BRANDING_CFG
985 include $(VBOX_BRANDING_CFG
)
989 # Bitch about old settings.
991 ifdef VBOX_WITHOUT_LINUX_COMPILER_H
992 $(warning VBOX_WITHOUT_LINUX_COMPILER_H was renamed to VBOX_WITH_LINUX_COMPILER_H
, the meaning is inverted.
)
996 # Indicate VBOX_ONLY build if any of the VBOX_ONLY_* variables are set.
998 VBOX_ONLY_BUILD
:= $(strip $(foreach x
, ADDITIONS DOCS EXTPACKS SDK TESTSUITE\
999 , $(if-expr defined
(VBOX_ONLY_
$(x
)),VBOX_ONLY_
$(x
))))
1000 if
$(words $(VBOX_ONLY_BUILD
)) > 1
1001 $(error VBox
: More than one VBOX_ONLY build enabled
! $(VBOX_ONLY_BUILD
))
1005 # For the docs build box.
1007 ifdef VBOX_ONLY_DOCS
1008 VBOX_WITH_DOCS_CHM
= 1
1012 # Disable components that are not open sourced.
1016 VBOX_WITH_EHCI_IMPL
=
1017 VBOX_WITH_EXTPACK_PUEL
=
1018 VBOX_WITH_EXTPACK_PUEL_BUILD
=
1019 VBOX_WITH_PCI_PASSTHROUGH_IMPL
=
1020 VBOX_WITH_OS2_ADDITIONS_BIN
=
1021 VBOX_WITH_SECURELABEL
=
1022 VBOX_WITH_KCHMVIEWER
=
1023 ifn1of
($(KBUILD_TARGET
), linux
)
1025 VBOX_WITH_DOCS_PACKING
=
1027 # Enable any translations in OSE, even partial ones.
1028 VBOX_WITH_DOCS_TRANSLATIONS
=1
1029 VBOX_WITH_TESTSUITE
=
1030 VBOX_WITH_INTEL_PXE
=
1031 ## @todo remove once the iPXE code is in public tree
1035 # Disable for OSE, requires snv_159+.
1036 VBOX_WITH_NETFLT_CROSSBOW
=
1037 ifn1of
($(KBUILD_TARGET
), darwin linux solaris win
)
1038 VBOX_WITH_INSTALLER
=
1041 VBOX_BRAND_LICENSE_HTML
:= $(PATH_ROOT
)/doc
/License-gpl-2.0.html
1042 VBOX_BRAND_LICENSE_RTF
:= $(PATH_ROOT
)/doc
/License-gpl-2.0.rtf
1043 VBOX_BRAND_LICENSE_TXT
:= $(PATH_ROOT
)/doc
/License-gpl-2.0.txt
1044 VBOX_BRAND_BIOS_LOGO
:= $(PATH_ROOT
)/src
/VBox
/Devices
/Graphics
/BIOS
/ose_logo.bmp
1045 VBOX_BRAND_GUI_ABOUT_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/about.png
1046 VBOX_BRAND_GUI_ABOUT_16PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/about_16px.png
1047 VBOX_BRAND_GUI_VBOX_16PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_16px.png
1048 VBOX_BRAND_GUI_VBOX_20PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_20px.png
1049 VBOX_BRAND_GUI_VBOX_32PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_32px.png
1050 VBOX_BRAND_GUI_VBOX_40PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_40px.png
1051 VBOX_BRAND_GUI_VBOX_48PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_48px.png
1052 VBOX_BRAND_GUI_VBOX_64PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_64px.png
1053 VBOX_BRAND_GUI_CUBE_42PX_PNG
:= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_cube_42px.png
1057 # VBOX_WITHOUT_HARDENING is for developers (put in LocalConfig.kmk).
1058 # Note that this is a bit rough since hardening governs more than one
1059 # variable... Also note that we allow VBOX_WITH_HARDENING=1 on the
1060 # command line to overrule VBOX_WITHOUT_HARDENING (the check below).
1062 ifdef VBOX_WITHOUT_HARDENING
1063 VBOX_WITH_HARDENING
=
1064 ifeq ($(VBOX_WITH_HARDENING
),)
1065 VBOX_PATH_APP_PRIVATE
=
1066 VBOX_PATH_APP_PRIVATE_ARCH
=
1067 VBOX_PATH_APP_PRIVATE_ARCH_TOP
=
1068 VBOX_PATH_SHARED_LIBS
=
1071 if1of
($(KBUILD_TARGET
), linux solaris
)
1078 # Sanitize the additions build config variables.
1080 ifdef VBOX_WITH_ADDITIONS_FROM_BUILD_SERVER
1081 VBOX_WITHOUT_ADDITIONS
:= 1
1082 ifdef VBOX_ONLY_ADDITIONS
1083 $(error VBOX_ONLY_ADDITIONS
+ VBOX_WITH_ADDITIONS_FROM_BUILD_SERVER does not add up
!)
1087 ifdef VBOX_ONLY_ADDITIONS
1088 ifdef VBOX_WITHOUT_ADDITIONS
1089 $(error VBOX_ONLY_ADDITIONS
+ VBOX_WITHOUT_ADDITIONS does not add up
!)
1093 ifdef VBOX_WITHOUT_ADDITIONS
1094 # Zap anything that could be contradicting this.
1095 VBOX_WITH_ADDITIONS
:=
1099 # Sanitize the documentation build config variables.
1101 ifdef VBOX_WITH_DOCS_FROM_BUILD_SERVER
1102 VBOX_WITHOUT_DOCS
:= 1
1103 ifdef VBOX_ONLY_DOCS
1104 $(error VBOX_ONLY_DOCS
+ VBOX_WITH_DOCS_FROM_BUILD_SERVER does not add up
!)
1108 ifdef VBOX_ONLY_DOCS
1109 ifdef VBOX_WITHOUT_DOCS
1110 $(error VBOX_ONLY_DOCS
+ VBOX_WITHOUT_DOCS does not add up
!)
1114 ifdef VBOX_WITHOUT_DOCS
1115 # Zap anything that could be contradicting this.
1120 # Disable components for headless
1127 VBOX_WITH_KCHMVIEWER
=
1128 VBOX_WITH_VRDP_RDESKTOP
=
1132 # Undefined VBOX_WITH_MAIN implies exclusion of a few more items.
1134 ifndef VBOX_WITH_MAIN
1137 VBOX_WITH_DEBUGGER_GUI
=
1139 ifdef VBOX_ONLY_DOCS
1140 $(error Oh
, does VBOX_ONLY_DOCS actually end up here. sweet.
)
1145 ifndef VBOX_WITH_QTGUI
1146 VBOX_WITH_KCHMVIEWER
=
1149 ifdef VBOX_WITH_EXTPACK_PUEL_BUILD
1150 VBOX_WITH_EXTPACK_PUEL
= 1
1154 # Mark OSE builds clearly, helps figuring out limitations more easily.
1157 # This can be overridden (e.g. in LocalConfig.kmk) by whoever publishes a set
1158 # of VirtualBox binaries. We request though that you always use something that
1159 # clearly identifies your build and makes it clear that it is not one done by
1160 # the VirtualBox team.
1161 VBOX_BUILD_PUBLISHER
= _OSE
1164 # Keep in sync with G_virtualBoxPackage in glue-jaxws.xsl and glue-java.xsl
1165 # Changed with every new version, so beware!
1166 if
$(VBOX_VERSION_BUILD
) < 51
1167 VBOX_API_VERSION
= $(VBOX_VERSION_MAJOR
)_
$(VBOX_VERSION_MINOR
)
1169 VBOX_API_VERSION
= $(VBOX_VERSION_MAJOR
)_
$(expr
$(VBOX_VERSION_MINOR
) + 1)
1171 VBOX_API_SUFFIX
= _
$(VBOX_API_VERSION
)
1172 VBOX_JAVA_PACKAGE
= org.virtualbox
$(VBOX_API_SUFFIX
)
1175 # Derived / helper config indicators. Not configurable.
1178 # Use the OpenGL module in qt when the video hardware acceleartion feature
1180 if defined
(VBOX_WITH_VIDEOHWACCEL
) && defined
(VBOX_WITH_QTGUI
)
1181 VBOX_GUI_USE_QGL
= 1
1187 # Image and object format config.
1189 if1of
($(KBUILD_TARGET
), freebsd haiku linux l4 netbsd openbsd solaris
)
1192 ifeq ($(KBUILD_TARGET
),darwin
)
1193 VBOX_LDR_FMT
= macho
1195 ifeq ($(KBUILD_TARGET
),os2
)
1198 VBOX_LDR_FMT64
= elf
1199 DONT_USE_YASM
= 1 # yasm doesn't implement omf yet.
1201 ifeq ($(KBUILD_TARGET
),win
)
1204 VBOX_LDR_FMT32 ?
= $(VBOX_LDR_FMT
)
1205 VBOX_LDR_FMT64 ?
= $(VBOX_LDR_FMT
)
1210 # This is a bit complicated since we have to support two different assmblers
1211 # (yasm/nasm) and possibly two different formats (32-bit/64-bit).
1213 ifeq ($(VBOX_LDR_FMT
),elf
)
1214 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1215 VBOX_ASFLAGS_FMT
= -f elf32
-DASM_FORMAT_ELF
1217 VBOX_ASFLAGS_FMT
= -f elf64
-DASM_FORMAT_ELF
1219 VBOX_ASFLAGS_DBFINFO
= -g dwarf2
1221 ifeq ($(VBOX_LDR_FMT
),lx
)
1222 VBOX_ASFLAGS_FMT
= -f obj
-DASM_FORMAT_OMF
1223 VBOX_ASFLAGS_DBFINFO
= -g stabs
1225 ifeq ($(VBOX_LDR_FMT
),macho
)
1226 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1227 VBOX_ASFLAGS_FMT
= -f macho32
-DASM_FORMAT_MACHO
1229 VBOX_ASFLAGS_FMT
= -f macho64
-DASM_FORMAT_MACHO
1231 VBOX_ASFLAGS_DBFINFO
= -g dwarf2
1233 ifeq ($(VBOX_LDR_FMT
),pe
)
1234 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1235 VBOX_ASFLAGS_FMT
= -f win32
-DASM_FORMAT_PE
1237 VBOX_ASFLAGS_FMT
= -f win64
-DASM_FORMAT_PE
1239 VBOX_ASFLAGS_DBFINFO
= -g cv8
1241 ifndef VBOX_ASFLAGS_FMT
1242 $(error VBOX_ASFLAGS_FMT is not defined. VBOX_LDR_FMT
=$(VBOX_LDR_FMT
))
1245 ifeq ($(VBOX_LDR_FMT32
),elf
)
1246 VBOX_ASFLAGS_FMT32
= -f elf32
-DASM_FORMAT_ELF
1247 VBOX_ASFLAGS_DBFINFO32
= -g dwarf2
1249 ifeq ($(VBOX_LDR_FMT32
),lx
)
1250 VBOX_ASFLAGS_FMT32
= -f obj
-DASM_FORMAT_OMF
1251 VBOX_ASFLAGS_DBFINFO32
= -g stabs
1253 ifeq ($(VBOX_LDR_FMT32
),macho
)
1254 VBOX_ASFLAGS_FMT32
= -f macho32
-DASM_FORMAT_MACHO
1255 VBOX_ASFLAGS_DBFINFO32
= -g dwarf2
1257 ifeq ($(VBOX_LDR_FMT32
),pe
)
1258 VBOX_ASFLAGS_FMT32
= -f win32
-DASM_FORMAT_PE
1259 VBOX_ASFLAGS_DBFINFO32
= -g cv8
1261 ifndef VBOX_ASFLAGS_FMT32
1262 $(error VBOX_ASFLAGS_FMT32 is not defined. VBOX_LDR_FMT32
=$(VBOX_LDR_FMT32
))
1265 ifeq ($(VBOX_LDR_FMT64
),elf
)
1266 VBOX_ASFLAGS_FMT64
= -f elf64
-DASM_FORMAT_ELF
1267 VBOX_ASFLAGS_DBFINFO64
= -g dwarf2
1269 ifeq ($(VBOX_LDR_FMT64
),macho
)
1270 VBOX_ASFLAGS_FMT64
= -f macho64
-DASM_FORMAT_MACHO
1271 VBOX_ASFLAGS_DBFINFO64
= -g dwarf2
1273 ifeq ($(VBOX_LDR_FMT64
),pe
)
1274 VBOX_ASFLAGS_FMT64
= -f win64
-DASM_FORMAT_PE
1275 VBOX_ASFLAGS_DBFINFO64
= -g cv8
1277 ifndef VBOX_ASFLAGS_FMT64
1278 $(error VBOX_ASFLAGS_FMT64 is not defined. VBOX_LDR_FMT64
=$(VBOX_LDR_FMT64
))
1281 ifndef DONT_USE_YASM
1283 VBOX_LDR_FMT_2_YASM_DBGINFO.elf
= -g dwarf2
1284 VBOX_LDR_FMT_2_YASM_DBGINFO.lx
= -g stabs
1285 VBOX_LDR_FMT_2_YASM_DBGINFO.macho
=
1286 VBOX_LDR_FMT_2_YASM_DBGINFO.pe
= -g cv8
1287 VBOX_ASFLAGS
= $(VBOX_ASFLAGS_FMT
) -D__YASM__
-Worphan-labels
$(VBOX_LDR_FMT_2_YASM_DBGINFO.
$(VBOX_LDR_FMT
))
1288 VBOX_ASFLAGS32
= $(VBOX_ASFLAGS_FMT32
) -D__YASM__
-Worphan-labels
$(VBOX_LDR_FMT_2_YASM_DBGINFO.
$(VBOX_LDR_FMT32
))
1289 VBOX_ASFLAGS64
= $(VBOX_ASFLAGS_FMT64
) -D__YASM__
-Worphan-labels
$(VBOX_LDR_FMT_2_YASM_DBGINFO.
$(VBOX_LDR_FMT64
))
1292 VBOX_ASFLAGS
= $(subst elf32
,elf
,$(VBOX_ASFLAGS_FMT
)) -D__NASM__
-w
+orphan-labels
-g
1293 VBOX_ASFLAGS32
= $(subst elf32
,elf
,$(VBOX_ASFLAGS_FMT32
)) -D__NASM__
-w
+orphan-labels
-g
1294 VBOX_ASFLAGS64
= $(VBOX_ASFLAGS_FMT64
) -D__NASM__
-w
+orphan-labels
-g
1298 # Windows only has mingw handy. On *nix we have to deal with cross compiling
1299 # 32-bit targets on 64-bit platforms, meaning we'll be using gcc32/g++32.
1300 # In the latter case we'll also have to disable all the all the R0 driver related stuff.
1302 ifndef VBOX_GCC_TOOL
1303 ifeq ($(KBUILD_TARGET
),win
)
1304 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1305 VBOX_GCC_TOOL
:= MINGW32
1306 TOOL_MINGW32_CFLAGS
:= $(UNDEFINED
) # override -g
1308 VBOX_GCC_TOOL
:= MINGWW64
1310 else ifeq ($(KBUILD_TARGET
),os2
)
1311 VBOX_GCC_TOOL
:= GXX3OMF
1312 else ifeq ($(KBUILD_TARGET
),darwin
)
1313 VBOX_GCC_TOOL
:= GXX4MACHO
1314 else ifeq ($(KBUILD_TARGET
),haiku
)
1315 # Haiku shouldn't pass '-r' to the linker by default
1316 VBOX_GCC_TOOL
:= GXX3PLAIN
1317 else ifeq ($(KBUILD_TARGET
),solaris
)
1318 VBOX_GCC_TOOL
:= GXX3PLAIN
1319 VBOX_GCC32_TOOL
:= GXX3PLAIN
1320 ifeq ($(KBUILD_HOST
),solaris
)
1321 TOOL_GXX3PLAIN_LD_SYSMOD ?
= /usr
/ccs
/bin
/ld
1324 VBOX_GCC_TOOL
:= GXX3
1325 ifeq ($(KBUILD_TARGET_ARCH
).
$(KBUILD_HOST_ARCH
),x86.amd64
) ## @todo mixing target/host here!
1326 VBOX_GCC_TOOL
:= GXX32
1328 else ifeq ($(KBUILD_TARGET_ARCH
).
$(KBUILD_HOST_ARCH
),amd64.x86
)
1329 VBOX_GCC_TOOL
:= GXX64
1334 ifndef VBOX_GCC32_TOOL
1335 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1336 VBOX_GCC32_TOOL
:= $(VBOX_GCC_TOOL
)
1337 else ifeq ($(KBUILD_TARGET
),win
)
1338 VBOX_GCC32_TOOL
:= MINGW32
1340 VBOX_GCC32_TOOL
:= GXX32
1345 # Decide which Visual C++ compiler version we're using by default.
1347 ifndef VBOX_VCC_TOOL_STEM
1348 VBOX_VCC_TOOL_STEM
:= VCC100
1349 else ifn1of
($(VBOX_VCC_TOOL_STEM
), VCC100 VCC110
)
1350 $(error VBox
: VBOX_VCC_TOOL_STEM
='$(VBOX_VCC_TOOL_STEM)' is not supported
, only VCC100 and VCC110 is
)
1352 ifndef VBOX_VCC_TOOL
1353 VBOX_VCC_TOOL
:= $(VBOX_VCC_TOOL_STEM
)$(toupper
$(KBUILD_TARGET_ARCH
))
1357 # The kBuild tools and SDKs are using PATH_DEVTOOLS, PATH_DEVTOOLS_BLD
1358 # and PATH_DEVTOOLS_TRG to find things if we give them specific locations.
1360 PATH_DEVTOOLS ?
= $(PATH_ROOT
)/tools
1361 PATH_DEVTOOLS
:= $(abspath
$(PATH_DEVTOOLS
))
1362 PATH_DEVTOOLS_BLD ?
= $(PATH_DEVTOOLS
)/$(KBUILD_HOST
).
$(KBUILD_HOST_ARCH
)
1363 PATH_DEVTOOLS_TRG ?
= $(PATH_DEVTOOLS
)/$(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
)
1365 ## @todo Remove the default tool crap here!
1366 TOOL
= $(VBOX_GCC_TOOL
)
1367 TOOL.win.x86
= $(VBOX_VCC_TOOL_STEM
)X86
1368 TOOL.win.amd64
= $(VBOX_VCC_TOOL_STEM
)AMD64
1369 ASTOOL
= $(VBOX_ASTOOL
)
1372 # L4-specific settings.
1375 ifeq ($(KBUILD_TARGET
),l4
)
1377 L4_ARCH ?
= $(KBUILD_TARGET_ARCH
)
1378 ifeq ($(L4_ARCH
),x86
)
1380 L4LINUX26_INCDIR
:= $(L4LINUX26_DIR
)/include \
1381 $(L4LINUX26_DIR
)/include/asm-l4
/i386-arch
1382 else ifeq ($(L4_ARCH
),amd64
)
1384 L4LINUX26_INCDIR
:= $(L4LINUX26_DIR
)/include
1385 # no red zone for L4 because of IPC bindings
1386 CFLAGS.l4
= -mno-red-zone
1387 CXXFLAGS.l4
= -mno-red-zone
1389 $(error VBox
: L4_ARCH
=$(L4_ARCH
))
1391 L4_OBJ
:= $(L4_DIR
)/build-
$(L4_ARCH
)-$(L4_CPU
)-$(L4_API
)
1392 # support split Linux kernels (make O=<build directory>)
1393 kernelsrc
:= $(shell $(SED_EXT
) -ne
's+^KERNELSRC.*= *\(.*\)+\1+p' $(L4LINUX26_DIR
)/Makefile
)
1394 ifneq ($(kernelsrc
),)
1395 kernelpath
:= $(realpath
$(kernelsrc
))
1396 L4LINUX26_INCDIR
+= $(L4LINUX26_DIR
)/include2
$(kernelpath
)/include
1399 $(L4_OBJ
)/include/uclibc
++ \
1400 $(L4_OBJ
)/include/$(L4_ARCH
)/uclibc \
1401 $(L4_OBJ
)/include/uclibc \
1402 $(L4LINUX26_INCDIR
) \
1403 $(L4_OBJ
)/include/$(L4_ARCH
)/$(L4_API
) \
1404 $(L4_OBJ
)/include/$(L4_API
) \
1405 $(L4_OBJ
)/include/$(L4_ARCH
) \
1407 $(L4_DIR
)/tool
/dice
/include
1409 $(L4_DIR
)/build-
$(L4_ARCH
)-$(L4_CPU
)-$(L4_API
)/lib
/$(L4_ARCH
)_
$(L4_CPU
)/$(L4_API
)
1410 endif # KBUILD_TARGET == l4
1413 # Produce debugging information that the Fiasco kernel debugger can read.
1414 ifeq ($(KBUILD_TARGET
).
$(KBUILD_TYPE
),l4.debug
)
1419 # Setup the global defines and includes.
1421 # Note! The __SOMETHING__ #defines are deprecated as they violate the C/C++ specs.
1423 INCS
+= $(PATH_ROOT
)/include $(PATH_OUT
)
1425 DEFS.debug
:= DEBUG DEBUG_
$(subst $(subst _
, ,_
),_
,$(USERNAME
)) DEBUG_USERNAME
=$(subst $(subst _
, ,_
),_
,$(USERNAME
))
1426 DEFS.dbgopt
= $(DEFS.debug
)
1427 DEFS.profile
= VBOX_WITH_STATISTICS
1428 DEFS.strict
= RT_STRICT VBOX_STRICT
1429 DEFS.x86
= RT_ARCH_X86 __X86__
1430 DEFS.amd64
= RT_ARCH_AMD64 __AMD64__
1431 DEFS.darwin
= RT_OS_DARWIN __DARWIN__
1432 DEFS.freebsd
= RT_OS_FREEBSD __FREEBSD__
1433 DEFS.haiku
= RT_OS_HAIKU
1434 DEFS.l4
= RT_OS_L4 __L4__ __L4ENV__ L4API_l4v2 ARCH_
$(KBUILD_TARGET_ARCH
) __NO_CTYPE _FILE_OFFSET_BITS
=64
1435 DEFS.linux
= RT_OS_LINUX _FILE_OFFSET_BITS
=64
1436 DEFS.netbsd
= RT_OS_NETBSD
1437 DEFS.openbsd
= RT_OS_OPENBSD
1438 DEFS.os2
= RT_OS_OS2 __OS2__
1439 DEFS.solaris
= RT_OS_SOLARIS _FILE_OFFSET_BITS
=64
1440 DEFS.win
= RT_OS_WINDOWS __WIN__
1441 DEFS.win.x86
= __WIN32__
1442 DEFS.win.amd64
= __WIN64__
1443 # optional defines (use environment or make commandline)
1444 ifdef VBOX_WITH_DEBUGGER
1445 DEFS
+= VBOX_WITH_DEBUGGER
1447 ifdef VBOX_WITH_STATISTICS
1448 DEFS
+= VBOX_WITH_STATISTICS
1459 ifdef VBOX_WITH_64_BITS_GUESTS
1460 DEFS
+= VBOX_WITH_64_BITS_GUESTS
1462 ifdef VBOX_WITH_HARDENING
1463 DEFS
+= VBOX_WITH_HARDENING
1465 if defined
(VBOX_WITH_STRICT_LOCKS
) && ($(KBUILD_TYPE
) == "debug" ||
$(KBUILD_TYPE
) == "strict")
1466 DEFS
+= RT_LOCK_STRICT RT_LOCK_STRICT_ORDER
1468 ifdef VBOX_WITH_EF_WRAPS
1469 DEFS
+= RTMEM_WRAP_TO_EF_APIS RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF
1472 # Quoted strings should not be passed to the assemblers since they might not
1473 # subscribe to C preprocessing semantics.
1474 ifdef VBOX_PATH_APP_PRIVATE
1475 CDEFS
+= RTPATH_APP_PRIVATE
=\"$(VBOX_PATH_APP_PRIVATE
)\"
1477 ifdef VBOX_PATH_APP_PRIVATE_ARCH
1478 CDEFS
+= RTPATH_APP_PRIVATE_ARCH
=\"$(VBOX_PATH_APP_PRIVATE_ARCH
)\"
1480 ifdef VBOX_PATH_APP_PRIVATE_ARCH_TOP
1481 CDEFS
+= RTPATH_APP_PRIVATE_ARCH_TOP
=\"$(VBOX_PATH_APP_PRIVATE_ARCH_TOP
)\"
1483 ifdef VBOX_PATH_SHARED_LIBS
1484 CDEFS
+= RTPATH_SHARED_LIBS
=\"$(VBOX_PATH_SHARED_LIBS
)\"
1486 ifdef VBOX_PATH_APP_DOCS
1487 CDEFS
+= RTPATH_APP_DOCS
=\"$(VBOX_PATH_APP_DOCS
)\"
1490 OBJCDEFS
+= $(CDEFS
)
1496 # Compiler optimization flags.
1498 VBOX_GCC_WARN ?
= -Wall
$(VBOX_GCC_Wextra
) $(VBOX_GCC_Wno-missing-field-initializers
) -Wno-unused
-Wno-trigraphs
$(VBOX_GCC_fdiagnostics-show-option
)
1499 VBOX_GCC_WARN_PEDANTIC
= -Wshadow
$(VBOX_GCC_WARN
) -Wno-long-long
1500 ifdef VBOX_WITH_MASOCHISTIC_WARNINGS
1501 VBOX_GCC_WARN_PEDANTIC
+= -Wunused-variable
-Wunused-function
-Wunused-label
-Wunused-parameter
1503 VBOX_GCC_PEDANTIC_CXX ?
= -pedantic
-Wshadow
$(VBOX_GCC_WARN_PEDANTIC
) -Wno-long-long
$(VBOX_GCC_Wno-delete-non-virtual-dtor
)
1504 VBOX_GCC_PEDANTIC_C ?
= -pedantic
-Wshadow
$(VBOX_GCC_WARN_PEDANTIC
) -Wno-long-long
-Wmissing-prototypes
-Wstrict-prototypes
-Wmissing-declarations
-Werror-implicit-function-declaration
1505 ifeq ($(KBUILD_TARGET
),win
)
1506 VBOX_C_CXX_FLAGS_NO_UNUSED_PARAMETERS
= #-Wdxxxx
1508 VBOX_C_CXX_FLAGS_NO_UNUSED_PARAMETERS
= -Wno-unused-parameter
1510 ifeq ($(KBUILD_TYPE
),debug
)
1511 VBOX_GCC_FP ?
= -fno-omit-frame-pointer
1515 VBOX_GCC_R0_FP ?
= -fno-omit-frame-pointer
-fno-optimize-sibling-calls
1516 VBOX_GCC_R0_OPT ?
= -O2
1517 VBOX_VCC_R0_FP ?
= -Oy-
1519 VBOX_GCC_GC_FP ?
= -fno-omit-frame-pointer
-fno-optimize-sibling-calls
1520 VBOX_GCC_GC_OPT ?
= -O2
1521 VBOX_VCC_GC_FP ?
= -Oy-
1524 # We should use -fomit-frame-pointer for GCC / -Oy for VCC.
1525 # -funwind-tables provides support for backtraces in gdb then.
1526 VBOX_GCC_FP ?
= -fno-omit-frame-pointer
1527 VBOX_GCC_OPT ?
= -O2
$(VBOX_GCC_mtune-generic
)
1530 VBOX_GCC_R0_FP ?
= -fno-omit-frame-pointer
1531 VBOX_GCC_R0_OPT ?
= -O2
$(VBOX_GCC_mtune-generic
)
1532 VBOX_VCC_R0_FP ?
= -Oy-
1533 VBOX_VCC_R0_OPT ?
= -O2
1534 VBOX_GCC_GC_FP ?
= -fno-omit-frame-pointer
1535 VBOX_GCC_GC_OPT ?
= -O2
$(VBOX_GCC_mtune-generic
)
1536 VBOX_VCC_GC_FP ?
= -Oy-
1537 VBOX_VCC_GC_OPT ?
= -O2
1539 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1540 ifneq ($(KBUILD_TARGET
),darwin
)
1541 # (The '<=' operator is for prepending (kmk specific).)
1542 VBOX_GCC_OPT
<= -march
=i586
1548 # Select the CRT type we're using with Microsoft Visual C++.
1550 ifdef VBOX_WITH_DEBUG_VCC_CRT
1551 VBOX_VCC_CRT_TYPE
= d
1552 VBOX_VCC_CRT_TYPE_N
=
1555 VBOX_VCC_CRT_TYPE_N
= d
1559 # Decide which Windows DDK to use by default.
1561 ifeq ($(VBOX_VCC_TOOL_STEM
),VCC110
)
1562 VBOX_WINDDK ?
= WINDDK80
1564 VBOX_WINDDK ?
= WINDDK71
1566 VBOX_WINDDK_WLH ?
= $(VBOX_WINDDK
)WLH
1568 VBOX_WINDDK_GST ?
= $(VBOX_WINDDK
)
1569 VBOX_WINDDK_GST_W8 ?
= WINDDK80W8
1570 VBOX_WINDDK_GST_W7 ?
= $(VBOX_WINDDK_GST
)W7
1571 VBOX_WINDDK_GST_WLH ?
= $(VBOX_WINDDK_GST
)WLH
1572 VBOX_WINDDK_GST_W2K3 ?
= WINDDK71WNET
1573 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1574 VBOX_WINDDK_GST_WXP ?
= WINDDK71WXP
1575 VBOX_WINDDK_GST_W2K ?
= $(VBOX_WINDDK_GST_WXP
)
1576 VBOX_WINDDK_GST_NT4 ?
= $(VBOX_WINDDK_GST_WXP
)
1578 VBOX_WINDDK_GST_WXP ?
= $(VBOX_WINDDK_GST_W2K3
)
1579 VBOX_WINDDK_GST_W2K ?
= $(VBOX_WINDDK_GST_W2K3
)
1580 VBOX_WINDDK_GST_NT4 ?
= $(VBOX_WINDDK_GST_W2K3
)
1585 # Decide which Windows SDK to use by default.
1587 ifeq ($(VBOX_VCC_TOOL_STEM
),VCC110
)
1588 VBOX_WINPSDK ?
= WINPSDK80
1590 VBOX_WINPSDK ?
= WINPSDK71
1592 VBOX_WINPSDK_GST ?
= $(VBOX_WINPSDK
)
1593 VBOX_WINPSDK_GST_W8 ?
= WINPSDK80
1594 VBOX_WINPSDK_GST_W7 ?
= $(VBOX_WINPSDK_GST
)
1595 VBOX_WINPSDK_GST_WLH ?
= $(VBOX_WINPSDK_GST
)
1596 VBOX_WINPSDK_GST_WXP ?
= $(VBOX_WINPSDK_GST
)
1597 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1598 VBOX_WINPSDK_GST_W2K ?
= $(VBOX_WINPSDK_GST
)
1599 VBOX_WINPSDK_GST_NT4 ?
= $(VBOX_WINPSDK_GST
)
1601 VBOX_WINPSDK_GST_W2K ?
= $(VBOX_WINPSDK_GST_WXP
)
1602 VBOX_WINPSDK_GST_NT4 ?
= $(VBOX_WINPSDK_GST_WXP
)
1609 ifeq ($(KBUILD_TARGET_ARCH
),amd64
)
1610 VBOX_HC_ARCH_BITS
:= 64
1611 ARCH_BITS_DEFS
:= HC_ARCH_BITS
=64
1612 else ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1613 VBOX_HC_ARCH_BITS
:= 32
1614 ARCH_BITS_DEFS
:= HC_ARCH_BITS
=32
1616 $(error VBox
: KBUILD_TARGET_ARCH
=$(KBUILD_TARGET_ARCH
))
1619 ifdef VBOX_WITH_64_BITS_GUESTS
1620 VBOX_GC_ARCH_BITS_DEFS
:= GC_ARCH_BITS
=64
1622 VBOX_GC_ARCH_BITS_DEFS
:= GC_ARCH_BITS
=32
1624 ARCH_BITS_DEFS
+= $(VBOX_GC_ARCH_BITS_DEFS
)
1627 # Add the output dir(s) to the dynamic loader search path.
1629 if1of
($(KBUILD_HOST
), freebsd linux l4 netbsd openbsd solaris
)
1630 export LD_LIBRARY_PATH
:=$(PATH_STAGE_BIN
):$(PATH_STAGE_LIB
):$(LD_LIBRARY_PATH
)
1632 ifeq ($(KBUILD_HOST
),haiku
)
1633 export LIBRARY_PATH
:=$(PATH_STAGE_BIN
):$(PATH_STAGE_LIB
):$(LIBRARY_PATH
)
1635 ifeq ($(KBUILD_HOST
),os2
)
1636 #fixme! export BEGINLIBPATH:=$(PATH_STAGE_BIN);$(PATH_STAGE_LIB);$(BEGINLIBPATH)
1638 ifeq ($(KBUILD_HOST
),win
)
1639 export PATH
:=$(PATH_STAGE_BIN
);$(PATH_STAGE_LIB
);$(PATH
)
1643 # Common libraries and tools.
1645 ifeq ($(KBUILD_TARGET
),darwin
)
1646 LIB_RUNTIME
= $(PATH_STAGE_BIN
)/VBoxRT.dylib
1647 LIB_RUNTIME_EF
= #$(PATH_STAGE_LIB)/RuntimeEFCPP.a
1648 LIB_KPROFILE
= $(PATH_STAGE_BIN
)/kPrf2.dylib
1649 LIB_VMM
= $(PATH_STAGE_BIN
)/VBoxVMM.dylib
1650 LIB_VMMGC
= $(PATH_STAGE_BIN
)/VMMGC.gc
1651 LIB_REM
= $(PATH_STAGE_LIB
)/VBoxREM.dylib
1652 LIB_XPCOM
= $(PATH_STAGE_BIN
)/VBoxXPCOM.dylib
1653 LIB_DDU
= $(PATH_STAGE_BIN
)/VBoxDDU.dylib
1655 ifeq ($(KBUILD_TARGET
),l4
)
1656 LIB_RUNTIME
= $(PATH_STAGE_BIN
)/VBoxRT.s.so
1657 LIB_RUNTIME_EF
= #$(PATH_STAGE_LIB)/RuntimeEFCPP.a
1658 LIB_KPROFILE
= $(PATH_STAGE_BIN
)/kPrf2.s.so
1659 LIB_VMM
= $(PATH_STAGE_BIN
)/VBoxVMM.s.so
1660 LIB_VMMGC
= $(PATH_STAGE_BIN
)/VMMGC.gc
1661 LIB_REM
= $(PATH_STAGE_LIB
)/VBoxREM.s.so
1662 LIB_XPCOM
= $(PATH_STAGE_BIN
)/VBoxXPCOM.s.so
1663 LIB_DDU
= $(PATH_STAGE_BIN
)/VBoxDDU.s.so
1665 if1of
($(KBUILD_TARGET
), freebsd haiku linux netbsd openbsd solaris
)
1666 LIB_RUNTIME
= $(PATH_STAGE_BIN
)/VBoxRT.so
1667 LIB_RUNTIME_EF
= $(PATH_STAGE_LIB
)/RuntimeEFCPP.a
1668 LIB_KPROFILE
= $(PATH_STAGE_BIN
)/kPrf2.so
1669 LIB_VMM
= $(PATH_STAGE_BIN
)/VBoxVMM.so
1670 LIB_VMMGC
= $(PATH_STAGE_BIN
)/VMMGC.gc
1671 LIB_REM
= $(PATH_STAGE_LIB
)/VBoxREM.so
1672 LIB_XPCOM
= $(PATH_STAGE_BIN
)/VBoxXPCOM.so
1673 LIB_DDU
= $(PATH_STAGE_BIN
)/VBoxDDU.so
1675 ifeq ($(KBUILD_TARGET
),os2
)
1676 LIB_RUNTIME
= $(PATH_STAGE_BIN
)/VBoxRT.dll
1677 LIB_RUNTIME_EF
= #$(PATH_STAGE_LIB)/RuntimeEFCPP.a
1678 LIB_KPROFILE
= $(PATH_STAGE_BIN
)/kPrf2.dll
1679 LIB_VMM
= $(PATH_STAGE_BIN
)/VBoxVMM.dll
1680 LIB_VMMGC
= $(PATH_STAGE_LIB
)/VMMRCImp.lib
1681 LIB_REM
= $(PATH_STAGE_LIB
)/VBoxREMImp.lib
1682 LIB_XPCOM
= $(PATH_STAGE_BIN
)/VBoxXCOM.dll
1683 LIB_DDU
= $(PATH_STAGE_BIN
)/VBoxDDU.dll
1684 VBOX_OBJ_SYS0
= $(PATH_OBJ
)/RuntimeR0
/os2
/sys0.obj
1686 ifeq ($(KBUILD_TARGET
),win
)
1687 LIB_RUNTIME
= $(PATH_STAGE_LIB
)/VBoxRT.lib
1688 LIB_RUNTIME_EF
= #$(PATH_STAGE_LIB)/RuntimeEFCPP.lib
1689 LIB_KPROFILE
= $(PATH_STAGE_LIB
)/kPrf2.lib
1690 LIB_VMM
= $(PATH_STAGE_LIB
)/VBoxVMM.lib
1691 LIB_VMMGC
= $(PATH_OBJ
)/VMMRC
/VMMGC.lib
1692 LIB_REM
= $(PATH_STAGE_LIB
)/VBoxREMImp.lib
1693 LIB_XPCOM
= $(PATH_STAGE_BIN
)/VBoxXPCOM.dll
1694 LIB_DDU
= $(PATH_STAGE_LIB
)/VBoxDDU.lib
1696 VBOX_LIB_SUPHARDENED
= $(PATH_STAGE_LIB
)/SUPR3HardenedStatic
$(VBOX_SUFF_LIB
)
1697 VBOX_LIB_RUNTIME_STATIC
= $(PATH_STAGE_LIB
)/RuntimeR3
$(VBOX_SUFF_LIB
)
1699 ifndef VBOX_WITH_REM
1704 ifndef VBOX_BLD_PYTHON
1705 if1of
($(KBUILD_HOST
), win
)
1706 VBOX_BLD_PYTHON
:= $(firstword $(rsort
$(wildcard $(PATH_DEVTOOLS
)/win.x86
/python
/v
*/python
$(HOSTSUFF_EXE
))) python-not-found.exe
)
1708 VBOX_BLD_PYTHON
:= python
$(HOSTSUFF_EXE
)
1712 # Define the macro for win path conversion.
1713 ifndef VBOX_ONLY_SDK
1714 VBOX_FN_MAKE_WIN_PATH
= $(subst /,\\,$(1))
1716 # on Wine Z: is always FS root
1717 VBOX_FN_MAKE_WIN_PATH
= $(subst /,\\,$(patsubst /%,Z
:/%,$(1)))
1718 endif #!VBOX_ONLY_SDK
1720 # The kprofile build automagically links with kProfile.
1721 ifeq ($(KBUILD_TYPE
),kprofile
)
1722 LIB_RUNTIME
+= $(LIB_KPROFILE
)
1725 # Enable C++ electric fence heap. (Warning: will easily run out of virtual memory / kernel stuff on Linux/Windows.)
1726 ifdef VBOX_WITH_CPP_EF
1727 LIB_RUNTIME
<= $(LIB_RUNTIME_EF
)
1730 # Overridable libraries (unix).
1731 LIB_PTHREAD ?
= pthread
1733 # Xcursor (consider an SDK for this).
1734 ifeq ($(VBOX_XCURSOR_LIBS
),)
1735 ifeq ($(KBUILD_TARGET
),solaris
)
1736 VBOX_XCURSOR_LIBS
:= $(lastword
$(wildcard $(PATH_DEVTOOLS_TRG
)/libXcursor
/*/lib
/libXcursor.a
))
1737 ifneq ($(VBOX_XCURSOR_LIBS
),)
1738 VBOX_XCURSOR_INCS
:= $(patsubst %/lib
/libXcursor.a
,%/include, $(VBOX_XCURSOR_LIBS
))
1739 VBOX_XCURSOR_LIBS
+= X11 Xrender Xfixes
1742 ifeq ($(VBOX_XCURSOR_LIBS
),)
1743 VBOX_XCURSOR_LIBS
:= Xcursor
1748 # Intel ASL compiler for ACPI
1749 VBOX_IASLCMD ?
= $(firstword $(wildcard $(PATH_DEVTOOLS_BLD
)/bin
/iasl
$(HOSTSUFF_EXE
)) iasl
$(HOSTSUFF_EXE
))
1751 # libxslt XSLT processor. (see PATH_TOOL_YASM for explanation why it's temporarily located in bin.)
1752 ifeq ($(KBUILD_HOST
),win
)
1753 # VBOX_XSLTPROC ?= $(PATH_DEVTOOLS)/win.x86/libxslt/10114/xsltproc.exe
1754 VBOX_XSLTPROC ?
= $(PATH_DEVTOOLS
)/win.x86
/bin
/xsltproc.exe
1755 else ifeq ($(KBUILD_HOST
),os2
)
1756 VBOX_XSLTPROC ?
= BEGINLIBPATH
="$(PATH_DEVTOOLS_BLD)/bin;$$BEGINLIBPATH" $(PATH_DEVTOOLS_BLD
)/bin
/xsltproc.exe
1757 else ifeq ($(KBUILD_HOST
),haiku
)
1758 VBOX_XSLTPROC ?
= $(PATH_DEVTOOLS
)/haiku.x86
/bin
/xsltproc
1760 VBOX_XSLTPROC ?
= xsltproc
$(HOSTSUFF_EXE
)
1763 # bin2c (convert binary files into C arrays)
1764 VBOX_BIN2C ?
= $(PATH_OBJ
)/bin2c
/bin2c
$(HOSTSUFF_EXE
)
1766 # RTManifest (extension pack manifest utility)
1767 VBOX_RTMANIFEST ?
= $(PATH_OBJ
)/bldRTManifest
/bldRTManifest
$(HOSTSUFF_EXE
)
1769 # VBoxCmp (simple /bin/cmp with more sensible output)
1770 VBOX_VBOXCMP ?
= $(PATH_OBJ
)/VBoxCmp
/VBoxCmp
$(HOSTSUFF_EXE
)
1772 # VBoxCPP (special purpose C preprocessor)
1773 VBOX_VBOXCPP ?
= $(PATH_OBJ
)/VBoxCPP
/VBoxCPP
$(HOSTSUFF_EXE
)
1775 # VBoxTpG (tracepoint generator)
1776 VBOX_VBOXTPG ?
= $(PATH_OBJ
)/VBoxTpG
/VBoxTpG
$(HOSTSUFF_EXE
)
1778 # VBoxPeSetVersion (changes the minimum OS version of an image)
1779 VBOX_PE_SET_VERSION ?
= $(PATH_OBJ
)/VBoxPeSetVersion
/VBoxPeSetVersion
$(HOSTSUFF_EXE
)
1781 # filesplitter (splits java files)
1782 VBOX_FILESPLIT ?
= $(PATH_OBJ
)/filesplitter
/filesplitter
$(HOSTSUFF_EXE
)
1784 # biossums (set BIOS checksums)
1785 VBOX_BIOSSUMS ?
= $(PATH_OBJ
)/biossums
/biossums
$(HOSTSUFF_EXE
)
1787 # MakeAlternativeSource (for BIOSes)
1788 VBOX_MAKE_ALTERNATIVE_SOURCE ?
= $(PATH_OBJ
)/MakeAlternativeSource
/MakeAlternativeSource
$(HOSTSUFF_EXE
)
1790 # GNU tar if present.
1791 if1of
($(KBUILD_TARGET
), linux os2 win
)
1793 else if1of
($(KBUILD_TARGET
), freebsd solaris
)
1798 ifeq ($(KBUILD_HOST
),win
)
1799 VBOX_MKISOFS ?
= $(PATH_DEVTOOLS_BLD
)/bin
/mkisofs.exe
1801 VBOX_MKISOFS ?
= mkisofs
1804 # Makeself for the linux installers.
1805 VBOX_MAKESELF ?
= $(PATH_DEVTOOLS
)/common
/makeself
/v2.1
.5/makeself.sh
1807 # Microsoft HTML Help Workshop.
1808 VBOX_PATH_HTML_HELP_WORKSHOP ?
= $(PATH_DEVTOOLS
)/win.x86
/HTML_Help_Workshop
/v1.3
/
1810 # Path to the null soft installer.
1811 VBOX_PATH_NSIS ?
= $(PATH_DEVTOOLS
)/win.x86
/nsis
/v2.46
-log-nsscm-r1
1814 VBOX_PATH_AUTOIT3 ?
= $(PATH_DEVTOOLS
)/win.x86
/autoit
/v3.2
.10.0
1816 # Windows install tools...
1817 # Note! The scripts has been moved to Bin in v8.0.
1818 VBOX_PATH_WIX ?
= $(PATH_DEVTOOLS
)/win.x86
/wix
/v3.5
.2519.0
1819 VBOX_PATH_MSITRAN ?
= $(PATH_DEVTOOLS
)/win.x86
/sdk
/v7.1
/Bin
/MsiTran.Exe
1820 VBOX_PATH_MSIDB ?
= $(PATH_DEVTOOLS
)/win.x86
/sdk
/v7.1
/Bin
/MsiDb.Exe
1821 VBOX_PATH_WISUBSTG ?
= $(PATH_DEVTOOLS
)/win.x86
/sdk
/v7.1
/Samples
/sysmgmt
/msi
/scripts
/WiSubStg.vbs
1822 VBOX_PATH_WISUMINFO ?
= $(PATH_DEVTOOLS
)/win.x86
/sdk
/v7.1
/Samples
/sysmgmt
/msi
/scripts
/WiSumInf.vbs
1823 VBOX_PATH_DIFX ?
= $(PATH_DEVTOOLS
)/win.
$(KBUILD_TARGET_ARCH
)/DIFx
/v2.1
-r3
1824 VBOX_PATH_CABSDK ?
= $(PATH_DEVTOOLS
)/win.x86
/cabsdk
/r1
1825 VBOX_PATH_MAKECAB ?
= $(VBOX_PATH_CABSDK
)/BIN
/MAKECAB.EXE
1827 # We need to export YASM for OSE, but since it was converted to .zip we need to
1828 # allow for the location used by the zip to be properly cleaned up first.
1829 if1of
($(KBUILD_HOST
).
$(KBUILD_HOST_ARCH
), linux.x86 solaris.x86 win.x86
)
1830 PATH_TOOL_YASM ?
= $(PATH_DEVTOOLS_BLD
)/bin
1833 # The Microsoft IDL compiler (the SDK build needs this on non-Windows).
1834 VBOX_WIN_MIDL ?
= $(EXEC_X86_WIN32
) $(call VBOX_FN_MAKE_WIN_PATH
,$(firstword $(wildcard \
1835 $(PATH_SDK_
$(VBOX_WINPSDK
)_BIN
)/[Mm
][Ii
][Dd
][Ll
].
[Ee
][Xx
][Ee
]\
1836 $(PATH_SDK_
$(VBOX_WINPSDK
))/[Bb
][Ii
][Nn
]/[Mm
][Ii
][Dd
][Ll
].
[Ee
][Xx
][Ee
]\
1837 $(PATH_SDK_WINPSDK_BIN
)/[Mm
][Ii
][Dd
][Ll
].
[Ee
][Xx
][Ee
]\
1838 $(PATH_SDK_WINPSDK
)/[Bb
][Ii
][Nn
]/[Mm
][Ii
][Dd
][Ll
].
[Ee
][Xx
][Ee
]\
1839 $(PATH_DEVTOOLS
)/win.x86
/bin
/[Mm
][Ii
][Dd
][Ll
].
[Ee
][Xx
][Ee
]\
1840 ) Sorry_Cannot_Find_The_Midl_Compiler_In_The_PSDK
))
1842 # XPCOM setup for all but win32.
1843 ifneq ($(KBUILD_TARGET
),win
)
1845 # if updating, also update xpidl_INST var in src/libs/xpcom18a4/Makefile.kmk
1846 VBOX_XPIDL ?
= $(PATH_STAGE_BIN
)/xpidl
$(HOSTSUFF_EXE
)
1847 ifeq ($(KBUILD_TARGET
),os2
)
1848 VBOX_XPIDL_ENV
= BEGINLIBPATH
="$(dir $(VBOX_XPIDL));$$BEGINLIBPATH"$(SP
)
1850 VBOX_PATH_XPCOM_IDL ?
= $(VBOX_PATH_SDK
)/bindings
/xpcom
/idl
1851 VBOX_XPCOM_INCS ?
= \
1852 $(VBOX_PATH_SDK
)/bindings
/xpcom
/include \
1853 $(VBOX_PATH_SDK
)/bindings
/xpcom
/include/xpcom \
1854 $(VBOX_PATH_SDK
)/bindings
/xpcom
/include/string \
1855 $(VBOX_PATH_SDK
)/bindings
/xpcom
/include/xpcom \
1856 $(VBOX_PATH_SDK
)/bindings
/xpcom
/include/nsprpub \
1857 $(VBOX_PATH_SDK
)/bindings
/xpcom
/include/ipcd
1858 ifneq ($(KBUILD_TARGET
),os2
)
1859 # libIDL-config (for xpcom18a4)
1860 ifeq ($(origin VBOX_LIBIDL_CONFIG
),undefined
)
1861 export VBOX_LIBIDL_CONFIG
:= $(firstword $(shell which libIDL-config-2 libIDL-config
2> /dev
/null
))
1866 # The X11 LIBPATH. (The amd64 hack is for RHEL4.)
1867 ifeq ($(KBUILD_TARGET_ARCH
),amd64
)
1868 VBOX_LIBPATH_X11 ?
= /usr
/X11R6
/lib64
/usr
/X11R6
/lib
1870 VBOX_LIBPATH_X11 ?
= /usr
/X11R6
/lib
1873 # 32bit X11 LIBPATH for building 32bit guest additions
1874 VBOX_LIBPATH32_X11 ?
= /usr
/X11R6
/lib32
/usr
/X11R6
/lib
1877 # Macros dealing with the darwin version we're targeting.
1878 # The DEF in VBOX_DEF_MACOSX_VERSION_MIN mean default. The default min
1879 # version is assumed to be the
1881 ifeq ($(KBUILD_TARGET
),darwin
)
1882 VBOX_PATH_MACOSX_DEVEL_ROOT ?
= /Developer
1883 VBOX_PATH_MACOSX_SDK_ROOT ?
= $(VBOX_PATH_MACOSX_DEVEL_ROOT
)/SDKs
1885 ifeq ($(VBOX_DEF_MACOSX_VERSION_MIN
),10.4)
1886 ifeq ($(origin VBOX_DARWIN_CLASSIC_LINKER
),undefined
)
1887 VBOX_DARWIN_CLASSIC_LINKER
:= $(shell ld -v
2>&1 )
1888 ifneq ($(filter ld64
%, $(subst :, , $(VBOX_DARWIN_CLASSIC_LINKER
))),)
1889 export VBOX_DARWIN_CLASSIC_LINKER
:= -Wl
,-classic_linker
1891 export VBOX_DARWIN_CLASSIC_LINKER
:=
1894 VBOX_PATH_MACOSX_SDK ?
= $(VBOX_PATH_MACOSX_SDK_ROOT
)/MacOSX
$(VBOX_DEF_MACOSX_VERSION_MIN
)u.sdk
1896 VBOX_PATH_MACOSX_SDK ?
= $(VBOX_PATH_MACOSX_SDK_ROOT
)/MacOSX
$(VBOX_DEF_MACOSX_VERSION_MIN
).sdk
1899 ## The Xcode version.
1900 ifeq ($(KBUILD_HOST
),darwin
)
1901 ifndef VBOX_XCODE_VERSION
1902 ifdef VBOX_WITH_MACOSX_COMPILERS_FROM_DEVEL
1903 VBOX_XCODE_VERSION
:= $(word 2, $(shell $(VBOX_PATH_MACOSX_DEVEL_ROOT
)/usr
/bin
/xcodebuild
-version
))
1905 VBOX_XCODE_VERSION
:= $(word 2, $(shell xcodebuild
-version
))
1907 VBOX_XCODE_VERSION ?
= 4.1
1909 ifeq ($(VBOX_XCODE_VERSION
),4.2)
1910 $(warning Xcode
4.2 is not able to correctly build the recompiler
!)
1911 $(warning Please downgrade to Xcode
4.1 if you want a working VMM
!)
1914 VBOX_XCODE_VERSION ?
= 4.1
1916 VBOX_XCODE_VERSION_MAJOR
:= $(word 1, $(subst .
, ,$(VBOX_XCODE_VERSION
)))
1917 VBOX_XCODE_VERSION_MINOR
:= $(word 2, $(subst .
, ,$(VBOX_XCODE_VERSION
)))
1918 VBOX_XCODE_VERSION
:= $(VBOX_XCODE_VERSION_MAJOR
).
$(VBOX_XCODE_VERSION_MINOR
)
1920 VBOX_DEF_MACOSX_VERSION_MIN ?
= 10.6
1921 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
1922 if1of
($(VBOX_DEF_MACOSX_VERSION_MIN
), 10.4 10.5)
1923 VBOX_DARWIN_NO_COMPACT_LINKEDIT ?
= $(VBOX_LD_no_compact_linkedit
)
1924 TOOL_GXX4MACHO_SUFFIX ?
= -4.0
1927 if
$(VBOX_XCODE_VERSION_MAJOR
) < 4 && "$(VBOX_XCODE_VERSION)" != "3.2"
1928 $(error VBox
: 64-bit darwin builds require Xcode
3.2 or later
, you have
$(VBOX_XCODE_VERSION
))
1931 if
$(VBOX_XCODE_VERSION_MAJOR
) == 4 && $(VBOX_XCODE_VERSION_MINOR
) >= 2
1932 TOOL_GXX4MACHO_PREFIX ?
= llvm-
1934 TOOL_GXX4MACHO_SUFFIX ?
= -4.2
1935 VBOX_DARWIN_NO_COMPACT_LINKEDIT ?
=
1937 TOOL_GCC4MACHO_SUFFIX ?
= $(TOOL_GXX4MACHO_SUFFIX
)$(HOSTSUFF_EXE
)
1938 TOOL_GCC4MACHO_PREFIX ?
= $(TOOL_GXX4MACHO_PREFIX
)
1939 ifdef VBOX_WITH_MACOSX_COMPILERS_FROM_DEVEL
1940 TOOL_GCC4MACHO_PREFIX
:= $(VBOX_PATH_MACOSX_DEVEL_ROOT
)/usr
/bin
/$(TOOL_GCC4MACHO_PREFIX
)
1941 TOOL_GXX4MACHO_PREFIX
:= $(VBOX_PATH_MACOSX_DEVEL_ROOT
)/usr
/bin
/$(TOOL_GXX4MACHO_PREFIX
)
1942 TOOL_GCC4MACHO_SUFFIX
:= $(TOOL_GCC4MACHO_SUFFIX
) -isysroot
$(VBOX_PATH_MACOSX_SDK
)
1943 TOOL_GXX4MACHO_SUFFIX
:= $(TOOL_GXX4MACHO_SUFFIX
) -isysroot
$(VBOX_PATH_MACOSX_SDK
)
1945 ## @todo WTF do we do the -m32/64 stuff here for these compilers? Also the visibility should be elsewhere...
1946 TOOL_GXX4MACHO_OBJC
= $(TOOL_GCC4MACHO_PREFIX
)gcc
$(TOOL_GCC4MACHO_SUFFIX
) $(if-expr
$(KBUILD_TARGET_ARCH
) == "x86",-m32
,-m64
) -fvisibility
=hidden
1947 TOOL_GXX4MACHO_OBJCXX
= $(TOOL_GCC4MACHO_PREFIX
)gcc
$(TOOL_GCC4MACHO_SUFFIX
) $(if-expr
$(KBUILD_TARGET_ARCH
) == "x86",-m32
,-m64
) -fvisibility
=hidden
-fvisibility-inlines-hidden
1949 VBOX_DARWIN_DEF_SDK_DEFS
:= MAC_OS_X_VERSION_MIN_REQUIRED
=$(subst .
,,$(VBOX_DEF_MACOSX_VERSION_MIN
))0 \
1950 MAC_OS_X_VERSION_MAX_ALLOWED
=$(subst .
,,$(VBOX_DEF_MACOSX_VERSION_MIN
))0
1951 VBOX_DARWIN_DEF_SDK_CFLAGS
:= -mmacosx-version-min
=$(VBOX_DEF_MACOSX_VERSION_MIN
) -isysroot
$(VBOX_PATH_MACOSX_SDK
)
1952 VBOX_DARWIN_DEF_SDK_CXXFLAGS
:= -mmacosx-version-min
=$(VBOX_DEF_MACOSX_VERSION_MIN
) -isysroot
$(VBOX_PATH_MACOSX_SDK
)
1953 VBOX_DARWIN_DEF_SDK_OBJCFLAGS
:= -mmacosx-version-min
=$(VBOX_DEF_MACOSX_VERSION_MIN
) -isysroot
$(VBOX_PATH_MACOSX_SDK
)
1954 VBOX_DARWIN_DEF_SDK_OBJCXXFLAGS
:= -mmacosx-version-min
=$(VBOX_DEF_MACOSX_VERSION_MIN
) -isysroot
$(VBOX_PATH_MACOSX_SDK
)
1955 VBOX_DARWIN_DEF_SDK_LDFLAGS
= -mmacosx-version-min
=$(VBOX_DEF_MACOSX_VERSION_MIN
) -Wl
,-syslibroot
,$(VBOX_PATH_MACOSX_SDK
) \
1956 -Wl
,-headerpad_max_install_names
$(VBOX_DARWIN_CLASSIC_LINKER
) $(VBOX_DARWIN_NO_COMPACT_LINKEDIT
)
1958 # specific versions.
1959 ## @todo s/VBOX_DARWIN_DEF_SDK_10/VBOX_DARWIN_SDK_10/g
1961 if1of
($(VBOX_DEF_MACOSX_VERSION_MIN
), 10.4) # classic linker detection is bust otherwise
1962 VBOX_PATH_MACOSX_SDK_10_4 ?
= $(VBOX_PATH_MACOSX_SDK_ROOT
)/MacOSX10.4u.sdk
1963 VBOX_DARWIN_DEF_SDK_10_4_DEFS
:= MAC_OS_X_VERSION_MIN_REQUIRED
=1040 MAC_OS_X_VERSION_MAX_ALLOWED
=1040
1964 VBOX_DARWIN_DEF_SDK_10_4_CFLAGS
:= -mmacosx-version-min
=10.4 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_4
)
1965 VBOX_DARWIN_DEF_SDK_10_4_CXXFLAGS
:= -mmacosx-version-min
=10.4 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_4
)
1966 VBOX_DARWIN_DEF_SDK_10_4_OBJCFLAGS
:= -mmacosx-version-min
=10.4 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_4
)
1967 VBOX_DARWIN_DEF_SDK_10_4_OBJCXXFLAGS
:= -mmacosx-version-min
=10.4 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_4
)
1968 VBOX_DARWIN_DEF_SDK_10_4_LDFLAGS
:= -mmacosx-version-min
=10.4 -Wl
,-syslibroot
,$(VBOX_PATH_MACOSX_SDK_10_4
) \
1969 -Wl
,-headerpad_max_install_names
$(VBOX_DARWIN_CLASSIC_LINKER
)
1971 VBOX_DARWIN_DEF_SDK_10_4_CXXFLAGS
= $(error VBox
: $(if
$(target
),$(target
): ,)Using
10.4 SDK
)
1972 VBOX_DARWIN_DEF_SDK_10_4_LDFLAGS
= $(error VBox
: $(if
$(target
),$(target
): ,)Using
10.4 SDK
)
1975 if1of
($(VBOX_DEF_MACOSX_VERSION_MIN
), 10.4 10.5)
1976 VBOX_PATH_MACOSX_SDK_10_5 ?
= $(VBOX_PATH_MACOSX_SDK_ROOT
)/MacOSX10.5.sdk
1977 VBOX_DARWIN_DEF_SDK_10_5_DEFS
:= MAC_OS_X_VERSION_MIN_REQUIRED
=1050 MAC_OS_X_VERSION_MAX_ALLOWED
=1050
1978 VBOX_DARWIN_DEF_SDK_10_5_CFLAGS
:= -mmacosx-version-min
=10.5 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_5
)
1979 VBOX_DARWIN_DEF_SDK_10_5_CXXFLAGS
:= -mmacosx-version-min
=10.5 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_5
)
1980 VBOX_DARWIN_DEF_SDK_10_5_OBJCFLAGS
:= -mmacosx-version-min
=10.5 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_5
)
1981 VBOX_DARWIN_DEF_SDK_10_5_OBJCXXFLAGS
:= -mmacosx-version-min
=10.5 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_5
)
1982 VBOX_DARWIN_DEF_SDK_10_5_LDFLAGS
:= -mmacosx-version-min
=10.5 -Wl
,-syslibroot
,$(VBOX_PATH_MACOSX_SDK_10_5
) \
1983 -Wl
,-headerpad_max_install_names
$(VBOX_DARWIN_NO_COMPACT_LINKEDIT
)
1985 VBOX_DARWIN_DEF_SDK_10_5_CXXFLAGS
= $(error VBox
: $(if
$(target
),$(target
): ,)Using
10.5 SDK
)
1986 VBOX_DARWIN_DEF_SDK_10_5_LDFLAGS
= $(error VBox
: $(if
$(target
),$(target
): ,)Using
10.5 SDK
)
1989 if1of
($(VBOX_DEF_MACOSX_VERSION_MIN
), 10.4 10.5 10.6)
1990 VBOX_PATH_MACOSX_SDK_10_6 ?
= $(VBOX_PATH_MACOSX_SDK_ROOT
)/MacOSX10.6.sdk
1991 VBOX_DARWIN_DEF_SDK_10_6_DEFS
:= MAC_OS_X_VERSION_MIN_REQUIRED
=1060 MAC_OS_X_VERSION_MAX_ALLOWED
=1060
1992 VBOX_DARWIN_DEF_SDK_10_6_CFLAGS
:= -mmacosx-version-min
=10.6 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_6
)
1993 VBOX_DARWIN_DEF_SDK_10_6_CXXFLAGS
:= -mmacosx-version-min
=10.6 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_6
)
1994 VBOX_DARWIN_DEF_SDK_10_6_OBJCFLAGS
:= -mmacosx-version-min
=10.6 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_6
)
1995 VBOX_DARWIN_DEF_SDK_10_6_OBJCXXFLAGS
:= -mmacosx-version-min
=10.6 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_6
)
1996 VBOX_DARWIN_DEF_SDK_10_6_LDFLAGS
:= -mmacosx-version-min
=10.6 -Wl
,-syslibroot
,$(VBOX_PATH_MACOSX_SDK_10_6
) \
1997 -Wl
,-headerpad_max_install_names
1999 VBOX_DARWIN_DEF_SDK_10_6_CXXFLAGS
= $(error VBox
: $(if
$(target
),$(target
): ,)Using
10.6 SDK
)
2000 VBOX_DARWIN_DEF_SDK_10_6_LDFLAGS
= $(error VBox
: $(if
$(target
),$(target
): ,)Using
10.6 SDK
)
2003 if1of
($(VBOX_DEF_MACOSX_VERSION_MIN
), 10.4 10.5 10.6 10.7)
2004 ifndef VBOX_PATH_MACOSX_SDK_10_7
2005 ifneq ($(wildcard $(VBOX_PATH_MACOSX_SDK_ROOT
)/MacOSX10.7.sdk
),)
2006 VBOX_PATH_MACOSX_SDK_10_7
= $(VBOX_PATH_MACOSX_SDK_ROOT
)/MacOSX10.7.sdk
2008 VBOX_PATH_MACOSX_SDK_10_7
= $(PATH_DEVTOOLS
)/darwin.x86
/SDKs
/MacOSX10.7.sdk
2011 VBOX_DARWIN_DEF_SDK_10_7_DEFS
:= MAC_OS_X_VERSION_MIN_REQUIRED
=1070 MAC_OS_X_VERSION_MAX_ALLOWED
=1070
2012 VBOX_DARWIN_DEF_SDK_10_7_CFLAGS
:= -mmacosx-version-min
=10.7 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_7
)
2013 VBOX_DARWIN_DEF_SDK_10_7_CXXFLAGS
:= -mmacosx-version-min
=10.7 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_7
)
2014 VBOX_DARWIN_DEF_SDK_10_7_OBJCFLAGS
:= -mmacosx-version-min
=10.7 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_7
)
2015 VBOX_DARWIN_DEF_SDK_10_7_OBJCXXFLAGS
:= -mmacosx-version-min
=10.7 -isysroot
$(VBOX_PATH_MACOSX_SDK_10_7
)
2016 VBOX_DARWIN_DEF_SDK_10_7_LDFLAGS
:= -mmacosx-version-min
=10.7 -Wl
,-syslibroot
,$(VBOX_PATH_MACOSX_SDK_10_7
) \
2017 -Wl
,-headerpad_max_install_names
2019 VBOX_DARWIN_DEF_SDK_10_7_CXXFLAGS
= $(error VBox
: $(if
$(target
),$(target
): ,)Using
10.7 SDK
)
2020 VBOX_DARWIN_DEF_SDK_10_7_LDFLAGS
= $(error VBox
: $(if
$(target
),$(target
): ,)Using
10.7 SDK
)
2024 endif # target=darwin
2027 # Macro switching between @executable_path, @rpath and /Applications/VirtualBox.app
2028 # depending on whether the build is hardened or not (dylib install_name).
2030 ifeq ($(KBUILD_TARGET
),darwin
)
2031 ifndef VBOX_DYLD_EXECUTABLE_PATH
2032 ifdef VBOX_WITH_HARDENING
2033 VBOX_DYLD_EXECUTABLE_PATH
= $(VBOX_PATH_APP_PRIVATE_ARCH
)
2035 VBOX_DYLD_EXECUTABLE_PATH
= @executable_path
2037 VBOX_DYLD_EXECUTABLE_PATH
= @rpath
2038 VBOX_WITH_RELATIVE_RUNPATH
= @loader_path
/
2044 # Check for incompatible rpath combinations.
2046 if defined
(VBOX_WITH_RUNPATH
) && defined
(VBOX_WITH_ORIGIN
)
2047 $(error VBox
: VBOX_WITH_RUNPATH and VBOX_WITH_ORIGIN are mutually exclusive
)
2049 if defined
(VBOX_WITH_RELATIVE_RUNPATH
) && defined
(VBOX_WITH_ORIGIN
)
2050 $(error VBox
: VBOX_WITH_RELATIVE_RUNPATH and VBOX_WITH_ORIGIN are mutually exclusive
)
2052 if defined
(VBOX_WITH_RUNPATH
) && defined
(VBOX_WITH_RELATIVE_RUNPATH
)
2053 $(error VBox
: VBOX_WITH_RUNPATH and VBOX_WITH_RELATIVE_RUNPATH are mutually exclusive
)
2055 if defined
(VBOX_WITH_RELATIVE_RUNPATH
) && defined
(VBOX_WITH_HARDENING
)
2056 $(error VBox
: VBOX_WITH_RELATIVE_RUNPATH and VBOX_WITH_HARDENING are mutually exclusive
)
2060 # VBOX_WITH_ORIGIN translates into VBOX_WITH_RELATIVE_RUNPATH.
2062 # We use two helper variables for the VBOX_WITH_ORIGIN stuff:
2063 # VBOX_ORIGIN - Indirect expansion trick.
2064 # VBOX_GCC_RPATH_OPT - Different GCC/LD combinations needs different options.
2066 VBOX_ORIGIN
= $$ORIGIN
2067 ifeq ($(KBUILD_TARGET
),solaris
)
2068 VBOX_GCC_RPATH_OPT
= -R
2070 VBOX_GCC_RPATH_OPT
= -Wl
,-rpath
,
2071 VBOX_GCC_ORIGIN_OPT
= -Wl
,-z
,origin
2073 ifdef VBOX_WITH_ORIGIN
2074 VBOX_WITH_RELATIVE_RUNPATH
= $$(VBOX_ORIGIN
)
2081 VBOX_PATH_X11_ROOT
= $(PATH_ROOT
)/src
/VBox
/Additions
/x11
/x11include
2082 VBOX_PATH_X11_XFREE_4_3
= $(VBOX_PATH_X11_ROOT
)/4.3
2083 VBOX_PATH_X11_XORG_7_0
= $(VBOX_PATH_X11_ROOT
)/7.0
2084 VBOX_PATH_X11_XORG_7_1
= $(VBOX_PATH_X11_ROOT
)/7.1
2085 VBOX_PATH_X11_XORG_1_3
= $(VBOX_PATH_X11_ROOT
)/1.3
2086 VBOX_PATH_X11_XORG_1_4
= $(VBOX_PATH_X11_ROOT
)/1.4
2087 VBOX_PATH_X11_XORG_1_5
= $(VBOX_PATH_X11_ROOT
)/1.5
2088 VBOX_PATH_X11_XORG_1_6
= $(VBOX_PATH_X11_ROOT
)/1.6
2092 # crOpenGL related paths and variables.
2094 ifdef VBOX_WITH_CROGL
2095 ifdef VBOX_WITH_WDDM
2096 VBOX_WITH_CRHGSMI
= 1
2098 VBOX_PATH_CROGL_GLAPI
= $(PATH_ROOT
)/src
/VBox
/GuestHost
/OpenGL
/glapi_parser
2099 VBOX_PATH_CROGL_GENFILES
= $(PATH_OBJ
)/VBoxOGLgen
2100 VBOX_PATH_CROGL_INCLUDE
= $(PATH_ROOT
)/src
/VBox
/GuestHost
/OpenGL
/include
2101 VBOX_CROGL_API_FILES
= $(VBOX_PATH_CROGL_GLAPI
)/apiutil.py
$(VBOX_PATH_CROGL_GLAPI
)/APIspec.txt
2102 VBOX_CROGL_PYTHON_ENV
= $(REDIRECT
) $(if
$1,-E
'PYTHONPATH=$1',) $(if
$2,-o
$2,) $(if
$3,-i
$3) --
2104 if1of
($(KBUILD_HOST
), os2 win
)
2105 VBOX_PATH_CROGL_PYTHON_INCLUDE
= $(VBOX_PATH_CROGL_GLAPI
);$(PATH_ROOT
)/src
/VBox
/GuestHost
/OpenGL
/packer
;$(PATH_ROOT
)/src
/VBox
/HostServices
/SharedOpenGL
/crserverlib
2107 VBOX_PATH_CROGL_PYTHON_INCLUDE
= $(VBOX_PATH_CROGL_GLAPI
):$(PATH_ROOT
)/src
/VBox
/GuestHost
/OpenGL
/packer
:$(PATH_ROOT
)/src
/VBox
/HostServices
/SharedOpenGL
/crserverlib
2110 ifeq ($(KBUILD_TARGET
),win
)
2111 VBOX_LIB_OGL_CRUTIL
= $(PATH_OBJ
)/VBoxOGLcrutil
/VBoxOGLcrutil
$(VBOX_SUFF_LIB
)
2112 VBOX_LIB_OGL_HOSTCRUTIL
= $(PATH_OBJ
)/VBoxOGLhostcrutil
/VBoxOGLhostcrutil
$(VBOX_SUFF_LIB
)
2113 ifeq ($(KBUILD_TARGET
),x86
)
2114 VBOX_LIB_OGL_CRUTIL_X86
= $(VBOX_LIB_OGL_CRUTIL
)
2116 VBOX_LIB_OGL_CRUTIL_X86
= $(PATH_OBJ
)/VBoxOGLcrutil-x86
/VBoxOGLcrutil-x86
$(VBOX_SUFF_LIB
)
2119 VBOX_LIB_OGL_CRUTIL
= $(VBOX_PATH_ADDITIONS
)/VBoxOGLcrutil
$(VBOX_SUFF_DLL
)
2120 VBOX_LIB_OGL_HOSTCRUTIL
= $(PATH_STAGE_BIN
)/VBoxOGLhostcrutil
$(VBOX_SUFF_DLL
)
2123 if1of
($(KBUILD_TARGET
), freebsd linux solaris
)
2124 # VBOX_PATH_MESA_SOURCE = $(PATH_ROOT)/src/libs/mesa-7.2
2125 VBOX_PATH_MESA_SOURCE
= $(VBOX_PATH_X11_ROOT
)/mesa-7.2
2127 $(VBOX_PATH_MESA_SOURCE
) \
2128 $(VBOX_PATH_MESA_SOURCE
)/include \
2129 $(VBOX_PATH_MESA_SOURCE
)/src
/mesa
/ \
2130 $(VBOX_PATH_MESA_SOURCE
)/src
/mesa
/glapi \
2131 $(VBOX_PATH_MESA_SOURCE
)/src
/mesa
/main \
2132 $(VBOX_PATH_MESA_SOURCE
)/src
/mesa
/drivers
/dri
/common
2135 VBOX_DARWIN_OPENGL_INST
= obj
/VBoxOGL
/GL
/
2136 VBOX_DARWIN_OPENGL_HEADERS
= gl.h glu.h
2137 SDK_DARWIN-OPENGL
= Workaround SDK for the darwin OpenGL
include directorly layout layout.
2138 SDK_DARWIN-OPENGL_INCS
= $(PATH_OUT
)/obj
/VBoxOGL
2139 SDK_DARWIN-OPENGL_ORDERDEPS
= $(addprefix $(PATH_OUT
)/obj
/VBoxOGL
/GL
/,$(VBOX_DARWIN_OPENGL_HEADERS
))
2140 ## @todo kBuild: Using INTERMEDIATES doesn't work!
2145 VBOX_WINDOWS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_win.ico
2146 VBOX_WINDOWS_ADDITIONS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_win.ico
2147 VBOX_NSIS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox_win.ico
2148 VBOX_MACOSX_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Frontends
/VirtualBox
/images
/OSE
/VirtualBox.icns
2150 ifeq ($(KBUILD_HOST
),win
)
2151 VBOX_WINDOWS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Artwork
/VirtualBox-vista.ico
2152 VBOX_WINDOWS_ADDITIONS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Artwork
/VirtualBoxGA-vista.ico
2153 VBOX_NSIS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Artwork
/VirtualBoxGA-nsis.ico
2154 TOOL_VCC80X86_RC
:= $(PATH_DEVTOOLS
)/win.x86
/ddk
/6000/bin
/x86
/rc.exe
2155 TOOL_VCC80AMD64_RC
:= $(PATH_DEVTOOLS
)/win.x86
/ddk
/6000/bin
/x86
/rc.exe
2156 TOOL_VCC70_RC
:= $(PATH_DEVTOOLS
)/win.x86
/ddk
/6000/bin
/x86
/rc.exe
2158 VBOX_WINDOWS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Artwork
/VirtualBox-winxp.ico
2159 VBOX_WINDOWS_ADDITIONS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Artwork
/VirtualBoxGA-winxp.ico
2160 VBOX_NSIS_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Artwork
/VirtualBox-nsis.ico
2162 VBOX_MACOSX_ICON_FILE ?
= $(PATH_ROOT
)/src
/VBox
/Artwork
/VirtualBox.icns
2166 ifndef VBOX_NOINC_GCC_CONFIG_KMK
2168 # GCC stuff properties.
2169 # Most of this is resolved on first kmk invocation and cached in PATH_OUT.
2171 # Note! That a harmless warning is printed if the file doesn't exist.
2172 # Note! Changes in GCC are not detected automatically (yet).
2174 include $(KBUILD_PATH
)/tools
/$(VBOX_GCC_TOOL
).kmk
2175 ifneq ($(VBOX_GCC_TOOL
),$(VBOX_GCC32_TOOL
))
2176 include $(KBUILD_PATH
)/tools
/$(VBOX_GCC32_TOOL
).kmk
2179 # These tests never worked on Windows because of /dev/null, so, there
2180 # can be no harm in just dropping them until cygwin is mp safe.
2181 ifeq ($(KBUILD_HOST
),win
)
2182 VBOX_GCC_CHECK_CC
= $(2)
2183 VBOX_GCC_CHECK_CXX
= $(2)
2184 VBOX_GCC_CHECK_LD
= $(2)
2185 VBOX_GCC32_CHECK_CXX
= $(2)
2187 VBOX_GCC_CHECK_CC
= $(shell \
2188 if
$(TOOL_
$(VBOX_GCC_TOOL
)_CC
) $(subst -Wno-
,-W
,$(1)) -S
-o
/dev
/null
-xc
/dev
/null
> /dev
/null
2>&1; \
2190 else echo
"$(2)"; fi
; )
2192 VBOX_GCC_CHECK_CXX
= $(shell \
2193 if
$(TOOL_
$(VBOX_GCC_TOOL
)_CXX
) $(subst -Wno-
,-W
,$(1)) -S
-o
/dev
/null
-xc
++ /dev
/null
> /dev
/null
2>&1; \
2195 else echo
"$(2)"; fi
; )
2197 VBOX_GCC_CHECK_LD
= $(shell \
2198 if
$(TOOL_
$(VBOX_GCC_TOOL
)_LD
) -Wl
,$(1) $(if
$(eq
$(KBUILD_HOST
),darwin
),-Wl
$(COMMA
)-u
$(COMMA
)start
-Wl
$(COMMA
)-undefined
$(COMMA
)dynamic_lookup
,) -nostdlib
-o
/dev
/null
-xc
/dev
/null
> /dev
/null
2>&1 ;\
2199 then echo
"-Wl,$(1)"; \
2200 else echo
"$(2)"; fi
; )
2202 VBOX_GCC32_CHECK_CXX
= $(shell \
2203 if
$(TOOL_
$(VBOX_GCC32_TOOL
)_CXX
) $(1) -S
-o
/dev
/null
-xc
++ /dev
/null
> /dev
/null
2>&1; \
2205 else echo
"$(2)"; fi
; )
2208 ifeq ($(KBUILD_HOST
),win
)
2209 # This isn't important (yet) on windows, so cook the result until
2210 # cygwin is feeling better.
2211 VBOX_GCC_VERSION
:= $(int-add
$(int-mul
10000, 3), $(int-mul
100, 3), 3)
2213 # This is kind of bad, the returned string needs to be re-evaluated before use.
2214 # The reason for this hack is that the windows kmk_ash cannot deal with $((1+1)).
2215 # Some versions of gcc (e.g. openSUSE11) return only major.minor on `gcc -dumpversion`.
2216 VBOX_GCC_VERSION
= $(shell \
2217 $(1) -dumpversion |
$(SED_EXT
) 's|\([0-9]\)\.\([0-9]\)\.\{0,1\}\([0-9]\{0,1\}\).*|$$(int-add $$(int-mul 10000, \1), $$(int-mul 100, \2), $$(firstword \3 0))|' )
2220 # No $(QUIET) here as it's interesting to see what goes into the file.
2221 $(PATH_OUT
)/GCCConfig.kmk
: \
2222 $(PATH_ROOT
)/Config.kmk \
2225 $(VBOX_GCC_PATH_CC
) \
2226 $(VBOX_GCC_PATH_CXX
) \
2227 $(VBOX_GCC32_PATH_CC
) \
2228 $(VBOX_GCC32_PATH_CXX
)
2229 $(call MSG_GENERATE
,,$@
,)
2230 $(QUIET
)$(RM
) -f
'$@'
2231 $(QUIET
)$(MKDIR
) -p
$(@D
)
2233 # HC compiler switch detection.
2234 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_PATH_CC ?= $(which $(TOOL_$(VBOX_GCC_TOOL)_CC))'
2235 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_PATH_CXX ?= $(which $(TOOL_$(VBOX_GCC_TOOL)_CXX))'
2236 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_VERSION_CC ?= $(call VBOX_GCC_VERSION,$(TOOL_$(VBOX_GCC_TOOL)_CC))'
2237 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_VERSION_CXX ?= $(call VBOX_GCC_VERSION,$(TOOL_$(VBOX_GCC_TOOL)_CXX))'
2238 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_LIBGCC ?= $(shell $(TOOL_$(VBOX_GCC_TOOL)_CC) -print-libgcc-file-name)'
2239 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-pointer-sign ?= $(call VBOX_GCC_CHECK_CC,-Wno-pointer-sign,)'
2240 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-array_bounds ?= $(call VBOX_GCC_CHECK_CC,-Wno-array-bounds,)'
2241 # -Wextra produces additional useful warnings but includes -Wno-missing-field-initializers (too noisy)
2242 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wextra ?= $(call VBOX_GCC_CHECK_CC,-Wextra,)'
2243 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wlogical-op ?= $(call VBOX_GCC_CHECK_CC,-Wlogical-op,)'
2244 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-address ?= $(call VBOX_GCC_CHECK_CXX,-Wno-address,)'
2245 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-delete-non-virtual-dtor ?= $(call VBOX_GCC_CHECK_CXX,-Wno-delete-non-virtual-dtor,)'
2246 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-int-to-pointer-cast ?= $(call VBOX_GCC_CHECK_CC,-Wno-int-to-pointer-cast,)'
2247 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-invalid-offsetof ?= $(call VBOX_GCC_CHECK_CXX,-Wno-invalid-offsetof,)'
2248 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-missing-field-initializers ?= $(call VBOX_GCC_CHECK_CC,-Wno-missing-field-initializers,)'
2249 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-pointer-to-int-cast ?= $(call VBOX_GCC_CHECK_CC,-Wno-pointer-to-int-cast,)'
2250 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_Wno-variadic-macros ?= $(call VBOX_GCC_CHECK_CXX,-Wno-variadic-macros,)'
2251 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_fno-stack-protector ?= $(call VBOX_GCC_CHECK_CC,-fno-stack-protector,)'
2252 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_fno-dwarf2-cfi-asm ?= $(call VBOX_GCC_CHECK_CC,-fno-dwarf2-cfi-asm,)'
2253 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_fdiagnostics-show-option ?= $(call VBOX_GCC_CHECK_CC,-fdiagnostics-show-option,)'
2254 # Produce code optimized for the most common IA32/AMD64/EM64T processors. Introduced with gcc version 4.2.
2255 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_mtune-generic ?= $(call VBOX_GCC_CHECK_CC,-mtune=generic,)'
2256 $(QUIET
)$(APPEND
) '$@' 'VBOX_LD_as_needed ?= $(call VBOX_GCC_CHECK_LD,--as-needed,)'
2257 # gcc version < 3.4 has a bug in handling __attribute__((regparm(3))).
2258 # See http://osdir.com/ml/gcc.prs/2002-08/msg00223.html and probably http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20004
2259 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_BUGGY_REGPARM ?= $$(int-lt $$(VBOX_GCC_VERSION_CC),30400)'
2260 ifneq ($(KBUILD_TARGET
),l4
)
2261 # Set default attribute for ELF and MACH-O symbols to ``hidden'' to reduce the number
2262 # of relocation entries and PLT indirections in shared libraries. Don't allow for gcc version < 4.
2263 $(QUIET
)$(APPEND
) '$@' 'ifneq ($$(VBOX_GCC_VERSION_CC),)'
2264 $(QUIET
)$(APPEND
) '$@' ' ifneq ($$(int-ge $$(VBOX_GCC_VERSION_CC),40000),)'
2265 $(QUIET
)$(APPEND
) '$@' ' VBOX_GCC_fvisibility-hidden ?= $(call VBOX_GCC_CHECK_CC,-fvisibility=hidden -DVBOX_HAVE_VISIBILITY_HIDDEN -DRT_USE_VISIBILITY_DEFAULT,)'
2266 $(QUIET
)$(APPEND
) '$@' ' endif'
2267 $(QUIET
)$(APPEND
) '$@' 'endif'
2269 ifn1of
($(KBUILD_TARGET
),haiku l4
)
2270 # Set default attribute for inline functions to ``hidden'' to reduce the number
2271 # of relocation entries and PLT indirections in shared libraries. Don't allow for gcc version < 4.
2272 $(QUIET
)$(APPEND
) '$@' 'ifneq ($$(VBOX_GCC_VERSION_CXX),)'
2273 $(QUIET
)$(APPEND
) '$@' ' ifneq ($$(int-ge $$(VBOX_GCC_VERSION_CXX),40000),)'
2274 $(QUIET
)$(APPEND
) '$@' ' VBOX_GCC_fvisibility-inlines-hidden ?= $(call VBOX_GCC_CHECK_CXX,-fvisibility-inlines-hidden,)'
2275 $(QUIET
)$(APPEND
) '$@' ' endif'
2276 $(QUIET
)$(APPEND
) '$@' 'endif'
2278 ifeq ($(KBUILD_TARGET
),solaris
)
2279 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_msave-args ?= $(call VBOX_GCC_CHECK_CXX,-msave-args,)'
2280 # Detect the solaris assembler. It is used by the the 4.x gcc compilers,
2281 # apparently. It will not be able to handle IEMAll via a -pipe, only when
2282 # passed a file. The solaris assmbler rulez ... not!
2283 $(QUIET
)$(APPEND
) '$@' 'VBOX_AS_VERSION ?= $(shell `gcc -print-prog-name=as` -V -o /dev/null < /dev/null 2>&1 | kmk_sed -e '1!d
' -e 's
/^
as: *//' )'
2284 $(QUIET
)$(APPEND
) '$@' 'if $$(pos Sun Compiler Common,$$(VBOX_AS_VERSION)) > 0'
2285 $(QUIET
)$(APPEND
) '$@' ' VBOX_GCC_USING_SOLARIS_AS=1'
2286 $(QUIET
)$(APPEND
) '$@' 'endif'
2287 $(QUIET
)$(APPEND
) '$@' 'ifndef VBOX_GCC_USING_SOLARIS_AS'
2288 $(QUIET
)$(APPEND
) '$@' ' VBOX_GCC_pipe ?= -pipe'
2289 $(QUIET
)$(APPEND
) '$@' 'endif'
2291 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC_pipe ?= -pipe'
2293 # Find the compiler includes for IPRT no-crt.
2294 # Note that `$(dir $(gcc -print-libgcc-file-name))/include does not work for a 64-bit cross build on a 32-bit build host.
2295 ifeq ($(KBUILD_HOST
),win
)
2296 # With the cygwin issues and gcc on windows returning a useless path, just skip this on windows.
2297 $(QUIET
)$(APPEND
) '$@' 'VBOX_PATH_GCC_INCS ?= '
2299 $(QUIET
)$(APPEND
) '$@' 'VBOX_PATH_GCC_INCS ?= $(shell LC_ALL=C $(TOOL_$(VBOX_GCC_TOOL)_CC) -print-search-dirs|$(SED_EXT) -ne 's
+^
install: \
(.
*[^
/][^
/]*\
)/+\
1+p
')/include'
2301 # 32-bit (GC) compiler switch detection.
2302 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC32_PATH_CC ?= $(which $(TOOL_$(VBOX_GCC32_TOOL)_CC))'
2303 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC32_PATH_CXX ?= $(which $(TOOL_$(VBOX_GCC32_TOOL)_CXX))'
2304 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC32_VERSION_CC ?= $(call VBOX_GCC_VERSION,$(TOOL_$(VBOX_GCC32_TOOL)_CC))'
2305 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC32_VERSION_CXX ?= $(call VBOX_GCC_VERSION,$(TOOL_$(VBOX_GCC32_TOOL)_CXX))'
2306 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC32_LIBGCC ?= $(shell $(TOOL_$(VBOX_GCC32_TOOL)_CC) -print-libgcc-file-name)'
2307 $(QUIET
)$(APPEND
) '$@' 'VBOX_GCC32_Wno-variadic-macros ?= $(call VBOX_GCC32_CHECK_CXX,-Wno-variadic-macros,)'
2308 # darwin no_compact_linkedit starting at Xcode 3.2
2309 ifeq ($(KBUILD_HOST
),darwin
)
2310 $(QUIET
)$(APPEND
) '$@' 'VBOX_LD_no_compact_linkedit ?= $(call VBOX_GCC_CHECK_LD,-no_compact_linkedit,)'
2312 $(QUIET
)$(ECHO
) '========= START OF $@ ========='
2314 $(QUIET
)$(ECHO
) '=========== END OF $@ ========='
2316 include $(PATH_OUT
)/GCCConfig.kmk
2317 endif # !VBOX_NOINC_GCC_CONFIG_KMK
2320 # Warnings as errors.
2322 # GCC: We disable warnings on non-X86 systems because of the variadic
2323 # macro usage in the logger.
2325 ifdef VBOX_WITH_WARNINGS_AS_ERRORS
2326 if
$(VBOX_GCC_VERSION_CXX
) >= 40000
2327 VBOX_GCC_WERR ?
= -Werror
2329 VBOX_VCC_WERR ?
= -WX
2330 VBOX_VCC_LD_WERR ?
= ## @todo later also: -WX
2339 # Edits VirtualBox version, vendor and package strings in a text file.
2341 # The rule using this must list $(VBOX_SVN_REV_KMK) as a prerequisite.
2343 # @param 1 The input filename.
2344 # @param 2 The output filename.
2346 VBOX_EDIT_VERSION_CMD_FN
= $(SED
) \
2347 -e
's/@VBOX_VERSION_MAJOR@/$(VBOX_VERSION_MAJOR)/g' \
2348 -e
's/@VBOX_VERSION_MINOR@/$(VBOX_VERSION_MINOR)/g' \
2349 -e
's/@VBOX_VERSION_BUILD@/$(VBOX_VERSION_BUILD)/g' \
2350 -e
's/@VBOX_VERSION_STRING@/$(VBOX_VERSION_STRING)/g' \
2351 -e
's/@VBOX_SVN_REV@/$(VBOX_SVN_REV)/g' \
2352 -e
's/@VBOX_VENDOR@/$(VBOX_VENDOR)/g' \
2353 -e
's/@VBOX_VENDOR_SHORT@/$(VBOX_VENDOR_SHORT)/g' \
2354 -e
's/@VBOX_PRODUCT@/$(VBOX_PRODUCT)/g' \
2355 -e
's/@VBOX_C_YEAR@/$(VBOX_C_YEAR)/g' \
2356 -e
's/@VBOX_PACKAGE_STRING@/$(VBOX_PACKAGE_STRING)/g' \
2360 # Generates a rule for editing a file using VBOX_EDIT_VERSION_CMD_FN.
2362 # @param 1 The target name.
2363 # @param 2 The input filename relative to the current sub-makefile.
2364 # @param 3 The output filename relative to the target output dir.
2365 # Optional, defaults to 2.
2367 VBOX_EDIT_VERSION_RULE_FN
= $(eval
$(value VBOX_EDIT_VERSION_RULE_DEF
))
2368 define VBOX_EDIT_VERSION_RULE_DEF
2369 $$($(1)_0_OUTDIR
)/$(if
$(3),$(3),$(2)): $(PATH_SUB_CURRENT
)/$(2) $(VBOX_SVN_REV_KMK
) |
$$(dir $$@
)
2370 $(call MSG_GENERATE
,$(1),$@
,$<)
2371 $(QUIET
)$(call VBOX_EDIT_VERSION_CMD_FN
,$<,$@
)
2376 # Fill in am import library target based on a somewhat special windows .def file.
2378 # @param 1 The target name of the import library.
2379 # @param 2 The name of the real library.
2380 # @param 3 The .def-file paths relative to the current makefile.
2382 VBOX_GENERATE_IMPORT_TARGET_FN
= $(eval
$(VBOX_GENERATE_IMPORT_TARGET_DEF
))
2383 define VBOX_GENERATE_IMPORT_TARGET_DEF
2384 $(1)_TEMPLATE
= VBoxR3Dll
2385 $(1)_INST
= $(INST_LIB
)
2386 if
$(KBUILD_TARGET
) == "darwin"
2387 $(1)_LDFLAGS
= -install_name
$(VBOX_DYLD_EXECUTABLE_PATH
)/$(2)$(SUFF_DLL
)
2388 else ifn1of
($(KBUILD_TARGET
), os2 win
)
2389 $(1)_SONAME
= $(2)$(SUFF_DLL
)
2391 if1of
($(KBUILD_TARGET
), os2 win
)
2392 $(1)_SOURCES
= $$($(1)_0_OUTDIR
)/$(1)Imp.def
2393 $(1)_CLEAN
= $$($(1)_0_OUTDIR
)/$(1)Imp.def
2395 $(1)_SOURCES
= $$($(1)_0_OUTDIR
)/$(1)Imp.c
2396 $(1)_CLEAN
= $$($(1)_0_OUTDIR
)/$(1)Imp.c
2399 $$$$($(1)_SOURCES
): $(addprefix $(PATH_SUB_CURRENT
)/,$(3)) $(PATH_ROOT
)/src
/bldprogs
/deftoimp.sed |
$$$$(dir $$$$@
)
2400 $$(call MSG_GENERATE
,,$$@
)
2401 ifeq ($(KBUILD_TARGET
),os2
)
2403 -e
'/not-$(KBUILD_TARGET)/d' \
2404 -e
'/not-$(KBUILD_TARGET_ARCH)/d' \
2405 -e
's/^LIBRARY[[:space:]][[:space:]]*\(.*\)\.dll/LIBRARY \1 INITINSTANCE TERMINSTANCE\nDATA MULTIPLE\n/' \
2406 -e
's/^[ \t][ \t]*\([_a-zA-Z]\)/ _\1/' \
2407 -e
's/[ \t]DATA[ \t]*/ /' \
2408 --output
$$@
$(addprefix $(PATH_SUB_CURRENT
)/,$(3))
2409 else ifeq ($(KBUILD_TARGET
),win
)
2411 -e
'/not-$(KBUILD_TARGET)/d' \
2412 -e
'/not-$(KBUILD_TARGET_ARCH)/d' \
2413 --output
$$@
$(addprefix $(PATH_SUB_CURRENT
)/,$(3))
2415 $$(QUIET
)$$(APPEND
) -tn
$$@ \
2416 '#ifdef VBOX_HAVE_VISIBILITY_HIDDEN' \
2417 '# define EXPORT __attribute__((visibility("default")))' \
2418 '# define EXPORT_DATA __attribute__((visibility("default")))' \
2421 '# define EXPORT_DATA' \
2425 -e
'/not-$(KBUILD_TARGET)/d' \
2426 -e
'/not-$(KBUILD_TARGET_ARCH)/d' \
2427 -f
$(PATH_ROOT
)/src
/bldprogs
/deftoimp.sed \
2428 --append
$$@
$(addprefix $(PATH_SUB_CURRENT
)/,$(3))
2430 endef # VBOX_GENERATE_IMPORT_TARGET_DEF
2436 ifdef VBOX_SIGNING_MODE
2437 ifeq ($(KBUILD_HOST
),win
)
2442 # VBOX_PATH_SELFSIGN points to the Vista WDK bin/SelfSign directory.
2443 ifndef VBOX_PATH_SELFSIGN
2444 VBOX_PATH_SELFSIGN
:= $(lastword
$(sort $(wildcard $(PATH_DEVTOOLS
)/win.x86
/selfsign
/*)))
2445 ifeq ($(VBOX_PATH_SELFSIGN
),)
2446 VBOX_PATH_SELFSIGN
:= $(PATH_DEVTOOLS
)/win.x86
/selfsign
/r1
2449 VBOX_SIGNTOOL ?
= $(PATH_DEVTOOLS
)/bin
/retry.cmd
$(VBOX_PATH_SELFSIGN
)/SignTool.exe
2450 VBOX_INF2CAT ?
= $(VBOX_PATH_SELFSIGN
)/Inf2Cat.exe
2452 # There are three signing modes; 'test', 'development' and 'release'.
2453 ifeq ($(strip $(VBOX_SIGNING_MODE
)),test)
2454 VBOX_CERTIFICATE_SUBJECT_NAME ?
= MyTestCertificate
2455 VBOX_CERTIFICATE_SUBJECT_NAME_ARGS ?
= /n
"$(VBOX_CERTIFICATE_SUBJECT_NAME)"
2456 else if1of
($(VBOX_SIGNING_MODE
), release development
)
2457 VBOX_CERTIFICATE_SUBJECT_NAME ?
= Oracle Corporation
2458 VBOX_CERTIFICATE_SUBJECT_NAME_ARGS ?
= /n
"$(VBOX_CERTIFICATE_SUBJECT_NAME)"
2459 VBOX_CROSS_CERTIFICATE_FILE ?
= $(VBOX_PATH_SELFSIGN
)/MSCV-VSClass3.cer
2460 VBOX_CROSS_CERTIFICATE_FILE_ARGS ?
= /ac
"$(VBOX_CROSS_CERTIFICATE_FILE)"
2461 VBOX_TSA_URL ?
= http
://timestamp.verisign.com
/scripts
/timestamp.dll
2462 VBOX_TSA_URL_ARGS ?
= /t
"$(VBOX_TSA_URL)"
2464 $(error VBox
: Unknown VBOX_SIGNING_MODE
: $(VBOX_SIGNING_MODE
))
2466 VBOX_CERTIFICATE_STORE ?
= my
2467 VBOX_CERTIFICATE_STORE_ARGS ?
= /s
"$(VBOX_CERTIFICATE_STORE)"
2469 ## Commands for signing a driver image after link.
2470 VBOX_SIGN_DRIVER_CMDS ?
= $(if
$(eq
$(tool_do
),LINK_LIBRARY
),,$(call VBOX_SIGN_FILE_FN
,$(out
)))
2472 # @param 1 The file to sign.
2473 # @param 2 File description. Optional.
2474 VBOX_SIGN_FILE_FN ?
= $(VBOX_SIGNTOOL
) sign \
2475 $(VBOX_CROSS_CERTIFICATE_FILE_ARGS
) \
2476 $(VBOX_CERTIFICATE_STORE_ARGS
) \
2477 $(VBOX_CERTIFICATE_SUBJECT_NAME_ARGS
) \
2478 $(VBOX_TSA_URL_ARGS
) \
2479 $(if
$(strip $(2)),/d
"$(strip $(2))",) \
2481 ## Create a security catalog file.
2482 # @param 1 The directory containing the stuff to sign.
2483 # @param 2 The expected .cat name. (Inf2Cat lowercases it)
2484 # @param 3 The list of OSes, separated by ';'.
2485 VBOX_MAKE_CAT_HLP_FN ?
= \
2487 $(NL
)$(TAB
)$(VBOX_INF2CAT
) /driver
:$(strip $(1)) /os
:$(strip $(subst ;,$(COMMA
),$(3))) /verbose \
2488 $(NL
)$(TAB
)$(MV
) $(2) $(2) \
2489 $(NL
)$(TAB
)$(call VBOX_SIGN_FILE_FN
,$(2))
2490 VBOX_MAKE_CAT64_FN ?
= $(call VBOX_MAKE_CAT_HLP_FN
,$(1),$(2),XP_X64
;Server2003_X64
;Vista_X64
)
2491 VBOX_MAKE_CAT32_FN ?
= $(call VBOX_MAKE_CAT_HLP_FN
,$(1),$(2),2000;XP_X86
;Server2003_X86
;Vista_X86
)
2492 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
2493 VBOX_MAKE_CAT_FN ?
= $(call VBOX_MAKE_CAT32_FN
,$(1),$(2))
2495 VBOX_MAKE_CAT_FN ?
= $(call VBOX_MAKE_CAT64_FN
,$(1),$(2))
2498 # Go nuts, sign everything.
2499 ifeq ($(strip $(VBOX_SIGNING_MODE
)),release
)
2500 ## Commands for signing an executable or a dll image after link.
2501 VBOX_SIGN_IMAGE_CMDS ?
= $(if
$(eq
$(tool_do
),LINK_LIBRARY
),,$(call VBOX_SIGN_FILE_FN
,$(out
)))
2503 ## Enable signing of the additions.
2504 VBOX_SIGN_ADDITIONS ?
= 1
2506 else ifeq ($(KBUILD_HOST
),darwin
)
2508 # Darwin code signing.
2510 # Currently release signing is done when packing. This may change later.
2511 # (Installer package signing is done elsewhere (VBOX_MACOSX_INSTALLER_SIGN).)
2513 ifeq ($(strip $(VBOX_SIGNING_MODE
)),test)
2514 VBOX_CERTIFICATE_SUBJECT_NAME ?
= $(error You
, need to set VBOX_CERTIFICATE_SUBJECT_NAME in LocalConfig.kmk.
)
2515 VBOX_CERTIFICATE_SUBJECT_NAME_ARGS ?
= --sign
"$(VBOX_CERTIFICATE_SUBJECT_NAME)"
2516 else if1of
($(VBOX_SIGNING_MODE
), release development
)
2517 VBOX_CERTIFICATE_SUBJECT_NAME ?
= Developer ID Application
: Oracle America
, Inc.
2518 VBOX_CERTIFICATE_SUBJECT_NAME_ARGS ?
= --sign
"$(VBOX_CERTIFICATE_SUBJECT_NAME)"
2520 $(error VBox
: Unknown VBOX_SIGNING_MODE
: $(VBOX_SIGNING_MODE
))
2523 VBOX_CODESIGN ?
= codesign
2524 ## Sign an application bundle, framework or kernel extension.
2525 # @param 1 The bundle to sign.
2526 # @param 2 Identifier, optional.
2527 VBOX_SIGN_BUNDLE_FN
= $(VBOX_CODESIGN
) \
2531 $(VBOX_CERTIFICATE_SUBJECT_NAME_ARGS
) \
2532 $(1) $(if
$(2),--identifier
"$(2)",)
2534 ## Sign a Mach-O image.
2535 # @param 1 The bundle to sign.
2536 # @param 2 Identifier, optional.
2537 VBOX_SIGN_MACHO_FN
= $(VBOX_CODESIGN
) \
2541 $(VBOX_CERTIFICATE_SUBJECT_NAME_ARGS
) \
2543 $(if
$(2),--identifier
"$(2)",)
2545 ## Sign a VMM Mach-O image.
2546 # @param 1 The bundle to sign.
2547 # @param 2 Identifier, optional.
2548 VBOX_SIGN_VMM_MOD_FN
= $(VBOX_CODESIGN
) \
2552 $(VBOX_CERTIFICATE_SUBJECT_NAME_ARGS
) \
2553 $(1) -D
$(1).codesign \
2554 $(if
$(2),--identifier
"$(2)",)
2557 # Not Windows or mac os x build host, ignore.
2558 VBOX_SIGNING_MODE
:=
2563 # Windows .inf editing.
2565 ifeq ($(KBUILD_TARGET_ARCH
),x86
)
2566 VBOX_EDIT_INF_FN
= $(call VBOX_EDIT_INF32_FN
,$(1),$(2))
2568 VBOX_EDIT_INF_FN
= $(call VBOX_EDIT_INF64_FN
,$(1),$(2))
2570 ## Edit an inf file an x86 target.
2571 # @param 1 The inf file to edit.
2572 # @param 2 The output file.
2573 VBOX_EDIT_INF32_FN
= $(SED
) $(if
$(VBOX_SIGNING_MODE
),-e
's/^;cat *//', -e
'/^;cat /d') \
2576 -e
's/^;edit-DriverVer.*/DriverVer = $(date-utc %m\/%d\/%Y),$(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)/' \
2579 ## Edit an inf file an x86 target.
2580 # @param 1 The inf file to edit.
2581 # @param 2 The output file.
2582 VBOX_EDIT_INF64_FN
= $(SED
) \
2583 $(if
$(VBOX_SIGNING_MODE
),-e
's/^;cat *//', -e
'/^;cat /d')\
2584 -e
's/^;amd64 *//' \
2586 -e
's/^;edit-DriverVer.*/DriverVer = $(date-utc %m\/%d\/%Y),$(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)/' \
2591 # Adjust kBuild defaults.
2593 kBuildGlobalDefaults_DEBUG_NOSTAGE.win
= true
2594 kBuildGlobalDefaults_DEBUG_NOSTAGE.os2
= true
2595 if1of
($(KBUILD_TARGET
), darwin win
)
2596 kBuildGlobalDefaults_LD_DEBUG
= split
2601 # Haiku resource and version generation.
2603 ifeq ($(KBUILD_HOST
),haiku
)
2604 VBOX_HAIKU_RCTOOL
:= rc
2605 VBOX_HAIKU_XRESTOOL
:= xres
2606 VBOX_HAIKU_SETVERSIONTOOL
:= setversion
2607 # XXX: install won't preserve attributes...
2608 VBOX_HAIKU_MIMESETTOOL
:= mimeset
2610 ## Add optional resources to the program, set its version info, and sniff its mime properties.
2611 # @param 1 The file to add resources to.
2612 # @param 2 The resource files.
2613 # @param 3 The target name.
2614 define VBOX_HAIKU_XRES_SETVER_FN
2615 $(if
$(2),$(call MSG_TOOL
,HaikuAddResources
,$(3),$(2))
2616 $(QUIET
)$(VBOX_HAIKU_XRESTOOL
) -o
$(1) $(2),)
2617 $(call MSG_TOOL
,HaikuSetVersion
,$(3))
2618 $(QUIET
)$(VBOX_HAIKU_SETVERSIONTOOL
) $(1) \
2619 -app
$(VBOX_VERSION_MAJOR
) $(VBOX_VERSION_MINOR
) $(VBOX_VERSION_BUILD
) d
$(VBOX_SVN_REV
) \
2620 -short
"$(VBOX_PRODUCT)" \
2621 -long
"$(VBOX_PRODUCT) $(VBOX_VERSION_STRING) $(shell /bin/echo -e '\xC2\xA9')2009-$(VBOX_C_YEAR) $(VBOX_VENDOR)"
2622 $(call MSG_TOOL
,HaikuMimeSet
,$(3))
2623 $(QUIET
)$(VBOX_HAIKU_MIMESETTOOL
) -f
$(1)
2626 VBOX_HAIKU_XRES_SETVER_CMDS ?
= $(if
$(eq
$(tool_do
),LINK_PROGRAM
),$(call VBOX_HAIKU_XRES_SETVER_FN
,$(out
),$($(target
)_RSRCS
),$(target
)),)
2630 # Default prefixes and suffixes.
2633 if1of
($(KBUILD_TARGET
), os2 win
)
2634 VBOX_SUFF_LIB
= .lib
2638 VBOX_SUFF_DLL
= $(SUFF_DLL
)
2639 ifeq ($(KBUILD_TARGET
),os2
) # GXX3OMF produces out .o at the moment.
2642 VBOX_SUFF_OBJ
= $(SUFF_OBJ
)
2644 VBOXW32GUEST_SUFF_LIB
= .lib
2645 VBOXLNX32GUEST_SUFF_LIB
= .a
2648 # SDKs for external libraries.
2650 SDK_VBOX_LIBXML2
= .
2651 SDK_VBOX_LIBXML2_INCS ?
= $(PATH_ROOT
)/src
/libs
/libxml2-2.6
.31/include
2652 SDK_VBOX_LIBXML2_DEFS ?
= _REENTRANT
2653 SDK_VBOX_LIBXML2_DEFS.win
+= WIN32 _WINDOWS _MBCS
2654 # note: no linking to LIB here, we do that explicitly in src/VBox/Runtime/Makefile.kmk to link
2655 # libxml against VBoxRT
2658 SDK_VBOX_LIBPNG_INCS ?
= $(PATH_ROOT
)/src
/libs
/libpng-1.2
.8
2659 SDK_VBOX_LIBPNG_LIBS ?
= $(PATH_STAGE_LIB
)/VBox-libpng
$(VBOX_SUFF_LIB
)
2662 if1of
($(KBUILD_TARGET
), os2 solaris win
)
2663 SDK_VBOX_ZLIB_INCS ?
= $(PATH_ROOT
)/src
/libs
/zlib-1.2
.6
2664 SDK_VBOX_ZLIB_LIBS ?
= $(PATH_STAGE_LIB
)/VBox-zlib
$(VBOX_SUFF_LIB
)
2666 SDK_VBOX_ZLIB_INCS ?
=
2667 SDK_VBOX_ZLIB_LIBS ?
= z
2668 SDK_VBOX_ZLIB_DEFS.linux ?
= _LARGEFILE64_SOURCE
2671 SDK_VBOX_OPENSSL
= Only for VBoxRT and
/or statically linked programs.
2672 SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS
:= $(PATH_OUT
)/obj
/crypto-headers
/include
2673 SDK_VBOX_OPENSSL_INCS ?
= $(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS
)
2674 SDK_VBOX_OPENSSL_ORDERDEPS ?
= $(crypto-headers_1_TARGET
)
2675 SDK_VBOX_OPENSSL_LIBS ?
= \
2676 $(PATH_STAGE_LIB
)/VBox-libssl
$(VBOX_SUFF_LIB
) \
2677 $(PATH_STAGE_LIB
)/VBox-libcrypto
$(VBOX_SUFF_LIB
)
2679 SDK_VBOX_OPENSSL2
= What you should be using.
2680 SDK_VBOX_OPENSSL2_EXTENDS
= VBOX_OPENSSL
2681 if
"$(SDK_VBOX_OPENSSL_INCS)" == "$(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS)"
2682 SDK_VBOX_OPENSSL2_LIBS
= $(NO_SUCH_VARIABLE
)
2685 SDK_VBoxOpenSslExtPack
= Internal use only.
2686 SDK_VBoxOpenSslExtPack_INCS
= $(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS
)
2687 SDK_VBoxOpenSslExtPack_ORDERDEPS
= $(crypto-headers_1_TARGET
)
2688 SDK_VBoxOpenSslExtPack_LIBS
= \
2689 $(PATH_STAGE_LIB
)/VBoxExtPack-libssl
$(VBOX_SUFF_LIB
) \
2690 $(PATH_STAGE_LIB
)/VBoxExtPack-libcrypto
$(VBOX_SUFF_LIB
)
2692 SDK_VBOX_BLD_OPENSSL
= .
2693 SDK_VBOX_BLD_OPENSSL_EXTENDS
= VBOX_OPENSSL
2694 SDK_VBOX_BLD_OPENSSL_LIBS ?
= \
2695 $(PATH_STAGE_LIB
)/VBoxBldProg-libcrypto
$(VBOX_SUFF_LIB
)
2696 SDK_VBOX_BLD_OPENSSL_LIBS.linux ?
= \
2700 VBOX_WITH_LIBCURL
= 1
2701 SDK_VBOX_LIBCURL
= .
2702 SDK_VBOX_LIBCURL_INCS ?
= $(PATH_ROOT
)/src
/libs
/curl-7.27
.0/include
2703 SDK_VBOX_LIBCURL_LIBS ?
= $(PATH_STAGE_LIB
)/VBox-libcurl
$(VBOX_SUFF_LIB
)
2704 SDK_VBOX_LIBCURL_DEFS ?
= BUILDING_LIBCURL
2708 if1of
($(KBUILD_TARGET
), darwin linux os2 solaris win
)
2709 SDK_VBOX_FFMPEG_INCS ?
= \
2710 $(PATH_ROOT
)/src
/libs
/ffmpeg-20060710
/libavutil \
2711 $(PATH_ROOT
)/src
/libs
/ffmpeg-20060710
/libavcodec \
2712 $(PATH_ROOT
)/src
/libs
/ffmpeg-20060710
/libavformat
2713 ifeq ($(KBUILD_TARGET
),win
)
2714 ## @todo Michael! Where is $(PATH_STAGE_LIB)/VBoxFFmpegImp$(VBOX_SUFF_LIB) supposed to come from?
2715 #SDK_VBOX_FFMPEG_LIBS ?= $(PATH_STAGE_LIB)/VBoxFFmpeg.a
2716 SDK_VBOX_FFMPEG_LIBS ?
= $(PATH_STAGE_LIB
)/VBoxFFmpegImp.lib
2718 SDK_VBOX_FFMPEG_LIBS ?
= $(PATH_STAGE_BIN
)/VBoxFFmpeg
$(SUFF_DLL
)
2721 SDK_VBOX_FFMPEG_INCS ?
= /usr
/include/ffmpeg
/usr
/include/libpng
2722 SDK_VBOX_FFMPEG_LIBS ?
= avutil avcodec avformat
2727 if1of
($(KBUILD_TARGET
), darwin linux os2 solaris
)
2728 SDK_VBOX_VPX_INCS ?
= \
2729 $(PATH_ROOT
)/src
/libs
/libvpx
/vpx \
2730 $(PATH_ROOT
)/src
/libs
/libvpx
/vp8 \
2731 $(PATH_ROOT
)/src
/libs
/libvpx
/vpx_mem
2732 SDK_VBOX_VPX_LIBS ?
= $(PATH_STAGE_BIN
)/VBox-libvpx.so
2734 SDK_VBOX_VPX_LIBS ?
= $(PATH_STAGE_BIN
)/VBox-libvpx
$(SUFF_DLL
)
2738 SDK_VBOX_BOOST_DEFS ?
= BOOST_DISABLE_ASSERTS
2739 SDK_VBOX_BOOST_INCS ?
= $(PATH_ROOT
)/src
/libs
/boost-1.37
.0
2742 # Special SDK for the problematic NTDLL.LIB.
2744 SDK_VBOX_NTDLL
= Mini NTDLL import library
, required IPRT.
2745 SDK_VBOX_NTDLL_LIBS.x86 ?
= $(PATH_STAGE_LIB
)/RuntimeR3NtDll-x86.lib
2746 SDK_VBOX_NTDLL_LIBS.amd64 ?
= $(PATH_STAGE_LIB
)/RuntimeR3NtDll-amd64.lib
2749 # The linux kernel headers(/sources).
2751 if1of
($(KBUILD_TARGET
), linux
)
2752 ifeq ($(origin VBOX_LINUX_SRC
),undefined
)
2753 ifneq ($(wildcard /lib
/modules
/$(shell uname
-r
)/build
/include/linux
/autoconf.h
/lib
/modules
/$(shell uname
-r
)/build
/include/generated
/autoconf.h
),)
2754 export VBOX_LINUX_SRC
:= /lib
/modules
/$(shell uname
-r
)/build
2756 export VBOX_LINUX_SRC
:= /usr
/src
/linux
2759 ifneq ($(VBOX_LINUX_SRC
),)
2760 ifeq ($(origin VBOX_LINUX_INCS
),undefined
)
2761 export VBOX_LINUX_INCS
:= $(VBOX_LINUX_SRC
)/include
2762 # XXX hack alert! support split Linux kernels (make O=<build directory>)
2763 # XXX put this crap elsewhere
2764 kernelpath
:= $(shell $(SED_EXT
) -ne
's+^KERNELSRC.*= *\(.*\)+\1+p' $(VBOX_LINUX_SRC
)/Makefile
)
2765 ifeq ($(kernelpath
),)
2767 kernelpath
:= $(shell $(SED_EXT
) -ne
's+^MAKEARGS *:= *-C *\(\S*\).*+\1+p' $(VBOX_LINUX_SRC
)/Makefile
)
2769 ifneq ($(kernelpath
),)
2771 ifneq ($(patsubst /%,,$(kernelpath
)),)
2773 kernelpath
:= $(realpath
$(VBOX_LINUX_SRC
)/$(kernelpath
))
2776 ifneq ($(kernelpath
),)
2777 VBOX_LINUX_INCS
+= $(VBOX_LINUX_SRC
)/include2
$(kernelpath
)/include
2779 kernelpath
:= $(VBOX_LINUX_SRC
)
2782 VBOX_LINUX_INCS
+= $(kernelpath
)/include/asm-i386
/mach-default \
2783 $(kernelpath
)/include/asm-x86
/mach-default \
2784 $(kernelpath
)/arch
/x86
/include \
2785 $(kernelpath
)/arch
/x86
/include/asm
/mach-default \
2786 $(kernelpath
)/arch
/x86
/include/generated \
2787 $(kernelpath
)/include
2790 # Since Linux 2.6.15, <linux/autoconf.h> is included like this. It cannot hurt to do the
2791 # same for older Linux kernels
2792 ifneq ($(wildcard $(VBOX_LINUX_SRC
)/include/linux
/kconfig.h
),)
2794 export VBOX_LINUX_INCLUDE
:= -include $(VBOX_LINUX_SRC
)/include/linux
/kconfig.h
2795 else ifneq ($(wildcard $(VBOX_LINUX_SRC
)/include/generated
/autoconf.h
),)
2797 export VBOX_LINUX_INCLUDE
:= -include $(VBOX_LINUX_SRC
)/include/generated
/autoconf.h
2798 else ifneq ($(wildcard $(VBOX_LINUX_SRC
)/include/linux
/autoconf.h
),)
2800 export VBOX_LINUX_INCLUDE
:= -include $(VBOX_LINUX_SRC
)/include/linux
/autoconf.h
2805 # Determine Solaris version.
2807 ifeq ($(KBUILD_TARGET
),solaris
)
2808 ifeq ($(origin VBOX_SOLARIS_VERSION
),undefined
)
2809 $(eval
export VBOX_SOLARIS_VERSION
:= $(shell uname
-r |
$(SED_EXT
) 's|\([0-9]*\)\.\([0-9]*\)|$$(int-add $$(int-mul 100, \1), \2)|' ))
2811 ifeq ($(VBOX_SOLARIS_VERSION
),510)
2812 DEFS.solaris
+= RT_OS_SOLARIS_10
2813 # Solaris 10 does not include crossbow.
2815 # We cannot compile additions on Solaris 10, due kernel interface deps
2816 VBOX_WITHOUT_ADDITIONS
:= 1
2817 VBOX_WITH_ADDITIONS
=
2818 else ifeq ($(VBOX_SOLARIS_VERSION
),511)
2819 # uname -v can report "snv_XYZ" or "11.X"
2820 VBOX_SOLARIS_11_VERSION
= $(shell uname
-v | sed
's/snv_//' | cut
-f1
-d
'.')
2821 ifeq ($(VBOX_SOLARIS_11_VERSION
),11)
2822 VBOX_SOLARIS_11_FULLVERSION
= $(shell pkg contents
-H
-t set
-o pkg.fmri entire |
$(SED_EXT
) -e
'1!d' -e
's/^.*\@//;s/\:.*//;s/.*,//')
2823 # FULLVERSION format e.g. "5.11-0.175.1.0.0.16.0", we're interested in 175 (VERSION), 1 (UPDATE), 16 (BUILD).
2824 VBOX_SOLARIS_11_VERSION
= $(word 2, $(subst .
, ,$(word 2,$(subst -, ,$(VBOX_SOLARIS_11_FULLVERSION
)))))
2825 VBOX_SOLARIS_11_UPDATE_VERSION
= $(word 3, $(subst .
, ,$(word 2,$(subst -, ,$(VBOX_SOLARIS_11_FULLVERSION
)))))
2826 VBOX_SOLARIS_11_BUILD_VERSION
= $(word 6, $(subst .
, ,$(word 2,$(subst -, ,$(VBOX_SOLARIS_11_FULLVERSION
)))))
2829 # OSS audio support for Solaris
2830 VBOX_WITH_SOLARIS_OSS
:= $(if-expr
$(VBOX_SOLARIS_11_VERSION
) >= 115,1,)
2837 TOOL_VBoxTpG
= The VirtualBox Tracepoint Generator
2838 TOOL_VBoxTpG_DTRACE_DEPORD
= $(VBOX_VBOXTPG
)
2839 TOOL_VBoxTpG_DTRACE_HDR_FLAGS
:= \
2840 $(if-expr
$(intersects
$(KBUILD_TARGET_ARCH
),$(KBUILD_ARCHES_64
)),-64,-32) \
2841 -h
--host-
$(VBOX_HC_ARCH_BITS
)-bit
#-vvv
2842 define TOOL_VBoxTpG_DTRACE_HDR_CMDS
2843 $(QUIET
)$(VBOX_VBOXTPG
) $(flags
) -o
"$(out)" -s
"$(source)"
2845 TOOL_VBoxTpG_DTRACE_OBJ_NOT_NEEDED
:=
2846 TOOL_VBoxTpG_DTRACE_OBJ_FLAGS
:= -G
--host-
$(VBOX_HC_ARCH_BITS
)-bit
#-vvv
2847 define TOOL_VBoxTpG_DTRACE_OBJ_CMDS
2848 $(QUIET
)$(VBOX_VBOXTPG
) \
2849 $(if-expr
$(intersects
$(bld_trg_arch
),$(KBUILD_ARCHES_64
)),-64,-32) \
2851 -o
"$(out)" -s
"$(source)"
2856 # VBoxTpG tool - Disabled, only generate the header.
2858 TOOL_VBoxTpG-Disabled
= The VirtualBox Tracepoint Generator
, disabled.
2859 TOOL_VBoxTpG-Disabled_DTRACE_DEPORD
= $(VBOX_VBOXTPG
)
2860 TOOL_VBoxTpG-Disabled_DTRACE_HDR_FLAGS
:= -h
2861 define TOOL_VBoxTpG-Disabled_DTRACE_HDR_CMDS
2862 $(QUIET
)$(VBOX_VBOXTPG
) $(flags
) -o
"$(out)" -s
"$(source)"
2864 TOOL_VBoxTpG-Disabled_DTRACE_OBJ_NOT_NEEDED
:= $(KBUILD_OSES
)
2868 # dtrace+VBoxTpG tool for ring-3 to ring-0 pointer conversion.
2870 TOOL_DTraceAndVBoxTpG
= DTrace and the VirtualBox Tracepoint Generator working together on static ring-3 probes.
2871 TOOL_DTraceAndVBoxTpG_EXTENDS
= StandardDTrace
2872 TOOL_DTraceAndVBoxTpG_DTRACE_DEPORD
= $(VBOX_VBOXTPG
)
2873 TOOL_DTraceAndVBoxTpG_DTRACE_HDR_CMDS
=
2874 define TOOL_DTraceAndVBoxTpG_DTRACE_HDR_CMDS
2875 $(TOOL_StandardDTrace_DTRACE_HDR_CMDS
)
2876 $(QUIET
)$(VBOX_VBOXTPG
) --generate-wrapper-header
--host-
$(VBOX_HC_ARCH_BITS
)-bit
--ring-3-context \
2877 $(filter-out -C
, $(filter-out -h
,$(flags
))) \
2878 -o
"$(out).tmp" -s
"$(source)"
2879 $(APPEND
) "$(out).tmp"
2880 $(SED
) -e
's/\(#define.*\)(arg0/\1_ORIGINAL(arg0/' --append
"$(out).tmp" "$(out)"
2881 $(MV
) -f
-- "$(out).tmp" "$(out)"
2883 TOOL_DTraceAndVBoxTpG_DTRACE_OBJ_NOT_NEEDED
= $(TOOL_StandardDTrace_DTRACE_OBJ_NOT_NEEDED
)
2884 TOOL_DTraceAndVBoxTpG_DTRACE_OBJ_CMDS
= $(TOOL_StandardDTrace_DTRACE_OBJ_CMDS
)
2887 ifdef VBOX_WITH_RAW_MODE
2889 # Template for building RC things.
2891 TEMPLATE_VBoxRc
= VBox Raw-Mode Context
2892 TEMPLATE_VBoxRc_ASTOOL
= $(VBOX_ASTOOL
)
2893 TEMPLATE_VBoxRc_ASFLAGS
= $(VBOX_ASFLAGS32
)
2894 TEMPLATE_VBoxRc_DEFS
= IN_RC IPRT_NO_CRT RT_WITH_NOCRT_ALIASES
$(ARCH_BITS_DEFS
)
2895 TEMPLATE_VBoxRc_INCS
= $(PATH_ROOT
)/include/iprt
/nocrt
2896 TEMPLATE_VBoxRc_SYSSUFF
= .gc
2897 TEMPLATE_VBoxRc_BLD_TRG_ARCH
= x86
2898 TEMPLATE_VBoxRc_MODE
= a
+r
,u
+w
2900 TEMPLATE_VBoxRc_USES
+= dtrace
2901 TEMPLATE_VBoxRc_DTRACE_HDR_FLAGS
= --raw-mode-context
2902 TEMPLATE_VBoxRc_DTRACE_OBJ_FLAGS
= --raw-mode-context
--probe-fn-name
"VMMRCProbeFire"
2903 ifdef VBOX_WITH_DTRACE_RC
2904 TEMPLATE_VBoxRc_DTRACETOOL
= VBoxTpG
2905 TEMPLATE_VBoxRc_DEFS
+= VBOX_WITH_DTRACE VBOX_WITH_DTRACE_RC
2907 TEMPLATE_VBoxRc_DTRACETOOL
= VBoxTpG-Disabled
2910 ifeq ($(VBOX_LDR_FMT32
),pe
)
2911 TEMPLATE_VBoxRc_TOOL
= $(VBOX_VCC_TOOL_STEM
)X86
2912 ifdef TODO_MORE_WARNINGS
2913 TEMPLATE_VBoxRc_CXXFLAGS
= -Zi
-Zl
-GR-
-EHs-
-GF
-GS-
-Zc
:wchar_t-
-Gs8192
$(VBOX_VCC_GC_OPT
) $(VBOX_VCC_GC_FP
) -W4
-wd4244
-wd4996
-wd4127
-wd4100
-wd4214
-wd4706
$(VBOX_VCC_WERR
)
2915 TEMPLATE_VBoxRc_CXXFLAGS
= -Zi
-Zl
-GR-
-EHs-
-GF
-GS-
-Zc
:wchar_t-
-Gs8192
$(VBOX_VCC_GC_OPT
) $(VBOX_VCC_GC_FP
) -W3
-wd4244
-wd4996
$(VBOX_VCC_WERR
)
2917 TEMPLATE_VBoxRc_CFLAGS
= $(TEMPLATE_VBoxRc_CXXFLAGS
)
2918 TEMPLATE_VBoxRc_LDFLAGS
= -Driver
-Subsystem
:NATIVE
-Incremental
:NO
-Align
:64 -MapInfo
:Exports
-NoD
$(VBOX_VCC_LD_WERR
) -Debug
2919 TEMPLATE_VBoxRc_LIBS
= \
2920 $(PATH_SDK_
$(VBOX_WINDDK
)_LIB.x86
)/int64.lib
2921 TEMPLATE_VBoxRc_LIBS
+= \
2922 $(PATH_STAGE_LIB
)/RuntimeRCStub
$(VBOX_SUFF_LIB
)
2923 TEMPLATE_VBoxRc_POST_CMDS
= $(VBOX_SIGN_IMAGE_CMDS
)
2926 ifeq ($(VBOX_LDR_FMT32
),elf
)
2927 TEMPLATE_VBoxRc_TOOL
= $(VBOX_GCC32_TOOL
)
2928 TEMPLATE_VBoxRc_CXXFLAGS
= -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC32_Wno-variadic-macros
) -fno-exceptions
$(VBOX_GCC_GC_OPT
) $(VBOX_GCC_GC_FP
) -mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
-fno-strict-aliasing
$(VBOX_GCC_fno-stack-protector
) $(VBOX_GCC_fvisibility-hidden
) $(VBOX_GCC_fvisibility-inlines-hidden
) -fno-rtti
2929 TEMPLATE_VBoxRc_CFLAGS
= -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC32_Wno-variadic-macros
) -fno-exceptions
$(VBOX_GCC_GC_OPT
) $(VBOX_GCC_GC_FP
) -mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
-fno-strict-aliasing
$(VBOX_GCC_fno-stack-protector
) $(VBOX_GCC_fvisibility-hidden
)
2930 ifeq ($(KBUILD_TARGET
),solaris
)
2931 TEMPLATE_VBoxRc_LDFLAGS
= -r
2933 TEMPLATE_VBoxRc_LDFLAGS
= -nostdlib
-Bsymbolic
2934 # "temporarily", must fix the loader.
2935 TEMPLATE_VBoxRc_LDFLAGS
+= $(if
$(VBOX_DO_STRIP_MODULES
),-S
,)
2936 TEMPLATE_VBoxRc_LDFLAGS.release
= $(if
$(VBOX_DO_STRIP_MODULES
),-S
,)
2938 ifn1of
($(KBUILD_TARGET
), solaris freebsd
)
2939 TEMPLATE_VBoxRc_LIBS
= \
2940 $(VBOX_GCC32_LIBGCC
) # instricts
2944 ifeq ($(VBOX_LDR_FMT32
),macho
)
2945 TEMPLATE_VBoxRc_TOOL
= GXX4MACHO
2946 TEMPLATE_VBoxRc_DEFS
+= $(VBOX_DARWIN_DEF_SDK_DEFS
)
2947 TEMPLATE_VBoxRc_CXXFLAGS
= $(VBOX_DARWIN_DEF_SDK_CXXFLAGS
) -m32
-nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC32_Wno-variadic-macros
) -fno-common
-msoft-float
-static
$(VBOX_GCC_fno-stack-protector
) -fno-exceptions
$(VBOX_GCC_GC_OPT
) $(VBOX_GCC_GC_FP
) -fno-strict-aliasing
-fno-rtti
2948 TEMPLATE_VBoxRc_CFLAGS
= $(VBOX_DARWIN_DEF_SDK_CFLAGS
) -m32
-nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC32_Wno-variadic-macros
) -fno-common
-msoft-float
-static
$(VBOX_GCC_fno-stack-protector
) -fno-exceptions
$(VBOX_GCC_GC_OPT
) $(VBOX_GCC_GC_FP
) -fno-strict-aliasing
2949 TEMPLATE_VBoxRc_LDFLAGS
= $(VBOX_DARWIN_DEF_SDK_LDFLAGS
) -m32
-nostdlib
2950 #TEMPLATE_VBoxRc_LDFLAGS.release = -Wl,-S ???
2953 ifeq ($(VBOX_LDR_FMT32
),lx
)
2954 TEMPLATE_VBoxRc_TOOL
= GXX3OMF
2955 TEMPLATE_VBoxRc_CXXFLAGS
= -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC32_Wno-variadic-macros
) $(VBOX_GCC_GC_OPT
) $(VBOX_GCC_GC_FP
) -fno-strict-aliasing
-fno-exceptions
-fno-rtti
2956 TEMPLATE_VBoxRc_CFLAGS
= -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC32_Wno-variadic-macros
) $(VBOX_GCC_GC_OPT
) $(VBOX_GCC_GC_FP
) -fno-strict-aliasing
-fno-exceptions
2957 TEMPLATE_VBoxRc_LDFLAGS
= -Zdll
-nostdlib
2958 TEMPLATE_VBoxRc_LIBS
= \
2959 $(VBOX_GCC32_LIBGCC
) \
2966 # Template for building a RC ring-3 testcase (tstVMStructGC, tstDevStructGC).
2968 TEMPLATE_VBoxRcExe
= VBox Raw-Mode
as ring-3 testcase
2969 TEMPLATE_VBoxRcExe_EXTENDS
= VBoxRc
2970 TEMPLATE_VBoxRcExe_DEFS
= $(filter-out IPRT_NO_CRT RT_WITH_NOCRT_ALIASES
,$(TEMPLATE_VBoxRc_DEFS
))
2971 TEMPLATE_VBoxRcExe_INCS
= $(NO_SUCH_VARIABLE
)
2972 TEMPLATE_VBoxRcExe_MODE
= $(NO_SUCH_VARIABLE
)
2974 ifeq ($(VBOX_LDR_FMT32
),pe
)
2975 TEMPLATE_VBoxRcExe_LDFLAGS
= -Incremental
:NO
-MapInfo
:Exports
-NoD
-Debug
2976 TEMPLATE_VBoxRcExe_SDKS
= ReorderCompilerIncs
$(VBOX_WINPSDK
)
2977 TEMPLATE_VBoxRcExe_LIBS
= \
2978 $(PATH_TOOL_
$(VBOX_VCC_TOOL_STEM
)X86_LIB
)/libcmt.lib \
2979 $(PATH_TOOL_
$(VBOX_VCC_TOOL_STEM
)X86_LIB
)/oldnames.lib
2982 ifeq ($(VBOX_LDR_FMT32
),elf
)
2983 TEMPLATE_VBoxRcExe_CFLAGS
= $(filter-out -nostdinc
,$(TEMPLATE_VBoxRc_CFLAGS
)) -O0
2984 TEMPLATE_VBoxRcExe_CXXFLAGS
= $(filter-out -nostdinc
,$(TEMPLATE_VBoxRc_CXXFLAGS
)) -O0
2985 TEMPLATE_VBoxRcExe_LDFLAGS
= -g
2986 TEMPLATE_VBoxRcExe_LDFLAGS.dbgopt
= -g
2987 TEMPLATE_VBoxRcExe_LDFLAGS.strict
= -g
2988 TEMPLATE_VBoxRcExe_LDFLAGS.release
= -g
2989 if1of
($(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
), freebsd.amd64
)
2990 # The FreeBSD port of gcc isn't picking up -m32 where it should.
2991 TEMPLATE_VBoxRcExe_DEFS.
$(KBUILD_TARGET
) = $(TEMPLATE_VBoxRc_DEFS.
$(KBUILD_TARGET
)) IPRT_DONT_USE_SYSTEM_STDINT_H
2992 TEMPLATE_VBoxRcExe_LDFLAGS.
$(KBUILD_TARGET
) = /usr
/lib32
/crt1.o
/usr
/lib32
/crti.o
/usr
/lib32
/crtbegin.o
$(TEMPLATE_VBoxRc_LDFLAGS.
$(KBUILD_TARGET
)) -nostdlib
-v
2993 TEMPLATE_VBoxRcExe_LIBPATH.
$(KBUILD_TARGET
) = /usr
/lib32
2994 TEMPLATE_VBoxRcExe_LIBS.
$(KBUILD_TARGET
) = /usr
/lib32
/crtend.o
/usr
/lib32
/crtn.o
/usr
/lib32
/libc.so
2998 ifeq ($(VBOX_LDR_FMT32
),macho
)
2999 TEMPLATE_VBoxRcExe_CFLAGS
= $(filter-out -static
-nostdinc
,$(TEMPLATE_VBoxRc_CFLAGS
))
3000 TEMPLATE_VBoxRcExe_CXXFLAGS
= $(filter-out -static
-nostdinc
,$(TEMPLATE_VBoxRc_CXXFLAGS
))
3001 TEMPLATE_VBoxRcExe_LDFLAGS
= -g
-m32
3004 ifeq ($(VBOX_LDR_FMT32
),lx
)
3005 TEMPLATE_VBoxRcExe_CFLAGS
= $(filter-out -nostdinc
,$(TEMPLATE_VBoxRc_CFLAGS
))
3006 TEMPLATE_VBoxRcExe_CXXFLAGS
= $(filter-out -nostdinc
,$(TEMPLATE_VBoxRc_CXXFLAGS
))
3007 TEMPLATE_VBoxRcExe_LDFLAGS
= -g
3008 TEMPLATE_VBoxRcExe_LIBS
= $(NO_SUCH_VARIABLE
)
3010 endif # VBOX_WITH_RAW_MODE
3014 # Template for building R0 things.
3016 TEMPLATE_VBoxR0
= VBox Ring
0
3017 TEMPLATE_VBoxR0_ASTOOL
= $(VBOX_ASTOOL
)
3018 TEMPLATE_VBoxR0_ASFLAGS
= $(VBOX_ASFLAGS
)
3019 TEMPLATE_VBoxR0_DEFS
= IN_RING0 IN_RING0_AGNOSTIC IPRT_NO_CRT RT_WITH_NOCRT_ALIASES
$(ARCH_BITS_DEFS
)
3020 TEMPLATE_VBoxR0_INCS
= $(PATH_ROOT
)/include/iprt
/nocrt
3021 TEMPLATE_VBoxR0_SYSSUFF
= .r0
3022 TEMPLATE_VBoxR0_MODE
= a
+r
,u
+w
3024 TEMPLATE_VBoxR0_USES
+= dtrace
3025 TEMPLATE_VBoxR0_DTRACE_HDR_FLAGS
= --ring-0-context-agnostic
3026 TEMPLATE_VBoxR0_DTRACE_OBJ_FLAGS
= --ring-0-context-agnostic
3027 ifdef VBOX_WITH_DTRACE_R0
3028 TEMPLATE_VBoxR0_DTRACETOOL
= VBoxTpG
3029 TEMPLATE_VBoxR0_DEFS
+= VBOX_WITH_DTRACE VBOX_WITH_DTRACE_R0
3031 TEMPLATE_VBoxR0_DTRACETOOL
= VBoxTpG-Disabled
3034 ifeq ($(VBOX_LDR_FMT
),pe
)
3035 TEMPLATE_VBoxR0_TOOL
= $(VBOX_VCC_TOOL
)
3036 ifdef TODO_MORE_WARNINGS
3037 TEMPLATE_VBoxR0_CXXFLAGS
= -Zi
-Zl
-GR-
-EHs-
-GF
-GS-
-Zc
:wchar_t-
$(VBOX_VCC_OPT
) $(VBOX_VCC_FP
) -W4
-wd4244
-wd4127
-wd4100
-wd4214
-wd4706
-wd4996
$(VBOX_VCC_WERR
)
3039 TEMPLATE_VBoxR0_CXXFLAGS
= -Zi
-Zl
-GR-
-EHs-
-GF
-GS-
-Zc
:wchar_t-
$(VBOX_VCC_OPT
) $(VBOX_VCC_FP
) -W3
-wd4244
-wd4996
$(VBOX_VCC_WERR
)
3041 TEMPLATE_VBoxR0_CFLAGS
= $(TEMPLATE_VBoxR0_CXXFLAGS
)
3042 TEMPLATE_VBoxR0_LDFLAGS
= -Driver
-Subsystem
:NATIVE
-Incremental
:NO
-Align
:4096 -MapInfo
:Exports
-NoD
$(VBOX_VCC_LD_WERR
) -Debug
3043 ifdef VBOX_WITH_DTRACE_R0
3044 TEMPLATE_VBoxR0_LDFLAGS
+= -Merge
:VTGPrLc.Data
=VTGPrLc.Begin
-Merge
:VTGPrLc.End
=VTGPrLc.Begin
-Merge
:VTGPrLc.Begin
=VTGObj
3046 TEMPLATE_VBoxR0_LIBS
= \
3047 $(PATH_STAGE_LIB
)/RuntimeR0Stub
$(VBOX_SUFF_LIB
)
3048 include $(KBUILD_PATH
)/sdks
/$(VBOX_WINDDK
).kmk
## TODO: Add a kBuild feature for loading SDKs.
3049 TEMPLATE_VBoxR0_LIBS.x86
= \
3050 $(PATH_SDK_
$(VBOX_WINDDK
)_LIB.x86
)/int64.lib
3051 TEMPLATE_VBoxR0_POST_CMDS
= $(VBOX_SIGN_DRIVER_CMDS
)
3054 ifeq ($(VBOX_LDR_FMT
),elf
)
3055 TEMPLATE_VBoxR0_TOOL
= $(VBOX_GCC_TOOL
)
3056 TEMPLATE_VBoxR0_CFLAGS
= -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC_Wno-variadic-macros
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fno-exceptions
$(VBOX_GCC_fno-stack-protector
) -fno-common
$(VBOX_GCC_fvisibility-hidden
) -std
=gnu99
3057 TEMPLATE_VBoxR0_CXXFLAGS
= -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC_Wno-variadic-macros
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fno-exceptions
$(VBOX_GCC_fno-stack-protector
) -fno-common
$(VBOX_GCC_fvisibility-inlines-hidden
) $(VBOX_GCC_fvisibility-hidden
) -fno-rtti
3058 TEMPLATE_VBoxR0_CFLAGS.amd64
= -m64
-mno-red-zone
-mcmodel
=kernel
-mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
-fno-asynchronous-unwind-tables
-ffreestanding
3059 TEMPLATE_VBoxR0_CXXFLAGS.amd64
= -m64
-mno-red-zone
-mcmodel
=kernel
-mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
-fno-asynchronous-unwind-tables
3060 ifeq ($(KBUILD_TARGET
),solaris
)
3061 TEMPLATE_VBoxR0_LDFLAGS
= -r
3062 TEMPLATE_VBoxR0_LDFLAGS.solaris
= -u _init
-u _info
3063 TEMPLATE_VBoxR0_LIBS.solaris
= \
3064 $(PATH_STAGE_LIB
)/RuntimeR0Stub
$(VBOX_SUFF_LIB
)
3065 ifdef VBOX_GCC_USING_SOLARIS_AS
3066 TEMPLATE_VBoxR0_CFLAGS.amd64
+= -Wa
,-xmodel
=kernel
3067 TEMPLATE_VBoxR0_CXXFLAGS.amd64
+= -Wa
,-xmodel
=kernel
3070 TEMPLATE_VBoxR0_LDFLAGS
= -nostdlib
-Bsymbolic
3071 # temporarily, must fix the loader.
3072 TEMPLATE_VBoxR0_LDFLAGS
+= $(if
$(VBOX_DO_STRIP_MODULES
),-S
,)
3073 TEMPLATE_VBoxR0_LDFLAGS.release
= $(if
$(VBOX_DO_STRIP_MODULES
),-S
,)
3075 ifn1of
($(KBUILD_TARGET
),solaris freebsd
)
3076 TEMPLATE_VBoxR0_LIBS
= \
3077 $(VBOX_GCC_LIBGCC
) # instricts
3081 ifeq ($(VBOX_LDR_FMT
),macho
)
3082 TEMPLATE_VBoxR0_TOOL
= GXX4MACHO
3083 TEMPLATE_VBoxR0_DEFS
+= $(VBOX_DARWIN_DEF_SDK_DEFS
)
3084 TEMPLATE_VBoxR0_CXXFLAGS
= $(VBOX_DARWIN_DEF_SDK_CXXFLAGS
) -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC_Wno-variadic-macros
) \
3085 -fno-common
-msoft-float
-static
-fno-rtti
-fno-exceptions
$(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing \
3086 -mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
$(VBOX_GCC_fno-stack-protector
)
3087 TEMPLATE_VBoxR0_CXXFLAGS.amd64
= -m64
-mno-red-zone
-mno-sse3
-mno-sse4
-mno-sse4.1
-mno-sse4.2
-mno-sse4a
-fno-unwind-tables
3088 TEMPLATE_VBoxR0_CXXFLAGS.x86
= -m32
3089 TEMPLATE_VBoxR0_CFLAGS
= $(VBOX_DARWIN_DEF_SDK_CFLAGS
) -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC_Wno-variadic-macros
) \
3090 -fno-common
-msoft-float
-static
-fno-exceptions
$(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing \
3091 -mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
$(VBOX_GCC_fno-stack-protector
)
3092 TEMPLATE_VBoxR0_CFLAGS.amd64
= -m64
-mno-red-zone
-mno-sse3
-mno-sse4
-mno-sse4.1
-mno-sse4.2
-mno-sse4a
-fno-unwind-tables
3093 TEMPLATE_VBoxR0_CFLAGS.x86
= -m32
3094 TEMPLATE_VBoxR0_LDFLAGS
= $(VBOX_DARWIN_DEF_SDK_LDFLAGS
) -nostdlib
3095 #TEMPLATE_VBoxR0_LDFLAGS.release = -Wl,-S ???
3096 TEMPLATE_VBoxR0_LDFLAGS.amd64
= -m64
-static
3097 TEMPLATE_VBoxR0_LDFLAGS.x86
= -m32
3100 ifeq ($(VBOX_LDR_FMT
),lx
)
3101 TEMPLATE_VBoxR0_TOOL
= GXX3OMF
3102 TEMPLATE_VBoxR0_CFLAGS
= -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC_Wno-variadic-macros
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fno-exceptions
-fno-common
3103 TEMPLATE_VBoxR0_CXXFLAGS
= -nostdinc
-g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WERR
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC_Wno-variadic-macros
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fno-exceptions
-fno-common
-fno-rtti
3104 TEMPLATE_VBoxR0_LDFLAGS
= -nostdlib
-Zdll
3105 TEMPLATE_VBoxR0_LIBS
= \
3106 $(VBOX_GCC_LIBGCC
) \
3113 # Template for building SUPDRV R0 things.
3115 TEMPLATE_VBOXR0DRV
= VBox SUPDRV Ring
0
3116 TEMPLATE_VBOXR0DRV_ASTOOL
= $(VBOX_ASTOOL
)
3117 TEMPLATE_VBOXR0DRV_ASFLAGS
= $(VBOX_ASFLAGS
)
3118 TEMPLATE_VBOXR0DRV_DEFS
= IN_RING0 IN_RT_R0
$(ARCH_BITS_DEFS
)
3119 TEMPLATE_VBOXR0DRV_USES
+= dtrace
3120 ifdef VBOX_WITH_DTRACE_R0DRV
3121 TEMPLATE_VBOXR0DRV_DTRACETOOL
= VBoxTpG
3122 TEMPLATE_VBOXR0DRV_DEFS
+= VBOX_WITH_DTRACE VBOX_WITH_DTRACE_R0DRV
3123 ifdef VBOX_WITH_NATIVE_DTRACE
3124 TEMPLATE_VBOXR0DRV_DEFS
+= VBOX_WITH_NATIVE_DTRACE
3127 TEMPLATE_VBOXR0DRV_DTRACETOOL
= VBoxTpG-Disabled
3130 ifeq ($(KBUILD_TARGET
),win
)
3131 TEMPLATE_VBOXR0DRV_TOOL
= $(VBOX_VCC_TOOL
)
3132 TEMPLATE_VBOXR0DRV_RCDEFS
= \
3133 VBOX_VERSION_MAJOR
=\"$(VBOX_VERSION_MAJOR
)\" \
3134 VBOX_VERSION_MINOR
=\"$(VBOX_VERSION_MINOR
)\" \
3135 VBOX_VERSION_BUILD
=\"$(VBOX_VERSION_BUILD
)\" \
3136 VBOX_SVN_REV
=\"$(VBOX_SVN_REV
)\" \
3137 VBOX_VERSION_MAJOR_NR
=$(VBOX_VERSION_MAJOR
) \
3138 VBOX_VERSION_MINOR_NR
=$(VBOX_VERSION_MINOR
) \
3139 VBOX_VERSION_BUILD_NR
=$(VBOX_VERSION_BUILD
) \
3140 VBOX_SVN_REV_NR
=$(VBOX_SVN_REV
)
3141 TEMPLATE_VBOXR0DRV_DEFS.x86
= _X86_
3142 TEMPLATE_VBOXR0DRV_DEFS.x86
+= NO_INTERLOCKED_INTRINSICS
# Avoids intrisic VC/WDK trouble
3143 TEMPLATE_VBOXR0DRV_DEFS.x86
+= WIN9X_COMPAT_SPINLOCK
# Avoid multiply defined _KeInitializeSpinLock@4
3144 TEMPLATE_VBOXR0DRV_DEFS.amd64
= _AMD64_
3145 TEMPLATE_VBOXR0DRV_CXXFLAGS
= -Zi
-Zl
-GR-
-EHs-
-GF
-Gz
-W3
-GS-
-wd4996
-Zc
:wchar_t-
$(VBOX_VCC_OPT
) $(VBOX_VCC_FP
)
3146 TEMPLATE_VBOXR0DRV_CFLAGS
= $(TEMPLATE_VBOXR0DRV_CXXFLAGS
)
3147 TEMPLATE_VBOXR0DRV_LDFLAGS
= -Driver
-Subsystem
:NATIVE
-Incremental
:NO
-Align
:4096 -MapInfo
:Exports
-NoD
-Debug
3148 ifdef VBOX_WITH_DTRACE_R0DRV
3149 TEMPLATE_VBOXR0DRV_LDFLAGS
+= -Merge
:VTGPrLc.Data
=VTGPrLc.Begin
-Merge
:VTGPrLc.End
=VTGPrLc.Begin
-Merge
:VTGPrLc.Begin
=VTGObj
3151 TEMPLATE_VBOXR0DRV_POST_CMDS
= $(VBOX_SIGN_DRIVER_CMDS
)
3154 ifeq ($(KBUILD_TARGET
),linux
)
3155 TEMPLATE_VBOXR0DRV_TOOL
= $(VBOX_GCC_TOOL
)
3156 TEMPLATE_VBOXR0DRV_INSTTYPE.linux
= none
3157 TEMPLATE_VBOXR0DRV_DEFS
+= __KERNEL__ MODULE
3158 TEMPLATE_VBOXR0DRV_INCS
= $(VBOX_LINUX_INCS
)
3159 TEMPLATE_VBOXR0DRV_CFLAGS
= -nostdinc
-iwithprefix
include $(VBOX_LINUX_INCLUDE
) \
3160 $(VBOX_GCC_WARN
) -Wstrict-prototypes
$(VBOX_GCC_Wno-pointer-sign
) -Wno-sign-compare
$(VBOX_GCC_fdiagnostics-show-option
) \
3161 $(VBOX_GCC_fno-stack-protector
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) \
3162 -fno-strict-aliasing
-fno-common
-Werror-implicit-function-declaration
3163 TEMPLATE_VBOXR0DRV_CFLAGS.x86
= -mpreferred-stack-boundary
=2 -msoft-float
3164 TEMPLATE_VBOXR0DRV_CFLAGS.amd64
= -m64
-mno-red-zone
-mcmodel
=kernel
-mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow \
3165 -fno-reorder-blocks
-ffreestanding
-fno-asynchronous-unwind-tables
-funit-at-a-time \
3166 -Wno-sign-compare
-Wdeclaration-after-statement
3167 TEMPLATE_VBOXR0DRV_CXXFLAGS
= $(filter-out -Wstrict-prototypes
-Wno-pointer-sign
-ffreestanding
-Wdeclaration-after-statement
-Werror-implicit-function-declaration
,$(TEMPLATE_VBOXR0DRV_CFLAGS
) $(TEMPLATE_VBOXR0DRV_CFLAGS.
$(KBUILD_TARGET_ARCH
))) -fno-exceptions
-fno-rtti
3168 ifndef VBOX_LINUX_VERSION_2_4
3170 TEMPLATE_VBOXR0DRV_SYSSUFF
= .ko
3171 TEMPLATE_VBOXR0DRV_LDFLAGS.x86
= -m elf_i386
-r
3172 TEMPLATE_VBOXR0DRV_LDFLAGS.amd64
= -m elf_x86_64
-r
3175 TEMPLATE_VBOXR0DRV_SYSSUFF
= .o
3176 TEMPLATE_VBOXR0DRV_LDFLAGS
= -r
-s
3180 ifeq ($(KBUILD_TARGET
),os2
)
3181 TEMPLATE_VBOXR0DRV_TOOL
= GXX3OMF
3182 TEMPLATE_VBOXR0DRV_CXXFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC_Wno-variadic-macros
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fno-exceptions
-fno-rtti
3183 TEMPLATE_VBOXR0DRV_CFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC_Wno-variadic-macros
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fno-exceptions
3184 TEMPLATE_VBOXR0DRV_LIBS
= $(VBOX_GCC_LIBGCC
)
3185 # wlink thinks physdevice doesn't need fixups and should have a stack - stupid!
3186 TEMPLATE_VBOXR0DRV_LDFLAGS
= -Zlinker Option
-Zlinker internalrelocs
, -Zlinker togglerelocs
3189 ifeq ($(KBUILD_TARGET
),darwin
)
3190 TEMPLATE_VBOXR0DRV_TOOL
= GXX4MACHO
3191 TEMPLATE_VBOXR0DRV_DEFS
+= $(VBOX_DARWIN_DEF_SDK_DEFS
) KERNEL KERNEL_PRIVATE DRIVER_PRIVATE APPLE NeXT
3192 TEMPLATE_VBOXR0DRV_INCS
+= $(VBOX_PATH_MACOSX_SDK
)/System
/Library
/Frameworks
/Kernel.framework
/Headers
3193 ## @todo try use VBOX_GCC_PEDANTIC_CXX
3194 TEMPLATE_VBOXR0DRV_CXXFLAGS
= $(VBOX_DARWIN_DEF_SDK_CXXFLAGS
) \
3195 -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WARN
) -Wno-long-long
$(VBOX_GCC_fdiagnostics-show-option
) \
3196 -fno-common
-nostdinc
-fno-builtin
-finline \
3197 -fno-keep-inline-functions
-fno-exceptions
-msoft-float \
3198 -fapple-kext
-fno-rtti
-fcheck-new
-force_cpusubtype_ALL \
3199 $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fasm-blocks
3200 TEMPLATE_VBOXR0DRV_CXXFLAGS.amd64
= -m64
-mkernel
-mno-red-zone
-gdwarf-2
3201 TEMPLATE_VBOXR0DRV_CXXFLAGS.x86
= -m32
-static
3202 TEMPLATE_VBOXR0DRV_CFLAGS
= $(VBOX_DARWIN_DEF_SDK_CFLAGS
) \
3203 -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_WARN
) -Wno-long-long
-fno-common
-nostdinc
-fno-builtin
-finline \
3204 -fno-keep-inline-functions
-fno-exceptions
-msoft-float \
3205 -Wmissing-prototypes
-Wstrict-prototypes
-Wmissing-declarations \
3206 -Werror-implicit-function-declaration
-force_cpusubtype_ALL \
3207 $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fasm-blocks
3208 TEMPLATE_VBOXR0DRV_CFLAGS.amd64
= -m64
-mkernel
-mno-red-zone
-gdwarf-2
3209 TEMPLATE_VBOXR0DRV_CFLAGS.x86
= -m32
-static
3210 TEMPLATE_VBOXR0DRV_LDFLAGS
= $(filter-out $(VBOX_DARWIN_NO_COMPACT_LINKEDIT
),$(VBOX_DARWIN_DEF_SDK_LDFLAGS
)) \
3211 -nostdlib
-Wl
,-kext
,-new_linker
-Wl
,-Y
,1455 -keep_private_extern
3212 TEMPLATE_VBOXR0DRV_LDFLAGS.amd64
= -m64
3213 TEMPLATE_VBOXR0DRV_LDFLAGS.x86
= -m32
3214 TEMPLATE_VBOXR0DRV_LIBS
= kmodc
++ kmod cc_kext cpp_kext
$(VBOX_GCC_LIBGCC
)
3217 ifeq ($(KBUILD_TARGET
),solaris
)
3218 ## The Solaris /usr/platform/i86pc/include and /usr/include directories.
3219 VBOX_SOLARIS_SYS_INCS ?
= /usr
/platform
/i86pc
/include /usr
/include
3221 TEMPLATE_VBOXR0DRV_TOOL
= $(VBOX_GCC_TOOL
)
3222 TEMPLATE_VBOXR0DRV_DEFS
+= _MACHDEP _KERNEL _STRICT_STDC
3223 TEMPLATE_VBOXR0DRV_INCS
= $(VBOX_SOLARIS_SYS_INCS
)
3224 TEMPLATE_VBOXR0DRV_LDFLAGS
= -r
-dy
3225 TEMPLATE_VBOXR0DRV_LDFLAGS.amd64
= $(if
$(eq
$(KBUILD_HOST
),solaris
),-64,-m elf_x86_64
)
3226 # Exclude -Wall because of solaris headers' pragma ident warnings that gcc refuses to supress.
3227 TEMPLATE_VBOXR0DRV_CFLAGS
= -Wpointer-arith
-Winline
$(VBOX_GCC_Wno-pointer-sign
) \
3228 -Wmissing-prototypes
-Wstrict-prototypes
$(VBOX_GCC_fdiagnostics-show-option
) \
3229 -Wshadow
-Wuninitialized
-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable \
3230 -Wformat
-Wimplicit-int
-Wimplicit-function-declaration
-Werror-implicit-function-declaration
-Wparentheses \
3231 -O2
-fno-omit-frame-pointer
-ffreestanding
-nodefaultlibs
-fno-strict-aliasing
-fno-common
-std
=c99
3232 TEMPLATE_VBOXR0DRV_CFLAGS.x86
= -m32
-mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
3233 TEMPLATE_VBOXR0DRV_CFLAGS.amd64
= -m64
-mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
$(VBOX_GCC_msave-args
) \
3234 -mno-red-zone
-mcmodel
=kernel
$(if-expr defined
(VBOX_GCC_USING_SOLARIS_AS
),-Wa
$(COMMA
)-xmodel
=kernel
,) \
3235 -fno-reorder-blocks
-fno-asynchronous-unwind-tables
-funit-at-a-time
3236 TEMPLATE_VBOXR0DRV_CXXFLAGS
= -Wpointer-arith
-Winline \
3237 -Wshadow
-Wuninitialized
-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable \
3239 -O2
-nodefaultlibs
-fno-omit-frame-pointer
-fno-strict-aliasing
-fno-common
-fno-exceptions
-fno-rtti
3240 TEMPLATE_VBOXR0DRV_CXXFLAGS.x86
= $(TEMPLATE_VBOXR0DRV_CFLAGS.x86
)
3241 TEMPLATE_VBOXR0DRV_CXXFLAGS.amd64
= $(TEMPLATE_VBOXR0DRV_CFLAGS.amd64
)
3244 ifeq ($(KBUILD_TARGET
),freebsd
)
3245 # x86 FreeBSD (6.2 or something):
3246 # cc -O2 -fno-strict-aliasing -pipe -Werror -D_KERNEL -DKLD_MODULE \
3247 # -nostdinc -I- -I. -I@ -I@/contrib/altq -I@/../include -I/usr/include \
3248 # -finline-limit=8000 -fno-common -mno-align-long-strings -mpreferred-stack-boundary=2 \
3249 # -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -ffreestanding -Wall -Wredundant-decls -Wnested-externs \
3250 # -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -fformat-extensions \
3251 # -std=c99 -c ../my.c
3252 # ld -d -warn-common -r -d -o my.kld my.o
3254 # awk -f /usr/src/sys/modules/my/../../conf/kmod_syms.awk my.kld export_syms | xargs -J% objcopy % my.kld
3255 # ld -Bsharable -d warn-commnon -o my.ko my.kld
3257 # AMD64 FreeBSD (7.1):
3258 # cc -O2 -fno-strict-aliasing -pipe -D_KERNEL -DKLD_MODULE -std=c99 -nostdinc -I. -I@ -I@/contrib/altq \
3259 # -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common \
3260 # -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \
3261 # -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -ffreestanding \
3262 # -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign \
3263 # -fformat-extensions -c /usr/src/sys/modules/my/../../dev/my/if_my.c
3264 # ld -d -warn-common -r -d -o if_my.ko if_my.o
3266 # awk -f /usr/src/sys/modules/my/../../conf/kmod_syms.awk if_my.ko export_syms | xargs -J% objcopy % if_my.ko
3268 # Note: @ -> /usr/src/sys and machine -> /usr/src/sys/i386/include
3270 ## The location of the FreeBSD kernel source.
3271 VBOX_FREEBSD_SRC ?
= /usr
/src
/sys
3272 ## The FreeBSD /usr/include.
3273 VBOX_FREEBSD_SYS_INCS ?
= /usr
/include
3275 TEMPLATE_VBOXR0DRV_TOOL
= $(VBOX_GCC_TOOL
)
3276 TEMPLATE_VBOXR0DRV_LDTOOL
= FREEBSDKMODLD
3277 TEMPLATE_VBOXR0DRV_DEFS
+= _KERNEL KLD_MODULE
3278 TEMPLATE_VBOXR0DRV_INCS
= \
3279 $(VBOX_FREEBSD_SRC
) \
3280 $(VBOX_FREEBSD_SRC
)/contrib
/altq \
3281 $(VBOX_FREEBSD_SRC
)/..
/include \
3282 $(VBOX_FREEBSD_SYS_INCS
)
3283 # omitting: -Wcast-qual, -Wredundant-decls
3284 TEMPLATE_VBOXR0DRV_CFLAGS
= \
3285 $(VBOX_GCC_WARN
) -Wpointer-arith
-Winline
$(VBOX_GCC_Wno-pointer-sign
) $(VBOX_GCC_fdiagnostics-show-option
) \
3286 -Wstrict-prototypes
-Wmissing-prototypes
-Wstrict-prototypes \
3287 -Wimplicit-function-declaration
-Werror-implicit-function-declaration \
3288 -O2
-fformat-extensions
-ffreestanding
-fno-strict-aliasing
-fno-common
-finline-limit
=8000 \
3289 $(VBOX_GCC_fno-stack-protector
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) \
3291 TEMPLATE_VBOXR0DRV_CFLAGS.x86
= -m32
-mno-align-long-strings
-mpreferred-stack-boundary
=2 -mno-mmx
-mno-3dnow
-mno-sse
-mno-sse2
3292 TEMPLATE_VBOXR0DRV_CFLAGS.amd64
= -m64
--param inline-unit-growth
=100 --param large-function-growth
=1000 \
3293 -fno-omit-frame-pointer
-mcmodel
=kernel
-mno-red-zone
-mfpmath
=387 -mno-sse
-mno-sse2
-mno-mmx \
3294 -mno-3dnow
-msoft-float
-fno-asynchronous-unwind-tables
-Wundef
3295 TEMPLATE_VBOXR0DRV_CXXFLAGS
= -fno-exceptions
-fno-rtti \
3296 $(VBOX_GCC_WARN
) -Wpointer-arith
-Winline \
3297 -O2
-fno-format-extensions
-fno-strict-aliasing
-fno-common
-finline-limit
=8000 \
3298 $(VBOX_GCC_fno-stack-protector
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) \
3300 TEMPLATE_VBOXR0DRV_CXXFLAGS.x86
= $(TEMPLATE_VBOXR0DRV_CFLAGS.x86
)
3301 TEMPLATE_VBOXR0DRV_CXXFLAGS.amd64
= $(TEMPLATE_VBOXR0DRV_CFLAGS.amd64
)
3302 TEMPLATE_VBOXR0DRV_SYSSUFF
= .ko
3303 TEMPLATE_VBOXR0DRV_LDFLAGS
= -d
--warn-common
3304 TEMPLATE_VBOXR0DRV_LDFLAGS.x86
= -m elf_i386_fbsd
3305 TEMPLATE_VBOXR0DRV_LDFLAGS.amd64
= -m elf_x86_64_fbsd
3307 TOOL_FREEBSDKMODLD
= FreeBSD kernel module linker.
3308 # See kBuild/tools/GCC3.kmk for docs.
3309 TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT_MAYBE
= $(outbase
).map
3310 TOOL_FREEBSDKMODLD_LINK_SYSMOD_DEPEND
= $(foreach lib
,$(libs
),$(if
$(findstring $(lib
),$(subst /,x
,$(lib
))),, $(lib
)))
3311 TOOL_FREEBSDKMODLD_LINK_SYSMOD_DEPORD
=
3312 ifeq ($(KBUILD_TARGET_ARCH
),amd64
)
3313 TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT
=
3314 define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS
3315 # Link intermediate .kld (a relocatable object).
3316 ld $(flags
) -r
-o
$(out
) $(objs
) \
3317 $(foreach p
,$(libpath
), -L
$(p
))\
3318 $(foreach lib
,$(libs
), $(if
$(findstring $(lib
),$(subst /,x
,$(lib
))), -l
$(patsubst lib
%,%,$(basename $(lib
))), $(lib
)))
3319 # Strip non-exported symbols private and localize the exported ones.
3320 awk
-f
$(VBOX_FREEBSD_SRC
)/conf
/kmod_syms.awk
$(out
) $(if
$(othersrc
), $(othersrc
),/dev
/null
) \
3321 | xargs
-J
% objcopy
% $(out
)
3323 ## Strip debug info (comment out if debugging or something).
3324 objcopy
--strip-debug
$(out
)
3327 TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT
= $(outbase
).kld
3328 define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS
3329 # Link intermediate .kld (a relocatable object).
3330 ld $(flags
) -r
-o
$(outbase
).kld
$(objs
) \
3331 $(foreach p
,$(libpath
), -L
$(p
))\
3332 $(foreach lib
,$(libs
), $(if
$(findstring $(lib
),$(subst /,x
,$(lib
))), -l
$(patsubst lib
%,%,$(basename $(lib
))), $(lib
)))
3333 # Strip non-exported symbols private and localize the exported ones.
3334 awk
-f
$(VBOX_FREEBSD_SRC
)/conf
/kmod_syms.awk
$(outbase
).kld
$(if
$(othersrc
), $(othersrc
),/dev
/null
) \
3335 | xargs
-J
% objcopy
% $(outbase
).kld
3337 # Link the final .ko (a shared object).
3338 ld $(flags
) -Bshareable
-o
$(out
) $(outbase
).kld
3344 ifeq ($(KBUILD_TARGET
),haiku
)
3345 ## The Haiku include directories
3346 VBOX_HAIKU_SYS_INCS ?
= /boot
/develop
/headers
/os
/kernel
/boot
/develop
/headers
/os
/drivers
3348 TEMPLATE_VBOXR0DRV_TOOL
= $(VBOX_GCC_TOOL
)
3349 TEMPLATE_VBOXR0DRV_LDTOOL
= $(VBOX_GCC_TOOL
)
3350 TEMPLATE_VBOXR0DRV_DEFS
= _KERNEL_MODE
=1 _STRICT_STDC IN_RING0 IN_RT_R0
3351 TEMPLATE_VBOXR0DRV_INCS
= $(VBOX_HAIKU_SYS_INCS
)
3352 #TODO: sort this out
3353 TEMPLATE_VBOXR0DRV_LDFLAGS
= -shared
-no-undefined
-dc
-dy
-nostdlib
-rpath-link
/boot
/develop
/lib
/x86
--no-add-needed
/boot
/develop
/lib
/x86
/_KERNEL_
--no-add-needed
/boot
/develop
/lib
/x86
/haiku_version_glue.o
3354 TEMPLATE_VBOXR0DRV_CFLAGS
= -no-fpic \
3355 $(VBOX_GCC_WARN
) -Wstrict-prototypes
$(VBOX_GCC_Wno-pointer-sign
) -Wno-sign-compare \
3356 $(VBOX_GCC_fno-stack-protector
) $(VBOX_GCC_R0_OPT
) $(VBOX_GCC_R0_FP
) -fno-strict-aliasing
-fno-common
-Werror-implicit-function-declaration
3357 TEMPLATE_VBOXR0DRV_CFLAGS.x86
= -mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
3358 TEMPLATE_VBOXR0DRV_CFLAGS.x86
= -m32
-mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow
3359 TEMPLATE_VBOXR0DRV_CFLAGS.amd64
= -m64
-mno-sse
-mno-mmx
-mno-sse2
-mno-3dnow \
3360 -fno-reorder-blocks
-ffreestanding
-fno-asynchronous-unwind-tables
-funit-at-a-time \
3361 -Wno-sign-compare
-Wdeclaration-after-statement
3362 TEMPLATE_VBOXR0DRV_CXXFLAGS
= -no-fpic
-Wpointer-arith \
3363 -Wshadow
-Wuninitialized
-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable \
3365 -O2
-nodefaultlibs
-fno-omit-frame-pointer
-fno-strict-aliasing
-fno-common
-fno-exceptions
-fno-rtti
3366 TEMPLATE_VBOXR0DRV_CXXFLAGS.x86
= $(TEMPLATE_VBOXR0DRV_CFLAGS.x86
) -fno-exceptions
-fno-rtti
3367 TEMPLATE_VBOXR0DRV_CXXFLAGS.amd64
= $(TEMPLATE_VBOXR0DRV_CFLAGS.amd64
) -fno-exceptions
-fno-rtti
3370 ifdef VBOX_WITH_VBOXDRV
3371 ifndef TEMPLATE_VBOXR0DRV_TOOL
3372 $(warning Warning
: VBox Build
: Target
$(KBUILD_HOST
) is not officially supported
!)
3376 ifn1of
($(KBUILD_TARGET
), darwin os2 win solaris
)
3377 # This doesn't work if supdrv is natively loading VMMR0.r0 et al, but
3378 # fortunately it isn't really necessary.
3379 TEMPLATE_VBOXR0DRV_CFLAGS
+= -include $(PATH_ROOT
)/include/VBox
/SUPDrvMangling.h
3380 TEMPLATE_VBOXR0DRV_CXXFLAGS
+= -include $(PATH_ROOT
)/include/VBox
/SUPDrvMangling.h
3384 # Template for building libraries used by ring-0 drivers.
3386 TEMPLATE_VBoxR0DrvLib
= VBox Ring
0 Driver Library
3387 TEMPLATE_VBoxR0DrvLib_EXTENDS
= VBOXR0DRV
3388 TEMPLATE_VBoxR0DrvLib_INSTTYPE
= stage
3389 TEMPLATE_VBoxR0DrvLib_INSTTYPE.linux
= stage
3393 # Template for building R3 executables and static libraries which are linked into executables.
3394 # Note! This is the base template for a whole lot of other ones, so be careful when changing it.
3396 TEMPLATE_VBOXR3EXE
= VBox Ring
3 Exe
3397 TEMPLATE_VBOXR3EXE_ASTOOL
= $(VBOX_ASTOOL
)
3398 TEMPLATE_VBOXR3EXE_ASFLAGS.x86
= $(VBOX_ASFLAGS32
)
3399 TEMPLATE_VBOXR3EXE_ASFLAGS.amd64
= $(VBOX_ASFLAGS64
)
3400 TEMPLATE_VBOXR3EXE_DEFS
= IN_RING3
$(ARCH_BITS_DEFS
)
3401 TEMPLATE_VBOXR3EXE_DEFS.win
= _CRT_SECURE_NO_DEPRECATE
3402 TEMPLATE_VBOXR3EXE_USES
= dtrace
3403 if defined
(VBOX_WITH_DTRACE_R3
) && defined
(VBOX_WITH_NATIVE_DTRACE
)
3404 TEMPLATE_VBOXR3EXE_DTRACETOOL
= DTraceAndVBoxTpG
3405 TEMPLATE_VBOXR3EXE_DTRACE_OBJ_FLAGS
= -C
3406 TEMPLATE_VBOXR3EXE_DTRACE_HDR_FLAGS
= -C
3407 TEMPLATE_VBOXR3EXE_DEFS
+= VBOX_WITH_DTRACE VBOX_WITH_DTRACE_R3 VBOX_WITH_NATIVE_DTRACE
3409 TEMPLATE_VBOXR3EXE_DTRACE_HDR_FLAGS
= --ring-3-context
3410 TEMPLATE_VBOXR3EXE_DTRACE_OBJ_FLAGS
= --ring-3-context
--pic
--probe-fn-imported
--probe-fn-name
"SUPTracerFireProbe"
3411 if defined
(VBOX_WITH_DTRACE_R3
)
3412 TEMPLATE_VBOXR3EXE_DTRACETOOL
= VBoxTpG
3413 TEMPLATE_VBOXR3EXE_DEFS
+= VBOX_WITH_DTRACE VBOX_WITH_DTRACE_R3
3415 TEMPLATE_VBOXR3EXE_DTRACETOOL
= VBoxTpG-Disabled
3418 TEMPLATE_VBOXR3EXE_LIBS.kprofile
= $(LIB_KPROFILE
)
3419 ifeq ($(KBUILD_TARGET
),win
)
3420 # TEMPLATE_VBOXR3EXE_TOOL = $(VBOX_VCC_TOOL)
3421 TEMPLATE_VBOXR3EXE_TOOL.win.x86
= $(VBOX_VCC_TOOL_STEM
)X86
3422 TEMPLATE_VBOXR3EXE_TOOL.win.amd64
= $(VBOX_VCC_TOOL_STEM
)AMD64
3423 TEMPLATE_VBOXR3EXE_RCDEFS
= \
3424 VBOX_VERSION_MAJOR
=\"$(VBOX_VERSION_MAJOR
)\" \
3425 VBOX_VERSION_MINOR
=\"$(VBOX_VERSION_MINOR
)\" \
3426 VBOX_VERSION_BUILD
=\"$(VBOX_VERSION_BUILD
)\" \
3427 VBOX_SVN_REV
=\"$(VBOX_SVN_REV
)\" \
3428 VBOX_VERSION_MAJOR_NR
=$(VBOX_VERSION_MAJOR
) \
3429 VBOX_VERSION_MINOR_NR
=$(VBOX_VERSION_MINOR
) \
3430 VBOX_VERSION_BUILD_NR
=$(VBOX_VERSION_BUILD
) \
3431 VBOX_SVN_REV_NR
=$(VBOX_SVN_REV
)
3432 TEMPLATE_VBOXR3EXE_SDKS
= ReorderCompilerIncs
$(VBOX_WINPSDK
)
3433 TEMPLATE_VBOXR3EXE_CXXFLAGS
= -Zi
-Zl
-GR-
-EHsc
-GF
-MD
$(VBOX_VCC_CRT_TYPE
) -W3
-wd4065
-wd4244
-wd4996
-Zc
:wchar_t-
$(VBOX_VCC_OPT
) $(VBOX_VCC_FP
)
3434 TEMPLATE_VBOXR3EXE_CXXFLAGS.debug
= -RTCsu
3435 TEMPLATE_VBOXR3EXE_CXXFLAGS.dbgopt
= $(NO_SUCH_VARIABLE
)
3436 TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile
= -Gh
-GH
3437 TEMPLATE_VBOXR3EXE_CFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
)
3438 TEMPLATE_VBOXR3EXE_CFLAGS.debug
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.debug
)
3439 TEMPLATE_VBOXR3EXE_CFLAGS.dbgopt
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.dbgopt
)
3440 TEMPLATE_VBOXR3EXE_CFLAGS.kprofile
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile
)
3441 TEMPLATE_VBOXR3EXE_LDFLAGS
= \
3442 /NOD
/INCREMENTAL
:NO
/MAPINFO
:EXPORTS
/LARGEADDRESSAWARE
/DEBUG \
3443 /DISALLOWLIB
:libc.lib \
3444 /DISALLOWLIB
:libcd.lib \
3445 /DISALLOWLIB
:libcmt.lib \
3446 /DISALLOWLIB
:libcmtd.lib \
3447 /DISALLOWLIB
:msvcrt
$(VBOX_VCC_CRT_TYPE_N
).lib \
3448 /DISALLOWLIB
:msvcprt
$(VBOX_VCC_CRT_TYPE_N
).lib
3449 ifdef VBOX_WITH_DTRACE_R3
3450 TEMPLATE_VBOXR3EXE_LDFLAGS
+= -Merge
:VTGPrLc.Data
=VTGPrLc.Begin
-Merge
:VTGPrLc.End
=VTGPrLc.Begin
-Merge
:VTGPrLc.Begin
=VTGObj
3453 TEMPLATE_VBOXR3EXE_LIBS.x86
= \
3454 $(PATH_TOOL_
$(TEMPLATE_VBOXR3EXE_TOOL.win.x86
)_LIB
)/msvcrt
$(VBOX_VCC_CRT_TYPE
).lib \
3455 $(PATH_TOOL_
$(TEMPLATE_VBOXR3EXE_TOOL.win.x86
)_LIB
)/msvcprt
$(VBOX_VCC_CRT_TYPE
).lib \
3456 $(PATH_TOOL_
$(TEMPLATE_VBOXR3EXE_TOOL.win.x86
)_LIB
)/oldnames.lib
3457 TEMPLATE_VBOXR3EXE_LIBS.amd64
= \
3458 $(PATH_TOOL_
$(TEMPLATE_VBOXR3EXE_TOOL.win.amd64
)_LIB
)/msvcrt
$(VBOX_VCC_CRT_TYPE
).lib \
3459 $(PATH_TOOL_
$(TEMPLATE_VBOXR3EXE_TOOL.win.amd64
)_LIB
)/msvcprt
$(VBOX_VCC_CRT_TYPE
).lib \
3460 $(PATH_TOOL_
$(TEMPLATE_VBOXR3EXE_TOOL.win.amd64
)_LIB
)/oldnames.lib
3461 TEMPLATE_VBOXR3EXE_POST_CMDS
= $(VBOX_SIGN_IMAGE_CMDS
)
3464 TEMPLATE_VBOXR3EXE_TOOL
= $(VBOX_GCC_TOOL
)
3465 TEMPLATE_VBOXR3EXE_CXXFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC_Wno-variadic-macros
) $(VBOX_GCC_OPT
) $(VBOX_GCC_FP
) -fno-strict-aliasing
$(VBOX_GCC_fvisibility-hidden
) $(VBOX_GCC_fvisibility-inlines-hidden
)
3466 TEMPLATE_VBOXR3EXE_CXXFLAGS.x86
= -m32
3467 TEMPLATE_VBOXR3EXE_CXXFLAGS.amd64
= -m64
3468 TEMPLATE_VBOXR3EXE_CXXFLAGS.sparc32
= -m32
3469 TEMPLATE_VBOXR3EXE_CXXFLAGS.sparc64
= -m64
3470 # L4 currently can't handle exception handling.
3471 TEMPLATE_VBOXR3EXE_CXXFLAGS.l4
= -fno-exceptions
-nostdinc \
3472 $(addprefix -I
,$(VBOX_PATH_GCC_INCS
) $(L4_INCDIR
) $(FILE_TOOL_GPP3_INCDIR
)) \
3474 TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile
= -finstrument-functions
3475 TEMPLATE_VBOXR3EXE_CFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC_Wno-variadic-macros
) $(VBOX_GCC_OPT
) $(VBOX_GCC_FP
) -fno-strict-aliasing
$(VBOX_GCC_fvisibility-hidden
)
3476 TEMPLATE_VBOXR3EXE_CFLAGS.x86
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.x86
)
3477 TEMPLATE_VBOXR3EXE_CFLAGS.amd64
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.amd64
)
3478 TEMPLATE_VBOXR3EXE_CFLAGS.sparc32
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.sparc32
)
3479 TEMPLATE_VBOXR3EXE_CFLAGS.sparc64
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.sparc64
)
3480 TEMPLATE_VBOXR3EXE_CFLAGS.debug
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.debug
)
3481 TEMPLATE_VBOXR3EXE_CFLAGS.kprofile
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile
)
3482 TEMPLATE_VBOXR3EXE_CFLAGS.l4
= -nostdinc \
3483 $(addprefix -I
,$(VBOX_PATH_GCC_INCS
) $(L4_INCDIR
)) $(DEBUG_L4
)
3484 TEMPLATE_VBOXR3EXE_OBJCFLAGS
= $(TEMPLATE_VBOXR3EXE_CFLAGS
)
3485 TEMPLATE_VBOXR3EXE_OBJCFLAGS.x86
= $(TEMPLATE_VBOXR3EXE_CFLAGS.x86
)
3486 TEMPLATE_VBOXR3EXE_OBJCFLAGS.amd64
= $(TEMPLATE_VBOXR3EXE_CFLAGS.amd64
)
3487 TEMPLATE_VBOXR3EXE_OBJCFLAGS.debug
= $(TEMPLATE_VBOXR3EXE_CFLAGS.debug
)
3488 TEMPLATE_VBOXR3EXE_OBJCFLAGS.kprofile
= $(TEMPLATE_VBOXR3EXE_CFLAGS.kprofile
)
3489 TEMPLATE_VBOXR3EXE_OBJCXXFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
)
3490 TEMPLATE_VBOXR3EXE_OBJCXXFLAGS.x86
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.x86
)
3491 TEMPLATE_VBOXR3EXE_OBJCXXFLAGS.amd64
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.amd64
)
3492 TEMPLATE_VBOXR3EXE_OBJCXXFLAGS.debug
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.debug
)
3493 TEMPLATE_VBOXR3EXE_OBJCXXFLAGS.kprofile
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile
)
3494 TEMPLATE_VBOXR3EXE_DEFS.l4
= L4_THREAD_SAFE
3495 TEMPLATE_VBOXR3EXE_LDFLAGS.x86
= -m32
3496 TEMPLATE_VBOXR3EXE_LDFLAGS.amd64
= -m64
3497 TEMPLATE_VBOXR3EXE_LDFLAGS.sparc32
= -m32
3498 TEMPLATE_VBOXR3EXE_LDFLAGS.sparc64
= -m64
3499 TEMPLATE_VBOXR3EXE_LDFLAGS.l4
= \
3500 $(L4_LIBDIR
)/..
/crt0.o \
3501 -T
$(L4_LIBDIR
)/..
/main_dyn.
ld -nostdlib \
3502 -Wl
,--export-dynamic
,--dynamic-linker
=libld-l4.s.so \
3503 -Wl
,--rpath-link
,$(L4_LIBDIR
)
3504 TEMPLATE_VBOXR3EXE_LDFLAGS.linux
= -Wl
,-z
,noexecstack
$(VBOX_LD_as_needed
)
3505 TEMPLATE_VBOXR3EXE_LDFLAGS.solaris
= -Wl
,-z
,ignore
# same as VBOX_LD_as_needed
3507 ifeq ($(KBUILD_TARGET
),linux
)
3508 TEMPLATE_VBOXR3EXE_LIBS
= pthread m rt dl
3509 else ifeq ($(KBUILD_TARGET
),l4
)
3510 TEMPLATE_VBOXR3EXE_LIBS
= \
3511 $(L4_LIBDIR
)/libvboxserver.s.so \
3512 $(L4_LIBDIR
)/libuc
++.0.s.so \
3514 $(L4_LIBDIR
)/libdl.s.so \
3515 $(L4_LIBDIR
)/libuc
.0.s.so
3516 else ifeq ($(KBUILD_TARGET
),os2
)
3517 TEMPLATE_VBOXR3EXE_TOOL
= GXX3OMF
3518 TEMPLATE_VBOXR3EXE_LIBS
= socket iconv
3519 else ifeq ($(KBUILD_TARGET
),darwin
)
3520 TEMPLATE_VBOXR3EXE_TOOL
= GXX4MACHO
3521 TEMPLATE_VBOXR3EXE_LIBS
=
3522 TEMPLATE_VBOXR3EXE_DEFS.darwin
= $(VBOX_DARWIN_DEF_SDK_DEFS
)
3523 TEMPLATE_VBOXR3EXE_CFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_CFLAGS
) -fno-common
3524 TEMPLATE_VBOXR3EXE_CXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_CXXFLAGS
)
3525 TEMPLATE_VBOXR3EXE_OBJCFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_OBJCFLAGS
)
3526 TEMPLATE_VBOXR3EXE_OBJCXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_OBJCXXFLAGS
)
3527 TEMPLATE_VBOXR3EXE_LDFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_LDFLAGS
)
3528 TEMPLATE_VBOXR3EXE_LDFLAGS.darwin.x86
= -read_only_relocs suppress
3529 ifdef VBOX_WITH_DTRACE_R3
3530 TEMPLATE_VBOXR3EXE_CXXFLAGS
:= $(filter-out -pedantic
,$(TEMPLATE_VBOXR3EXE_CXXFLAGS
)) -fdollars-in-identifiers
# annoying gcc option precedence.
3532 else ifeq ($(KBUILD_TARGET
),haiku
)
3533 TEMPLATE_VBOXR3EXE_TOOL
= GXX3
3534 TEMPLATE_VBOXR3EXE_POST_CMDS
= $(VBOX_HAIKU_XRES_SETVER_CMDS
)
3535 TEMPLATE_VBOXR3EXE_LIBS
= network iconv stdc
++ supc
++
3536 TEMPLATE_VBOXR3EXE_LIBPATH
+= \
3538 # Haiku uses PIC by default...
3539 TEMPLATE_VBOXR3EXE_CFLAGS
+= -fno-pic
3540 TEMPLATE_VBOXR3EXE_CXXFLAGS
+= -fno-pic
3541 TEMPLATE_VBOXR3EXE_LDFLAGS
+= -fno-pic
3542 else if1of
($(KBUILD_TARGET
), freebsd netbsd openbsd
)
3543 TEMPLATE_VBOXR3EXE_TOOL
= GXX3
3544 TEMPLATE_VBOXR3EXE_LIBS
= pthread
3545 TEMPLATE_VBOXR3EXE_INCS
+= \
3547 /usr
/X11R6
/include \
3549 TEMPLATE_VBOXR3EXE_LIBPATH
+= \
3553 else ifeq ($(KBUILD_TARGET
),solaris
)
3554 TEMPLATE_VBOXR3EXE_TOOL
= GXX3PLAIN
3555 TEMPLATE_VBOXR3EXE_DEFS
+= LIBICONV_PLUG _REENTRANT
# Avoid the GNU libiconv, for now at least.
3557 TEMPLATE_VBOXR3EXE_LIBS
= rt socket
3559 $(warning Warning
: VBOX Build
: Target
$(KBUILD_TARGET
) is not officially supported
!)
3560 TEMPLATE_VBOXR3EXE_CXXFLAGS.profile
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.release
)
3561 TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS.krelease
)
3563 ifdef VBOX_WITH_RUNPATH
3564 TEMPLATE_VBOXR3EXE_LDFLAGS
+= '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)'
3565 else ifdef VBOX_WITH_RELATIVE_RUNPATH
3566 TEMPLATE_VBOXR3EXE_LDFLAGS
+= '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
3568 ifdef VBOX_WITH_ORIGIN
3569 TEMPLATE_VBOXR3EXE_LDFLAGS.linux
+= $(VBOX_GCC_ORIGIN_OPT
)
3574 # Template for building R3 shared objects / DLLs.
3575 # This is mostly identical to the VBOXR3EXE template. (Avoid PIC if possible!)
3577 TEMPLATE_VBOXR3
= VBox Ring
3 SO
/DLLs
3578 TEMPLATE_VBOXR3_EXTENDS
= VBOXR3EXE
3579 TEMPLATE_VBOXR3_LDFLAGS.l4
= $(L4_LIBDIR
)/..
/crt0.s.o
-T
$(L4_LIBDIR
)/..
/main_rel.
ld -nostdlib
3580 TEMPLATE_VBOXR3_DEFS.l4
= $(TEMPLATE_VBOXR3EXE_DEFS.l4
) __PIC__
3581 TEMPLATE_VBOXR3_DEFS.darwin
= $(TEMPLATE_VBOXR3EXE_DEFS.darwin
) PIC
3582 TEMPLATE_VBOXR3_LDFLAGS.darwin
= $(TEMPLATE_VBOXR3EXE_LDFLAGS.darwin
) \
3583 -current_version
$(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
) \
3584 -compatibility_version
$(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
)
3585 ifn1of
($(KBUILD_TARGET
), darwin win os2
)
3586 TEMPLATE_VBOXR3_DEFS
= $(TEMPLATE_VBOXR3EXE_DEFS
) PIC
3587 TEMPLATE_VBOXR3_CFLAGS
= $(TEMPLATE_VBOXR3EXE_CFLAGS
) -fPIC
3588 TEMPLATE_VBOXR3_CXXFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
) -fPIC
3589 TEMPLATE_VBOXR3_LDFLAGS
= $(TEMPLATE_VBOXR3EXE_LDFLAGS
) -fPIC
3591 ifeq ($(KBUILD_TARGET
),haiku
)
3592 # Haiku uses PIC by default...
3593 TEMPLATE_VBOXR3_CFLAGS
= $(TEMPLATE_VBOXR3EXE_CFLAGS
) -fno-pic
3594 TEMPLATE_VBOXR3_CXXFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
) -fno-pic
3595 TEMPLATE_VBOXR3_LDFLAGS
= $(TEMPLATE_VBOXR3EXE_LDFLAGS
) -fno-pic
3599 # Temporary: Renaming the template and warnings will be errors (soon).
3601 TEMPLATE_VBoxR3Dll
+= VBox ring-3 SO
/DLLs
, no warnings
3602 TEMPLATE_VBoxR3Dll_EXTENDS
+= VBOXR3
3603 TEMPLATE_VBoxR3Dll_EXTENDS_BY
+= appending
3604 ifeq ($(KBUILD_TARGET
),win
)
3605 TEMPLATE_VBoxR3Dll_CFLAGS
+= $(VBOX_VCC_WERR
)
3606 TEMPLATE_VBoxR3Dll_CXXFLAGS
+= $(VBOX_VCC_WERR
)
3607 TEMPLATE_VBoxR3Dll_LDFLAGS
+= $(VBOX_VCC_LD_WERR
)
3609 TEMPLATE_VBoxR3Dll_CFLAGS
+= $(VBOX_GCC_WERR
)
3610 TEMPLATE_VBoxR3Dll_CXXFLAGS
+= $(VBOX_GCC_WERR
)
3614 # Template for building performance critical stuff with warnings-as-errors.
3616 TEMPLATE_VBoxR3DllNoPic
= VBox ring-3 SO
/DLLs without PIC
, without warnings.
3617 TEMPLATE_VBoxR3DllNoPic_EXTENDS
= VBOXR3
3618 if1of
($(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
), linux.x86 freebsd.x86
)
3619 TEMPLATE_VBoxR3DllNoPic_DEFS
= $(TEMPLATE_VBOXR3EXE_DEFS
)
3620 TEMPLATE_VBoxR3DllNoPic_CFLAGS
= $(TEMPLATE_VBOXR3EXE_CFLAGS
) $(VBOX_GCC_WERR
)
3621 TEMPLATE_VBoxR3DllNoPic_CXXFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
) $(VBOX_GCC_WERR
)
3622 TEMPLATE_VBoxR3DllNoPic_LDFLAGS
= $(TEMPLATE_VBOXR3EXE_LDFLAGS
)
3623 else ifeq ($(KBUILD_TARGET
),win
)
3624 TEMPLATE_VBoxR3DllNoPic_CFLAGS
= $(TEMPLATE_VBOXR3_CFLAGS
) $(VBOX_VCC_WERR
)
3625 TEMPLATE_VBoxR3DllNoPic_CFLAGS.debug
= $(filter-out -RTC
%,$(TEMPLATE_VBOXR3_CFLAGS.debug
))
3626 TEMPLATE_VBoxR3DllNoPic_CFLAGS.release
= $(TEMPLATE_VBOXR3_CFLAGS.release
) -GS-
3627 TEMPLATE_VBoxR3DllNoPic_CXXFLAGS
= $(TEMPLATE_VBOXR3_CXXFLAGS
) $(VBOX_VCC_WERR
)
3628 TEMPLATE_VBoxR3DllNoPic_CXXFLAGS.debug
= $(filter-out -RTC
%,$(TEMPLATE_VBOXR3_CXXFLAGS.debug
)) # RTCsu Prevents IEM opt.
3629 TEMPLATE_VBoxR3DllNoPic_CXXFLAGS.release
= $(TEMPLATE_VBOXR3_CXXFLAGS.release
) -GS-
3630 TEMPLATE_VBoxR3DllNoPic_LDFLAGS
= $(TEMPLATE_VBOXR3_LDFLAGS
) $(VBOX_VCC_LD_WERR
)
3632 TEMPLATE_VBoxR3DllNoPic_CFLAGS
= $(TEMPLATE_VBOXR3_CFLAGS
) $(VBOX_GCC_WERR
)
3633 TEMPLATE_VBoxR3DllNoPic_CXXFLAGS
= $(TEMPLATE_VBOXR3_CXXFLAGS
) $(VBOX_GCC_WERR
)
3637 # Template for building performance critical stuff without warnings-as-errors.
3639 TEMPLATE_VBoxR3DllWarnNoPic
= VBox ring-3 SO
/DLLs without PIC
, with warnings.
3640 TEMPLATE_VBoxR3DllWarnNoPic_EXTENDS
= VBOXR3
3641 if1of
($(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
), linux.x86 freebsd.x86
)
3642 TEMPLATE_VBoxR3DllWarnNoPic_DEFS
= $(TEMPLATE_VBOXR3EXE_DEFS
)
3643 TEMPLATE_VBoxR3DllWarnNoPic_CFLAGS
= $(TEMPLATE_VBOXR3EXE_CFLAGS
)
3644 TEMPLATE_VBoxR3DllWarnNoPic_CXXFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
)
3645 TEMPLATE_VBoxR3DllWarnNoPic_LDFLAGS
= $(TEMPLATE_VBOXR3EXE_LDFLAGS
)
3646 else ifeq ($(KBUILD_TARGET
),win
)
3647 TEMPLATE_VBoxR3DllNoPic_CFLAGS.release
= $(TEMPLATE_VBOXR3_CFLAGS.release
) -GS-
3648 TEMPLATE_VBoxR3DllNoPic_CXXFLAGS.release
= $(TEMPLATE_VBOXR3_CXXFLAGS.release
) -GS-
3652 # Template for building static R3 executables and any static
3653 # libraries they link with.
3655 TEMPLATE_VBOXR3STATIC
= VBox Static Ring
3 EXE
3656 TEMPLATE_VBOXR3STATIC_EXTENDS
= VBOXR3EXE
3657 ifeq ($(KBUILD_TARGET
),win
)
3658 TEMPLATE_VBOXR3STATIC_CFLAGS
= $(filter-out -MD
$(VBOX_VCC_CRT_TYPE
), $(TEMPLATE_VBOXR3EXE_CFLAGS
)) -MT
$(VBOX_VCC_CRT_TYPE
)
3659 TEMPLATE_VBOXR3STATIC_CXXFLAGS
= $(filter-out -MD
$(VBOX_VCC_CRT_TYPE
), $(TEMPLATE_VBOXR3EXE_CFLAGS
)) -MT
$(VBOX_VCC_CRT_TYPE
)
3660 TEMPLATE_VBOXR3STATIC_LDFLAGS
= $(filter-out /DISALLOWLIB
:libcmt
$(VBOX_VCC_CRT_TYPE
).lib
/DISALLOWLIB
:libcpmt
$(VBOX_VCC_CRT_TYPE
).lib
, $(TEMPLATE_VBOXR3EXE_LDFLAGS
)) \
3661 /DISALLOWLIB
:msvcrt.lib \
3662 /DISALLOWLIB
:msvcrtd.lib \
3663 /DISALLOWLIB
:msvcprt.lib \
3664 /DISALLOWLIB
:msvcprtd.lib
3665 TEMPLATE_VBOXR3STATIC_LIBS.x86
= \
3666 $(PATH_TOOL_
$(TEMPLATE_VBOXR3STATIC_TOOL.win.x86
)_LIB
)/oldnames.lib \
3667 $(PATH_TOOL_
$(TEMPLATE_VBOXR3STATIC_TOOL.win.x86
)_LIB
)/libcmt
$(VBOX_VCC_CRT_TYPE
).lib \
3668 $(PATH_TOOL_
$(TEMPLATE_VBOXR3STATIC_TOOL.win.x86
)_LIB
)/libcpmt
$(VBOX_VCC_CRT_TYPE
).lib
3669 TEMPLATE_VBOXR3STATIC_LIBS.amd64
= \
3670 $(PATH_TOOL_
$(TEMPLATE_VBOXR3STATIC_TOOL.win.amd64
)_LIB
)/libcmt
$(VBOX_VCC_CRT_TYPE
).lib \
3671 $(PATH_TOOL_
$(TEMPLATE_VBOXR3STATIC_TOOL.win.amd64
)_LIB
)/libcpmt
$(VBOX_VCC_CRT_TYPE
).lib \
3672 $(PATH_TOOL_
$(TEMPLATE_VBOXR3STATIC_TOOL.win.amd64
)_LIB
)/oldnames.lib
3673 else ifn1of
($(KBUILD_TARGET
), darwin solaris
)
3674 # The gcc guys sans darwin and solaris.
3675 TEMPLATE_VBOXR3STATIC_CFLAGS
= $(TEMPLATE_VBOXR3EXE_CFLAGS
) -static
3676 TEMPLATE_VBOXR3STATIC_CXXFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
) -static
3677 TEMPLATE_VBOXR3STATIC_OBJCFLAGS
= $(TEMPLATE_VBOXR3EXE_OBJCFLAGS
) -static
3678 TEMPLATE_VBOXR3STATIC_OBJCXXFLAGS
= $(TEMPLATE_VBOXR3EXE_OBJCXXFLAGS
) -static
3679 TEMPLATE_VBOXR3STATIC_LDFLAGS
= $(TEMPLATE_VBOXR3EXE_LDFLAGS
) -static
3680 else ifeq ($(KBUILD_TARGET
),solaris
)
3681 TEMPLATE_VBOXR3STATIC_LIBS
= $(TEMPLATE_VBOXR3EXE_LIBS
) nsl
3685 # Temporary: Renaming the template and warnings will be errors (soon).
3687 TEMPLATE_VBoxR3Static
= New name for VBOXR3STATIC
3688 TEMPLATE_VBoxR3Static_EXTENDS
= VBOXR3STATIC
3689 TEMPLATE_VBoxR3Static_EXTENDS_BY
= appending
3690 ifeq ($(KBUILD_TARGET
),win
)
3691 TEMPLATE_VBoxR3Static_CFLAGS
+= $(VBOX_VCC_WERR
)
3692 TEMPLATE_VBoxR3Static_CXXFLAGS
+= $(VBOX_VCC_WERR
)
3693 TEMPLATE_VBoxR3Static_LDFLAGS
+= $(VBOX_VCC_LD_WERR
)
3695 TEMPLATE_VBoxR3Static_CFLAGS
+= $(VBOX_GCC_WERR
)
3696 TEMPLATE_VBoxR3Static_CXXFLAGS
+= $(VBOX_GCC_WERR
)
3700 # Same as VBOXR3EXE but without C++ exceptions.
3702 # VBOXR3EXE does C++ exceptions and may assumes that extern "C" functions
3703 # doesn't throw them. Use this template (and VBOXR3DLLNOXCPT) with care
3704 # and only where the C++ overhead is really unwanted.
3706 TEMPLATE_VBOXR3EXENOXCPT
= VBox Ring
3 Exe without C
++ exception
3707 TEMPLATE_VBOXR3EXENOXCPT_EXTENDS
= VBOXR3EXE
3708 ifeq ($(KBUILD_TARGET
),win
)
3709 TEMPLATE_VBOXR3EXENOXCPT_CFLAGS
= $(filter-out -EH
%,$(TEMPLATE_VBOXR3EXE_CFLAGS
) ) -EHs-
3710 TEMPLATE_VBOXR3EXENOXCPT_CXXFLAGS
= $(filter-out -EH
%,$(TEMPLATE_VBOXR3EXE_CXXFLAGS
)) -EHs-
3712 TEMPLATE_VBOXR3EXENOXCPT_CXXFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
) -fno-exceptions
3716 # Same as VBOXR3 but without C++ exceptions.
3718 TEMPLATE_VBOXR3DLLNOXCPT
= VBox Ring
3 SO
/DLLs without C
++ exception
3719 TEMPLATE_VBOXR3DLLNOXCPT_EXTENDS
= VBOXR3
3720 ifeq ($(KBUILD_TARGET
),win
)
3721 TEMPLATE_VBOXR3DLLNOXCPT_CFLAGS
= $(filter-out -EH
%,$(TEMPLATE_VBOXR3_CFLAGS
) ) -EHs-
3722 TEMPLATE_VBOXR3DLLNOXCPT_CXXFLAGS
= $(filter-out -EH
%,$(TEMPLATE_VBOXR3_CXXFLAGS
)) -EHs-
3724 TEMPLATE_VBOXR3DLLNOXCPT_CXXFLAGS
= $(TEMPLATE_VBOXR3_CXXFLAGS
) -fno-exceptions
3728 # Template for building hardened Ring-3 executables.
3729 # These shall have no extra runpaths, esp. not origin ones.
3731 TEMPLATE_VBOXR3HARDENEDEXE
= Hardened VBox Ring-3 EXE
3732 TEMPLATE_VBOXR3HARDENEDEXE_EXTENDS
= VBOXR3EXE
3733 TEMPLATE_VBOXR3HARDENEDEXE_LIBS
= $(VBOX_LIB_SUPHARDENED
) $(TEMPLATE_VBOXR3EXE_LIBS
)
3734 TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.darwin
= $(TEMPLATE_VBOXR3EXE_LDFLAGS.darwin
) -framework IOKit
3735 ifeq ($(KBUILD_TARGET
),linux
)
3736 # not necessary except USE_LIB_PCAP is defined in SUPR3HardenedMain.cpp
3737 # TEMPLATE_VBOXR3HARDENEDEXE_LIBS += cap
3739 ifn1of
($(KBUILD_TARGET
), win os2
)
3740 TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS
= $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS))
3741 TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux))
3745 # Template for building hardened Ring-3 libraries.
3747 TEMPLATE_VBOXR3HARDENEDLIB = Hardened VBox Ring-3 LIB
3748 TEMPLATE_VBOXR3HARDENEDLIB_EXTENDS = VBOXR3HARDENEDEXE
3749 TEMPLATE_VBOXR3HARDENEDLIB_LIBS = $(NO_SUCH_VARIABLE)
3753 # Template for building set-uid-to-root helper programs.
3754 # In hardened builds, these may only contain absolute runpaths!
3756 TEMPLATE_VBoxR3SetUidToRoot = Set-uid-to-root helper program.
3757 TEMPLATE_VBoxR3SetUidToRoot_EXTENDS = VBOXR3HARDENEDEXE
3758 TEMPLATE_VBoxR3SetUidToRoot_LIBS = $(NO_SUCH_VARIABLE)
3759 ifdef VBOX_WITH_RUNPATH
3760 TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS += '$(VBOX_GCC_RPATH_OPT
)$(VBOX_WITH_RUNPATH
)'
3762 ifndef VBOX_WITH_HARDENING
3763 ifdef VBOX_WITH_RELATIVE_RUNPATH
3764 TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS += '$(VBOX_GCC_RPATH_OPT
)$(VBOX_WITH_RELATIVE_RUNPATH
)'
3766 ifdef VBOX_WITH_ORIGIN
3767 TEMPLATE_VBoxR3SetUidToRoot_LDFLAGS.linux += $(VBOX_GCC_ORIGIN_OPT)
3773 # Template for building R3 shared objects / DLLs with the 10.5 Mac OS X SDK.
3774 # Identical to VBOXR3EXE, except for the DYLIB, the classic_linker and SDK bits.
3776 TEMPLATE_VBOXR3OSX105 = VBox Ring 3 SO/DLLs for OS X 10.5
3777 TEMPLATE_VBOXR3OSX105_EXTENDS = VBOXR3EXE
3778 TEMPLATE_VBOXR3OSX105_DEFS.darwin = $(VBOX_DARWIN_DEF_SDK_10_5_DEFS) PIC
3779 TEMPLATE_VBOXR3OSX105_CFLAGS.darwin = $(VBOX_DARWIN_DEF_SDK_10_5_CFLAGS) -fno-common
3780 TEMPLATE_VBOXR3OSX105_CXXFLAGS.darwin = $(VBOX_DARWIN_DEF_SDK_10_5_CXXFLAGS)
3781 TEMPLATE_VBOXR3OSX105_OBJCFLAGS.darwin = $(VBOX_DARWIN_DEF_SDK_10_5_OBJCFLAGS)
3782 TEMPLATE_VBOXR3OSX105_OBJCXXFLAGS.darwin = $(VBOX_DARWIN_DEF_SDK_10_5_OBJCFLAGS)
3783 TEMPLATE_VBOXR3OSX105_LDFLAGS.darwin = $(VBOX_DARWIN_DEF_SDK_10_5_LDFLAGS) \
3784 -read_only_relocs suppress \
3785 -current_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
3786 -compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)
3790 # Ring-3 testcase, running automatically during the build.
3791 # This is the VBOXR3EXE template only with a different install dir.
3793 TEMPLATE_VBOXR3AUTOTST = VBox Ring 3 Testcase Exe
3794 TEMPLATE_VBOXR3AUTOTST_EXTENDS = $(if-expr "$(KBUILD_TARGET)" == "win",VBoxR3Static,VBOXR3EXE)
3795 TEMPLATE_VBOXR3AUTOTST_INST = $(INST_TESTCASE)
3796 TEMPLATE_VBOXR3AUTOTST_LIBS = $(TEMPLATE_$(TEMPLATE_VBOXR3AUTOTST_EXTENDS)_LIBS)
3797 TEMPLATE_VBOXR3AUTOTST_LIBS.l4 = $(LIB_RUNTIME) $(TEMPLATE_$(TEMPLATE_VBOXR3AUTOTST_EXTENDS)_LIBS.l4)
3798 if "$(KBUILD_TARGET)" == "win" && defined(VBOX_SIGNING_MODE)
3799 TEMPLATE_VBOXR3AUTOTST_POST_CMDS = $(NO_SUCH_VARIABLE)
3804 # This is the VBOXR3EXE template only with a different install dir.
3806 TEMPLATE_VBOXR3TSTEXE = VBox Ring 3 Testcase Exe
3807 TEMPLATE_VBOXR3TSTEXE_EXTENDS = VBOXR3EXE
3808 TEMPLATE_VBOXR3TSTEXE_INST = $(INST_TESTCASE)
3809 TEMPLATE_VBOXR3TSTEXE_LIBS = $(LIB_RUNTIME) $(TEMPLATE_VBOXR3EXE_LIBS)
3810 ifdef VBOX_WITH_RUNPATH
3811 TEMPLATE_VBOXR3TSTEXE_LDFLAGS = '$(VBOX_GCC_RPATH_OPT
)$(VBOX_WITH_RUNPATH
)' $(TEMPLATE_VBOXR3EXE_LDFLAGS)
3812 else ifdef VBOX_WITH_RELATIVE_RUNPATH
3813 TEMPLATE_VBOXR3TSTEXE_LDFLAGS = '$(VBOX_GCC_RPATH_OPT
)$(VBOX_WITH_RELATIVE_RUNPATH
)/..
' $(TEMPLATE_VBOXR3EXE_LDFLAGS)
3815 if "$(KBUILD_TARGET)" == "win" && defined(VBOX_SIGNING_MODE)
3816 TEMPLATE_VBOXR3TSTEXE_POST_CMDS =
3820 # Ring-3 testcase (no -pedantic)
3822 TEMPLATE_VBOXR3TSTNPEXE = VBox Ring 3 Testcase Exe Non-pedantic
3823 TEMPLATE_VBOXR3TSTNPEXE_EXTENDS = VBOXR3TSTEXE
3824 ifneq ($(KBUILD_TARGET),win) # (only gcc)
3825 TEMPLATE_VBOXR3TSTNPEXE_TOOL = $(VBOX_GCC_TOOL)
3826 TEMPLATE_VBOXR3TSTNPEXE_CXXFLAGS = $(filter-out -pedantic -Wshadow,$(TEMPLATE_VBOXR3TSTEXE_CXXFLAGS)) -Wno-sign-compare
3827 TEMPLATE_VBOXR3TSTNPEXE_CFLAGS = $(filter-out -pedantic -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations,$(TEMPLATE_VBOXR3TSTEXE_CFLAGS)) -Wno-sign-compare
3832 # Template for the CppUnit kind of testcases.
3834 TEMPLATE_VBOXCPPUNITEXE = VBox CppUnit Testcase Exe
3835 TEMPLATE_VBOXCPPUNITEXE_EXTENDS = VBOXR3TSTEXE
3836 ## @todo make a CPPUNIT SDK and add cppunit tools packages for windows, mac, solaris and OS/2.
3837 #TEMPLATE_VBOXCPPUNITEXE_SDKS = CPPUNIT -
3838 TEMPLATE_VBOXCPPUNITEXE_LIBS = \
3839 $(TEMPLATE_VBOXR3TSTEXE_LIBS) \
3843 # Template for building bad C/C++ style R3 executables (no -pedantic).
3845 TEMPLATE_VBOXR3NPEXE = VBox Ring 3 Non-pedantic
3846 TEMPLATE_VBOXR3NPEXE_EXTENDS = VBOXR3EXE
3847 ifneq ($(KBUILD_TARGET),win) # (only gcc)
3848 TEMPLATE_VBOXR3NPEXE_TOOL = $(VBOX_GCC_TOOL)
3849 TEMPLATE_VBOXR3NPEXE_CXXFLAGS = $(filter-out -pedantic -Wshadow,$(TEMPLATE_VBOXR3EXE_CXXFLAGS)) -Wno-sign-compare
3850 TEMPLATE_VBOXR3NPEXE_CFLAGS = $(filter-out -pedantic -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations,$(TEMPLATE_VBOXR3EXE_CFLAGS)) \
3851 -Wno-sign-compare -Werror-implicit-function-declaration
3856 # Template for building bad C/C++ style R3 shared libraries / Dlls (no -pedantic).
3857 # (Same transformation as for VBOXR3NPEXE.)
3859 TEMPLATE_VBOXR3NP= VBox Ring 3 Non-pedantic
3860 TEMPLATE_VBOXR3NP_EXTENDS = VBOXR3
3861 ifneq ($(KBUILD_TARGET),win) # (only gcc)
3862 TEMPLATE_VBOXR3NP_TOOL = $(VBOX_GCC_TOOL)
3863 TEMPLATE_VBOXR3NP_CXXFLAGS = $(filter-out -pedantic -Wshadow,$(TEMPLATE_VBOXR3_CXXFLAGS)) -Wno-sign-compare
3864 TEMPLATE_VBOXR3NP_CFLAGS = $(filter-out -pedantic -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations,$(TEMPLATE_VBOXR3_CFLAGS)) \
3865 -Wno-sign-compare -Werror-implicit-function-declaration
3870 # Template for building libraries, shared libraries / modules
3871 # which only depends on IPRT for crt.
3873 TEMPLATE_VBOXNOCRTGCC = VBox no-crt GCC libraries and modules, yasm/nasm.
3874 TEMPLATE_VBOXNOCRTGCC_DEFS = IN_RING3 IPRT_NO_CRT $(ARCH_BITS_DEFS)
3875 TEMPLATE_VBOXNOCRTGCC_ASDEFS = ASM_CALL64_GCC
3876 TEMPLATE_VBOXNOCRTGCC_CFLAGS = -nostdinc -fno-strict-aliasing -fno-math-errno $(VBOX_GCC_WARN) -Werror-implicit-function-declaration
3877 TEMPLATE_VBOXNOCRTGCC_CFLAGS.x86 = -m32
3878 TEMPLATE_VBOXNOCRTGCC_CFLAGS.amd64 = -m64 -mcmodel=medium -fno-common
3879 TEMPLATE_VBOXNOCRTGCC_CFLAGS.sparc32 = -m32
3880 TEMPLATE_VBOXNOCRTGCC_CFLAGS.sparc64 = -m64
3881 TEMPLATE_VBOXNOCRTGCC_CFLAGS.release = -O2 -fno-strict-aliasing
3882 TEMPLATE_VBOXNOCRTGCC_CFLAGS.profile = $(TEMPLATE_VBOXNOCRTGCC_CFLAGS.release)
3883 TEMPLATE_VBOXNOCRTGCC_CFLAGS.kprofile = $(TEMPLATE_VBOXNOCRTGCC_CFLAGS.release)
3884 TEMPLATE_VBOXNOCRTGCC_CFLAGS.darwin = -static
3885 TEMPLATE_VBOXNOCRTGCC_CXXFLAGS = $(TEMPLATE_VBOXNOCRTGCC_CFLAGS)
3886 TEMPLATE_VBOXNOCRTGCC_CXXFLAGS.$(KBUILD_TARGET) = $(TEMPLATE_VBOXNOCRTGCC_CFLAGS.$(KBUILD_TARGET))
3887 TEMPLATE_VBOXNOCRTGCC_CXXFLAGS.$(KBUILD_TARGET_ARCH) = $(TEMPLATE_VBOXNOCRTGCC_CFLAGS.$(KBUILD_TARGET_ARCH))
3888 TEMPLATE_VBOXNOCRTGCC_INCS = $(PATH_ROOT)/include/iprt/nocrt
3890 ifeq (disabled-by-mingw-w64 $(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),win.amd64)
3891 # cross compile to 64-bit ELF (linux).
3892 TEMPLATE_VBOXNOCRTGCC_TOOL = XGCCAMD64LINUX
3893 TEMPLATE_VBOXNOCRTGCC_ASTOOL = YASM
3894 TEMPLATE_VBOXNOCRTGCC_ASFLAGS = -f elf64 -DASM_FORMAT_ELF -D__YASM__ -w+orphan-labels -g dwarf2
3895 TEMPLATE_VBOXNOCRTGCC_LIBS = $(PATH_DEVTOOLS)/win.x86/x86_64-unknown-linux-gnu/20060701-r2/lib/gcc/x86_64-unknown-linux-gnu/3.4.6/libgcc.a
3896 TEMPLATE_VBOXNOCRTGCC_LDFLAGS = -nostdlib
3898 else if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), win.x86 win.amd64)
3899 # Use the default GCC (MinGW) with the Microsoft linker.
3900 # (Drop all '-g
' options as we're unable to
strip the debug
info.
)
3901 TEMPLATE_VBOXNOCRTGCC_TOOL
= $(VBOX_GCC_TOOL
)
3902 TEMPLATE_VBOXNOCRTGCC_ASTOOL
= $(VBOX_ASTOOL
)
3903 TEMPLATE_VBOXNOCRTGCC_ASFLAGS
= $(VBOX_ASFLAGS
)
3904 TEMPLATE_VBOXNOCRTGCC_LDTOOL
= $(VBOX_VCC_TOOL
)
3905 TEMPLATE_VBOXNOCRTGCC_LDFLAGS
= -Incremental
:NO
-MapInfo
:Exports
-NoD
3906 TEMPLATE_VBOXNOCRTGCC_LIBS
= $(VBOX_GCC_LIBGCC
)
3907 TEMPLATE_VBOXNOCRTGCC_CFLAGS
:= $(filter-out -g
,$(TEMPLATE_VBOXNOCRTGCC_CFLAGS
)) -s
3908 TEMPLATE_VBOXNOCRTGCC_CXXFLAGS
:= $(filter-out -g
,$(TEMPLATE_VBOXNOCRTGCC_CXXFLAGS
)) -s
3911 # Use the default GCC.
3912 # The use of --exclude-libs ALL is to avoid confusing the linux ld.so.
3913 TEMPLATE_VBOXNOCRTGCC_TOOL
= $(VBOX_GCC_TOOL
)
3914 TEMPLATE_VBOXNOCRTGCC_ASTOOL
= $(VBOX_ASTOOL
)
3915 TEMPLATE_VBOXNOCRTGCC_ASFLAGS
= $(VBOX_ASFLAGS
)
3916 TEMPLATE_VBOXNOCRTGCC_CFLAGS
+= $(VBOX_GCC_fno-stack-protector
)
3917 TEMPLATE_VBOXNOCRTGCC_CXXFLAGS
+= $(VBOX_GCC_fno-stack-protector
)
3918 ifeq ($(KBUILD_TARGET_ARCH
),amd64
)
3919 # in 64-bit mode we'll build a sys-module (VBoxREM2).
3920 if1of
($(KBUILD_TARGET
), darwin solaris
)
3921 TEMPLATE_VBOXNOCRTGCC_LDFLAGS.solaris
= -64 -r
3923 TEMPLATE_VBOXNOCRTGCC_LDFLAGS
= -nostdlib
3926 TEMPLATE_VBOXNOCRTGCC_LDFLAGS
= -nostdlib
3927 ifn1of
($(KBUILD_TARGET
), os2 darwin solaris
)
3928 TEMPLATE_VBOXNOCRTGCC_LDFLAGS
+= -Wl
,--no-undefined
3931 TEMPLATE_VBOXNOCRTGCC_LDFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_LDFLAGS
)
3932 TEMPLATE_VBOXNOCRTGCC_LIBS
= # FIXME - has unwind mess.
3937 # Same as VBOXNOCRTGCC only it uses GAS as the assembler instead of yasm/nasm.
3939 TEMPLATE_VBOXNOCRTGAS
= VBox no-crt GCC libraries and modules
, gas.
3940 TEMPLATE_VBOXNOCRTGAS_EXTENDS
= VBOXNOCRTGCC
3941 TEMPLATE_VBOXNOCRTGAS_ASTOOL
= $(TEMPLATE_VBOXNOCRTGCC_TOOL
)
3942 ifeq ($(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
),win.x86
)
3943 TEMPLATE_VBOXNOCRTGAS_ASFLAGS
= -s
3945 TEMPLATE_VBOXNOCRTGAS_ASFLAGS
= -g
3947 TEMPLATE_VBOXNOCRTGAS_ASFLAGS.x86
= -m32
3948 TEMPLATE_VBOXNOCRTGAS_ASFLAGS.amd64
= -m64
3952 # Template for building executables that are part of the VBox Main component
3953 # (COM/XPCOM interface to VirtualBox).
3955 TEMPLATE_VBOXMAINEXE
= VBox Main Executable
3956 TEMPLATE_VBOXMAINEXE_ASTOOL
= $(VBOX_ASTOOL
)
3957 TEMPLATE_VBOXMAINEXE_ASFLAGS
= $(VBOX_ASFLAGS
)
3958 TEMPLATE_VBOXMAINEXE_DEFS
= IN_RING3 UNICODE NDEBUG
=1
3959 TEMPLATE_VBOXMAINEXE_DEFS.win
= _UNICODE
3960 TEMPLATE_VBOXMAINEXE_RCDEFS
= $(TEMPLATE_VBOXR3EXE_RCDEFS
)
3961 TEMPLATE_VBOXMAINEXE_LIBS.kprofile
= $(LIB_KPROFILE
)
3963 ifeq ($(KBUILD_TARGET
),win
)
3964 TEMPLATE_VBOXMAINEXE_SDKS
= ReorderCompilerIncs
$(VBOX_WINPSDK
) $(VBOX_WINDDK
)
3965 # Note: C4250 is the dominance warning, see r32789.
3966 # C4065 is about default only switches.
3967 # C4996 is about deprected function (CRT only?).
3968 TEMPLATE_VBOXMAINEXE_TOOL
= $(VBOX_VCC_TOOL
)
3969 TEMPLATE_VBOXMAINEXE_CXXFLAGS
= -Zi
-Zl
-GR
-EHsc
-GF
-MD
$(VBOX_VCC_CRT_TYPE
) -W3
-wd4065
-wd4996
-wd4250
-Zc
:wchar_t-
$(VBOX_VCC_OPT
) $(VBOX_VCC_FP
)
3970 TEMPLATE_VBOXMAINEXE_CXXFLAGS.debug
= -RTCsu
3971 TEMPLATE_VBOXMAINEXE_CXXFLAGS.dbgopt
= $(NO_SUCH_VARIABLE
)
3972 TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile
= -Gh
-GH
3973 TEMPLATE_VBOXMAINEXE_CFLAGS
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS
)
3974 TEMPLATE_VBOXMAINEXE_CFLAGS.debug
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.debug
)
3975 TEMPLATE_VBOXMAINEXE_CFLAGS.dbgopt
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.dbgopt
)
3976 TEMPLATE_VBOXMAINEXE_CFLAGS.kprofile
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile
)
3977 TEMPLATE_VBOXMAINEXE_LDFLAGS
= \
3978 /NOD
/INCREMENTAL
:NO
/MAPINFO
:EXPORTS
/LARGEADDRESSAWARE
/DEBUG\
3979 /DISALLOWLIB
:libc.lib \
3980 /DISALLOWLIB
:libcd.lib \
3981 /DISALLOWLIB
:libcmt.lib \
3982 /DISALLOWLIB
:libcmtd.lib \
3983 /DISALLOWLIB
:msvcrt
$(VBOX_VCC_CRT_TYPE_N
).lib \
3984 /DISALLOWLIB
:msvcprt
$(VBOX_VCC_CRT_TYPE_N
).lib
3985 TEMPLATE_VBOXMAINEXE_LIBS
= \
3987 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/msvcrt
$(VBOX_VCC_CRT_TYPE
).lib \
3988 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/msvcprt
$(VBOX_VCC_CRT_TYPE
).lib \
3989 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/oldnames.lib \
3990 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_ATLMFC_LIB
)/atls
$(VBOX_VCC_CRT_TYPE
).lib
3991 TEMPLATE_VBOXMAINEXE_POST_CMDS
= $(VBOX_SIGN_IMAGE_CMDS
)
3993 else # the GCC guys:
3995 TEMPLATE_VBOXMAINEXE_TOOL
= $(VBOX_GCC_TOOL
)
3996 TEMPLATE_VBOXMAINEXE_CXXFLAGS
= -g
$(VBOX_GCC_pipe
) \
3997 $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC_Wno-variadic-macros
) -Wno-long-long
-Wno-non-virtual-dtor
-Wshadow \
3998 -fshort-wchar
-fpermissive
-fexceptions
-frtti
$(VBOX_GCC_OPT
) $(VBOX_GCC_FP
) -fno-strict-aliasing \
3999 $(VBOX_GCC_fvisibility-inlines-hidden
) $(VBOX_GCC_fvisibility-hidden
)
4000 TEMPLATE_VBOXMAINEXE_CXXFLAGS.x86
= -m32
4001 TEMPLATE_VBOXMAINEXE_CXXFLAGS.amd64
= -m64
4002 TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile
= -finstrument-functions
4003 TEMPLATE_VBOXMAINEXE_CFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC_Wno-variadic-macros
) \
4004 $(VBOX_GCC_OPT
) $(VBOX_GCC_FP
) -fno-strict-aliasing
$(VBOX_GCC_fvisibility-hidden
)
4005 TEMPLATE_VBOXMAINEXE_CFLAGS.x86
= -m32
4006 TEMPLATE_VBOXMAINEXE_CFLAGS.amd64
= -m64
4007 TEMPLATE_VBOXMAINEXE_CFLAGS.kprofile
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile
)
4008 TEMPLATE_VBOXMAINEXE_OBJCFLAGS
= $(TEMPLATE_VBOXMAINEXE_CFLAGS
)
4009 TEMPLATE_VBOXMAINEXE_OBJCFLAGS.x86
= $(TEMPLATE_VBOXMAINEXE_CFLAGS.x86
)
4010 TEMPLATE_VBOXMAINEXE_OBJCFLAGS.amd64
= $(TEMPLATE_VBOXMAINEXE_CFLAGS.amd64
)
4011 TEMPLATE_VBOXMAINEXE_OBJCFLAGS.kprofile
= $(TEMPLATE_VBOXMAINEXE_CFLAGS.kprofile
)
4012 TEMPLATE_VBOXMAINEXE_OBJCXXFLAGS
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS
)
4013 TEMPLATE_VBOXMAINEXE_OBJCXXFLAGS.x86
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.x86
)
4014 TEMPLATE_VBOXMAINEXE_OBJCXXFLAGS.amd64
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.amd64
)
4015 TEMPLATE_VBOXMAINEXE_OBJCXXFLAGS.kprofile
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile
)
4016 TEMPLATE_VBOXMAINEXE_LDFLAGS.x86
= -m32
4017 TEMPLATE_VBOXMAINEXE_LDFLAGS.amd64
= -m64
4018 ifeq ($(KBUILD_TARGET
),linux
)
4019 TEMPLATE_VBOXMAINEXE_LIBS
= pthread m rt
$(LIB_RUNTIME
) dl
4020 TEMPLATE_VBOXMAINEXE_LDFLAGS.linux
= $(VBOX_LD_as_needed
)
4021 else ifeq ($(KBUILD_TARGET
),l4
)
4022 TEMPLATE_VBOXMAINEXE_LIBS
= $(LIB_RUNTIME
)
4023 # no libs as yet in l4 target - must be added later
4024 else ifeq ($(KBUILD_TARGET
),os2
)
4025 TEMPLATE_VBOXMAINEXE_TOOL
= GXX3OMF
4026 TEMPLATE_VBOXMAINEXE_LIBS
= $(LIB_RUNTIME
)
4027 else ifeq ($(KBUILD_TARGET
),darwin
)
4028 TEMPLATE_VBOXMAINEXE_TOOL
= GXX4MACHO
4029 TEMPLATE_VBOXMAINEXE_DEFS
+= $(VBOX_DARWIN_DEF_SDK_DEFS
)
4030 TEMPLATE_VBOXMAINEXE_CFLAGS
+= $(VBOX_DARWIN_DEF_SDK_CFLAGS
)
4031 TEMPLATE_VBOXMAINEXE_CXXFLAGS
+= $(VBOX_DARWIN_DEF_SDK_CXXFLAGS
)
4032 TEMPLATE_VBOXMAINEXE_OBJCFLAGS
+= $(VBOX_DARWIN_DEF_SDK_OBJCFLAGS
)
4033 TEMPLATE_VBOXMAINEXE_OBJCXXFLAGS
+= $(VBOX_DARWIN_DEF_SDK_OBJCXXFLAGS
)
4034 TEMPLATE_VBOXMAINEXE_LDFLAGS.darwin
+= -bind_at_load
4035 TEMPLATE_VBOXMAINEXE_LDFLAGS
+= $(VBOX_DARWIN_DEF_SDK_LDFLAGS
) -framework Carbon
4036 TEMPLATE_VBOXMAINEXE_LIBS
= $(LIB_RUNTIME
)
4037 else ifeq ($(KBUILD_TARGET
),haiku
)
4038 TEMPLATE_VBOXMAINEXE_TOOL
= GXX3
4039 TEMPLATE_VBOXMAINEXE_LIBS
= $(LIB_RUNTIME
) network stdc
++ supc
++
4040 else if1of
($(KBUILD_TARGET
), freebsd netbsd openbsd
)
4041 TEMPLATE_VBOXMAINEXE_TOOL
= GXX3
4042 TEMPLATE_VBOXMAINEXE_LIBS
= $(LIB_RUNTIME
)
4043 TEMPLATE_VBOXMAINEXE_INCS
+= \
4045 /usr
/X11R6
/include \
4047 TEMPLATE_VBOXMAINEXE_LIBPATH
+= \
4051 else ifeq ($(KBUILD_TARGET
),solaris
)
4052 TEMPLATE_VBOXMAINEXE_TOOL
= GXX3PLAIN
4053 TEMPLATE_VBOXMAINEXE_DEFS
+= _REENTRANT
4054 TEMPLATE_VBOXMAINEXE_LIBS
= $(LIB_RUNTIME
) rt thread
4056 $(warning Warning
: VBOX Build
: Target
$(KBUILD_TARGET
) is not officially supported
!)
4057 TEMPLATE_VBOXMAINEXE_LIBS
=
4059 TEMPLATE_VBOXMAINEXE_LDFLAGS.solaris
= -Wl
,-z
,ignore
# Same as VBOX_LD_as_needed.
4060 ifdef VBOX_WITH_RUNPATH
4061 TEMPLATE_VBOXMAINEXE_LDFLAGS
+= '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)'
4062 else ifdef VBOX_WITH_RELATIVE_RUNPATH
4063 TEMPLATE_VBOXMAINEXE_LDFLAGS
+= '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
4065 ifdef VBOX_WITH_ORIGIN
4066 TEMPLATE_VBOXMAINEXE_LDFLAGS.linux
+= $(VBOX_GCC_ORIGIN_OPT
)
4071 # Add COM/XPCOM stuff
4072 TEMPLATE_VBOXMAINEXE_LIBS
+= \
4073 $(PATH_STAGE_LIB
)/VBoxCOM
$(VBOX_SUFF_LIB
)
4074 ifdef VBOX_WITH_XPCOM
4075 ## @todo may be worth creating the VBOX_XPCOM SDK def
4076 TEMPLATE_VBOXMAINEXE_DEFS
+= VBOX_WITH_XPCOM
4077 ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
4078 TEMPLATE_VBOXMAINEXE_DEFS
+= VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
4080 TEMPLATE_VBOXMAINEXE_INCS
+= \
4082 TEMPLATE_VBOXMAINEXE_LIBS
+= \
4084 TEMPLATE_VBOXMAINEXE_INTERMEDIATES
+= \
4085 $(VBOX_PATH_SDK
)/bindings
/xpcom
/include/VirtualBox_XPCOM.h
4088 TEMPLATE_VBOXMAINEXE_INCS
+= \
4089 $(VBOX_PATH_SDK
)/bindings
/mscom
/include
4090 TEMPLATE_VBOXMAINEXE_INTERMEDIATES
+= \
4091 $(VBOX_PATH_SDK
)/bindings
/mscom
/include/VirtualBox.h
4095 # Template for building the Main DLL modules (such as in-process COM/XPCOM
4096 # components for Main).
4098 # This differs from VBOXMAINEXE only in PIC handling and similar DLL stuff.
4100 TEMPLATE_VBOXMAINDLL
= VBox Main Component
(shared library
)
4101 TEMPLATE_VBOXMAINDLL_EXTENDS
= VBOXMAINEXE
4102 ifn1of
($(KBUILD_TARGET
), darwin haiku os2 win
)
4103 TEMPLATE_VBOXMAINDLL_DEFS
= PIC
$(TEMPLATE_VBOXMAINEXE_DEFS
)
4104 TEMPLATE_VBOXMAINDLL_CFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINEXE_CFLAGS
)
4105 TEMPLATE_VBOXMAINDLL_CXXFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINEXE_CXXFLAGS
)
4106 TEMPLATE_VBOXMAINDLL_LDFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINEXE_LDFLAGS
)
4108 TEMPLATE_VBOXMAINDLL_LDFLAGS.darwin
= $(filter-out -bind_at_load
,$(TEMPLATE_VBOXMAINEXE_LDFLAGS.darwin
)) \
4109 -current_version
$(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
) \
4110 -compatibility_version
$(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
)
4113 # Template identical to VBOXMAINDLL except for where the stuff is
4114 # installed when using XPCOM (components/).
4116 # Note! In the hardened build this gets a bit ugly since $ORIGIN/..
4117 # doesn't work. So, we keep the $ORIGIN from VBOXMAINEXE and let
4118 # the installers do the necessary .so symlinking.
4120 # (No difference when building against COM on Windows.)
4122 TEMPLATE_VBOXMAINCOMP
= VBox Main COM
/XPCOM Component
(shared library
)
4123 TEMPLATE_VBOXMAINCOMP_EXTENDS
= VBOXMAINEXE
4124 ifn1of
($(KBUILD_TARGET
), win
)
4125 TEMPLATE_VBOXMAINCOMP_INST
= $(INST_BIN
)components
/
4127 ifneq ($(KBUILD_TARGET
),win
)
4128 ifeq ($(filter-out solaris.x86
%.amd64
%.sparc32
%.sparc64
,$(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
)),) ## TODO: cleanup!
4129 TEMPLATE_VBOXMAINCOMP_DEFS
= PIC
$(TEMPLATE_VBOXMAINEXE_DEFS
)
4130 TEMPLATE_VBOXMAINCOMP_CFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINEXE_CFLAGS
)
4131 TEMPLATE_VBOXMAINCOMP_CXXFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINEXE_CXXFLAGS
)
4132 if defined
(VBOX_WITH_RELATIVE_RUNPATH
) && !defined
(VBOX_WITH_HARDENING
)
4133 TEMPLATE_VBOXMAINCOMP_LDFLAGS
= -fPIC
$(filter-out '$(VBOX_GCC_RPATH_OPT)%',$(TEMPLATE_VBOXMAINEXE_LDFLAGS
)) '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/..'
4135 TEMPLATE_VBOXMAINCOMP_LDFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINEXE_LDFLAGS
)
4137 else ifndef VBOX_WITH_HARDENING
4138 ifdef VBOX_WITH_RELATIVE_RUNPATH
4139 TEMPLATE_VBOXMAINCOMP_LDFLAGS
= $(filter-out '$(VBOX_GCC_RPATH_OPT)%',$(TEMPLATE_VBOXMAINEXE_LDFLAGS
)) '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/..'
4143 TEMPLATE_VBOXMAINCOMP_LDFLAGS.darwin
= $(filter-out -bind_at_load
,$(TEMPLATE_VBOXMAINEXE_LDFLAGS.darwin
)) \
4144 -current_version
$(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
) \
4145 -compatibility_version
$(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
)
4148 # Template for building the Main static libraries.
4150 # This differs from VBOXMAINDLL only that it zeroes out the _LIBS definition.
4152 TEMPLATE_VBOXMAINLIB
= VBox Main Component
(static library
)
4153 TEMPLATE_VBOXMAINLIB_EXTENDS
= VBOXMAINDLL
4154 TEMPLATE_VBOXMAINLIB_LIBS
=
4157 # Template for building executables that use the VBox Main component.
4159 TEMPLATE_VBOXMAINCLIENTEXE
= VBox Main Client
(executable
)
4160 TEMPLATE_VBOXMAINCLIENTEXE_EXTENDS
= VBOXMAINEXE
4161 ifeq ($(KBUILD_TARGET
),win
)
4162 TEMPLATE_VBOXMAINCLIENTEXE_LIBS.win
= $(TEMPLATE_VBOXMAINEXE_LIBS.win
) \
4163 $(PATH_SDK_
$(VBOX_WINPSDK
)_LIB
)/User32.Lib \
4164 $(PATH_SDK_
$(VBOX_WINPSDK
)_LIB
)/Shell32.Lib \
4165 $(PATH_SDK_
$(VBOX_WINPSDK
)_LIB
)/ShLwApi.Lib \
4166 $(PATH_SDK_
$(VBOX_WINPSDK
)_LIB
)/Ole32.Lib \
4167 $(PATH_SDK_
$(VBOX_WINPSDK
)_LIB
)/OleAut32.Lib \
4168 $(PATH_SDK_
$(VBOX_WINPSDK
)_LIB
)/Uuid.Lib
4170 TEMPLATE_VBOXMAINCLIENTEXE_DEFS
= $(TEMPLATE_VBOXMAINEXE_DEFS
) \
4172 TEMPLATE_VBOXMAINCLIENTEXE_CXXFLAGS.linux
= $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.linux
) \
4177 # Template for building shared libraries / DLLs that use the VBox Main component.
4179 # This differs from VBOXMAINCLIENTEXE only in PIC handling and similar DLL stuff.
4181 TEMPLATE_VBOXMAINCLIENTDLL
= VBox MAIN Client
(shared library
)
4182 TEMPLATE_VBOXMAINCLIENTDLL_EXTENDS
= VBOXMAINCLIENTEXE
4183 ifn1of
($(KBUILD_TARGET
), darwin os2 win
)
4184 TEMPLATE_VBOXMAINCLIENTDLL_DEFS
= PIC
$(TEMPLATE_VBOXMAINCLIENTEXE_DEFS
)
4185 TEMPLATE_VBOXMAINCLIENTDLL_CFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINCLIENTEXE_CFLAGS
)
4186 TEMPLATE_VBOXMAINCLIENTDLL_CXXFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINCLIENTEXE_CXXFLAGS
)
4187 TEMPLATE_VBOXMAINCLIENTDLL_LDFLAGS
= -fPIC
$(TEMPLATE_VBOXMAINCLIENTEXE_LDFLAGS
)
4189 TEMPLATE_VBOXMAINCLIENTDLL_LDFLAGS.darwin
= $(filter-out -bind_at_load
,$(TEMPLATE_VBOXMAINCLIENTEXE_LDFLAGS.darwin
))
4194 # Templates used for building the extension packs.
4196 ifdef VBOX_WITH_EXTPACK
4197 # Base templates (native or portable).
4198 TEMPLATE_VBoxR3ExtPack
= For the ring-3 context extension pack modules.
4199 if
1 # Native for now.
4200 TEMPLATE_VBoxR3ExtPack_EXTENDS
= VBOXR3DLLNOXCPT
4201 TEMPLATE_VBoxR3ExtPack_DEFS
= $(TEMPLATE_VBOXR3DLLNOXCPT_DEFS
) VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R3
4203 TEMPLATE_VBoxR3ExtPack_EXTENDS
= VBOXNOCRTGCC
4204 TEMPLATE_VBoxR3ExtPack_DEFS
= $(TEMPLATE_VBOXNOCRTGCC_DEFS
) VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R3 IPRT_NO_CRT IN_RING3
4205 TEMPLATE_VBoxR3ExtPack_INCS
= $(PATH_ROOT
)/include/iprt
/nocrt
$(TEMPLATE_VBOXR3DLLNOXCPT_INCS
)
4207 ifneq ($(KBUILD_TARGET
),win
)
4208 TEMPLATE_VBoxR3ExtPack_CXXFLAGS
= $(TEMPLATE_VBOXR3DLLNOXCPT_CXXFLAGS
) -fno-rtti
4210 TEMPLATE_VBoxR3ExtPack_INST
= $(INST_EXTPACK
)YouShallOverrideThis
/
4211 ifeq ($(KBUILD_TARGET
),linux
)
4212 TEMPLATE_VBoxR3ExtPack_LDFLAGS
= $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS
))
4214 if
!defined
(VBOX_WITH_RUNPATH
) && defined
(VBOX_WITH_RELATIVE_RUNPATH
)
4215 TEMPLATE_VBoxR3ExtPack_LDFLAGS
= '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/../../..' $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS
))
4218 ifdef VBOX_ONLY_EXTPACKS_USE_IMPLIBS
4219 if1of
($(KBUILD_TARGET
), win os2
)
4220 TEMPLATE_VBoxR3ExtPack_LIBS
= \
4221 $(TEMPLATE_LIBS_VBOXR3
) \
4222 $(PATH_STAGE_LIB
)/VMMR3Imp
$(VBOX_SUFF_LIB
) \
4223 $(PATH_STAGE_LIB
)/VBoxRTImp
$(VBOX_SUFF_LIB
)
4225 TEMPLATE_VBoxR3ExtPack_LIBS
= \
4226 $(TEMPLATE_LIBS_VBOXR3
) \
4227 $(PATH_STAGE_LIB
)/VMMR3Imp
$(VBOX_SUFF_DLL
) \
4228 $(PATH_STAGE_LIB
)/VBoxRTImp
$(VBOX_SUFF_DLL
)
4231 TEMPLATE_VBoxR3ExtPack_LIBS
= \
4232 $(TEMPLATE_LIBS_VBOXR3
) \
4237 TEMPLATE_VBoxR0ExtPack
= For the ring-0 context extension pack modules.
4238 TEMPLATE_VBoxR0ExtPack_EXTENDS
= VBoxR0
4239 TEMPLATE_VBoxR0ExtPack_EXTENDS_BY
= appending
4240 TEMPLATE_VBoxR0ExtPack_INST
= $(INST_EXTPACK
)YouShallOverrideThis
/
4241 TEMPLATE_VBoxR0ExtPack_DEFS
= VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R0
4242 if1of
($(VBOX_LDR_FMT
), pe lx
)
4243 TEMPLATE_VBoxR0ExtPack_LIBS
= \
4244 $(PATH_STAGE_LIB
)/VMMR0Imp
$(VBOX_SUFF_LIB
) \
4245 $(PATH_STAGE_LIB
)/SUPR0
$(VBOX_SUFF_LIB
)
4248 TEMPLATE_VBoxRcExtPack
= For the raw-mode context extension pack modules.
4249 TEMPLATE_VBoxRcExtPack_EXTENDS
= VBoxRc
4250 TEMPLATE_VBoxRcExtPack_EXTENDS_BY
= appending
4251 TEMPLATE_VBoxRcExtPack_SYSSUFF
= .rc
4252 TEMPLATE_VBoxRcExtPack_INST
= $(INST_EXTPACK
)YouShallOverrideThis
/
4253 TEMPLATE_VBoxRcExtPack_DEFS
= VBOX_IN_EXTPACK VBOX_IN_EXTPACK_RC
4254 if1of
($(VBOX_LDR_FMT32
), pe lx
)
4255 TEMPLATE_VBoxRcExtPack_LIBS
= \
4256 $(PATH_STAGE_LIB
)/VMMRCBuiltin
$(VBOX_SUFF_LIB
) \
4257 $(PATH_STAGE_LIB
)/VMMRCImp
$(VBOX_SUFF_LIB
)
4260 TEMPLATE_VBoxInsExtPack
= For the
install targets of an extension pack.
4261 TEMPLATE_VBoxInsExtPack_MODE
= 0644
4262 TEMPLATE_VBoxInsExtPack_INST
= $(INST_EXTPACK
)YouShallOverrideThis
/
4264 # For each individual extension pack
4265 ifdef VBOX_WITH_EXTPACK_PUEL
4266 TEMPLATE_VBoxR3ExtPackPuel
= For the ring-3 context modules in the PUEL extension pack.
4267 TEMPLATE_VBoxR3ExtPackPuel_EXTENDS
= VBoxR3ExtPack
4268 TEMPLATE_VBoxR3ExtPackPuel_INST
= $(INST_EXTPACK_PUEL
)$(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
)/
4270 TEMPLATE_VBoxR0ExtPackPuel
= For the ring-0 context modules in the PUEL extension pack.
4271 TEMPLATE_VBoxR0ExtPackPuel_EXTENDS
= VBoxR0ExtPack
4272 TEMPLATE_VBoxR0ExtPackPuel_INST
= $(INST_EXTPACK_PUEL
)$(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
)/
4274 TEMPLATE_VBoxRcExtPackPuel
= For the raw-mode context modules in the PUEL extension pack.
4275 TEMPLATE_VBoxRcExtPackPuel_EXTENDS
= VBoxRcExtPack
4276 TEMPLATE_VBoxRcExtPackPuel_INST
= $(INST_EXTPACK_PUEL
)$(KBUILD_TARGET
).
$(KBUILD_TARGET_ARCH
)/
4278 TEMPLATE_VBoxInsExtPackPuel
= For the
install targets of an extension pack.
4279 TEMPLATE_VBoxInsExtPackPuel_EXTENDS
= VBoxR0ExtPack
4280 TEMPLATE_VBoxInsExtPackPuel_INST
= $(INST_EXTPACK_PUEL
)
4282 endif # VBOX_WITH_EXTPACK
4290 ifdef VBOX_WITH_QTGUI
4292 # Guess VBOX_WITH_QT4_SUN
4293 ifndef VBOX_WITH_QT4_SUN
4295 if1of
($(KBUILD_TARGET
), darwin solaris win
)
4296 VBOX_WITH_QT4_SUN
:= 1
4302 # Handmade configuration of qt4 - very annoying, this needs to
4303 # be cleaned up properly later some time (not important now).
4305 ifeq ($(VBOX_PATH_QT4
),)
4306 ifeq ($(KBUILD_TARGET
),darwin
)
4307 VBOX_PATH_QT4
:= $(lastword
$(sort $(wildcard $(PATH_DEVTOOLS_TRG
)/qt
/v4
*)))
4308 ifeq ($(VBOX_PATH_QT4
),)
4309 ifneq ($(wildcard /Library
/Frameworks
/QtCore.framework
),)
4310 # Using the global installation (for OSE).
4311 VBOX_PATH_QT4 ?
= /usr
4312 VBOX_PATH_QT4_FRAMEWORKS ?
= /Library
/Frameworks
4315 else if1of
($(KBUILD_TARGET
), win
)
4316 VBOX_PATH_QT4 ?
= $(lastword
$(filter %-$(tolower
$(VBOX_VCC_TOOL_STEM
)),$(sort $(wildcard $(PATH_DEVTOOLS_TRG
)/qt
/v4
*))))
4317 else if1of
($(KBUILD_TARGET
), linux solaris
)
4318 VBOX_PATH_QT4 ?
= $(lastword
$(sort $(wildcard $(PATH_DEVTOOLS_TRG
)/qt
/v4
*)))
4319 ifneq ($(VBOX_PATH_QT4
),)
4320 VBOX_WITH_QT4_SUN
= 1
4324 ifeq ($(VBOX_PATH_QT4
),)
4325 if1of
($(USERNAME
), bird
)
4327 VBOX_PATH_QT4 ?
= /usr
4328 VBOX_PATH_QT4_LIB ?
= /usr
/lib
/qt4
4331 VBOX_PATH_QT4 ?
= /usr
4332 VBOX_PATH_QT4_LIB ?
= $(VBOX_PATH_QT4
)/lib
4334 ifdef VBOX_WITH_QT4_SUN
4338 VBOX_QT4_MOD
= QtCore QtGui QtNetwork
$(if
$(VBOX_GUI_USE_QGL
),QtOpenGL
,)
4339 VBOX_QT4_MOD_NAMES
= $(foreach qtmod
,$(VBOX_QT4_MOD
),$(qtmod
)$(VBOX_QT4_INFIX
))
4341 # Hack LD_LIBRARY_PATH for stuff in tools.
4342 ifdef VBOX_WITH_QT4_SUN
4343 if1of
($(KBUILD_TARGET
), linux
)
4344 export LD_LIBRARY_PATH
:= $(VBOX_PATH_QT4_LIB
):$(LD_LIBRARY_PATH
)
4350 # Template for building Qt GUI executables.
4352 TEMPLATE_VBOXQT4GUIEXE
= VBox Qt GUI Executable
4353 TEMPLATE_VBOXQT4GUIEXE_USES
= qt4
4354 TEMPLATE_VBOXQT4GUIEXE_QTTOOL
= QT4
4355 TEMPLATE_VBOXQT4GUIEXE_MOCTOOL
= QT4
4356 TEMPLATE_VBOXQT4GUIEXE_UICTOOL
= QT4
4357 TEMPLATE_VBOXQT4GUIEXE_RCCTOOL
= QT4
4358 TEMPLATE_VBOXQT4GUIEXE_LRCTOOL
= QT4
4359 TEMPLATE_VBOXQT4GUIEXE_SDKS
= QT4
4360 TEMPLATE_VBOXQT4GUIEXE_QT_INFIX
= $(VBOX_QT4_INFIX
)
4361 TEMPLATE_VBOXQT4GUIEXE_DEFS
= IN_RING3 QT_NO_DEBUG QT_THREAD_SUPPORT QT_SHARED HAVE_CONFIG_H
$(ARCH_BITS_DEFS
)
4362 TEMPLATE_VBOXQT4GUIEXE_RCDEFS
= $(TEMPLATE_VBOXR3EXE_RCDEFS
)
4364 ifeq ($(KBUILD_TARGET
),win
)
4365 # Note! No use of VBOX_VCC_CRT_TYPE here yet as it requires a /MDd build of Qt as well.
4366 TEMPLATE_VBOXQT4GUIEXE_TOOL
= $(VBOX_VCC_TOOL
)
4367 TEMPLATE_VBOXQT4GUIEXE_DEFS
+= \
4368 _WIN32_WINNT
=0x0500 UNICODE _UNICODE \
4369 QT_DLL _CRT_SECURE_NO_DEPRECATE \
4370 $(QMAKE_PRL_DEFINES
)
4371 TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS
= -nologo
-Zm200
-W3
-MD
-Zi
-EHsc
-Zc
:wchar_t-
4372 TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.debug
= -RTCsu
4373 TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.dbgopt
= $(NO_SUCH_VARIABLE
)
4374 TEMPLATE_VBOXQT4GUIEXE_INCS
+= \
4375 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_ATLMFC_INC
)
4376 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS
= \
4377 /NOD
/NOLOGO
/INCREMENTAL
:NO
/MAPINFO
:EXPORTS
/DEBUG \
4378 /DELAYLOAD
:oleaut32.dll
4379 TEMPLATE_VBOXQT4GUIEXE_SDKS
+= $(VBOX_WINPSDK
)
4380 TEMPLATE_VBOXQT4GUIEXE_LIBS
= \
4383 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/msvcprt.lib \
4384 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/msvcrt.lib \
4385 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/oldnames.lib \
4386 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/delayimp.lib \
4387 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_ATLMFC_LIB
)/atls.lib
4388 ifdef VBOX_WITH_DEBUG_VCC_CRT
# VBoxCOM (static) is causing trouble of course.
4389 TEMPLATE_VBOXQT4GUIEXE_LIBS
+= \
4390 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/msvcrt
$(VBOX_VCC_CRT_TYPE
).lib \
4391 $(PATH_TOOL_
$(VBOX_VCC_TOOL
)_LIB
)/msvcprt
$(VBOX_VCC_CRT_TYPE
).lib
4393 TEMPLATE_VBOXQT4GUIEXE_POST_CMDS
= $(VBOX_SIGN_IMAGE_CMDS
)
4394 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS.win.x86
+= /LARGEADDRESSAWARE
4396 else # the gcc guys:
4397 TEMPLATE_VBOXQT4GUIEXE_TOOL
= $(VBOX_GCC_TOOL
)
4398 TEMPLATE_VBOXQT4GUIEXE_DEFS.linux
= _REENTRANT
4400 TEMPLATE_VBOXQT4GUIEXE_DEFS.solaris
= _REENTRANT
4402 TEMPLATE_VBOXQT4GUIEXE_INCS
+= \
4404 ## @todo Use VBOX_GCC_PEDANTIC_CXX?
4405 TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS
= \
4406 -g
$(VBOX_GCC_pipe
) $(filter-out -Wno-unused
,$(VBOX_GCC_WARN
)) -frtti
-fno-exceptions
-Wno-non-virtual-dtor \
4407 -Wno-long-long
-fshort-wchar
-fno-strict-aliasing \
4408 $(VBOX_GCC_fvisibility-hidden
) $(VBOX_GCC_fvisibility-inlines-hidden
) \
4409 $(VBOX_GCC_Wno-delete-non-virtual-dtor
)
4410 TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.x86
= -m32
4411 TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.amd64
= -m64
4412 TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.linux
= -pthread
4413 TEMPLATE_VBOXQT4GUIEXE_OBJCFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_C
) -Wno-long-long
-fno-exceptions
4414 TEMPLATE_VBOXQT4GUIEXE_OBJCFLAGS.x86
= $(TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.x86
)
4415 TEMPLATE_VBOXQT4GUIEXE_OBJCFLAGS.amd64
= $(TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.amd64
)
4416 TEMPLATE_VBOXQT4GUIEXE_OBJCXXFLAGS
= \
4417 -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_CXX
) -Wno-non-virtual-dtor
-Wno-long-long \
4418 -frtti
-fno-exceptions
$(VBOX_GCC_fvisibility-hidden
) $(VBOX_GCC_fvisibility-inlines-hidden
)
4419 TEMPLATE_VBOXQT4GUIEXE_OBJCXXFLAGS.x86
= $(TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.x86
)
4420 TEMPLATE_VBOXQT4GUIEXE_OBJCXXFLAGS.amd64
= $(TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.amd64
)
4421 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS.x86
= -m32
4422 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS.amd64
= -m64
4423 TEMPLATE_VBOXQT4GUIEXE_LIBS
= \
4430 ifeq ($(KBUILD_TARGET
),linux
)
4431 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS
+= $(VBOX_LD_as_needed
)
4432 TEMPLATE_VBOXQT4GUIEXE_LIBS
+= \
4433 $(VBOX_XCURSOR_LIBS
) \
4436 TEMPLATE_VBOXQT4GUIEXE_LIBPATH
+= \
4438 else ifeq ($(KBUILD_TARGET
),darwin
)
4439 TEMPLATE_VBOXQT4GUIEXE_DEFS.darwin
+= $(VBOX_DARWIN_DEF_SDK_DEFS
)
4440 TEMPLATE_VBOXQT4GUIEXE_CFLAGS.darwin
+= $(VBOX_DARWIN_DEF_SDK_CFLAGS
)
4441 TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS.darwin
+= $(VBOX_DARWIN_DEF_SDK_CXXFLAGS
)
4442 TEMPLATE_VBOXQT4GUIEXE_OBJCFLAGS.darwin
+= $(VBOX_DARWIN_DEF_SDK_OBJCFLAGS
)
4443 TEMPLATE_VBOXQT4GUIEXE_OBJCXXFLAGS.darwin
+= $(VBOX_DARWIN_DEF_SDK_OBJCXXFLAGS
)
4444 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS.darwin
+= $(VBOX_DARWIN_DEF_SDK_LDFLAGS
) -bind_at_load
4445 TEMPLATE_VBOXQT4GUIEXE_LIBS
+=
4446 TEMPLATE_VBOXQT4GUIEXE_LIBPATH
+=
4448 TEMPLATE_VBOXQT4GUIEXE_INCS
+= \
4449 $(VBOX_XCURSOR_INCS
)
4450 TEMPLATE_VBOXQT4GUIEXE_LIBS
+= \
4451 $(VBOX_XCURSOR_LIBS
) \
4456 TEMPLATE_VBOXQT4GUIEXE_LIBPATH
+= \
4458 ifeq ($(KBUILD_TARGET
),freebsd
)
4459 TEMPLATE_VBOXQT4GUIEXE_INCS
+= \
4461 /usr
/X11R6
/include \
4463 TEMPLATE_VBOXQT4GUIEXE_LIBPATH
+= \
4468 ifeq ($(KBUILD_TARGET
),solaris
)
4469 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS.solaris
= -Wl
,-z
,ignore
# Same as VBOX_LD_as_needed.
4470 TEMPLATE_VBOXQT4GUIEXE_LIBS
+= \
4474 # Assume the Qt shared objects are in the same directory as the executable, on Solaris too.
4475 ifdef VBOX_WITH_RUNPATH
4476 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS
+= '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)'
4477 else ifdef VBOX_WITH_RELATIVE_RUNPATH
4478 TEMPLATE_VBOXQT4GUIEXE_LDFLAGS
+= '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
4483 # Add COM/XPCOM stuff
4484 TEMPLATE_VBOXQT4GUIEXE_LIBS
+= \
4485 $(PATH_STAGE_LIB
)/VBoxCOM
$(VBOX_SUFF_LIB
)
4486 ifdef VBOX_WITH_XPCOM
4487 ## @todo may be worth creating the VBOX_XPCOM SDK def, or just a SDK_VBOXXPCOM.
4488 TEMPLATE_VBOXQT4GUIEXE_DEFS
+= VBOX_WITH_XPCOM
4489 ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
4490 TEMPLATE_VBOXQT4GUIEXE_DEFS
+= VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
4492 TEMPLATE_VBOXQT4GUIEXE_INCS
+= \
4494 TEMPLATE_VBOXQT4GUIEXE_LIBS
+= \
4496 TEMPLATE_VBOXQT4GUIEXE_INTERMEDIATES
+= \
4497 $(VBOX_PATH_SDK
)/bindings
/xpcom
/include/VirtualBox_XPCOM.h
4499 TEMPLATE_VBOXQT4GUIEXE_INCS
+= \
4500 $(VBOX_PATH_SDK
)/bindings
/mscom
/include
4501 TEMPLATE_VBOXQT4GUIEXE_INTERMEDIATES
+= \
4502 $(VBOX_PATH_SDK
)/bindings
/mscom
/include/VirtualBox.h
4507 # Template for building Qt GUI components.
4509 TEMPLATE_VBOXQT4GUI
= VBox Qt GUI Components
4510 TEMPLATE_VBOXQT4GUI_EXTENDS
= VBOXQT4GUIEXE
4511 TEMPLATE_VBOXQT4GUI_LIBS
= $(filter-out $(QTMAIN
),$(TEMPLATE_VBOXQT4GUIEXE_LIBS
))
4512 ifeq ($(KBUILD_TARGET
),darwin
)
4513 TEMPLATE_VBOXQT4GUI_LDFLAGS.darwin
+= $(filter-out -bind_at_load
,$(TEMPLATE_VBOXQT4GUIEXE_LDFLAGS.darwin
)) \
4514 -current_version
$(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
) \
4515 -compatibility_version
$(VBOX_VERSION_MAJOR
).
$(VBOX_VERSION_MINOR
).
$(VBOX_VERSION_BUILD
)
4517 ifn1of
($(KBUILD_TARGET
), darwin os2 win
)
4518 TEMPLATE_VBOXQT4GUI_DEFS
= PIC
$(TEMPLATE_VBOXQT4GUIEXE_DEFS
)
4519 TEMPLATE_VBOXQT4GUI_CFLAGS
= -fPIC
$(TEMPLATE_VBOXQT4GUIEXE_CFLAGS
)
4520 TEMPLATE_VBOXQT4GUI_CXXFLAGS
= -fPIC
$(TEMPLATE_VBOXQT4GUIEXE_CXXFLAGS
)
4521 TEMPLATE_VBOXQT4GUI_LDFLAGS
= -fPIC
$(TEMPLATE_VBOXQT4GUIEXE_LDFLAGS
)
4524 endif # VBOX_WITH_QTGUI
4528 # Template for building build bldprogs.
4530 # HACK ALERT! The BLD_TRG_* is a hack to allow building libraries as well.
4532 TEMPLATE_VBOXBLDPROG
= VBox Build Program
4533 TEMPLATE_VBOXBLDPROG_BLD_TRG
:= $(KBUILD_HOST
)
4534 TEMPLATE_VBOXBLDPROG_BLD_TRG_ARCH
:= $(KBUILD_HOST_ARCH
)
4535 TEMPLATE_VBOXBLDPROG_BLD_TRG_CPU
:= $(KBUILD_HOST_CPU
)
4536 TEMPLATE_VBOXBLDPROG_DEFS
:= IN_RING3 LOG_DISABLED
4537 TEMPLATE_VBOXBLDPROG_DEFS.win
:= _CRT_SECURE_NO_DEPRECATE
4538 TEMPLATE_VBOXBLDPROG_ASTOOL
:= YASM
4539 TEMPLATE_VBOXBLDPROG_ASFLAGS.x86
:= $(VBOX_ASFLAGS32
)
4540 TEMPLATE_VBOXBLDPROG_ASFLAGS.amd64
:= $(VBOX_ASFLAGS64
)
4541 ifeq ($(KBUILD_HOST
),win
)
4542 TEMPLATE_VBOXBLDPROG_TOOL
:= $(VBOX_VCC_TOOL_STEM
)$(toupper
$(KBUILD_HOST_ARCH
))
4543 TEMPLATE_VBOXBLDPROG_SDKS
:= ReorderCompilerIncs
$(VBOX_WINPSDK
)
4544 TEMPLATE_VBOXBLDPROG_CXXFLAGS
:= -Zi
-Zl
-GR-
-EHsc
-GF
-W3
-wd4065
-wd4244
-wd4996
-Zc
:wchar_t-
$(VBOX_VCC_OPT
) $(VBOX_VCC_FP
) -MT
$(VBOX_VCC_CRT_TYPE
)
4545 TEMPLATE_VBOXBLDPROG_CXXFLAGS.debug
:= -RTCsu
4546 TEMPLATE_VBOXBLDPROG_CXXFLAGS.dbgopt
= $(NO_SUCH_VARIABLE
)
4547 TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release
)
4548 TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release
)
4549 TEMPLATE_VBOXBLDPROG_CFLAGS
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS
)
4550 TEMPLATE_VBOXBLDPROG_CFLAGS.debug
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.debug
)
4551 TEMPLATE_VBOXBLDPROG_CFLAGS.dbgopt
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.dbgopt
)
4552 TEMPLATE_VBOXBLDPROG_CFLAGS.release
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release
)
4553 TEMPLATE_VBOXBLDPROG_CFLAGS.profile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile
)
4554 TEMPLATE_VBOXBLDPROG_CFLAGS.kprofile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile
)
4555 TEMPLATE_VBOXBLDPROG_LDFLAGS
= \
4556 /NOD
/INCREMENTAL
:NO
/MAPINFO
:EXPORTS
/LARGEADDRESSAWARE
/DEBUG \
4557 /DISALLOWLIB
:libc
$(VBOX_VCC_CRT_TYPE_N
).lib \
4558 /DISALLOWLIB
:libcmt
$(VBOX_VCC_CRT_TYPE_N
).lib \
4559 /DISALLOWLIB
:msvcrt.lib \
4560 /DISALLOWLIB
:msvcrtd.lib \
4561 /DISALLOWLIB
:msvcprt.lib \
4562 /DISALLOWLIB
:msvcprtd.lib
4563 TEMPLATE_VBOXBLDPROG_LIBS
= \
4564 $(PATH_TOOL_
$(TEMPLATE_VBOXBLDPROG_TOOL
)_LIB
)/oldnames.lib \
4565 $(PATH_TOOL_
$(TEMPLATE_VBOXBLDPROG_TOOL
)_LIB
)/libcmt
$(VBOX_VCC_CRT_TYPE
).lib \
4566 $(PATH_TOOL_
$(TEMPLATE_VBOXBLDPROG_TOOL
)_LIB
)/libcpmt
$(VBOX_VCC_CRT_TYPE
).lib
4569 # (gcc of some kind )
4570 TEMPLATE_VBOXBLDPROG_TOOL
= GXX3
4571 TEMPLATE_VBOXBLDPROG_CFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC_Wno-variadic-macros
)
4572 TEMPLATE_VBOXBLDPROG_CFLAGS.x86
= -m32
4573 TEMPLATE_VBOXBLDPROG_CFLAGS.sparc32
= -m32
4574 TEMPLATE_VBOXBLDPROG_CFLAGS.amd64
= -m64
4575 TEMPLATE_VBOXBLDPROG_CFLAGS.sparc64
= -m64
4576 TEMPLATE_VBOXBLDPROG_CFLAGS.release
= -O2
-fno-omit-frame-pointer
-fno-strict-aliasing
4577 TEMPLATE_VBOXBLDPROG_CFLAGS.profile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile
)
4578 TEMPLATE_VBOXBLDPROG_CFLAGS.kprofile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile
)
4579 TEMPLATE_VBOXBLDPROG_CXXFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC_Wno-variadic-macros
)
4580 TEMPLATE_VBOXBLDPROG_CXXFLAGS.x86
= -m32
4581 TEMPLATE_VBOXBLDPROG_CXXFLAGS.sparc32
= -m32
4582 TEMPLATE_VBOXBLDPROG_CXXFLAGS.amd64
= -m64
4583 TEMPLATE_VBOXBLDPROG_CXXFLAGS.sparc64
= -m64
4584 TEMPLATE_VBOXBLDPROG_CXXFLAGS.release
= -O2
-fno-omit-frame-pointer
-fno-strict-aliasing
4585 TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release
)
4586 TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release
)
4587 TEMPLATE_VBOXBLDPROG_OBJCFLAGS
= $(TEMPLATE_VBOXBLDPROG_CFLAGS
)
4588 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.x86
= $(TEMPLATE_VBOXBLDPROG_CFLAGS.x86
)
4589 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.amd64
= $(TEMPLATE_VBOXBLDPROG_CFLAGS.amd64
)
4590 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.release
= $(TEMPLATE_VBOXBLDPROG_CFLAGS.release
)
4591 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.profile
= $(TEMPLATE_VBOXBLDPROG_CFLAGS.profile
)
4592 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.kprofile
= $(TEMPLATE_VBOXBLDPROG_CFLAGS.kprofile
)
4593 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS
)
4594 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.x86
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.x86
)
4595 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.amd64
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.amd64
)
4596 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.release
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release
)
4597 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.profile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile
)
4598 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.kprofile
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile
)
4599 TEMPLATE_VBOXBLDPROG_LDFLAGS.x86
= -m32
4600 TEMPLATE_VBOXBLDPROG_LDFLAGS.sparc32
= -m32
4601 TEMPLATE_VBOXBLDPROG_LDFLAGS.amd64
= -m64
4602 TEMPLATE_VBOXBLDPROG_LDFLAGS.sparc64
= -m64
4603 ifeq ($(KBUILD_HOST
),linux
)
4604 TEMPLATE_VBOXBLDPROG_LIBS
= pthread m rt dl
4605 else ifeq ($(KBUILD_HOST
),os2
)
4606 TEMPLATE_VBOXBLDPROG_TOOL
= GXX3OMF
4607 TEMPLATE_VBOXBLDPROG_LIBS
= socket iconv
4608 else ifeq ($(KBUILD_HOST
),darwin
)
4609 TEMPLATE_VBOXBLDPROG_TOOL
= GXX4MACHO
4610 if
"$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.7" ||
"$(VBOX_DARWIN_HOST_VERSION_MAJOR)" == "7"
4611 TEMPLATE_VBOXBLDPROG_DEFS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_7_DEFS
)
4612 TEMPLATE_VBOXBLDPROG_CFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_7_CFLAGS
) -fno-common
4613 TEMPLATE_VBOXBLDPROG_CXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_7_CXXFLAGS
)
4614 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_7_OBJCFLAGS
) $(VBOX_GCC_PEDANTIC_C
)
4615 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_7_OBJCXXFLAGS
) $(VBOX_GCC_PEDANTIC_CXX
)
4616 TEMPLATE_VBOXBLDPROG_LDFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_7_LDFLAGS
)
4617 else if
"$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.6" ||
"$(VBOX_DARWIN_HOST_VERSION_MAJOR)" == "6"
4618 TEMPLATE_VBOXBLDPROG_DEFS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_6_DEFS
)
4619 TEMPLATE_VBOXBLDPROG_CFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_6_CFLAGS
) -fno-common
4620 TEMPLATE_VBOXBLDPROG_CXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_6_CXXFLAGS
)
4621 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_6_OBJCFLAGS
) $(VBOX_GCC_PEDANTIC_C
)
4622 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_6_OBJCXXFLAGS
) $(VBOX_GCC_PEDANTIC_CXX
)
4623 TEMPLATE_VBOXBLDPROG_LDFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_6_LDFLAGS
)
4624 else if
"$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.5" ||
"$(VBOX_DARWIN_HOST_VERSION_MAJOR)" == "5" || defined
(VBOX_MACOS_10_5_WORKAROUND
)
4625 TEMPLATE_VBOXBLDPROG_DEFS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_5_DEFS
)
4626 TEMPLATE_VBOXBLDPROG_CFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_5_CFLAGS
) -fno-common
4627 TEMPLATE_VBOXBLDPROG_CXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_5_CXXFLAGS
)
4628 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_5_OBJCFLAGS
) $(VBOX_GCC_PEDANTIC_C
)
4629 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_5_OBJCXXFLAGS
) $(VBOX_GCC_PEDANTIC_CXX
)
4630 TEMPLATE_VBOXBLDPROG_LDFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_10_5_LDFLAGS
)
4632 TEMPLATE_VBOXBLDPROG_DEFS.darwin
= $(VBOX_DARWIN_DEF_SDK_DEFS
)
4633 TEMPLATE_VBOXBLDPROG_CFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_CFLAGS
) -fno-common
4634 TEMPLATE_VBOXBLDPROG_CXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_CXXFLAGS
)
4635 TEMPLATE_VBOXBLDPROG_OBJCFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_OBJCFLAGS
) $(VBOX_GCC_PEDANTIC_C
)
4636 TEMPLATE_VBOXBLDPROG_OBJCXXFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_OBJCXXFLAGS
) $(VBOX_GCC_PEDANTIC_CXX
)
4637 TEMPLATE_VBOXBLDPROG_LDFLAGS.darwin
= $(VBOX_DARWIN_DEF_SDK_LDFLAGS
)
4639 TEMPLATE_VBOXBLDPROG_LIBS
=
4640 else ifeq ($(KBUILD_HOST
),haiku
)
4641 TEMPLATE_VBOXBLDPROG_TOOL
= GXX3
4642 TEMPLATE_VBOXBLDPROG_LIBS
= network iconv
4643 TEMPLATE_VBOXBLDPROG_LIBPATH
+= \
4645 else if1of
($(KBUILD_HOST
), freebsd netbsd openbsd
)
4646 TEMPLATE_VBOXBLDPROG_TOOL
= GXX3
4647 TEMPLATE_VBOXBLDPROG_LIBS
= pthread
4648 TEMPLATE_VBOXBLDPROG_INCS
+= \
4650 /usr
/X11R6
/include \
4652 TEMPLATE_VBOXBLDPROG_LIBPATH
+= \
4656 else ifeq ($(KBUILD_HOST
),solaris
)
4657 TEMPLATE_VBOXBLDPROG_TOOL
= GXX3PLAIN
4658 TEMPLATE_VBOXBLDPROG_LIBS
= rt
4660 $(warning Warning
: VBOX Build
: Target
$(KBUILD_HOST
) is not officially supported
!)
4667 # Advanced build programs using IPRT, openssl and worse stuff.
4669 TEMPLATE_VBoxAdvBldProg
= Advanced VBox Build Program
4670 TEMPLATE_VBoxAdvBldProg_EXTENDS
= VBOXBLDPROG
4671 TEMPLATE_VBoxAdvBldProg_SDKS
= $(TEMPLATE_VBOXBLDPROG_SDKS
) VBOX_BLD_OPENSSL
4672 TEMPLATE_VBoxAdvBldProg_SDKS.win
= $(TEMPLATE_VBOXBLDPROG_SDKS.win
) VBOX_NTDLL
4673 TEMPLATE_VBoxAdvBldProg_DEFS
= $(TEMPLATE_VBOXBLDPROG_DEFS
) IN_RT_R3
4674 ifeq ($(KBUILD_HOST
),win
)
4675 TEMPLATE_VBoxAdvBldProg_CFLAGS
= $(TEMPLATE_VBOXBLDPROG_CFLAGS
) $(VBOX_VCC_WERR
)
4676 TEMPLATE_VBoxAdvBldProg_CXXFLAGS
= $(TEMPLATE_VBOXBLDPROG_CXXFLAGS
) $(VBOX_VCC_WERR
)
4678 TEMPLATE_VBoxAdvBldProg_LIBS
= \
4679 $(PATH_STAGE_LIB
)/RuntimeBldProg
$(VBOX_SUFF_LIB
) \
4680 $(if-expr defined
(IPRT_WITH_KSTUFF
), \
4681 $(PATH_STAGE_LIB
)/VBox-kStuffStaticBldProg
$(VBOX_SUFF_LIB
) \
4682 $(PATH_STAGE_LIB
)/RuntimeBldProg
$(VBOX_SUFF_LIB
) \
4684 $(TEMPLATE_VBOXBLDPROG_LIBS
)
4685 TEMPLATE_VBoxAdvBldProg_LIBS.darwin
= \
4686 $(TEMPLATE_VBOXBLDPROG_LIBS
) \
4688 $(TEMPLATE_VBOXBLDPROG_LIBS.darwin
)
4689 TEMPLATE_VBoxAdvBldProg_LIBS.freebsd
= \
4690 $(TEMPLATE_VBOXBLDPROG_LIBS
) \
4693 $(TEMPLATE_VBOXBLDPROG_LIBS.freebsd
)
4694 TEMPLATE_VBoxAdvBldProg_LIBS.linux
= \
4695 $(TEMPLATE_VBOXBLDPROG_LIBS
) \
4697 $(TEMPLATE_VBOXBLDPROG_LIBS.linux
)
4698 TEMPLATE_VBoxAdvBldProg_LIBS.solaris
= \
4699 $(TEMPLATE_VBOXBLDPROG_LIBS
) \
4705 $(TEMPLATE_VBOXBLDPROG_LIBS.solaris
)
4709 # Windows rc workaround for crosscompiling.
4710 # (Some (old) Wine versions fails loading msvcrt.dll from the VCC bin directory.)
4712 ifneq ($(KBUILD_HOST
),win
)
4713 TOOL_VCC80X86_RC
:= $(EXEC_X86_WIN32
) $(PATH_DEVTOOLS
)/win.x86
/bin
/rc.exe
4714 TOOL_VCC80AMD64_RC
:= $(EXEC_X86_WIN32
) $(PATH_DEVTOOLS
)/win.x86
/bin
/rc.exe
4715 TOOL_VCC70_RC
:= $(EXEC_X86_WIN32
) $(PATH_DEVTOOLS
)/win.x86
/bin
/rc.exe
4716 WIN32_MC
= $(EXEC_X86_WIN32
) $(PATH_DEVTOOLS
)/win.x86
/bin
/mc.exe
4718 WIN32_MC
= $(EXEC_X86_WIN32
) $(firstword $(wildcard \
4719 $(PATH_SDK_
$(VBOX_WINPSDK
)_BIN
)/MC.Exe\
4720 $(PATH_SDK_WINPSDK_BIN
)/MC.Exe\
4721 $(PATH_SDK_WINPSDK
)/Bin
/MC.Exe\
4722 $(PATH_SDK_WIN32SDK_BIN
)/MC.Exe\
4723 $(PATH_SDK_WIN64SDK_BIN
)/MC.Exe\
4724 $(PATH_DEVTOOLS
)/win.x86
/bin
/mc.exe\
4725 ) Sorry_Cannot_find_mc_in_the_PSDK
)
4730 # Template for building Linux host tools (only for KBUILD_TARGET=l4).
4732 TEMPLATE_VBOXLNXHOSTR3EXE
= Template for building linux host programs when targeting L4.
4733 TEMPLATE_VBOXLNXHOSTR3EXE_INST
= $(INST_BIN
)
4734 TEMPLATE_VBOXLNXHOSTR3EXE_BLD_TRG
= linux
4735 TEMPLATE_VBOXLNXHOSTR3EXE_TOOL
= $(VBOX_GCC_TOOL
)
4736 TEMPLATE_VBOXLNXHOSTR3EXE_ASTOOL
= YASM
4737 TEMPLATE_VBOXLNXHOSTR3EXE_ASFLAGS
= $(VBOX_ASFLAGS
)
4738 TEMPLATE_VBOXLNXHOSTR3EXE_DLLSUFF
= .so
4739 TEMPLATE_VBOXLNXHOSTR3EXE_DEFS
= IN_RING3
$(ARCH_BITS_DEFS
)
4740 TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_CXX
) $(VBOX_GCC_fno-stack-protector
)
4741 TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.debug
= -fno-inline
4742 TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.release
= -O2
-fno-omit-frame-pointer
-fno-strict-aliasing
4743 TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.profile
= $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.release
)
4744 TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.kprofile
= $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.release
)
4745 TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.release
= $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.release
)
4746 TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.debug
= $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.debug
)
4747 TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.profile
= $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.profile
)
4748 TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS.kprofile
= $(TEMPLATE_VBOXLNXHOSTR3EXE_CXXFLAGS.kprofile
)
4749 TEMPLATE_VBOXLNXHOSTR3EXE_CFLAGS
= -g
$(VBOX_GCC_pipe
) $(VBOX_GCC_PEDANTIC_C
) $(VBOX_GCC_fno-stack-protector
)
4750 TEMPLATE_VBOXLNXHOSTR3EXE_LIBS
= pthread m rt dl
4752 TEMPLATE_VBOXLNXHOSTR3LIB
= Template for linux host libraries.
4753 TEMPLATE_VBOXLNXHOSTR3LIB_EXTENDS
= VBOXLNXHOSTR3EXE
4754 TEMPLATE_VBOXLNXHOSTR3LIB_INST
= $(INST_LIB
)
4758 # Template for building R3 programs for the guest additions.
4760 TEMPLATE_VBOXGUESTR3EXE
= VBox Guest Program
4761 ifeq ($(KBUILD_TARGET
),win
)
4762 TEMPLATE_VBOXGUESTR3EXE_EXTENDS
= VBOXR3EXE
4763 TEMPLATE_VBOXGUESTR3EXE_SDKS
= ReorderCompilerIncs
$(VBOX_WINPSDK_GST
) VBOX_NTDLL
4764 TEMPLATE_VBOXGUESTR3EXE_CFLAGS
= $(filter-out -MD
$(VBOX_VCC_CRT_TYPE
), $(TEMPLATE_VBOXR3EXE_CFLAGS
)) -MT
$(VBOX_VCC_CRT_TYPE
)
4765 TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS
= $(filter-out -MD
$(VBOX_VCC_CRT_TYPE
), $(TEMPLATE_VBOXR3EXE_CFLAGS
)) -MT
$(VBOX_VCC_CRT_TYPE
)
4766 TEMPLATE_VBOXGUESTR3EXE_LDFLAGS
= $(filter-out /DISALLOWLIB
:libcmt
$(VBOX_VCC_CRT_TYPE
).lib
/DISALLOWLIB
:libcpmt
$(VBOX_VCC_CRT_TYPE
).lib
, $(TEMPLATE_VBOXR3EXE_LDFLAGS
)) \
4767 /DISALLOWLIB
:msvcrt
$(VBOX_VCC_CRT_TYPE
).lib \
4768 /DISALLOWLIB
:msvcprt
$(VBOX_VCC_CRT_TYPE
).lib
4769 TEMPLATE_VBOXGUESTR3EXE_LIBS.x86
= \
4770 $(PATH_TOOL_
$(TEMPLATE_VBOXGUESTR3EXE_TOOL.win.x86
)_LIB
)/oldnames.lib \
4771 $(PATH_TOOL_
$(TEMPLATE_VBOXGUESTR3EXE_TOOL.win.x86
)_LIB
)/libcmt
$(VBOX_VCC_CRT_TYPE
).lib \
4772 $(PATH_TOOL_
$(TEMPLATE_VBOXGUESTR3EXE_TOOL.win.x86
)_LIB
)/libcpmt
$(VBOX_VCC_CRT_TYPE
).lib
4773 TEMPLATE_VBOXGUESTR3EXE_LIBS.amd64
= \
4774 $(PATH_TOOL_
$(TEMPLATE_VBOXGUESTR3EXE_TOOL.win.amd64
)_LIB
)/oldnames.lib \
4775 $(PATH_TOOL_
$(TEMPLATE_VBOXGUESTR3EXE_TOOL.win.amd64
)_LIB
)/libcmt
$(VBOX_VCC_CRT_TYPE
).lib \
4776 $(PATH_TOOL_
$(TEMPLATE_VBOXGUESTR3EXE_TOOL.win.amd64
)_LIB
)/libcpmt
$(VBOX_VCC_CRT_TYPE
).lib
4777 # Hack for running on NT4, W2K and XP w/o SP: Change OS and subsystem version in the image.
4778 # HACK ALERT! Double expansion of $$(NLTAB).
4779 TEMPLATE_VBOXGUESTR3EXE_POST_CMDS.win.x86
= $(if
$(eq
$(tool_do
),LINK_LIBRARY
),,$(VBOX_PE_SET_VERSION
) $(out
)$$(NLTAB
)$(TEMPLATE_VBOXR3EXE_POST_CMDS
))
4780 TEMPLATE_VBOXGUESTR3EXE_LNK_DEPS.win.x86
= $(if
$(eq
$(tool_do
),LINK_LIBRARY
),,$(VBOX_PE_SET_VERSION
))
4782 TEMPLATE_VBOXGUESTR3EXE_EXTENDS
= VBOXR3EXE
4783 TEMPLATE_VBOXGUESTR3EXE_TOOL
:= $(subst GXX
,GCC
,$(TEMPLATE_VBOXR3EXE_TOOL
))
4784 TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS
= $(TEMPLATE_VBOXR3EXE_CXXFLAGS
) -fno-exceptions
4785 TEMPLATE_VBOXGUESTR3EXE_LDFLAGS
= $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS))
4786 TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux))
4788 TEMPLATE_VBOXGUESTR3EXE_INST = $(INST_ADDITIONS)
4789 TEMPLATE_VBOXGUESTR3EXE_DEFS := $(filter-out $(ARCH_BITS_DEFS), $(TEMPLATE_VBOXR3EXE_DEFS)) IN_GUEST IN_GUEST_R3 IN_RT_R3 $(VBOX_GC_ARCH_BITS_DEFS)
4790 TEMPLATE_VBOXGUESTR3EXE_DEFS.linux := $(TEMPLATE_VBOXR3EXE_DEFS.linux) LOG_USE_C99 RT_WITHOUT_EXEC_ALLOC
4791 ifeq ($(KBUILD_TARGET),linux) # As few libs as possible on linux.
4792 TEMPLATE_VBOXGUESTR3EXE_LIBS = pthread rt m dl
4793 else if1of ($(KBUILD_TARGET), freebsd netbsd openbsd)
4794 TEMPLATE_VBOXGUESTR3EXE_LIBS = $(TEMPLATE_VBOXR3EXE_LIBS) iconv
4795 else ifeq ($(KBUILD_TARGET), solaris)
4796 TEMPLATE_VBOXGUESTR3EXE_LIBS = $(TEMPLATE_VBOXR3EXE_LIBS) nsl
4800 # Template for building normal R3 programs for the guest additions.
4802 TEMPLATE_NewVBoxGuestR3Exe = VBox Guest Program w/ IPRT and VBGL.
4803 TEMPLATE_NewVBoxGuestR3Exe_EXTENDS = VBOXGUESTR3EXE
4804 TEMPLATE_NewVBoxGuestR3Exe_LIBS = \
4805 $(VBOX_LIB_IPRT_GUEST_R3) \
4806 $(VBOX_LIB_VBGL_R3) \
4807 $(VBOX_LIB_IPRT_GUEST_R3) \
4808 $(TEMPLATE_VBOXGUESTR3EXE_LIBS)
4811 # Template for building R3 (dynamic) libraries for the guest additions.
4813 TEMPLATE_VBOXGUESTR3DLL = VBox Guest User Dynamic Libraries
4814 TEMPLATE_VBOXGUESTR3DLL_EXTENDS = VBOXGUESTR3EXE
4815 ## @todo add a INSTFUN that separates dlls and libs.
4816 ifn1of ($(KBUILD_TARGET), darwin os2 win)
4817 TEMPLATE_VBOXGUESTR3DLL_DEFS = $(TEMPLATE_VBOXGUESTR3EXE_DEFS) PIC
4818 TEMPLATE_VBOXGUESTR3DLL_CFLAGS = $(TEMPLATE_VBOXGUESTR3EXE_CFLAGS) -fPIC
4819 TEMPLATE_VBOXGUESTR3DLL_CXXFLAGS = $(TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS) -fPIC -fno-exceptions
4820 TEMPLATE_VBOXGUESTR3DLL_LDFLAGS = $(TEMPLATE_VBOXGUESTR3EXE_LDFLAGS) -fPIC
4824 # Template for building normal R3 (dynamic) libraries for the guest additions, allows warnings.
4826 ## @todo rename to VBoxGuestR3DllWarn
4827 TEMPLATE_NewVBoxGuestR3Dll = VBox Guest User Dynamic Libraries w/ IPRT and VBGL.
4828 TEMPLATE_NewVBoxGuestR3Dll_EXTENDS = VBOXGUESTR3DLL
4829 TEMPLATE_NewVBoxGuestR3Dll_LIBS = \
4830 $(VBOX_LIB_IPRT_GUEST_R3_SHARED) \
4831 $(VBOX_LIB_VBGL_R3_SHARED) \
4832 $(VBOX_LIB_IPRT_GUEST_R3_SHARED) \
4833 $(TEMPLATE_VBOXGUESTR3EXE_LIBS)
4836 # Template for building normal R3 (dynamic) libraries for the guest additions, strict.
4838 TEMPLATE_VBoxGuestR3Dll = VBox Guest User Dynamic Libraries w/ IPRT and VBGL.
4839 TEMPLATE_VBoxGuestR3Dll_EXTENDS = NewVBoxGuestR3Dll
4840 TEMPLATE_VBoxGuestR3Dll_EXTENDS_BY = appending
4841 ifeq ($(KBUILD_TARGET),win)
4842 TEMPLATE_VBoxGuestR3Dll_CFLAGS += $(VBOX_VCC_WERR)
4843 TEMPLATE_VBoxGuestR3Dll_CXXFLAGS += $(VBOX_VCC_WERR)
4844 TEMPLATE_VBoxGuestR3Dll_LDFLAGS += $(VBOX_VCC_LD_WERR)
4846 TEMPLATE_VBoxGuestR3Dll_CFLAGS += $(VBOX_GCC_WERR)
4847 TEMPLATE_VBoxGuestR3Dll_CXXFLAGS += $(VBOX_GCC_WERR)
4851 # Template for building R3 (static) libraries for the guest additions, allows warnings.
4853 ## @todo rename to VBoxGuestR3LibWarn.
4854 TEMPLATE_VBOXGUESTR3LIB = VBox Guest User Libraries
4855 TEMPLATE_VBOXGUESTR3LIB_EXTENDS = VBOXGUESTR3EXE
4856 TEMPLATE_VBOXGUESTR3LIB_INST = $(INST_ADDITIONS_LIB)
4857 if1of ($(KBUILD_TARGET), solaris) ## @todo r=bird: Fix the *R3Mini template to VBOXGUESTR3DLL and remove this hack.
4858 TEMPLATE_VBOXGUESTR3LIB_DEFS = $(TEMPLATE_VBOXGUESTR3EXE_DEFS) PIC
4859 TEMPLATE_VBOXGUESTR3LIB_CFLAGS = $(TEMPLATE_VBOXGUESTR3EXE_CFLAGS) -fPIC
4860 TEMPLATE_VBOXGUESTR3LIB_CXXFLAGS = $(TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS) -fPIC -fno-exceptions
4864 # Template for building R3 (static) libraries for the guest additions, strict.
4866 TEMPLATE_VBoxGuestR3Lib = VBox Guest User Dynamic Libraries w/ IPRT and VBGL.
4867 TEMPLATE_VBoxGuestR3Lib_EXTENDS = VBOXGUESTR3LIB
4868 TEMPLATE_VBoxGuestR3Lib_EXTENDS_BY = appending
4869 ifeq ($(KBUILD_TARGET),win)
4870 TEMPLATE_VBoxGuestR3Lib_CFLAGS += $(VBOX_VCC_WERR)
4871 TEMPLATE_VBoxGuestR3Lib_CXXFLAGS += $(VBOX_VCC_WERR)
4872 TEMPLATE_VBoxGuestR3Lib_LDFLAGS += $(VBOX_VCC_LD_WERR)
4874 TEMPLATE_VBoxGuestR3Lib_CFLAGS += $(VBOX_GCC_WERR)
4875 TEMPLATE_VBoxGuestR3Lib_CXXFLAGS += $(VBOX_GCC_WERR)
4879 # Template for building R3 programs for the guest additions (no -pedantic)
4881 TEMPLATE_VBOXGUESTR3NPEXE = VBox Guest Program Non-pedantic
4882 TEMPLATE_VBOXGUESTR3NPEXE_EXTENDS = VBOXGUESTR3EXE
4883 ifneq ($(KBUILD_TARGET),win) # gcc only
4884 TEMPLATE_VBOXGUESTR3NPEXE_CXXFLAGS = $(filter-out -pedantic -Wshadow,$(TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS)) -Wno-sign-compare
4885 TEMPLATE_VBOXGUESTR3NPEXE_CFLAGS = $(filter-out -pedantic -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations,$(TEMPLATE_VBOXGUESTR3EXE_CFLAGS)) -Wno-sign-compare
4889 # Template for building R3 (dynamic) libraries for the guest additions (no -pedantic)
4891 TEMPLATE_VBOXGUESTR3NPDLL = VBox Guest User Dynamic Libraries Non-pedantic
4892 TEMPLATE_VBOXGUESTR3NPDLL_EXTENDS = VBOXGUESTR3NPEXE
4893 ## @todo add a INSTFUN that separates dlls and libs.
4894 ifn1of ($(KBUILD_TARGET), darwin os2 win)
4895 TEMPLATE_VBOXGUESTR3NPDLL_DEFS = $(TEMPLATE_VBOXGUESTR3NPEXE_DEFS) PIC
4896 TEMPLATE_VBOXGUESTR3NPDLL_CFLAGS = $(TEMPLATE_VBOXGUESTR3NPEXE_CFLAGS) -fPIC
4897 TEMPLATE_VBOXGUESTR3NPDLL_CXXFLAGS = $(TEMPLATE_VBOXGUESTR3NPEXE_CXXFLAGS) -fPIC -fno-exceptions
4898 TEMPLATE_VBOXGUESTR3NPDLL_LDFLAGS = $(TEMPLATE_VBOXGUESTR3NPEXE_LDFLAGS) -fPIC
4902 # Template for building R3 (static) libraries for the guest additions (no -pedantic)
4904 TEMPLATE_VBOXGUESTR3NPLIB = VBox Guest User Libraries Non-pedantic
4905 TEMPLATE_VBOXGUESTR3NPLIB_EXTENDS = VBOXGUESTR3NPEXE
4906 TEMPLATE_VBOXGUESTR3NPLIB_INST = $(INST_ADDITIONS_LIB)
4907 ## @todo r=bird: Fix the *R3Mini template to VBOXGUESTR3DLL and remove this hack.
4908 ifeq ($(filter-out solaris.x86 %.amd64 %.sparc32 %.sparc64,$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)),) ## TODO: Remove these checks!
4909 ifn1of ($(KBUILD_TARGET), darwin os2 win)
4910 TEMPLATE_VBOXGUESTR3NPLIB_DEFS = $(TEMPLATE_VBOXGUESTR3NPEXE_DEFS) PIC
4911 TEMPLATE_VBOXGUESTR3NPLIB_CFLAGS = $(TEMPLATE_VBOXGUESTR3NPEXE_CFLAGS) -fPIC
4912 TEMPLATE_VBOXGUESTR3NPLIB_CXXFLAGS = $(TEMPLATE_VBOXGUESTR3NPEXE_CXXFLAGS) -fPIC -fno-exceptions
4918 # Template for XFree86 guest modules (relocatable module, i.e. sysmod).
4919 # This mostly about zapping the VBOXR3EXE linker flags and libraries.
4921 TEMPLATE_VBOXGUESTR3XF86MOD = VBox XFree86 Guest Module
4922 TEMPLATE_VBOXGUESTR3XF86MOD_EXTENDS = VBOXGUESTR3EXE
4923 TEMPLATE_VBOXGUESTR3XF86MOD_LIBS.$(KBUILD_TYPE) = $(NO_SUCH_VARIABLE)
4924 TEMPLATE_VBOXGUESTR3XF86MOD_LIBS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
4925 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
4926 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.$(KBUILD_TYPE) = $(NO_SUCH_VARIABLE)
4927 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS = -r
4928 if1of ($(KBUILD_TARGET), dragonfly freebsd linux netbsd openbsd) # the gnu ld guys.
4929 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.release = -S
4930 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.x86 = -m elf_i386
4931 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.amd64 = -m elf_x86_64
4933 TEMPLATE_VBOXGUESTR3XF86MOD_CFLAGS = $(TEMPLATE_VBOXGUESTR3EXE_CFLAGS) -fno-merge-constants -std=c99 $(VBOX_GCC_fno-stack-protector) -ffreestanding
4934 TEMPLATE_VBOXGUESTR3XF86MOD_CXXFLAGS= $(TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS) -fno-merge-constants $(VBOX_GCC_fno-stack-protector) -ffreestanding
4935 TEMPLATE_VBOXGUESTR3XF86MOD_SYSSUFF = .o
4936 TEMPLATE_VBOXGUESTR3XF86MOD_LIBS = \
4937 $(VBOX_LIB_VBGL_R3_XFREE86)
4938 TEMPLATE_VBOXGUESTR3XF86MOD_DEFS = $(TEMPLATE_VBOXGUESTR3DLL_DEFS) VBOX_GUESTR3XF86MOD RTMEM_NO_WRAP_TO_EF_APIS
4942 # Template for XFree86 guest libraries.
4944 TEMPLATE_VBOXGUESTR3XF86LIB = VBox XFree86 Guest Library
4945 TEMPLATE_VBOXGUESTR3XF86LIB_EXTENDS = VBOXGUESTR3XF86MOD
4946 TEMPLATE_VBOXGUESTR3XF86LIB_INST = $(INST_ADDITIONS_LIB)
4950 # Template for X.org guest modules (shared libs).
4951 # This mostly about zapping unnecessary LIBS from VBOXGUESTR3DLL and adding some flags.
4953 TEMPLATE_VBOXGUESTR3XORGMOD = VBox X.org Guest Module
4954 TEMPLATE_VBOXGUESTR3XORGMOD_EXTENDS = VBOXGUESTR3DLL
4955 TEMPLATE_VBOXGUESTR3XORGMOD_LIBS.$(KBUILD_TYPE) = $(NO_SUCH_VARIABLE)
4956 TEMPLATE_VBOXGUESTR3XORGMOD_LIBS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
4957 TEMPLATE_VBOXGUESTR3XORGMOD_CFLAGS = $(TEMPLATE_VBOXGUESTR3DLL_CFLAGS) -std=c99
4958 TEMPLATE_VBOXGUESTR3XORGMOD_DEFS = $(TEMPLATE_VBOXGUESTR3DLL_DEFS) LOG_TO_BACKDOOR VBOX_GUESTR3XORGMOD RTMEM_NO_WRAP_TO_EF_APIS
4959 ifeq ($(KBUILD_TARGET_ARCH),amd64)
4960 TEMPLATE_VBOXGUESTR3XORGMOD_DEFS += _XSERVER64
4962 if1of ($(KBUILD_TARGET), linux)
4963 TEMPLATE_VBOXGUESTR3XORGMOD_LDFLAGS = $(TEMPLATE_VBOXGUESTR3DLL_LDFLAGS)
4965 TEMPLATE_VBOXGUESTR3XORGMOD_LIBS = \
4966 $(VBOX_LIB_VBGL_R3_SHARED) \
4967 $(VBOX_LIB_IPRT_GUEST_R3_MINI) \
4968 $(VBOX_LIB_VBGL_R3_SHARED) \
4969 $(VBOX_LIB_IPRT_GUEST_R3_MINI)
4970 TEMPLATE_VBOXGUESTR3XORGMOD_LIBS.freebsd += \
4975 # Template for building R0 drivers for the guest additions.
4977 TEMPLATE_VBOXGUESTR0 = VBox Guest Driver
4978 TEMPLATE_VBOXGUESTR0_EXTENDS = VBOXR0DRV
4979 TEMPLATE_VBOXGUESTR0_INST = $(INST_ADDITIONS)
4980 TEMPLATE_VBOXGUESTR0_SDKS.win.x86 = ReorderCompilerIncs $(VBOX_WINDDK_GST) $(VBOX_WINPSDK_GST)INCS
4981 TEMPLATE_VBOXGUESTR0_SDKS.win.amd64 = ReorderCompilerIncs $(VBOX_WINDDK_GST) $(VBOX_WINPSDK_GST)INCS
4982 TEMPLATE_VBOXGUESTR0_LIBS.win.x86 = \
4983 $(PATH_SDK_$(VBOX_WINDDK)_LIB)/int64.lib
4984 TEMPLATE_VBOXGUESTR0_DEFS = $(TEMPLATE_VBOXR0DRV_DEFS) IN_GUEST IN_GUEST_R0
4985 ifeq ($(KBUILD_TARGET),solaris)
4986 TEMPLATE_VBOXGUESTR0_LDFLAGS = -r -dy
4988 ifn1of (darwin os2 win, $(KBUILD_TARGET))
4989 TEMPLATE_VBOXGUESTR0_CFLAGS = $(patsubst %/VBox/SUPDrvMangling.h,%/VBox/VBoxGuestMangling.h,$(TEMPLATE_VBOXR0DRV_CFLAGS))
4990 TEMPLATE_VBOXGUESTR0_CXXFLAGS = $(patsubst %/VBox/SUPDrvMangling.h,%/VBox/VBoxGuestMangling.h,$(TEMPLATE_VBOXR0DRV_CXXFLAGS))
4994 # Template for building R0 libraries for the guest additions.
4996 TEMPLATE_VBOXGUESTR0LIB = VBox Guest Driver Libraries
4997 TEMPLATE_VBOXGUESTR0LIB_EXTENDS = VBOXGUESTR0
4998 TEMPLATE_VBOXGUESTR0LIB_INSTTYPE = stage
4999 TEMPLATE_VBOXGUESTR0LIB_INSTTYPE.linux = stage
5000 TEMPLATE_VBOXGUESTR0LIB_INST = $(INST_ADDITIONS_LIB)
5001 ifeq ($(KBUILD_TARGET),haiku)
5002 TEMPLATE_VBOXGUESTR0LIB_LDFLAGS = -r -dy
5006 # Template for building OpenGL host dlls.
5008 TEMPLATE_VBOXCROGLR3HOSTDLL = VBox OpenGL Host DLLs
5009 TEMPLATE_VBOXCROGLR3HOSTDLL_EXTENDS = VBOXR3NP
5010 TEMPLATE_VBOXCROGLR3HOSTDLL_EXTENDS_BY = prepending
5011 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS = CHROMIUM_THREADSAFE VBOX_WITH_HGCM UNPACKS
5012 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.win = _WIN32_WINNT=0x0500 WINDOWS=1
5013 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.linux = Linux=1 _GNU_SOURCE
5014 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.solaris = SunOS=1 _GNU_SOURCE #GLEXT_64_TYPES_DEFINED
5015 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.darwin = DARWIN=1 GL_GLEXT_LEGACY _GNU_SOURCE VBOX_WITH_COCOA_QT
5016 TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.darwin = -framework AppKit
5017 TEMPLATE_VBOXCROGLR3HOSTDLL_DEFS.freebsd = FreeBSD=1 _GNU_SOURCE
5018 TEMPLATE_VBOXCROGLR3HOSTDLL_INCS = $(VBOX_PATH_CROGL_INCLUDE) $(VBOX_PATH_CROGL_GENFILES)
5019 TEMPLATE_VBOXCROGLR3HOSTDLL_SDKS.darwin = DARWIN-OPENGL
5020 TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.darwin += \
5022 -current_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
5023 -compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)
5024 TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.linux = -Wl,--no-as-needed
5025 TEMPLATE_VBOXCROGLR3HOSTDLL_BLDDIRS = $(VBOX_PATH_CROGL_GENFILES)/
5028 # Template for building OpenGL host libraries.
5030 TEMPLATE_VBOXCROGLR3HOSTLIB = VBox OpenGL Host Libraries
5031 TEMPLATE_VBOXCROGLR3HOSTLIB_EXTENDS = VBOXCROGLR3HOSTDLL
5032 TEMPLATE_VBOXCROGLR3HOSTLIB_INST = $(INST_LIB)
5035 # Template for building OpenGL guest dlls.
5037 TEMPLATE_VBOXCROGLR3GUESTDLL = VBox OpenGL Guest DLLs
5038 TEMPLATE_VBOXCROGLR3GUESTDLL_EXTENDS = VBOXGUESTR3NPDLL
5039 TEMPLATE_VBOXCROGLR3GUESTDLL_EXTENDS_BY = prepending
5040 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS = CHROMIUM_THREADSAFE VBOX_WITH_HGCM
5041 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.win = WINDOWS=1
5042 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.linux = Linux=1 _GNU_SOURCE
5043 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.solaris = SunOS=1 _GNU_SOURCE #GLEXT_64_TYPES_DEFINED
5044 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.darwin = DARWIN=1 GL_GLEXT_LEGACY _GNU_SOURCE VBOX_WITH_COCOA_QT
5045 TEMPLATE_VBOXCROGLR3GUESTDLL_LDFLAGS.darwin = -framework AppKit
5046 TEMPLATE_VBOXCROGLR3GUESTDLL_DEFS.freebsd = FreeBSD=1 _GNU_SOURCE
5047 TEMPLATE_VBOXCROGLR3GUESTDLL_INCS = $(VBOX_PATH_CROGL_INCLUDE) $(VBOX_PATH_CROGL_GENFILES)
5048 TEMPLATE_VBOXCROGLR3GUESTDLL_SDKS.darwin = DARWIN-OPENGL
5049 TEMPLATE_VBOXCROGLR3GUESTDLL_LDFLAGS.darwin += \
5051 -current_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
5052 -compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)
5053 TEMPLATE_VBOXCROGLR3GUESTDLL_BLDDIRS = $(VBOX_PATH_CROGL_GENFILES)/
5056 # Template for building OpenGL guest libraries.
5058 TEMPLATE_VBOXCROGLR3GUESTLIB = VBox OpenGL Guest Libraries
5059 TEMPLATE_VBOXCROGLR3GUESTLIB_EXTENDS = VBOXCROGLR3GUESTDLL
5060 TEMPLATE_VBOXCROGLR3GUESTLIB_INST = $(INST_ADDITIONS_LIB)
5064 # Template for building Mesa guest library, Linux-only so far.
5066 TEMPLATE_VBOXMESAR3GUESTLIB = VBox Mesa Guest Library
5067 TEMPLATE_VBOXMESAR3GUESTLIB_EXTENDS = VBOXCROGLR3GUESTDLL
5068 TEMPLATE_VBOXMESAR3GUESTLIB_INST = $(INST_ADDITIONS_LIB)
5069 TEMPLATE_VBOXMESAR3GUESTLIB_DEFS.linux = Linux=1
5070 TEMPLATE_VBOXMESAR3GUESTLIB_DEFS.solaris = SunOS=1
5071 TEMPLATE_VBOXMESAR3GUESTLIB_DEFS.darwin = DARWIN=1 GL_GLEXT_LEGACY
5072 ifeq ($(KBUILD_TARGET),linux)
5073 TEMPLATE_VBOXMESAR3GUESTLIB_ASTOOL = $(TEMPLATE_VBOXCROGLR3GUESTDLL_TOOL)
5074 TEMPLATE_VBOXMESAR3GUESTLIB_ASFLAGS = $(NO_SUCH_VARIABLE)
5075 TEMPLATE_VBOXMESAR3GUESTLIB_ASFLAGS.x86 = -m32
5076 TEMPLATE_VBOXMESAR3GUESTLIB_ASFLAGS.amd64 = -m64
5077 TEMPLATE_VBOXMESAR3GUESTLIB_ASDEFS = $(NO_SUCH_VARIABLE)
5082 # Guest additions libraries (all static).
5083 # The _MINI and _SHARED are both compiled as PIC and intended for linking into a .so/.dll/.dylib.
5085 VBOX_LIB_IPRT_GUEST_R3 = $(VBOX_PATH_ADDITIONS_LIB)/RuntimeGuestR3$(VBOX_SUFF_LIB)
5086 VBOX_LIB_IPRT_GUEST_R3_MINI = $(VBOX_PATH_ADDITIONS_LIB)/RuntimeGuestR3Mini$(VBOX_SUFF_LIB)
5087 VBOX_LIB_IPRT_GUEST_R3_SHARED = $(VBOX_PATH_ADDITIONS_LIB)/RuntimeGuestR3Shared$(VBOX_SUFF_LIB)
5088 VBOX_LIB_IPRT_GUEST_R0 = $(VBOX_PATH_ADDITIONS_LIB)/RuntimeGuestR0$(VBOX_SUFF_LIB)
5089 ifeq ($(KBUILD_TARGET_ARCH),x86)
5090 VBOX_LIB_IPRT_GUEST_R0_NT4 = $(VBOX_PATH_ADDITIONS_LIB)/RuntimeGuestR0NT4$(VBOX_SUFF_LIB)
5092 VBOX_LIB_IPRT_GUEST_R0_NT4 = $(VBOX_LIB_IPRT_GUEST_R0)
5094 VBOX_LIB_VBGL_R3 = $(VBOX_PATH_ADDITIONS_LIB)/VBoxGuestR3Lib$(VBOX_SUFF_LIB)
5095 VBOX_LIB_VBGL_R3_XFREE86 = $(VBOX_PATH_ADDITIONS_LIB)/VBoxGuestR3LibXFree86$(VBOX_SUFF_LIB)
5096 VBOX_LIB_VBGL_R3_SHARED = $(VBOX_PATH_ADDITIONS_LIB)/VBoxGuestR3LibShared$(VBOX_SUFF_LIB)
5097 VBOX_LIB_VBGL_R0BASE = $(VBOX_PATH_ADDITIONS_LIB)/VBoxGuestR0LibBase$(VBOX_SUFF_LIB)
5098 VBOX_LIB_VBGL_R0 = $(VBOX_PATH_ADDITIONS_LIB)/VBoxGuestR0Lib$(VBOX_SUFF_LIB)
5099 ifeq ($(KBUILD_TARGET),x86)
5100 VBOX_LIB_IPRT_GUEST_R3_X86 = $(VBOX_LIB_IPRT_GUEST_R3)
5101 VBOX_LIB_IPRT_GUEST_R3_SHARED_X86 = $(VBOX_LIB_IPRT_GUEST_R3_SHARED)
5102 VBOX_LIB_VBGL_R3_X86 = $(VBOX_LIB_VBGL_R3)
5103 VBOX_LIB_VBGL_R3_SHARED_X86 = $(VBOX_LIB_VBGL_R3_SHARED)
5105 VBOX_LIB_IPRT_GUEST_R3_X86 = $(VBOX_PATH_ADDITIONS_LIB)/RuntimeGuestR3-x86$(VBOX_SUFF_LIB)
5106 VBOX_LIB_IPRT_GUEST_R3_SHARED_X86 = $(VBOX_PATH_ADDITIONS_LIB)/RuntimeGuestR3Shared-x86$(VBOX_SUFF_LIB)
5107 VBOX_LIB_VBGL_R3_X86 = $(VBOX_PATH_ADDITIONS_LIB)/VBoxGuestR3Lib-x86$(VBOX_SUFF_LIB)
5108 VBOX_LIB_VBGL_R3_SHARED_X86 = $(VBOX_PATH_ADDITIONS_LIB)/VBoxGuestR3LibShared-x86$(VBOX_SUFF_LIB)
5113 # Check the publisher and version string.
5115 # We are being very strict because the version string is visible in various
5116 # APIs and logs and must be machine readable.
5118 VBOX_VERSION_COMP_VALID_CHAR_SET = ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz()[]{}+-.,
5119 ifneq ($(VBOX_BUILD_PUBLISHER),)
5120 if $(length $(VBOX_BUILD_PUBLISHER)) > 10
5121 $(error VBox: VBOX_BUILD_PUBLISHER must not be longer than 10 characters!)
5123 if "$(substr $(VBOX_BUILD_PUBLISHER), 1, 1)" != "_"
5124 $(error VBox: VBOX_BUILD_PUBLISHER must start with an underscore!)
5126 if "$(translate $(substr $(VBOX_BUILD_PUBLISHER),2),$(VBOX_VERSION_COMP_VALID_CHAR_SET),)" != ""
5127 $(error VBox: VBOX_BUILD_PUBLISHER='$(VBOX_BUILD_PUBLISHER
)' contains bad characters! Valid set is:$(NLTAB)$(VBOX_VERSION_COMP_VALID_CHAR_SET))
5131 if $(words $(VBOX_VERSION_STRING)) != 1
5132 $(error VBox: VBOX_VERSION_STRING='$(VBOX_VERSION_STRING
)' contains spaces or is empty.)
5134 if "$(subst __,-,$(VBOX_VERSION_STRING))" != "$(VBOX_VERSION_STRING)"
5135 $(error VBox: VBOX_VERSION_STRING='$(VBOX_VERSION_STRING
)' contains double underscores.)
5138 VBOX_VER_TMP1 := $(subst _,$(SP),$(VBOX_VERSION_STRING))
5140 if $(words $(VBOX_VER_TMP1)) > 3
5141 $(error VBox: VBOX_VERSION_STRING='$(VBOX_VERSION_STRING
)' contains too many parts (underscores), max 3!)
5143 if "$(translate $(word 1,$(VBOX_VER_TMP1)),0123456789,)" != ".."
5144 $(error VBox: The x.y.z part of VBOX_VERSION_STRING='$(VBOX_VERSION_STRING
)' is malformed: '$(word 1,$(VBOX_VER_TMP1
))')
5146 if "$(word 1,$(VBOX_VER_TMP1))" != "$(VBOX_VERSION_STRING_RAW)"
5147 $(error VBox: VBOX_VERSION_STRING='$(VBOX_VERSION_STRING
)' does not start with VBOX_VERSION_STRING_RAW='$(VBOX_VERSION_STRING_RAW
)')
5150 if $(words $(VBOX_VER_TMP1)) == 3 || ($(words $(VBOX_VER_TMP1)) == 2 && "$(VBOX_BUILD_PUBLISHER)" == "")
5151 if "$(substr $(word 2,$(VBOX_VER_TMP1)),1,4)" == "BETA"
5153 else if "$(substr $(word 2,$(VBOX_VER_TMP1)),1,5)" == "ALPHA"
5155 else if "$(substr $(word 2,$(VBOX_VER_TMP1)),1,2)" == "RC"
5158 $(error VBox: VBOX_VERSION_STRING='$(VBOX_VERSION_STRING
)' uses an unknown build type: '$(word 2,$(VBOX_VER_TMP1
))')
5160 if "$(translate $(substr $(word 2,$(VBOX_VER_TMP1)),$(VBOX_VER_TMP2)),0123456789)" != ""
5161 $(error VBox: VBOX_VERSION_STRING='$(VBOX_VERSION_STRING
)' uses an unknown build type: '$(word 2,$(VBOX_VER_TMP1
))')
5170 # Two targets to coordinate version number changes properly. Note that the
5171 # only way to get a really consistent build is to run 'kmk
' in the top-level
5172 # directory. If you don't run it there
, you
get a consistent sub-tree only.
5174 VBOX_BAD_CHAR_SET
= ,;:/\
$(SP
)$(TAB
)$(HASH
)=![]@
%&''()*""<>?^
{}|~
5175 VBOX_VERSION_STAMP
= $(PATH_OUT
)/version-stamp-raw-api-
$(translate
$(VBOX_VERSION_STRING
)-$(VBOX_C_YEAR
)-$(VBOX_VENDOR
)-$(VBOX_PRODUCT
)-$(VBOX_API_VERSION
)-$(VBOX_BUILD_PUBLISHER
),$(VBOX_BAD_CHAR_SET
),,_
)
5176 VBOX_VERSION_HEADER
= $(PATH_OUT
)/version-generated.h
5177 VBOX_VERSION_MK
= $(PATH_OUT
)/version-generated.mk
5179 $(VBOX_VERSION_STAMP
): |
$(PATH_ROOT
)/Config.kmk
5180 $(call MSG_GENERATE
,,$@
)
5181 $(QUIET
)$(MKDIR
) -p
$(@D
)
5182 $(QUIET
)$(RM
) -f
$(wildcard $(PATH_OUT
)/version-stamp-
*)
5183 $(QUIET
)$(APPEND
) $@
$(VBOX_VERSION_STRING
)
5185 $(VBOX_VERSION_HEADER
): $(VBOX_VERSION_STAMP
)
5186 $(call MSG_GENERATE
,,$@
)
5187 $(QUIET
)$(MKDIR
) -p
$(@D
)
5188 $(QUIET
)$(RM
) -f
$@
$@.tmp
5189 $(QUIET
)$(APPEND
) $@.tmp
'#ifndef ___version_generated_h___'
5190 $(QUIET
)$(APPEND
) $@.tmp
'#define ___version_generated_h___'
5191 $(QUIET
)$(APPEND
) $@.tmp
''
5192 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_VERSION_MAJOR $(VBOX_VERSION_MAJOR)'
5193 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_VERSION_MINOR $(VBOX_VERSION_MINOR)'
5194 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_VERSION_BUILD $(VBOX_VERSION_BUILD)'
5195 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_VERSION_STRING_RAW "$(VBOX_VERSION_STRING_RAW)"'
5196 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_VERSION_STRING "$(VBOX_VERSION_STRING)"'
5197 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_API_VERSION_STRING "$(VBOX_API_VERSION)"'
5198 $(QUIET
)$(APPEND
) $@.tmp
''
5199 $(QUIET
)$(APPEND
) $@.tmp
'#endif'
5200 $(QUIET
)$(MV
) -f
$@.tmp
$@
5203 VBOX_PACKAGE_HEADER
= $(PATH_OUT
)/package-generated.h
5205 $(VBOX_PACKAGE_HEADER
):
5206 $(call MSG_GENERATE
,,$@
)
5207 $(QUIET
)$(MKDIR
) -p
$(@D
)
5208 $(QUIET
)$(RM
) -f
$@
$@.tmp
5209 $(QUIET
)$(APPEND
) $@.tmp
'#ifndef ___package_generated_h___'
5210 $(QUIET
)$(APPEND
) $@.tmp
'#define ___package_generated_h___'
5211 $(QUIET
)$(APPEND
) $@.tmp
''
5212 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_PACKAGE_STRING "$(VBOX_PACKAGE_STRING)"'
5213 $(QUIET
)$(APPEND
) $@.tmp
''
5214 $(QUIET
)$(APPEND
) $@.tmp
'#endif'
5215 $(QUIET
)$(MV
) -f
$@.tmp
$@
5217 VBOX_PRODUCT_HEADER
= $(PATH_OUT
)/product-generated.h
5219 $(VBOX_PRODUCT_HEADER
): $(VBOX_VERSION_STAMP
)
5220 $(call MSG_GENERATE
,,$@
)
5221 $(QUIET
)$(MKDIR
) -p
$(@D
)
5222 $(QUIET
)$(RM
) -f
$@
$@.tmp
5223 $(QUIET
)$(APPEND
) $@.tmp
'#ifndef ___product_generated_h___'
5224 $(QUIET
)$(APPEND
) $@.tmp
'#define ___product_generated_h___'
5225 $(QUIET
)$(APPEND
) $@.tmp
''
5226 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_VENDOR "$(VBOX_VENDOR)"'
5227 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_VENDOR_SHORT "$(VBOX_VENDOR_SHORT)"'
5228 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_PRODUCT "$(VBOX_PRODUCT)"'
5229 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_BUILD_PUBLISHER "$(VBOX_BUILD_PUBLISHER)"'
5230 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_C_YEAR "$(VBOX_C_YEAR)"'
5231 $(QUIET
)$(APPEND
) $@.tmp
''
5232 $(QUIET
)$(APPEND
) $@.tmp
'#endif'
5233 $(QUIET
)$(MV
) -f
$@.tmp
$@
5236 # Used for external makefiles which cannot include Config.kmk
5238 $(VBOX_VERSION_MK
): $(VBOX_VERSION_STAMP
)
5239 $(call MSG_GENERATE
,,$@
)
5240 $(QUIET
)$(RM
) -f
$@
$@.tmp
5241 $(QUIET
)$(MKDIR
) -p
$(@D
)
5242 $(QUIET
)$(APPEND
) $@.tmp
'VBOX_VERSION_MAJOR = $(VBOX_VERSION_MAJOR)'
5243 $(QUIET
)$(APPEND
) $@.tmp
'VBOX_VERSION_MINOR = $(VBOX_VERSION_MINOR)'
5244 $(QUIET
)$(APPEND
) $@.tmp
'VBOX_VERSION_BUILD = $(VBOX_VERSION_BUILD)'
5245 $(QUIET
)$(APPEND
) $@.tmp
'VBOX_VERSION_STRING = $(VBOX_VERSION_STRING)'
5246 $(QUIET
)$(APPEND
) $@.tmp
'VBOX_VENDOR = $(VBOX_VENDOR)'
5247 $(QUIET
)$(APPEND
) $@.tmp
'VBOX_VENDOR_SHORT = $(VBOX_VENDOR_SHORT)'
5248 $(QUIET
)$(APPEND
) $@.tmp
'VBOX_PRODUCT = $(VBOX_PRODUCT)'
5249 $(QUIET
)$(APPEND
) $@.tmp
'VBOX_C_YEAR = $(VBOX_C_YEAR)'
5250 $(QUIET
)$(MV
) -f
$@.tmp
$@
5252 if
!defined
(VBOX_OSE
) && !defined
(VBOX_NOINC_LICENSE_VER_KMK
)
5253 if1of
($(KBUILD_TARGET
), freebsd linux netbsd openbsd solaris
)
5254 # VBOX_LICENSE_VER is used in several Makefiles
5255 VBOX_LICENSE_VER_KMK
= $(PATH_OUT
)/license-version.kmk
5256 $(VBOX_LICENSE_VER_KMK
): $(VBOX_BRAND_LICENSE_HTML
)
5257 $(call MSG_GENERATE
,,$(VBOX_LICENSE_VER_KMK
))
5258 $(QUIET
)$(MKDIR
) -p
$(@D
)
5259 ifdef VBOX_BRAND_LICENSE_VER
5260 $(QUIET
)$(RM
) -f
'$@'
5261 $(APPEND
) '$@' 'VBOX_LICENSE_VER=$(VBOX_BRAND_LICENSE_VER)'
5263 $(QUIET
)$(SED
) -e
"s/.*License version \([0-9.]*\) *[,&].*/VBOX_LICENSE_VER=\1/;t;d" --output
$@
$(VBOX_BRAND_LICENSE_HTML
)
5265 -include $(VBOX_LICENSE_VER_KMK
)
5266 ifdef VBOX_LICENSE_VER
5267 VBOX_LICENSE_FILES
= \
5268 License-
$(VBOX_LICENSE_VER
).html \
5269 $(foreach f
,$(VBOX_INSTALLER_ADD_LANGUAGES
),License-
$(VBOX_LICENSE_VER
)-$(f
).html
)
5270 VBOX_LICENSE_BINS
= $(addprefix $(PATH_STAGE_BIN
)/,$(VBOX_LICENSE_FILES
))
5276 ifndef VBOX_NOINC_MISC
5277 # Force building of the version header file as the first thing anywhere in
5278 # the tree. This eliminates the need for manual dependencies on it.
5279 ## @todo there gotta be a better way of doing this.
5280 Makefile.kmk
: |
$(VBOX_VERSION_HEADER
) $(VBOX_VERSION_MK
) $(VBOX_PRODUCT_HEADER
) $(VBOX_PACKAGE_HEADER
)
5285 # Subversion tree revision.
5287 # The VBOX_SVN_REV contains our best guess. Use svn info on the root of the
5288 # tree to determin this it if .svn/entries is found, otherwise fall back on
5289 # the Config.kmk revision.
5291 # Makefile rules using this information shall list $(VBOX_SVN_REV_KMK) as a
5294 SVN ?
= svn
$(HOSTSUFF_EXE
)
5295 VBOX_SVN_REV_KMK
= $(PATH_OUT
)/revision.kmk
5297 VBOX_SVN_REV_FALLBACK
:= $(patsubst %:,, $Rev$ )
5298 VBOX_SVN_DEP
:= $(wildcard $(PATH_ROOT
)/.svn
/entries
)
5299 ifeq ($(which
$(SVN
)),)
5303 # Rule for generating a timestamp and updating the real thing on change.
5304 $(VBOX_SVN_REV_KMK
).ts
+|
$(VBOX_SVN_REV_KMK
): $(if
$(VBOX_SVN_DEP
), $(VBOX_SVN_DEP
), $(PATH_ROOT
)/Config.kmk
)
5305 $(call MSG_GENERATE
,,$(VBOX_SVN_REV_KMK
))
5306 $(QUIET
)$(RM
) -f
$@
$@.tmp
5307 $(QUIET
)$(MKDIR
) -p
$(@D
)
5308 ifneq ($(VBOX_SVN_DEP
),)
5309 $(REDIRECT
) -E
'LC_ALL=C' -wo
$@.tmp
-- $(SVN
) info $(PATH_ROOT
)
5310 ifeq ($(int-mod
$(VBOX_VERSION_BUILD
), 2),0)
5311 $(SED
) -e
'/^Last Changed Rev/!d' -e
's/Last Changed Rev\: */export VBOX_SVN_REV=/' --output
$@
$@.tmp
5313 $(SED
) -e
'/^Revision/!d' -e
's/Revision\: */export VBOX_SVN_REV=/' --output
$@
$@.tmp
5315 $(QUIET
)$(RM
) -f
$@.tmp
5317 $(QUIET
)$(APPEND
) $@
'export VBOX_SVN_REV=$(VBOX_SVN_REV_FALLBACK)'
5319 $(QUIET
)$(CP
) --changed
-fv
$@
$(VBOX_SVN_REV_KMK
)
5321 ifndef VBOX_NOINC_SVN_REV_KMK
5322 include $(VBOX_SVN_REV_KMK
)
5325 # allow to overwrite VBOX_SVN_REV externally (mainly for building .debs/.rpms)
5326 $(VBOX_SVN_REV_KMK
):
5327 $(call MSG_GENERATE
,,$(VBOX_SVN_REV_KMK
))
5329 $(QUIET
)$(MKDIR
) -p
$(@D
)
5330 $(QUIET
)$(APPEND
) $@
'export VBOX_SVN_REV=$(VBOX_SVN_REV)'
5331 $(QUIET
)echo
'* $(VBOX_SVN_REV_KMK) was externally overwritten:'
5332 $(QUIET
)$(CAT
) $(VBOX_SVN_REV_KMK
)
5335 # only needed for VBoxGuest for Linux/FreeBSD guests
5336 VBOX_SVN_REV_HEADER
= $(PATH_OUT
)/revision-generated.h
5337 $(VBOX_SVN_REV_HEADER
): $(VBOX_SVN_REV_KMK
)
5338 $(call MSG_GENERATE
,,$@
)
5339 $(QUIET
)$(RM
) -f
$@
$@.tmp
5340 $(QUIET
)$(MKDIR
) -p
$(@D
)
5341 $(QUIET
)$(APPEND
) $@.tmp
'#define VBOX_SVN_REV $(VBOX_SVN_REV)'
5342 $(QUIET
)$(MV
) -f
$@.tmp
$@
5345 # Shared definitions of the XIDL file to use as a source for
5346 # generating various other files (VBoxSVC, webservice, docs, front-ends, ...)
5349 # Real XIDL source file; from this we strip the <desc> elements to generate
5350 # a second XIDL file, from which the COM/XPCOM IDL files are then generated:
5351 VBOX_XIDL_FILE_SRC
= $(PATH_ROOT
)/src
/VBox
/Main
/idl
/VirtualBox.xidl
5352 # second XIDL file to use as source for COM/XPCOM IDL (with stripped docs):
5353 VBOX_XIDL_FILE
= $(PATH_OUT
)/obj
/VirtualBox_stripped.xidl
5356 ifeq ($(KBUILD_TARGET
), darwin
)
5357 VBOX_JAVA_COMMANDS
= $(firstword $(wildcard \
5358 /System
/Library
/Java
/JavaVirtualMachines
/1.6.0.jdk
/Contents
/Commands \
5359 /System
/Library
/Frameworks
/JavaVM.framework
/Versions
/1.6.0/Commands \
5360 $(if-expr
$(VBOX_XCODE_VERSION_MAJOR
) >= 4,/System
/Library
/Frameworks
/JavaVM.framework
/Versions
/A
/Commands
,) \
5361 ) /System
/Library
/Frameworks
/JavaVM.framework
/Versions
/1.6.0/Commands
)
5362 VBOX_JAVAC
= $(VBOX_JAVA_COMMANDS
)/javac
5363 VBOX_JAVAH
= $(VBOX_JAVA_COMMANDS
)/javah
5364 VBOX_JAR
= $(VBOX_JAVA_COMMANDS
)/jar
5365 VBOX_JAVADOC
= $(VBOX_JAVA_COMMANDS
)/javadoc
5366 VBOX_WSIMPORT
= $(VBOX_JAVA_COMMANDS
)/wsimport
5367 if
$(VBOX_XCODE_VERSION_MAJOR
) >= 4 # Lion (4.1-preview 5) has a broken CurrentJDK link. Blindly applying it to 4.0.
5368 VBOX_JAVA_INC
= $(VBOX_PATH_MACOSX_SDK
)/System
/Library
/Frameworks
/JavaVM.framework
/Versions
/A
/Headers
5370 VBOX_JAVA_INC
= $(VBOX_PATH_MACOSX_SDK
)/System
/Library
/Frameworks
/JavaVM.framework
/Versions
/1.6/Headers
5375 ifeq ($(KBUILD_TARGET
),linux
)
5376 ifeq ($(origin VBOX_JAVA_HOME
),undefined
)
5377 # Add correct detection for you distro after the /usr/../java-6-sun line.
5378 VBOX_JAVA_HOME
:= $(firstword $(wildcard \
5379 $(PATH_DEVTOOLS
)/linux.x86
/jdk1.6
.0_27 \
5380 /usr
/lib
/jvm
/java-6-sun \
5381 /usr
/lib
/jvm
/java-6-openjdk \
5383 /usr
/lib
/jvm
/sun-jdk-1.6 \
5384 ) /usr
/lib
/jvm
/java-6-sun
)
5388 ifeq ($(KBUILD_TARGET
),solaris
)
5389 # VBOX_JAVA_HOME ?= /usr/jdk/jdk1.6.0
5390 VBOX_JAVA_HOME ?
= /usr
/java
5393 ifeq ($(KBUILD_TARGET
),win
)
5394 VBOX_JAVA_HOME ?
= c
:/jdk
5397 VBOX_JAVAC
= $(VBOX_JAVA_HOME
)/bin
/javac
5398 VBOX_JAVAH
= $(VBOX_JAVA_HOME
)/bin
/javah
5399 VBOX_JAR
= $(VBOX_JAVA_HOME
)/bin
/jar
5400 VBOX_JAVADOC
= $(VBOX_JAVA_HOME
)/bin
/javadoc
5401 VBOX_WSIMPORT
= $(VBOX_JAVA_HOME
)/bin
/wsimport
5402 # correct for targets we care about
5403 VBOX_MD_OS
= $(KBUILD_TARGET
)
5405 $(VBOX_JAVA_HOME
)/include \
5406 $(VBOX_JAVA_HOME
)/include/$(VBOX_MD_OS
)
5409 ifeq ($(KBUILD_TARGET
), win
)
5414 VBOX_JAVAC_OPTS
= -encoding UTF-8
-source
1.5 -target
1.5 -Xlint
:unchecked
5415 VBOX_JAVADOC_OPTS
= -encoding UTF-8
5420 ## @todo try remove this.
5421 ifneq ($(LOCALCFG
),)
5429 .PHONY
: up update st stat status
5434 $(SVN
) up
--ignore-externals
5440 $(MAKE
) VBOX_QUICK
=1