-
Notifications
You must be signed in to change notification settings - Fork 1
/
Config.kmk
5392 lines (4963 loc) · 222 KB
/
Config.kmk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# $Id: Config.kmk $
## @file
# The global build configuration file for VBox.
#
# This file gets included by all makefiles through the
# include $(KBUILD_PATH)/header.kmk statement.
#
#
# Copyright (C) 2006-2013 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the GNU
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
#
# Marker.
VBOX_ROOT_CONFIG_KMK_INCLUDED = 1
#
# kBuild stuff
#
# Build with umask 022 (requires kBuild r2556 to work, harmless on earlier).
$(set-umask 022)
# Modify the build types.
KBUILD_BLD_TYPES = release profile debug kprofile
## 'strict' builds
# Same as release builds, except that RT_STRICT and VBOX_STRICT are defined,
# meaning all assertions are in action. (Appending means '.strict' props take
# precedence in argument lists.)
KBUILD_BLD_TYPES += strict
BLD_TYPE_strict_EXTENDS = release
BLD_TYPE_strict_EXTENDS_BY = appending
## 'dbgopt' builds
# Same as debug builds, except that compiler optimizations are enabled. This
# intended for cases where all the debug facitities (logging, assertions, ++)
# is wanted but actual source level debugging as important as execution speed.
KBUILD_BLD_TYPES += dbgopt
BLD_TYPE_dbgopt_EXTENDS = debug
BLD_TYPE_dbgopt_EXTENDS_BY = overriding
# Temporary hack for kBuild ticket #83.
## @todo kBuild: remove after closing ticket #83.
PROPS_ACCUMULATE_L_LNK += INTERMEDIATES
PROPS_PROGRAMS_ACCUMULATE_L += INTERMEDIATES
PROPS_LIBRARIES_ACCUMULATE_L += INTERMEDIATES
PROPS_DLLS_ACCUMULATE_L += INTERMEDIATES
PROPS_SYSMODS_ACCUMULATE_L += INTERMEDIATES
PROPS_MISCBINS_ACCUMULATE_L += INTERMEDIATES
# Misc names used bye the install paths below.
VBOX_PUEL_MANGLED_NAME := Oracle_VM_VirtualBox_Extension_Pack
# Install paths
## @todo This will change after 4.1 is branched off!
# What is now 'bin' and 'lib' will be moved down under 'staged/', except on
# darwin where it's currently called 'dist' which will be renamed to 'staged'.
# When running 'kmk install' files will be copied to 'dist/', on unix systems
# this will be done in FHS fashion assuming /usr/local or /usr as 'prefix'.
#
# Changes related to this are marked VBOX_WITH_NEW_LAYOUT.
ifndef VBOX_WITH_NEW_LAYOUT
PATH_INS = $(PATH_OUT)/dist
PATH_STAGE = $(PATH_OUT)
INST_DEBUG := stage/debug/
endif
ifeq ($(KBUILD_TARGET),darwin)
ifndef VBOX_WITH_NEW_LAYOUT
INST_DIST = dist/
else
INST_DIST :=
endif
INST_SDK = $(INST_DIST)sdk/
# the bundles
INST_VIRTUALBOX = $(INST_DIST)VirtualBox.app/
INST_VBOXDRV = $(INST_DIST)VBoxDrv.kext/
INST_VBOXNETFLT = $(INST_DIST)VBoxNetFlt.kext/
INST_VBOXNETADP = $(INST_DIST)VBoxNetAdp.kext/
INST_VBOXUSB = $(INST_DIST)VBoxUSB.kext/
# put everything in the VirtualBox app bundle.
INST_BIN = $(INST_VIRTUALBOX)Contents/MacOS/
INST_DLL = $(INST_BIN)
INST_SYS = $(INST_BIN)
INST_TESTCASE = $(INST_BIN)testcase/
INST_ADDITIONS = $(INST_BIN)additions/
INST_ADDITIONS_ISO = $(INST_BIN)
# other paths
INST_TESTSUITE = testsuite/
INST_LIB = lib/
INST_ADDITIONS_LIB = $(INST_LIB)additions/
VBOX_INST_DTRACE_LIB = $(INST_BIN)dtrace/lib/
VBOX_INST_DTRACE_TST = $(INST_BIN)dtrace/testcase/
else
INST_BIN = bin/
INST_DIST = $(INST_BIN)
INST_SDK = $(INST_BIN)sdk/
INST_VIRTUALBOX = $(INST_BIN)
INST_VBOXDRV = $(INST_BIN)
INST_VBOXNETFLT = $(INST_BIN)
INST_VBOXNETADP = $(INST_BIN)
INST_VBOXUSB = $(INST_BIN)
INST_DLL = $(INST_BIN)
INST_SYS = $(INST_BIN)
INST_TESTCASE = $(INST_BIN)testcase/
INST_ADDITIONS = $(INST_BIN)additions/
INST_ADDITIONS_ISO = $(INST_ADDITIONS)
INST_TESTSUITE = testsuite/
INST_LIB = lib/
INST_ADDITIONS_LIB = $(INST_LIB)additions/
VBOX_INST_DTRACE_LIB = $(INST_BIN)dtrace/lib/
VBOX_INST_DTRACE_TST = $(INST_BIN)dtrace/testcase/
endif
INST_DOC = doc/
INST_EXTPACK = $(INST_BIN)ExtensionPacks/
INST_EXTPACK_CERTS = $(INST_BIN)ExtPackCertificates/
INST_EXTPACK_PUEL = $(INST_EXTPACK)$(VBOX_PUEL_MANGLED_NAME)/
INST_PACKAGES = packages/
VBOX_PATH_SDK = $(patsubst %/,%,$(PATH_STAGE)/$(INST_SDK))
VBOX_PATH_DIST = $(patsubst %/,%,$(PATH_STAGE)/$(INST_DIST))
VBOX_PATH_TESTSUITE = $(patsubst %/,%,$(PATH_STAGE)/$(INST_TESTSUITE))
VBOX_PATH_ADDITIONS = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS))
VBOX_PATH_ADDITIONS_ISO = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS_ISO))
VBOX_PATH_ADDITIONS_LIB = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS_LIB))
VBOX_PATH_EXTPACK_PUEL= $(patsubst %/,%,$(PATH_STAGE)/$(INST_EXTPACK_PUEL))
VBOX_PATH_PACKAGES = $(patsubst %/,%,$(PATH_STAGE)/$(INST_PACKAGES))
# Delete targets on failure.
.DELETE_ON_ERROR:
# Notify about important kBuild updates.
if $(KBUILD_VERSION_MAJOR) == 0 \
&& ( $(KBUILD_VERSION_MINOR) >= 2 \
|| ( $(KBUILD_VERSION_MINOR) == 1 \
&& $(KBUILD_VERSION_PATCH) >= 999))
if $(KMK_REVISION) >= 2577
# OK.
else
$(error You must update kBuild! Requires kBuild revision 2577 or later, found $(KMK_REVISION) ($(KBUILD_VERSION)))
endif
else
$(error You must update kBuild! Requires 0.1.999 or later, found $(KBUILD_VERSION))
endif
#
# Define USERNAME early on.
#
ifndef USERNAME
ifdef USER
USERNAME = $(USER)
else
$(warning Warning: You must have USERNAME or USER in your environment.)
endif
endif
#
# Detect the darwin host version number so we can disable stuff that doesn't
# currently build on Lion.
#
ifeq ($(KBUILD_HOST),darwin)
VBOX_DARWIN_HOST_VERSION := $(subst ., ,$(shell uname -r))
VBOX_DARWIN_HOST_VERSION_MAJOR := $(expr $(word 1, $(VBOX_DARWIN_HOST_VERSION)) - 4)
VBOX_DARWIN_HOST_VERSION_MINOR := $(word 2, $(VBOX_DARWIN_HOST_VERSION))
VBOX_DARWIN_HOST_VERSION_PATCH := $(word 3, $(VBOX_DARWIN_HOST_VERSION))
VBOX_DARWIN_HOST_VERSION := 10.$(VBOX_DARWIN_HOST_VERSION_MAJOR).$(VBOX_DARWIN_HOST_VERSION_MINOR)
endif
#
# The VirtualBox version.
#
# Major version.
VBOX_VERSION_MAJOR = 4
# Minor version.
VBOX_VERSION_MINOR = 2
# This is the current build number. It should be increased every time we publish a
# new build. The define is available in every source file. Only even build numbers
# will be published, odd numbers are set during development.
VBOX_VERSION_BUILD = 12
# The raw version string. This *must not* contain any other information/fields than
# major, minor and build revision (as it is now) -- also will be used for host/guest version
# comparison.
VBOX_VERSION_STRING_RAW = $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)
# This can be overridden in LocalConfig.kmk or elsewhere.
# For the convension, see checks near the end of Config.kmk.
VBOX_BUILD_PUBLISHER =
# Full version string (may include more than just x.y.z, but no spaces or other problematic chars).
# Note! The BETA[n],ALPHA[n],RC[n] indicators should be inserted before the
# publisher so that RTStrVersionCompare have a chance of comparing
# prerelease from different publishers correctly.
VBOX_VERSION_STRING = $(VBOX_VERSION_STRING_RAW)$(VBOX_BUILD_PUBLISHER)
# Force the additions.sh script to get an exact additions build when we're doing the release.
ifeq ($(int-mod $(VBOX_VERSION_BUILD),2),0)
export VBOX_ADDITIONS_SH_MODE = release
export VBOX_DOCUMENTATION_SH_MODE = release
export VBOX_EFI_SH_MODE = release
export VBOX_EXTPACKS_SH_MODE = release
endif
# Some info on the vendor
VBOX_VENDOR = Oracle Corporation
VBOX_VENDOR_SHORT = Oracle
VBOX_PRODUCT = Oracle VM VirtualBox
# Not all could be done automatically. Here is a list of known places which
# have to be updated manually, please keep this up to date:
# src/VBox/Devices/PC/PXE/client/uinit.asm
# src/VBox/RDP/webclient/flash/com/sun/network/rdp/Version.as
# src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
# src/VBox/Frontends/VirtualBox/src/settings/global/VBoxGLSettingsLanguage.cpp
# src/VBox/Frontends/VirtualBox/nls/*.ts
# debian/control
# src/VBox/Installer/linux/{debian,rpm}
# src/VBox/Installer/linux/virtualbox.desktop
# src/VBox/Additions/WINNT/Installer/ISO/ReadmeDrivers.txt
# */*.inf, */*.rc
# Maybe we want set this manually.
VBOX_C_YEAR = $(date-utc %Y)
#
# The VirtualBox package type.
#
ifeq ($(KBUILD_TARGET),win)
VBOX_PACKAGE_OS = WINDOWS
else ifeq ($(KBUILD_TARGET),linux)
VBOX_PACKAGE_OS = LINUX
else ifeq ($(KBUILD_TARGET),darwin)
VBOX_PACKAGE_OS = DARWIN
else ifeq ($(KBUILD_TARGET),solaris)
VBOX_PACKAGE_OS = SOLARIS
else ifeq ($(KBUILD_TARGET),os2)
VBOX_PACKAGE_OS = OS2
else if1of ($(KBUILD_TARGET), dragonfly freebsd netbsd openbsd)
VBOX_PACKAGE_OS = BSD
else
$(error Cannot determine VBOX_PACKAGE_OS)
endif
ifeq ($(KBUILD_TARGET_ARCH),x86)
VBOX_PACKAGE_ARCH = 32BITS
else
VBOX_PACKAGE_ARCH = 64BITS
endif
# distribution, mostly for Linux/Solaris where we support different distributions
# this strip will be overridden by the Linux packaging scripts
VBOX_PACKAGE_DIST ?= GENERIC
# Full string
VBOX_PACKAGE_STRING = $(VBOX_PACKAGE_OS)_$(VBOX_PACKAGE_ARCH)_$(VBOX_PACKAGE_DIST)
#
# The VirtualBox Configuration Defaults.
#
# We try to document all the build configuration options here, thing which
# aren't enabled by default is left commented out just to show that they
# exist and which value they should have (usually 1, but anyway).
#
## @name Additions
## @{
# This indicates that additions (of some kind or another) is being _built_.
# VBOX_WITHOUT_ADDITIONS overrides it.
#if1of ($(KBUILD_TARGET), freebsd linux os2 solaris win)
if1of ($(KBUILD_TARGET), freebsd netbsd linux solaris win)
VBOX_WITH_ADDITIONS = 1
endif
# Build the optional ring-0 part of the additions for syntax checking.
# (Except when cross-building on linux since we're using /usr/src/...)
ifn1of ($(KBUILD_TARGET).$(KBUILD_HOST_ARCH).$(KBUILD_TARGET_ARCH), linux.x86.amd64 linux.amd64.x86)
VBOX_WITH_ADDITION_DRIVERS = 1
endif
# Build X11 additions. Can be disabled separately.
if1of ($(KBUILD_TARGET), dragonfly freebsd linux netbsd openbsd solaris)
VBOX_WITH_X11_ADDITIONS = 1
endif
# Enable the building of shared folders in the windows additions.
VBOX_WITH_WIN32_ADDITIONS_SHAREDFOLDERS = 1
# Take the binaries of the OS/2 Additions.
VBOX_WITH_OS2_ADDITIONS_BIN = 1
# Use additions from the build server.
#VBOX_WITH_ADDITIONS_FROM_BUILD_SERVER = 1
# Include additions in the package
VBOX_WITH_ADDITIONS_PACKING = 1
# Only build the additions (for the additions build server).
#VBOX_ONLY_ADDITIONS = 1
ifdef VBOX_ADDITIONS_ONLY # typical mistake.
$(error It is VBOX_ONLY_ADDITIONS=1 not VBOX_ADDITIONS_ONLY!)
endif
# Don't bother with additions, overrides VBOX_WITH_ADDITIONS.
# This is not used by makefiles, only Config.kmk, see below.
ifdef VBOX_ONLY_SDK
VBOX_WITHOUT_ADDITIONS = 1
endif
# Don't create the additions ISO.
# (Used by the additions build server, don't invert it.)
#VBOX_WITHOUT_ADDITIONS_ISO = 1
## @}
## @name Documentation
## @{
# The documentation
VBOX_WITH_DOCS = 1
# Use documentation from the build server.
#VBOX_WITH_DOCS_FROM_BUILD_SERVER = 1
# Include documentation in the package
VBOX_WITH_DOCS_PACKING = 1
# Include CHM when building docs (unset in LocalConfig.kmk to suppress CHM)
ifn1of ($(KBUILD_TARGET), linux)
VBOX_WITH_DOCS_CHM = 1
endif
# Don't bother with documentation, overrides VBOX_WITH_DOCS.
# This is not used by makefiles, only Config.kmk, see below.
#VBOX_WITHOUT_DOCS = 1
# Only build the documentation (for the documentation build server).
#VBOX_ONLY_DOCS = 1
ifdef VBOX_DOCS_ONLY # typical mistake.
$(error It is VBOX_ONLY_DOCS=1 not VBOX_DOCS_ONLY!)
endif
## @}
## @name VMM related settings.
## @{
# Enable the tradition raw-mode virtualization.
VBOX_WITH_RAW_MODE = 1
# Enable support for 64-bit guests.
VBOX_WITH_64_BITS_GUESTS = 1
# Enable multi-core VCPUs.
VBOX_WITH_MULTI_CORE = 1
# Activate this to force the VM to pre-allocate the guest RAM before startup
VBOX_WITH_PREALLOC_RAM_BY_DEFAULT =
# Enable the debugger.
VBOX_WITH_DEBUGGER = 1
# Enable the debugger GUI.
VBOX_WITH_DEBUGGER_GUI = 1
# Enable the PDM Lock and let I/O threads call into the PICs.
# TODO: Eliminate VBOX_WITH_PDM_LOCK.
VBOX_WITH_PDM_LOCK = 1
## @}
## @name Devices, Drivers, ...
## @{
# Build the Host Guest Communication Manager component.
VBOX_WITH_HGCM = 1
## Build the bugcheck detection code.
#VBOX_WITH_GUEST_BUGCHECK_DETECTION =
# Enable the USB feature. This includes VBOX_WITH_VUSB!
VBOX_WITH_USB = 1
# Enable the USB 1.1 controller plus virtual USB HID devices.
VBOX_WITH_VUSB = 1
# Enable the USB 2.0 controller.
VBOX_WITH_EHCI = 1
# Enable the ISCSI feature.
VBOX_WITH_ISCSI = 1
# Enable INIP support in the ISCSI feature.
VBOX_WITH_INIP = 1
# Enable the E1000 feature.
VBOX_WITH_E1000 = 1
# Enable the Virtio feature.
VBOX_WITH_VIRTIO = 1
# Enable ALSA support for Linux.
VBOX_WITH_ALSA = 1
# Enable Pulse support for Linux.
VBOX_WITH_PULSE = 1
# Enable PCI passthrough support.
VBOX_WITH_PCI_PASSTHROUGH = 1
# Enable statically linked dbus support.
if1of ($(KBUILD_TARGET), linux solaris)
VBOX_WITH_DBUS = 1
endif
# Enable building PAM modules.
if1of ($(KBUILD_TARGET), linux solaris)
VBOX_WITH_PAM = 1
endif
# Disable WINMM support for Windows (not implemented).
VBOX_WITH_WINMM =
# Enabled internal networking.
VBOX_WITH_INTERNAL_NETWORKING = 1
# Enable Host Guest Shared Memory Interface.
VBOX_WITH_HGSMI = 1
# Enable Video 2D Acceleration.
if1of ($(KBUILD_TARGET), darwin linux win freebsd)
VBOX_WITH_VIDEOHWACCEL = 1
endif
# Enable Wddm Video driver for Vista+ guests.
VBOX_WITH_WDDM = 1
# Enable Wddm Video driver for Windows 8 guests.
VBOX_WITH_WDDM_W8 = 1
# Lazy developer!!
VBOXWDDM_WITH_VBVA = 1
# Lazy developer!!
ifdef VBOX_WITH_WDDM
VBOX_WITH_VDMA = 1
else ifdef VBOX_WITH_VDMA
undef VBOX_WITH_VDMA
endif
# Disable the Intel PXE ROM (uses Etherboot).
VBOX_WITH_INTEL_PXE =
# not yet!
VBOX_WITHOUT_IPXE=1
# Enable EFI support
VBOX_WITH_EFI = 1
# Enable EFI/Ovmf support
VBOX_WITH_OVMF = 1
# Fetch EFI firmware image from the build server
#VBOX_WITH_EFIFW_FROM_BUILD_SERVER = 1
# Include the EFI firmware into the package
VBOX_WITH_EFIFW_PACKING = 1
# Use kStuff for MACH-O and LX binary loading.
if1of ($(KBUILD_TARGET_ARCH), x86 amd64)
IPRT_WITH_KSTUFF = 1
endif
# Enable setuid wrapper for Solaris host DVD.
#VBOX_WITH_SUID_WRAPPER = 1
# Enable the virtual SATA/AHCI controller
VBOX_WITH_AHCI = 1
# Enable the new async completion manager
VBOX_WITH_PDM_ASYNC_COMPLETION = 1
# Temporary switch for enabling / disabling the new USB code on Darwin.
VBOX_WITH_NEW_USB_CODE_ON_DARWIN = 1
ifdef VBOX_WITH_USB
VBOX_WITH_VUSB = 1
endif
ifdef VBOX_WITH_EHCI
VBOX_WITH_EHCI_IMPL = 1
endif
ifdef VBOX_WITH_PCI_PASSTHROUGH
VBOX_WITH_PCI_PASSTHROUGH_IMPL = 1
endif
# Enable the hal/sysfs USB code on Linux.
ifeq ($(KBUILD_TARGET),linux)
VBOX_USB_WITH_SYSFS = 1
# Disabled for now
# VBOX_USB_WITH_DBUS = 1
VBOX_USB_WITH_INOTIFY = 1
endif
# Enable performance API.
VBOX_WITH_RESOURCE_USAGE_API = 1
# Use VBoxVolInfo for getting FS dependecies.
if1of ($(KBUILD_TARGET), linux)
VBOX_WITH_DEVMAPPER = 1
endif
# Enable BusLogic SCSI host adapter
VBOX_WITH_BUSLOGIC = 1
# Enable LsiLogic SCSI host adapter
VBOX_WITH_LSILOGIC = 1
# Enable SCSI drivers
VBOX_WITH_SCSI = 1
# Enable this setting to force a fallback to default DMI data on configuration errors
VBOX_BIOS_DMI_FALLBACK =
# Enable the builtin PXE ROM
VBOX_WITH_PXE_ROM = 1
# Enable MSI support in devices
VBOX_WITH_MSI_DEVICES = 1
# Enable host network interface API.
if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
VBOX_WITH_HOSTNETIF_API = 1
endif
# Emulated USB smart card reader
VBOX_WITH_USB_CARDREADER = 1
# Emulated USB webcam
VBOX_WITH_USB_VIDEO = 1
## @}
## @name Other Component
## @{
# Build the installer.
VBOX_WITH_INSTALLER = 1
# The kernel driver/module and related runtime libraries.
VBOX_WITH_VBOXDRV = 1
# The main api.
VBOX_WITH_MAIN = 1
# The recompiler.
VBOX_WITH_REM = 1
# Set this to prefix all C symbols in XPCOM, to avoid dynamic linking problems
# caused by our XPCOM library polluting the symbol namespace for system libs.
if1of ($(KBUILD_TARGET), linux solaris)
VBOX_WITH_XPCOM_NAMESPACE_CLEANUP = 1
endif
# Set this to not use COM or XPCOM in places where it can be avoided.
#VBOX_WITHOUT_COM = 1
# The webservices api.
VBOX_WITH_WEBSERVICES = 1
VBOX_WITH_WEBSERVICES_SSL = 1
# The Qt 4 GUI.
VBOX_WITH_QTGUI = 1
# Indicates the Qt is Cocoa based on the Mac.
ifeq ($(KBUILD_TARGET),darwin)
VBOX_WITH_COCOA_QT = 1
endif
# The SDL based GUI.
VBOX_WITH_VBOXSDL = 1
# Build VBoxSDL with secure label support.
ifeq ($(filter win.amd64,$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)),) # too much work with freetype and all that.
VBOX_WITH_SECURELABEL = 1
endif
# The headless frontend.
VBOX_WITH_HEADLESS = 1
# Enable the build of VRDP server.
VBOX_WITH_VRDP = 1
# Enable support for video redirection VRDP channel.
VBOX_WITH_VRDP_VIDEO_CHANNEL = 1
# Enable memory consumption limit in VRDP server.
VBOX_WITH_VRDP_SB_LIMIT = 1
# Build the VRDP authentication modules.
VBOX_WITH_VRDP_AUTHMOD = 1
# Build enhanced version of rdesktop.
VBOX_WITH_VRDP_RDESKTOP = 1
# The basic frontend (w/o Main).
VBOX_WITH_VBOXBFE = 1
## The Direct Framebuffer GUI.
#VBOX_WITH_VBOXFB = 1
# Enables the Python<->XPCOM and Python<->COM bindings.
VBOX_WITH_PYTHON ?= 1
if1of ($(KBUILD_TARGET), darwin linux solaris)
# Enable Java<->XPCOM bridge + glue code
VBOX_WITH_JXPCOM ?= 1
endif
if1of ($(KBUILD_TARGET), )
# Enable Java<->MSCOM glue, bridge is provided by an external lib (Jacob)
VBOX_WITH_JMSCOM ?= 1
endif
if1of ($(KBUILD_TARGET), darwin linux solaris)
# Enable Java<->JAX-WS bridge
VBOX_WITH_JWS ?= 1
endif
# Use XPIDL instead of XSLT stylesheet
VBOX_WITH_JAVA_SUPPORT_IN_XPIDL ?=
# Build against multiple Python versions present in the system
VBOX_WITH_MULTIVERSION_PYTHON ?= 1
# Enable the kchmviewer.
VBOX_WITH_KCHMVIEWER = 1
# Build the testsuite.
VBOX_WITH_TESTSUITE = 1
# Build the testcases.
VBOX_WITH_TESTCASES = 1
# Enable this to build vditool even if VBOX_WITH_TESTCASES is disabled
VBOX_WITH_VDITOOL =
# Enable this to build vbox-img even if VBOX_WITH_TESTCASES is disabled
VBOX_WITH_VBOX_IMG =
# Enables the ffmpeg module for recording test runs.
# TODO: Enable this for normal build server builds?
#if1of ($(KBUILD_TARGET), linux)
# VBOX_WITH_FFMPEG = 1
#endif
# Enable shared folders
VBOX_WITH_SHARED_FOLDERS = 1
# Enable shared clipboard
VBOX_WITH_SHARED_CLIPBOARD = 1
# Enable the host/guest information service (aka guest properties).
VBOX_WITH_GUEST_PROPS = 1
# Enable this to prevent the guest from writing guest properties.
VBOX_WITH_GUEST_PROPS_RDONLY_GUEST =
# Compile the host channel
VBOX_WITH_HOST_CHANNEL = 1
# Enable the guest control service.
if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
VBOX_WITH_GUEST_CONTROL = 1
endif
# Enable ballooning
VBOX_WITH_MEMBALLOON = 1
# Enable crOpenGL service
if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
VBOX_WITH_CROGL = 1
endif
# Enable the VNC server extension pack (GPL only).
#VBOX_WITH_EXTPACK_VNC = 1
# Enable S3 support (requires libcurl)
VBOX_WITH_S3 = 1
# Enable Host=>Guest Drag'n'Drop
if1of ($(KBUILD_TARGET), darwin linux solaris win)
VBOX_WITH_DRAG_AND_DROP = 1
# Guest=>Host drag'n'drop doesn't work
#VBOX_WITH_DRAG_AND_DROP_GH = 1
endif
# Enable support for VRDP redirection of Windows Media Player content
ifeq ($(KBUILD_TARGET),win)
VBOX_WITH_MMR = 1
endif
## @}
## @name Networking
## @{
# Use VBoxNetFlt for host interface networking.
if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
VBOX_WITH_NETFLT = 1
ifeq ($(KBUILD_TARGET),solaris)
# requires snv_159+.
VBOX_WITH_NETFLT_CROSSBOW = 1
endif
# Use VBoxNetAdp for host only networking.
if1of ($(KBUILD_TARGET), darwin freebsd linux solaris) ## @todo this should be set and used on windows too.
VBOX_WITH_NETADP = 1
endif
endif
# Enables the UDP tunnel transport.
VBOX_WITH_UDPTUNNEL = 1
# Enable the netshaper support
VBOX_WITH_NETSHAPER = 1
# Enable Virtual Distributed Ethernet or not.
if1of ($(KBUILD_TARGET), freebsd linux)
VBOX_WITH_VDE = 1
endif
## @}
## @name Extension pack
## @{
# Enables the extension pack feature.
VBOX_WITH_EXTPACK = 1
# Enables separating code into the Oracle VM VirtualBox Extension Pack, dubbed PUEL.
VBOX_WITH_EXTPACK_PUEL = 1
# Enables building+packing the Oracle VM VirtualBox Extension Pack, includes VBOX_WITH_EXTPACK_PUEL
VBOX_WITH_EXTPACK_PUEL_BUILD = 1
## @}
## @name Misc
## @{
# Enable Seamless mode
VBOX_X11_SEAMLESS_GUEST = 1
# Enables all the doxgen bits.
VBOX_WITH_ALL_DOXYGEN_TARGETS = 1
# Set this to skip installing the redistributable compiler runtime.
#VBOX_WITHOUT_COMPILER_REDIST = 1
# Enables VMMR0.r0 (++) loading using the native loader on solaris.
# Good for debugging and analysis. Experimental.
#VBOX_WITH_NATIVE_SOLARIS_LOADING = 1
# Set this to enable user mode dtrace probes.
if1of ($(KBUILD_TARGET), darwin linux solaris)
VBOX_WITH_DTRACE_R3 = 1
endif
# Set this to enable kernel driver dtrace probes.
if1of ($(KBUILD_TARGET), darwin solaris)
VBOX_WITH_DTRACE_R0DRV = 1
endif
# Set this to enable dtrace probes in platform agnostic kernel code.
ifn1of ($(KBUILD_TARGET), os2)
VBOX_WITH_DTRACE_R0 = 1
endif
# Set this to enable dtrace probes raw-mode context code.
if1of ($(KBUILD_TARGET), linux solaris)
VBOX_WITH_DTRACE_RC = 1
endif
# Set this to enable support for dtrace probes in guest code.
#VBOX_WITH_DTRACE_GST = 1
# Set this to indicate that the host ships with DTrace.
if1of ($(KBUILD_TARGET), darwin solaris freebsd)
VBOX_WITH_NATIVE_DTRACE = 1
endif
## @}
## @name Compiler and linker config
## @{
# For treating compiler and linker warnings as errors where possible.
if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.x86 darwin.amd64 linux.x86 linux.amd64 win.x86 win.amd64)
VBOX_WITH_WARNINGS_AS_ERRORS = 1
endif
# Whether we can use Open Watcom to build stuff.
if1of ($(KBUILD_TARGET), darwin linux os2 win)
VBOX_WITH_OPEN_WATCOM = 1
endif
## @}
## @name Hardening
## @{
# Enables hardening.
# Most developers will want to disable this in their LocalConfig.kmk.
ifn1of ($(KBUILD_TARGET), win)
VBOX_WITH_HARDENING = 1
endif
# Where the application files are (going to be) installed.
#VBOX_PATH_APP_PRIVATE = /usr/lib/virtualbox
ifdef VBOX_WITH_HARDENING
if1of ($(KBUILD_TARGET), linux solaris)
VBOX_PATH_APP_PRIVATE = /opt/VirtualBox
else ifeq ($(KBUILD_TARGET),darwin)
VBOX_PATH_APP_PRIVATE = /Applications/VirtualBox.app/Contents/MacOS
else ifeq ($(KBUILD_TARGET),freebsd)
VBOX_PATH_APP_PRIVATE = /usr/local/lib/virtualbox
endif
endif
# Where the architecture specific application files are (going to be) installed.
#VBOX_PATH_APP_PRIVATE_ARCH = /usr/lib/virtualbox
ifdef VBOX_WITH_HARDENING
if1of ($(KBUILD_TARGET), solaris)
VBOX_PATH_APP_PRIVATE_ARCH_TOP = $(VBOX_PATH_APP_PRIVATE)
VBOX_PATH_APP_PRIVATE_ARCH = $(VBOX_PATH_APP_PRIVATE_ARCH_TOP)/$(if-expr $(KBUILD_TARGET_ARCH) == "amd64",amd64,i386)
else if1of ($(KBUILD_TARGET), darwin)
VBOX_PATH_APP_PRIVATE_ARCH = $(VBOX_PATH_APP_PRIVATE)
endif
endif
# Where the shared libraries are (going to be) installed.
#VBOX_PATH_SHARED_LIBS = /usr/lib
ifdef VBOX_WITH_HARDENING
if1of ($(KBUILD_TARGET), solaris)
VBOX_PATH_SHARED_LIBS = $(VBOX_PATH_APP_PRIVATE)/$(if-expr $(KBUILD_TARGET_ARCH) == "amd64",amd64,i386)
else if1of ($(KBUILD_TARGET), darwin)
VBOX_PATH_SHARED_LIBS = $(VBOX_PATH_APP_PRIVATE)
endif
endif
# Where the documentation is (going to be) installed.
#VBOX_PATH_APP_DOCS = /usr/share/doc/virtualbox
ifdef VBOX_WITH_HARDENING
if1of ($(KBUILD_TARGET), darwin solaris)
VBOX_PATH_APP_DOCS = $(VBOX_PATH_APP_PRIVATE)
endif
endif
# The DT_RPATH/DT_RUNPATH to embed into the binaries (ELF).
# (This one is used for all binaries, there is no need to adjust this
# depending on the location of the object.)
#VBOX_WITH_RUNPATH = /usr/lib/virtualbox
ifdef VBOX_WITH_HARDENING
if1of ($(KBUILD_TARGET), solaris)
VBOX_WITH_RUNPATH = $(VBOX_PATH_APP_PRIVATE)/$(if-expr $(KBUILD_TARGET_ARCH) == "amd64",amd64,i386)
else if1of ($(KBUILD_TARGET), freebsd linux)
VBOX_WITH_RUNPATH = $(VBOX_PATH_APP_PRIVATE)
endif
endif
# Enable use of the $ORIGIN DT_RPATH/DT_RUNPATH feature (ELF).
# Because of the setuid usage on all ELF platforms when hardening the build
# things gets a bit complicated since the $ORIGIN+setuid policy differs.
#VBOX_WITH_ORIGIN = 1
ifndef VBOX_WITH_HARDENING
if1of ($(KBUILD_TARGET), linux solaris)
VBOX_WITH_ORIGIN = 1
endif
endif
# Enable the system wide support service/daemon.
# Work in progress, but required for hardening on Windows.
#VBOX_WITH_SUPSVC = 1
ifdef VBOX_WITH_HARDENING
if1of ($(KBUILD_TARGET), win)
VBOX_WITH_SUPSVC = 1
endif
endif
## @}
# Strip binaries of release and profile builds before packing them into the installer
# archive. When building .deb/.rpms, don't strip the symbols as they are required for
# the debug packages containing symbols for gdb located in /usr/lib/debug.
VBOX_DO_STRIP := $(if $(filter release profile,$(KBUILD_TYPE)),1,)
# Strip R0/GC modules (current requirement for our loader)
# TODO: This shouldn't be a requirement any longer. FIXME XXX
VBOX_DO_STRIP_MODULES = 1
#
# Config items for enabling work in progress.
#
# It's good pratice to add stuff here even if it is currently disabled by
# default.
#
# Note! Please, do *not* add stuff to the global DEFS unless it is *really*
# necessary! The other guys will hate for it you when they have to
# recompile everything when the feature is enabled or disabled. Put
# the ifdefs in target or template definitions.
#
## For experimenting with disabling preemption instead of interrupts
# when working VT-x/AMD-V in VMMR0.
## @todo os2? Reconsider perhaps windows? (see defect) This should be made the default.
if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
VBOX_WITH_VMMR0_DISABLE_PREEMPTION = 1
endif
# Mask all Local APIC interrupt vectors which are set up to NMI mode when switching
# to/from the guest in raw mode. Modern Linux kernels use the performance counter
# to raise an NMI from time to time.
if1of ($(KBUILD_TARGET), linux)
VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI = 1
endif
## For testing deadlock detection and lock order validation.
# If issues are found, create high priority defects and temporarily comment
# the next line.
VBOX_WITH_STRICT_LOCKS = 1
#
# Branding
#
VBOX_BRAND_BIOS_LOGO := $(PATH_ROOT)/src/VBox/Devices/Graphics/BIOS/puel_logo.bmp
VBOX_BRAND_LICENSE_HTML := $(PATH_ROOT)/doc/License-gpl-2.0.html
VBOX_BRAND_LICENSE_RTF := $(PATH_ROOT)/doc/License-gpl-2.0.rtf
VBOX_BRAND_LICENSE_TXT := $(PATH_ROOT)/doc/License-gpl-2.0.txt
VBOX_BRAND_LICENSE_VER :=
VBOX_BRAND_GUI_ABOUT_PNG := $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/NonOSE/about.png
VBOX_BRAND_GUI_ABOUT_16PX_PNG := $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/NonOSE/about_16px.png
VBOX_BRAND_GUI_VBOX_16PX_PNG := $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/NonOSE/VirtualBox_16px.png
VBOX_BRAND_GUI_VBOX_20PX_PNG := $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/NonOSE/VirtualBox_20px.png
VBOX_BRAND_GUI_VBOX_32PX_PNG := $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/NonOSE/VirtualBox_32px.png
VBOX_BRAND_GUI_VBOX_40PX_PNG := $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/NonOSE/VirtualBox_40px.png
VBOX_BRAND_GUI_VBOX_48PX_PNG := $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/NonOSE/VirtualBox_48px.png
VBOX_BRAND_GUI_VBOX_64PX_PNG := $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/images/NonOSE/VirtualBox_64px.png
VBOX_BRAND_WIN_INST_DLGJPG := $(PATH_ROOT)/src/VBox/Installer/win/Binary/Dialog.jpg
VBOX_BRAND_WIN_INST_EXT :=
VBOX_BRAND_WIN_ADD_INST_DLGBMP := $(PATH_ROOT)/src/VBox/Additions/WINNT/Installer/welcome.bmp
VBOX_BRAND_DARWIN_DISKIMAGE_DS_STORE := $(PATH_ROOT)/src/VBox/Installer/darwin/DiskImage/DS_Store
VBOX_BRAND_DARWIN_DISKIMAGE_BG := $(PATH_ROOT)/src/VBox/Installer/darwin/DiskImage/vbox_folder.tiff
VBOX_BRAND_DARWIN_INSTALLER_BG := $(PATH_ROOT)/src/VBox/Installer/darwin/VirtualBox_mpkg/background.tif
#
# Skip stuff.
#
ifdef VBOX_ONLY_EXTPACKS
# Clear some VBOX_WITH_XXX variables instead of adding ifdefs all over the place.
VBOX_WITH_DEBUGGER =
VBOX_WITH_ADDITIONS =
VBOX_WITH_VBOXDRV =
VBOX_WITH_TESTCASES =
endif
# VBOX_QUICK can be used by core developers to speed to the build
ifdef VBOX_QUICK
# undefine variables by assigning blank.
VBOX_WITH_TESTSUITE=
VBOX_WITH_TESTCASES=
VBOX_WITH_MAIN =
VBOX_WITH_VBOXSDL =
VBOX_WITH_VBOXBFE =
VBOX_WITH_QTGUI =
VBOX_WITH_DEBUGGER_GUI =
VBOX_WITH_DOCS =
endif # VBOX_QUICK
ifeq ($(KBUILD_TARGET),darwin)
# Don't bother with SDL ttf for now.
VBOX_WITH_SECURELABEL=
# We'll use the native html/help viewer.
VBOX_WITH_KCHMVIEWER=
VBOX_WITH_VRDP_RDESKTOP=
# Permanent (no working SDL).
VBOX_WITH_VBOXSDL=
VBOX_WITH_VBOXBFE=
endif
ifeq ($(KBUILD_TARGET),freebsd)
VBOX_WITH_DOCS=
endif
ifeq ($(KBUILD_TARGET),netbsd)
VBOX_WITH_DOCS=
endif
ifeq ($(KBUILD_TARGET),l4)
VBOX_WITH_VBOXDRV=
VBOX_WITH_ADDITION_DRIVERS=
VBOX_WITH_VRDP=
VBOX_WITH_HEADLESS=
VBOX_WITH_VBOXSDL=
VBOX_WITH_QTGUI=
VBOX_WITH_MAIN=
VBOX_WITH_DOCS=
VBOX_WITH_ISCSI=
VBOX_WITH_INIP=
VBOX_WITH_INTERNAL_NETWORKING=
VBOX_WITH_PDM_ASYNC_COMPLETION=
VBOX_WITH_KCHMVIEWER=
VBOX_WITH_HARDENING=
endif
ifeq ($(KBUILD_TARGET),os2)
VBOX_WITH_WEBSERVICES=
VBOX_WITH_INSTALLER=
VBOX_WITH_SECURELABEL=
VBOX_WITH_VRDP_AUTHMOD=
VBOX_WITH_VRDP_RDESKTOP=
VBOX_WITH_TESTSUITE=
VBOX_WITH_QTGUI=
VBOX_WITH_USB=
VBOX_WITH_EHCI=
VBOX_WITH_DOCS=
VBOX_WITH_PDM_ASYNC_COMPLETION=
VBOX_WITH_KCHMVIEWER=
VBOX_WITH_HARDENING=
endif
ifeq ($(KBUILD_TARGET),solaris)
VBOX_WITH_SECURELABEL=
VBOX_WITH_OGL=
endif
ifeq ($(KBUILD_TARGET),win)
VBOX_WITH_VRDP_RDESKTOP=
VBOX_WITH_KCHMVIEWER=
endif
ifn1of ($(KBUILD_TARGET_ARCH), x86 amd64)
VBOX_WITH_ADDITION_DRIVERS=
VBOX_WITH_CROGL=
VBOX_WITH_DEBUGGER=
VBOX_WITH_DOCS=
VBOX_WITH_EHCI=
VBOX_WITH_HARDENING=
VBOX_WITH_HEADLESS=
VBOX_WITH_HGCM=
VBOX_WITH_HGSMI=
VBOX_WITH_INIP=
VBOX_WITH_INSTALLER=
VBOX_WITH_INTERNAL_NETWORKING=
VBOX_WITH_ISCSI=
VBOX_WITH_KCHMVIEWER=
VBOX_WITH_MAIN=
VBOX_WITH_PDM_ASYNC_COMPLETION=
VBOX_WITH_QTGUI=
VBOX_WITH_RAW_MODE=
VBOX_WITH_SECURELABEL=
VBOX_WITH_TESTSUITE=
VBOX_WITH_USB=
VBOX_WITH_VBOXBFE=
VBOX_WITH_VBOXDRV=
VBOX_WITH_VBOXSDL=
VBOX_WITH_WEBSERVICES=
VBOX_WITH_XPCOM=
VBOX_WITHOUT_HARDENING=1
# remove later:
VBOX_WITH_VRDP=
VBOX_WITH_VRDP_AUTHMOD=
VBOX_WITH_VRDP_RDESKTOP=
endif
#
# Include automatic and local config file to override the above settings
# and to provide defaults for the settings below this point.
#
ifndef AUTOCFG
AUTOCFG := $(wildcard $(PATH_ROOT)/AutoConfig.kmk)
endif
ifneq ($(AUTOCFG),)
include $(AUTOCFG)
endif
ifndef LOCALCFG
LOCALCFG := $(wildcard $(PATH_ROOT)/LocalConfig.kmk)
ifneq ($(LOCALCFG),)
include $(LOCALCFG)
endif
else
# Ignore it if it doesn't exist.
if exists "$(LOCALCFG)"
include $(LOCALCFG)
else
$(warning LOCALCFG='$(LOCALCFG)' does not exist)
override LOCALCFG :=
endif
endif
#
# Allow to overwrite the branding information from an external file
#
ifdef VBOX_BRANDING_CFG
include $(VBOX_BRANDING_CFG)
endif
#
# Bitch about old settings.
#
ifdef VBOX_WITHOUT_LINUX_COMPILER_H
$(warning VBOX_WITHOUT_LINUX_COMPILER_H was renamed to VBOX_WITH_LINUX_COMPILER_H, the meaning is inverted.)
endif
#
# Indicate VBOX_ONLY build if any of the VBOX_ONLY_* variables are set.
#
VBOX_ONLY_BUILD := $(strip $(foreach x, ADDITIONS DOCS EXTPACKS SDK TESTSUITE\
, $(if-expr defined(VBOX_ONLY_$(x)),VBOX_ONLY_$(x))))
if $(words $(VBOX_ONLY_BUILD)) > 1
$(error VBox: More than one VBOX_ONLY build enabled! $(VBOX_ONLY_BUILD))
endif
#
# For the docs build box.
#
ifdef VBOX_ONLY_DOCS
VBOX_WITH_DOCS_CHM = 1