-
Notifications
You must be signed in to change notification settings - Fork 35
/
Config.kmk
9368 lines (8737 loc) · 429 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$
## @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-2023 Oracle and/or its affiliates.
#
# This file is part of VirtualBox base platform packages, as
# available from https://www.virtualbox.org.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, in version 3 of the
# License.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <https://www.gnu.org/licenses>.
#
# SPDX-License-Identifier: GPL-3.0-only
#
# Marker.
VBOX_ROOT_CONFIG_KMK_INCLUDED = 1
#
# kBuild stuff
#
# Build with umask 022 (requires kBuild r2556 to work, harmless on earlier).
$(set-umask 022)
# Add our own directories to the search paths.
KBUILD_TOOL_PATHS = $(KBUILD_DEVTOOLS)/kBuildTools/
KBUILD_UNIT_PATHS = $(KBUILD_DEVTOOLS)/kBuildUnits/
# 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
## 'asan' builds
# Same as release builds, except that some form of address sanitizer (e.g.
# VBOX_WITH_GCC_SANITIZER=1 or VBOX_WITH_EF_WRAPS) is enabled. In addition
# RT_STRICT and VBOX_STRICT are defined so assertions and sanity checks will
# also be enabled (mainly for not needing to build+test strict builds separately).
KBUILD_BLD_TYPES += asan
BLD_TYPE_asan_EXTENDS = release
BLD_TYPE_asan_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
## 'parfait' builds
# Same as release builds, except that the result is prepared for static code
# analysis by parfait.
KBUILD_BLD_TYPES += parfait
BLD_TYPE_parfait_EXTENDS = release
BLD_TYPE_parfait_EXTENDS_BY = appending
## 'parfait-dbg' builds
# Same as debug builds, except that the result is prepared for static code
# analysis by parfait.
KBUILD_BLD_TYPES += parfait-dbg
BLD_TYPE_parfait-dbg_EXTENDS = debug
BLD_TYPE_parfait-dbg_EXTENDS_BY = appending
# 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 by 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_DIST)additions/
INST_ADDITIONS_ISO = $(INST_BIN)
INST_UNATTENDED_TEMPLATES = $(INST_BIN)UnattendedTemplates/
INST_VBOXDBG_SYMS = $(INST_VIRTUALBOX)Contents/Resources/VBoxDbgSyms/
# other paths
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/
VBOX_INST_TOOLS = $(INST_BIN)tools/
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_UNATTENDED_TEMPLATES = $(INST_BIN)UnattendedTemplates/
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/
INST_VBOXDBG_SYMS = $(INST_BIN)VBoxDbgSyms/
VBOX_INST_TOOLS = $(INST_BIN)tools/
endif
INST_VALIDATIONKIT = validationkit/
INST_TESTBOXSCRIPT = testboxscript/
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_VALIDATIONKIT = $(patsubst %/,%,$(PATH_STAGE)/$(INST_VALIDATIONKIT))
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))
VBOX_PATH_TOOLS = $(patsubst %/,%,$(PATH_STAGE)/$(VBOX_INST_TOOLS))
#
# Some source paths of global interest.
#
VBOX_PATH_SRC_CERTIFICATES = $(PATH_ROOT)/src/VBox/HostDrivers/Support/Certificates
#
# 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))
VBOX_MIN_KMK_REVISION := 3093
VBOX_MIN_KBUILD_KMK_REVISION := $(if-expr "$(KBUILD_HOST)" == "win",3097,$(if-expr "$(KBUILD_HOST).$(KBUILD_HOST_ARCH)" == "solaris.sparc64",2511,3074))
if $(KMK_REVISION) >= $(VBOX_MIN_KMK_REVISION)
if $(KBUILD_KMK_REVISION) >= $(VBOX_MIN_KBUILD_KMK_REVISION)
# OK.
else
$(error You must update kBuild! Requires kBuild binaries $(VBOX_MIN_KBUILD_KMK_REVISION) or later, kmk says $(KBUILD_KMK_REVISION) ($(KBUILD_VERSION)))
endif
else
$(error You must update kBuild! Requires kBuild revision $(VBOX_MIN_KMK_REVISION) 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))
# Keep counting _MAJOR past 19.x (macOS 10.15.x) to simplify dealing with macOS 11.x.
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))
if $(VBOX_DARWIN_HOST_VERSION_MAJOR) <= 15
VBOX_DARWIN_HOST_VERSION := 10.$(VBOX_DARWIN_HOST_VERSION_MAJOR).$(VBOX_DARWIN_HOST_VERSION_MINOR)
else
VBOX_DARWIN_HOST_VERSION := 11.$(expr $(VBOX_DARWIN_HOST_VERSION_MAJOR) - 16).$(VBOX_DARWIN_HOST_VERSION_MINOR)
endif
endif
include $(PATH_ROOT)/Version.kmk
# 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)
# VBOX_VERSION_STRING without the publisher.
VBOX_VERSION_STRING_NO_PUB = $(VBOX_VERSION_STRING_RAW)$(addprefix _,$(VBOX_VERSION_PRERELEASE))
# 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_NO_PUB)$(VBOX_BUILD_PUBLISHER)
## Make a numeric value from the major, minor and build numbers (params)
VBOX_FULL_VERSION_MAKE = $(expr ($1 << 24) | ($2 << 16) | $3)
## Checks if the current VBox version is higher or equal to the major, minor and
# build numbers given as parameters.
# @returns 1 if true, 0 if false. For use with 'if'.
VBOX_VERSION_PREREQ = $(expr $(call VBOX_FULL_VERSION_MAKE,$(VBOX_VERSION_MAJOR),$(VBOX_VERSION_MINOR),$(VBOX_VERSION_BUILD)) \
>= $(call VBOX_FULL_VERSION_MAKE,$1,$2,$3))
# Enable host screen saver toggle by default
VBOX_WITH_SCREENSAVER_CONTROL = 1
# Force the additions.sh script to get an exact additions build when we're doing the release.
if $(VBOX_VERSION_BUILD) % 2 == 0
ifeq ($(VBOX_VERSION_PRERELEASE),)
VBOX_RELEASE_EXACT_MATCH = 1
endif
endif
ifneq ($(VBOX_RELEASE_EXACT_MATCH),)
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 and/or its affiliates
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/UICommon.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
# src/VBox/Main/nls/*.ts
# src/VBox/ExtPacks/Puel/nls/*.ts
# src/VBox/Frontends/VBoxManage/nls/*.ts
# */*.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 ifeq ($(KBUILD_TARGET),haiku)
VBOX_PACKAGE_OS = HAIKU
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)
# Supported VirtualBox host architectures.
VBOX_SUPPORTED_HOST_ARCHS := amd64
if1of ($(KBUILD_TARGET), darwin) # Work in progress.
VBOX_SUPPORTED_HOST_ARCHS += arm64
endif
#
# The VirtualBox Configuration Defaults.
#
# We try to document all the build configuration options here, things which
# aren't enabled by default are left commented out just to show that they
# exist and which value they should have (usually 1, but anyway).
#
# Indicate VBOX_ONLY build if any of the VBOX_ONLY_* variables are set.
VBOX_ONLY_BUILD := $(strip $(foreach x, ADDITIONS DOCS EXTPACKS SDK VALIDATIONKIT \
, $(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
# Select new Xcode based on host OS X version.
ifeq ($(KBUILD_HOST),darwin)
if "$(KBUILD_TARGET_ARCH)" == "arm64"
VBOX_WITH_EVEN_NEWER_XCODE := 1
else if !defined(VBOX_WITH_EVEN_NEWER_XCODE) && !defined(VBOX_WITHOUT_EVEN_NEWER_XCODE) && !defined(VBOX_WITH_NEW_XCODE) && $(KBUILD_HOST_VERSION_MAJOR) >= 16 # (OS X 10.12 Sierra)
VBOX_WITH_EVEN_NEWER_XCODE := 1
else if !defined(VBOX_WITH_NEW_XCODE) && !defined(VBOX_WITHOUT_NEW_XCODE) && $(KBUILD_HOST_VERSION_MAJOR) >= 13 # (OS X 10.9 Mavericks)
VBOX_WITH_NEW_XCODE := 1
endif
endif
# Select new VC++ on Windows.
VBOX_WITH_NEW_VCC = 1
# Use this to disable control flow.
#VBOX_WITHOUT_CONTROL_FLOW_GUARD = 1
# Select Windows 11 SDK.
VBOX_WITH_NEW_WINDOWS_SDK = 1
# Select Windows 11 DDK.
VBOX_WITH_NEW_WINDOWS_DDK = 1
# Don't use the compiler CRT for statically linked modules, use IPRT with some
# additional CRT functionality.
# Note! This has only been tested with Visual C++ 2019.
if "$(KBUILD_TARGET)" == "win" && "$(KBUILD_TYPE)" != "asan"
VBOX_WITH_NOCRT_STATIC := 1
endif
## @name Additions
## @{
# This indicates that additions (of some kind or another) is being _built_.
# VBOX_WITHOUT_ADDITIONS overrides it.
VBOX_WITH_ADDITIONS = 1
# Build the optional ring-0 part of the additions for syntax checking.
# On linux we build this as a test case instead.
# Skip for darwin.arm64 for now.
if "$(KBUILD_TARGET)" != "linux" && "$(intersects $(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.arm64)" == ""
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
# On ARM we don't support the old VBoxVideo graphics emulation and rely fully on VMSVGA
# (partly due to the fact that it relies on port I/O which is not available there).
if1of ($(KBUILD_TARGET_ARCH), arm32 arm64)
VBOX_NO_LEGACY_XORG_X11 = 1
endif
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
# Don't include any CRTs.
# For Windows hosts this would be the MS Visual Studio Redistributable (2019).
VBOX_WITH_CRT_PACKING =
# 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
# Include and build the Linux arm64 guest additions.
VBOX_WITH_LNX_ARM64_ADDITIONS = 1
## @}
# Set build options right for building the Additions as an RPM package.
# VBOX_ONLY_RPM_ADDITIONS = 1
ifdef VBOX_ONLY_RPM_ADDITIONS
VBOX_ONLY_ADDITIONS = 1
VBOX_ONLY_ADDITIONS_WITHOUT_RTISOMAKER = 1
# We build the RPMs using public sources.
VBOX_OSE = 1
# We want to re-use parts of the packing pass, but not all.
VBOX_WITHOUT_LINUX_GUEST_PACKAGE = 1
VBOX_WITHOUT_ADDITIONS_ISO = 1
endif
## @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
# Build QHelp documentation, needs qhelpgenerator
VBOX_WITH_DOCS_QHELP = 1
# Include QHelp documentation in the package
VBOX_WITH_DOCS_QHELP_PACKING = 1
# By default only include translations in documentation-only builds
ifdef VBOX_ONLY_DOCS
ifndef VBOX_NO_DOCS_TRANSLATIONS
VBOX_WITH_DOCS_TRANSLATIONS = 1
endif
endif
# Default languages
VBOX_MANUAL_LANGUAGES = en_US
ifdef VBOX_WITH_DOCS_TRANSLATIONS
# The French translation is too outdated to be useful, needs a fresh start.
#VBOX_MANUAL_ADD_LANGUAGES = fr_FR
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 VT-x & AMD-V execution manager (HM).
if "$(KBUILD_TARGET)" == "amd64" && !defined(VBOX_WITHOUT_HWVIRT)
VBOX_WITH_HWVIRT := 1
endif
# Enable .r0 modules.
if "$(KBUILD_TARGET_ARCH)" == "amd64"
VBOX_WITH_R0_MODULES := 1
endif
# Enable safe STR (store task register) emulation for raw-mode.
VBOX_WITH_SAFE_STR = 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
# Nested hardware virtualization (64-bit hosts only).
ifeq ($(KBUILD_TARGET_ARCH),amd64)
# Enables SVM nested hardware virtualization support.
VBOX_WITH_NESTED_HWVIRT_SVM = 1
# Enables VMX nested hardware virtualization support.
VBOX_WITH_NESTED_HWVIRT_VMX = 1
# Enables nested hardware virtualization support but only in IEM.
#VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM = 1
ifdef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM
if !defined(VBOX_WITH_NESTED_HWVIRT_SVM) && !defined(VBOX_WITH_NESTED_HWVIRT_VMX)
$(error VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM defined without enabling nested VMX or nested SVM support)
endif
endif
# Enables guest EPT support for VMX nested hardware virtualization.
ifn1of ($(KBUILD_TARGET), darwin)
VBOX_WITH_NESTED_HWVIRT_VMX_EPT = 1
endif
if defined(VBOX_WITH_NESTED_HWVIRT_VMX_EPT) && !defined(VBOX_WITH_NESTED_HWVIRT_VMX)
$(error VBOX_WITH_NESTED_HWVIRT_VMX_EPT requires VBOX_WITH_NESTED_HWVIRT_VMX)
endif
endif
# Enable the TLBs in IEM (experimental).
if1of ($(KBUILD_TARGET_ARCH), arm64)
VBOX_WITH_IEM_TLB := 1
endif
# Enable the IEM recompiler of x86 code.
if1of ($(KBUILD_TARGET_ARCH), arm64)
VBOX_WITH_IEM_RECOMPILER := 1
VBOX_WITH_IEM_NATIVE_RECOMPILER := 1
endif
# Enable native NEM on windows and macOS.
if1of ($(KBUILD_TARGET), win darwin)
VBOX_WITH_NATIVE_NEM = 1
endif
# Enable NEM fallback if the driver is not available.
if1of ($(KBUILD_TARGET), darwin)
VBOX_WITH_DRIVERLESS_NEM_FALLBACK = 1
endif
# Enable forced driverless mode by default.
if1of ($(KBUILD_TARGET), darwin)
VBOX_WITH_DRIVERLESS_FORCED = 1
VBOX_WITH_INTNET_SERVICE_IN_R3 = 1
endif
# Enables the new breakpoint handling code, see @bugref{8650}
VBOX_WITH_DBGF_FLOW_TRACING = 1
# Enables ARMv8 virtualization, see @bugref{10383}
if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.arm64)
VBOX_WITH_VIRT_ARMV8 = 1
endif
if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), linux.amd64)
ifdef VBOX_WITH_R0_MODULES
# Enable IBT branch protection for the R0 modules.
# (A make warning will be shown if gcc is too old.)
VBOX_WITH_R0_MOD_IBT_BRANCH_PROTECTION = 1
endif
endif
## @}
## @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
# Enables lwip as a core of NAT service
VBOX_WITH_LWIP_NAT = 1
# Enables compilation of NAT service
VBOX_WITH_NAT_SERVICE = 1
# Enable the E1000 feature.
VBOX_WITH_E1000 = 1
# Enable the Virtio feature.
VBOX_WITH_VIRTIO = 1
# Enable the Virtio SCSI device.
VBOX_WITH_VIRTIO_SCSI = 1
# HDA emulation is Intel HDA by default.
VBOX_WITH_INTEL_HDA = 1
ifn1of ($(KBUILD_TARGET), win darwin)
# Enable OSS audio support.
VBOX_WITH_AUDIO_OSS = 1
endif
if1of ($(KBUILD_TARGET), linux)
# Enable ALSA audio support.
VBOX_WITH_AUDIO_ALSA = 1
endif
if1of ($(KBUILD_TARGET), linux)
# Enable PulseAudio audio support.
VBOX_WITH_AUDIO_PULSE = 1
endif
# Enable building debugging backend.
# Only will be used at runtime when "VBoxInternal2/Audio/Debug/Enabled" (VM / global) is set.
VBOX_WITH_AUDIO_DEBUG = 1
# Enables the audio endpoint detection on Windows hosts.
VBOX_WITH_AUDIO_MMNOTIFICATION_CLIENT = 1
# Enable PCI passthrough support.
# (disabled with 6.1, since it's not complete/useful enough)
VBOX_WITH_PCI_PASSTHROUGH =
# 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
# Enable internal networking.
VBOX_WITH_INTERNAL_NETWORKING = 1
# Enable vmsvga (svga2) graphics device variant, 2D part
VBOX_WITH_VMSVGA = 1
# Enable vmsvga (svga2) graphics device variant, 3D part
if1of ($(KBUILD_TARGET), darwin linux win)
VBOX_WITH_VMSVGA3D = 1
endif
# Enable vmsvga (svga2) graphics device variant, 3D part, VGPU10 DX commands
ifdef VBOX_WITH_VMSVGA3D
VBOX_WITH_VMSVGA3D_DX = 1
# Enable DXVK library for supporting VGPU10 DX on non Windows hosts
if1of ($(KBUILD_TARGET), linux darwin)
VBOX_WITH_DXVK = 1
endif
endif
# Enable the generic 3D settings support if at least one 3D capable solution is enabled
ifdef VBOX_WITH_VMSVGA3D
VBOX_WITH_3D_ACCELERATION = 1
endif
# 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
# Lazy developer!!
VBOXWDDM_WITH_VBVA = 1
# Lazy developer!!
ifdef VBOX_WITH_WDDM
VBOX_WITH_VDMA = 1
else ifdef VBOX_WITH_VDMA
undefine VBOX_WITH_VDMA
endif
# Gallium based WDDM driver
if1of ($(KBUILD_TARGET), win)
VBOX_WITH_MESA3D = 1
endif
# VGPU10 UMD driver for Vista+ guests in the guest additions installer
ifdef VBOX_WITH_VMSVGA3D_DX
if1of ($(KBUILD_TARGET), win)
VBOX_WITH_WDDM_DX = 1
endif
endif
# Disable the Intel PXE ROM (uses Etherboot).
VBOX_WITH_INTEL_PXE =
# Enable EFI support
VBOX_WITH_EFI = 1
# Enable Secure Boot in the EFI firmware.
VBOX_WITH_EFI_SECURE_BOOT = 1
# Enable TPM support in the EFI firmware.
VBOX_WITH_EFI_TPM = 1
# Embed the EFI firmwares in VBoxDD2.dll/dylib/so.
VBOX_WITH_EFI_IN_DD2 = 1
# Fetch EFI firmware image from the build server
#VBOX_WITH_EFIFW_FROM_BUILD_SERVER = 1
# Include the EFI firmware into the package
ifndef VBOX_WITH_EFI_IN_DD2
VBOX_WITH_EFIFW_PACKING = 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
ifdef VBOX_WITH_USB
VBOX_WITH_VUSB = 1
VBOX_WITH_XHCI_IMPL = 1
endif
ifdef VBOX_WITH_EHCI
VBOX_WITH_EHCI_IMPL = 1
endif
ifdef VBOX_WITH_PCI_PASSTHROUGH
## @bugref{9218}: Disabled awaiting conversion of the device to new PDM device style.
#VBOX_WITH_PCI_PASSTHROUGH_IMPL = 1
endif
ifndef VBOX_WITHOUT_HOSTWEBCAM
VBOX_WITH_USB_VIDEO_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 unattended installation API
VBOX_WITH_UNATTENDED = 1
# 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
# Disk crypt plugin
VBOX_WITH_PLUGIN_CRYPT = 1
# VirtualKD stub/loader device, only relevant on Windows host
VBOX_WITH_VIRTUALKD = 1
# NVMe device emulation
VBOX_WITH_NVME_IMPL = 1
# Storage related debug drivers
VBOX_WITH_DRV_DISK_INTEGRITY = 1
# Enables the AMD IOMMU
VBOX_WITH_IOMMU_AMD = 1
# Enables the Intel IOMMU
VBOX_WITH_IOMMU_INTEL = 1
# Enables the new DBGF tracing framework
VBOX_WITH_DBGF_TRACING = 1
# Enable TPM device emulation support.
VBOX_WITH_TPM = 1
# Enable libtpms, required for the in process TPM emulation.
if1of ($(KBUILD_TARGET), linux darwin win solaris)
VBOX_WITH_LIBTPMS = 1
endif
# Disable keyboard HID Consumer/Desktop control keys passthrough
# VBOX_WITHOUT_KEYBOARD_HID_CC_DC_PASSTHROUGH = 1
## @}
# legacy
ifdef VBOX_ONLY_TESTSUITE
$(warning VBOX_ONLY_TESTSUITE was renamed to VBOX_ONLY_VALIDATIONKIT)
VBOX_ONLY_VALIDATIONKIT = $(VBOX_ONLY_TESTSUITE)
endif
## @name Other Component
## @{
# Build the installer.
VBOX_WITH_INSTALLER = 1
VBOX_WITH_GUEST_INSTALLER_UNICODE = 1
# The kernel driver/module and related runtime libraries.
# On Linux we build this as a test case instead.
# On darwin we don't use a support driver.
if "$(KBUILD_TARGET)" != "linux" && "$(KBUILD_TARGET)" != "darwin"
VBOX_WITH_VBOXDRV = 1
endif
# The main api.
VBOX_WITH_MAIN = 1
# Enables proxy stub for MS COM (speeds up setting IPC for objects).
# (The VBOX_MIDL_PROXY_CLSID and VBOX_MIDL_PROXY_CLSID_IS are just two
# representations of the class ID for the proxy stub.)
VBOX_WITH_MIDL_PROXY_STUB = 1
VBOX_MIDL_PROXY_CLSID := {0bb3b78c-1807-4249-5ba5-ea42d66af0bf}
VBOX_MIDL_PROXY_CLSID_IS := {0x0bb3b78c,0x1807,0x4249,{0x5b,0xa5,0xea,0x42,0xd6,0x6a,0xf0,0xbf}}
# Whether to also ship 32-bit main API on 64-bit systems.
if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), solaris.amd64 win.amd64)
if !defined(VBOX_ONLY_VALIDATIONKIT) && !defined(VBOX_ONLY_ADDITIONS) && !defined(VBOX_ONLY_DOCS) && !defined(VBOX_ONLY_EXTPACKS)
VBOX_WITH_32_ON_64_MAIN_API = 1
endif
endif
# Whether to generate a database of USB vendor IDs and device IDs into VBoxSVC.
VBOX_WITH_MAIN_USB_ID_DATABASE = 1
# Whether to enable error message translation in Main.
ifndef VBOX_ONLY_BUILD
VBOX_WITH_MAIN_NLS = 1
endif
# Whether to enable error message translation in Extension VM Pack.
if !defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_EXTPACKS)
VBOX_WITH_PUEL_NLS = 1
endif
# Whether to enable message translation in VBoxManage.
#ifndef VBOX_ONLY_BUILD
VBOX_WITH_VBOXMANAGE_NLS = 1
#endif
# 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
# The webservices api.
VBOX_WITH_WEBSERVICES = 1
VBOX_WITH_WEBSERVICES_SSL = 1
# The Qt GUI.
VBOX_WITH_QTGUI = 1
# Indicates the Qt is Cocoa based on the Mac.
ifeq ($(KBUILD_TARGET),darwin)
VBOX_WITH_COCOA_QT = 1
endif
# Use Qt6 instead of Qt5.
VBOX_WITH_QT6 := 1
# VBox Ballooning Control frontend.
VBOX_WITH_FE_BALLOONCTRL = 1
# VBox Autostart Service.
VBOX_WITH_FE_AUTOSTART = 1
# VBox Bug Report tool.
VBOX_WITH_FE_BUGREPORT = 1
# Enable this to get the SDL based GUI built. Mostly useful for development
# purposes. For production use it's recommended to use the Qt GUI which can
# be also stripped down. See VBOX_WITH_QTGUI.
VBOX_WITH_VBOXSDL =
# Start VBoxSVC in windows session 0 (services session).
VBOX_WITH_VBOXSVC_SESSION_0 = 1
# The headless frontend.
VBOX_WITH_HEADLESS = 1
# Enable the build of VRDP server.
VBOX_WITH_VRDP = 1
# Build the VRDP authentication modules.
VBOX_WITH_VRDP_AUTHMOD = 1
# Build enhanced version of rdesktop.
VBOX_WITH_VRDP_RDESKTOP = 1
## The Direct Framebuffer GUI.
#VBOX_WITH_VBOXFB = 1
# The basic frontend not using Main/COM/XPCOM.
#VBOX_WITH_VBOXBFE = 1
# Enables the Python<->XPCOM, Python<->COM and (WS enabled) Python<->WS bindings.
VBOX_WITH_PYTHON ?= 1
# Enables the PERL<->WS binding (if WS enabled).
#VBOX_WITH_PERL ?= 1
# Enables the PHP<->WS binding (if WS enabled).
VBOX_WITH_PHP ?= 1
if1of ($(KBUILD_TARGET), darwin linux solaris)
# Enable Java<->XPCOM bridge + glue code
VBOX_WITH_JXPCOM ?= 1
endif
if1of ($(KBUILD_TARGET), ) # scm:ignore-empty-if1of-set
# 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 (only up to 3.2,
# unless VBOX_WITH_ONLY_PYTHON_LIMITED_API is overridden).
VBOX_WITH_MULTIVERSION_PYTHON ?= 1
# Only build the limited Python extension API version for 3.3 and later.
VBOX_WITH_ONLY_PYTHON_LIMITED_API = 1
# Build the Validation Kit.
VBOX_WITH_VALIDATIONKIT = 1
# Include unit tests (testcases) on the Validation Kit .ISO
# so that we can perform testing on older platforms which we don't support
# on the host anymore.
if1of ($(KBUILD_TARGET), darwin.amd64 linux win)
VBOX_WITH_VALIDATIONKIT_UNITTESTS_PACKING = 1
endif
# Set if we should ship the audio test from the Validation Kit with the host installer.
VBOX_WITH_HOST_SHIPPING_AUDIO_TEST = 1
# Set if we should ship the audio test from the Validation Kit with the guest additions.
VBOX_WITH_ADDITIONS_SHIPPING_AUDIO_TEST = 1
# Build the testcases.
VBOX_WITH_TESTCASES = 1
# Enable this to build vbox-img even if VBOX_WITH_TESTCASES is disabled
VBOX_WITH_VBOX_IMG =
# Enables recording support.
VBOX_WITH_RECORDING = 1
# Enable VPX (VP8 / VP9 codec), required for video capturing.
VBOX_WITH_LIBVPX = 1
# Enables audio support for recording (depends on VBOX_WITH_RECORDING).
VBOX_WITH_AUDIO_RECORDING = 1
if defined(VBOX_WITH_AUDIO_RECORDING) && !defined(VBOX_WITH_RECORDING)
$(error Audio recording (VBOX_WITH_AUDIO_RECORDING) needs the general recording feature (VBOX_WITH_RECORDING) enabled)
endif
# Enables libvorbis (Ogg Vorbis), required for encoding audio into the recorded data.
VBOX_WITH_LIBVORBIS = 1
# Enables libogg (Ogg file format). Required for building libvorbis above.
VBOX_WITH_LIBOGG = 1
if defined(VBOX_WITH_LIBVORBIS) && !defined(VBOX_WITH_LIBOGG)
$(error Need libogg (VBOX_WITH_LIBOGG) in order to build libvorbis (VBOX_WITH_LIBVORBIS))
endif
# Enable Wayland support for Guest Additions
VBOX_WITH_WAYLAND_ADDITIONS = 1
# Enable shared folders
VBOX_WITH_SHARED_FOLDERS = 1
# Enable shared clipboard
VBOX_WITH_SHARED_CLIPBOARD = 1
# Enable shared clipboard (file) transfers
if1of ($(KBUILD_TARGET), win linux)
VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS = 1
if1of ($(KBUILD_TARGET), linux)
VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP = 1
endif
endif
# 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
# Enables support for handling certain commands via the built-in (busybox-like) toolbox in VBoxService. See @bugref{9783}
# This is for supporting Guest Additions < 7.1.
VBOX_WITH_GSTCTL_TOOLBOX_SUPPORT = 1
# Enables treating the toolbox as built-in commands. Requires 7.1 Guest Additions. See @bugref{9783}
VBOX_WITH_GSTCTL_TOOLBOX_AS_CMDS = 1
endif
# Enable ballooning
VBOX_WITH_MEMBALLOON = 1
# Enable cURL (required for the network part of the GUI)
VBOX_WITH_LIBCURL = 1
# Enable libssh (required for cloud network attachment)
if1of ($(KBUILD_TARGET), darwin linux win)
VBOX_WITH_LIBSSH = 1
endif
# Enable Host=>Guest Drag'n'Drop
if1of ($(KBUILD_TARGET), darwin linux solaris win)
VBOX_WITH_DRAG_AND_DROP = 1
if1of ($(KBUILD_TARGET), darwin linux solaris win)
VBOX_WITH_DRAG_AND_DROP_GH = $(VBOX_WITH_DRAG_AND_DROP)
endif
ifdef VBOX_WITH_DRAG_AND_DROP_GH
ifeq ($(KBUILD_TARGET),darwin)
# On OS X (Darwin) this needs to be set in order to get proper
# guest->host support.
# Note: Setting this requires Qt also having this feature enabled!
VBOX_WITH_DRAG_AND_DROP_PROMISES = $(VBOX_WITH_DRAG_AND_DROP)
endif
endif
endif
# Enable audio support for VRDE.
VBOX_WITH_AUDIO_VRDE = 1
ifdef VBOX_WITH_VALIDATIONKIT
# Ship the Validation Kit audio driver for running tests (driver disabled by default).
VBOX_WITH_AUDIO_VALIDATIONKIT = 1
endif
# Use the VRDE external authentication library from VBoxSVC.
if1of ($(KBUILD_TARGET), win)
VBOX_WITH_VRDEAUTH_IN_VBOXSVC = 1
endif
# Enables use of merge modules in the windows installer. This will increase
# the overall installer size significantly because merge modules are not able
# to use a common .cab file to reduce their size.
#VBOX_WITH_MSM_INSTALL = 1
# Enables full VM encryption support @bugref{9955}.
VBOX_WITH_FULL_VM_ENCRYPTION = 1
# Enables the 'sign' command in bldRTSignTool. We may need this on windows.
if1of ($(KBUILD_TARGET), win)
VBOX_WITH_BLD_RTSIGNTOOL_SIGNING = 1
endif
# Enables support for liblzma inside of IPRT.
ifndef VBOX_ONLY_SDK
VBOX_WITH_LIBLZMA = 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 win)