[1] | 1 | # $Id: Config.kmk 3150 2007-06-18 22:31:27Z vboxsync $
|
---|
| 2 | ## @file
|
---|
| 3 | #
|
---|
| 4 | # The global build configuration file for VBox.
|
---|
| 5 | #
|
---|
| 6 | # This file gets included by all makefiles through the
|
---|
| 7 | # include $(PATH_KBUILD)/header.kmk statement.
|
---|
| 8 | #
|
---|
| 9 |
|
---|
| 10 | #
|
---|
[2992] | 11 | # Copyright (C) 2006-2007 innotek GmbH
|
---|
[1] | 12 | #
|
---|
| 13 | # This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
| 14 | # available from http://www.virtualbox.org. This file is free software;
|
---|
| 15 | # you can redistribute it and/or modify it under the terms of the GNU
|
---|
| 16 | # General Public License as published by the Free Software Foundation,
|
---|
| 17 | # in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
|
---|
| 18 | # distribution. VirtualBox OSE is distributed in the hope that it will
|
---|
| 19 | # be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
| 20 | #
|
---|
| 21 | # If you received this file as part of a commercial VirtualBox
|
---|
| 22 | # distribution, then only the terms of your commercial VirtualBox
|
---|
| 23 | # license agreement apply instead of the previous paragraph.
|
---|
| 24 | #
|
---|
| 25 |
|
---|
| 26 |
|
---|
| 27 | #
|
---|
| 28 | # kBuild stuff
|
---|
| 29 | #
|
---|
| 30 |
|
---|
| 31 | # Enable automatic installation of what's built.
|
---|
| 32 | KBUILD_DO_AUTO_INSTALL := 1
|
---|
| 33 | # Add the GPLExport pass.
|
---|
| 34 | PASSES := $(filter-out PACKING,$(PASSES)) PACKING # temporary hack
|
---|
| 35 | PASSES += GPLEXPORT
|
---|
| 36 | # Modify the order of the INSTALLS and OTHERS passes.
|
---|
| 37 | DEFAULT_PASSES := BLDPROGS LIBRARIES DLLS BINARIES INSTALLS OTHERS
|
---|
| 38 |
|
---|
| 39 | ## PASS: gplexport
|
---|
| 40 | # This pass processes custom gplexport rules listed in
|
---|
| 41 | # the GPLEXPORTS variable.
|
---|
| 42 | PASS_GPLEXPORT := GPL and LGPL source export
|
---|
| 43 | PASS_GPLEXPORT_trgs :=
|
---|
| 44 | PASS_GPLEXPORT_vars := GPLEXPORTS
|
---|
| 45 | PASS_GPLEXPORT_pass := gplexport
|
---|
| 46 | #alias
|
---|
| 47 | gplexport: pass_gplexport
|
---|
| 48 |
|
---|
| 49 | # Install paths.
|
---|
| 50 | PATH_INS := $(PATH_OUT)
|
---|
[960] | 51 | ifeq ($(BUILD_TARGET),darwin)
|
---|
| 52 | INST_DIST = dist/
|
---|
| 53 | INST_SDK = $(INST_DIST)sdk/
|
---|
| 54 | INST_SDK_SAMPLES = $(INST_SDK)samples
|
---|
[1] | 55 |
|
---|
[960] | 56 | # the bundles
|
---|
| 57 | INST_VIRTUALBOX = $(INST_DIST)VirtualBox.app/
|
---|
| 58 | INST_VBOXDRV = $(INST_DIST)VBoxDrv.kext/
|
---|
| 59 | INST_VBOXTAP = $(INST_DIST)VBoxTAP.kext/
|
---|
| 60 | INST_VBOXUSB = $(INST_DIST)VBoxUSB.kext/
|
---|
| 61 |
|
---|
| 62 | # put everything in the VirtualBox app bundle.
|
---|
| 63 | INST_BIN = $(INST_VIRTUALBOX)Contents/MacOS/
|
---|
| 64 | INST_DLL = $(INST_BIN)
|
---|
| 65 | INST_SYS = $(INST_BIN)
|
---|
| 66 | INST_TESTCASE = $(INST_BIN)testcase/
|
---|
[1693] | 67 | INST_ADDITIONS = $(INST_BIN)additions/
|
---|
[960] | 68 |
|
---|
| 69 | # other paths
|
---|
[2542] | 70 | INST_TESTSUITE = testsuite/
|
---|
[960] | 71 | INST_LIB = lib/
|
---|
| 72 | INST_ADDITIONS_LIB = $(PATH_LIB)/additions/
|
---|
| 73 |
|
---|
| 74 | else
|
---|
| 75 |
|
---|
| 76 | INST_BIN = bin/
|
---|
| 77 | INST_DIST = $(INST_BIN)
|
---|
| 78 | INST_DLL = $(INST_BIN)
|
---|
| 79 | INST_SDK = $(INST_BIN)sdk/
|
---|
| 80 | INST_SDK_SAMPLES = $(INST_SDK)samples
|
---|
| 81 | INST_DLL = $(INST_BIN)
|
---|
| 82 | INST_SYS = $(INST_BIN)
|
---|
| 83 | INST_TESTCASE = $(INST_BIN)testcase/
|
---|
| 84 | INST_ADDITIONS = $(INST_BIN)additions/
|
---|
| 85 |
|
---|
[2542] | 86 | INST_TESTSUITE = testsuite/
|
---|
[960] | 87 | INST_LIB = lib/
|
---|
| 88 | INST_ADDITIONS_LIB = $(INST_LIB)additions/
|
---|
| 89 | endif
|
---|
| 90 |
|
---|
| 91 | PATH_BIN = $(patsubst %/,%,$(PATH_INS)/$(INST_BIN))
|
---|
| 92 | PATH_DLL = $(patsubst %/,%,$(PATH_INS)/$(INST_DLL))
|
---|
| 93 | PATH_SYS = $(patsubst %/,%,$(PATH_INS)/$(INST_SYS))
|
---|
| 94 | PATH_LIB = $(patsubst %/,%,$(PATH_INS)/$(INST_LIB))
|
---|
| 95 | PATH_DOC = $(PATH_OUT)/doc
|
---|
| 96 | VBOX_PATH_SDK = $(patsubst %/,%,$(PATH_INS)/$(INST_SDK))
|
---|
[1747] | 97 | VBOX_PATH_DIST = $(patsubst %/,%,$(PATH_INS)/$(INST_DIST))
|
---|
[2542] | 98 | VBOX_PATH_TESTSUITE = $(patsubst %/,%,$(PATH_INS)/$(INST_TESTSUITE))
|
---|
[960] | 99 |
|
---|
| 100 |
|
---|
[1] | 101 | # Delete targets on failure.
|
---|
| 102 | .DELETE_ON_ERROR:
|
---|
| 103 |
|
---|
| 104 | # Notify about important kBuild updates.
|
---|
[2887] | 105 | ifneq ($(call int-ge,$(KMK_REVISION),972),1)
|
---|
[1] | 106 | $(error You must update kBuild!)
|
---|
| 107 | endif
|
---|
| 108 |
|
---|
| 109 | #
|
---|
| 110 | # Define USERNAME early on.
|
---|
| 111 | #
|
---|
| 112 | ifndef USERNAME
|
---|
| 113 | ifdef USER
|
---|
| 114 | USERNAME = $(USER)
|
---|
| 115 | else
|
---|
| 116 | $(warning Warning: You must have USERNAME or USER in your environment.)
|
---|
| 117 | endif
|
---|
| 118 | endif
|
---|
| 119 |
|
---|
| 120 | #
|
---|
| 121 | # The VirtualBox version.
|
---|
| 122 | #
|
---|
| 123 |
|
---|
| 124 | # Major version.
|
---|
| 125 | VBOX_VERSION_MAJOR = 1
|
---|
| 126 | # Minor version.
|
---|
[3059] | 127 | VBOX_VERSION_MINOR = 4
|
---|
[1] | 128 | # This is the current build number. It should be increased every time we publish a
|
---|
| 129 | # new build. The define is available in every source file. Only even build numbers
|
---|
| 130 | # will be published, odd numbers are set during development.
|
---|
[3060] | 131 | VBOX_VERSION_BUILD = 1
|
---|
[1397] | 132 | # Full version string (may include more than just x.y.z, but no spaces or other problematic chars).
|
---|
[1440] | 133 | VBOX_VERSION_STRING = $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)
|
---|
[1] | 134 |
|
---|
| 135 |
|
---|
| 136 | #
|
---|
| 137 | # The VirtualBox Configuration Defaults.
|
---|
| 138 | #
|
---|
| 139 |
|
---|
| 140 | # Build linux / win32 additions.
|
---|
| 141 | ifeq ($(BUILD_TARGET),linux)
|
---|
[762] | 142 | VBOX_WITH_LINUX_ADDITIONS = 1
|
---|
[37] | 143 | VBOX_WITH_WIN32_ADDITIONS = 1
|
---|
[1] | 144 | endif
|
---|
| 145 | ifeq ($(BUILD_TARGET),l4)
|
---|
| 146 | VBOX_WITH_LINUX_ADDITIONS = 1
|
---|
| 147 | VBOX_WITH_WIN32_ADDITIONS = 1
|
---|
| 148 | endif
|
---|
| 149 | ifeq ($(BUILD_TARGET),win)
|
---|
| 150 | VBOX_WITH_WIN32_ADDITIONS = 1
|
---|
| 151 | endif
|
---|
[762] | 152 | ifdef VBOX_WITH_LINUX_ADDITIONS
|
---|
| 153 | ifeq ($(BUILD_TARGET).$(BUILD_PLATFORM_ARCH),linux.x86)
|
---|
| 154 | VBOX_WITH_LINUX_ADDITIONS_32BIT_R0 = 1
|
---|
| 155 | endif
|
---|
| 156 | endif
|
---|
[1] | 157 | # Enable the building of shared folders in the windows additions.
|
---|
| 158 | VBOX_WITH_WIN32_ADDITIONS_SHAREDFOLDERS = 1
|
---|
| 159 |
|
---|
| 160 | # build the installer
|
---|
| 161 | VBOX_WITH_INSTALLER = 1
|
---|
| 162 | # enable VRDP server
|
---|
| 163 | VBOX_WITH_VRDP = 1
|
---|
[1873] | 164 | # enable new multiconnection code
|
---|
[1899] | 165 | VBOX_WITH_VRDP_MC = 1
|
---|
[1] | 166 | # build VRDP authentication modules
|
---|
| 167 | VBOX_WITH_VRDP_AUTHMOD = 1
|
---|
| 168 | # build enhanced version of rdesktop
|
---|
| 169 | VBOX_WITH_VRDP_RDESKTOP = 1
|
---|
[3010] | 170 | ifeq ($(filter-out darwin.x86 darwin.amd64 os2.x86 win.amd64,$(BUILD_TARGET).$(BUILD_TARGET_ARCH)),)
|
---|
[1] | 171 | # build the support driver & library without IDT patching.
|
---|
| 172 | ## @todo invert this!
|
---|
| 173 | VBOX_WITHOUT_IDT_PATCHING = 1
|
---|
[3010] | 174 | endif
|
---|
[1] | 175 | # The kernel driver/module and related runtime libraries.
|
---|
| 176 | VBOX_WITH_VBOXDRV = 1
|
---|
| 177 | # build with secure label support
|
---|
[687] | 178 | ifeq ($(filter win.amd64,$(BUILD_TARGET).$(BUILD_TARGET_ARCH)),) # too much work with freetype and all that.
|
---|
| 179 | VBOX_WITH_SECURELABEL = 1
|
---|
[1] | 180 | endif
|
---|
| 181 |
|
---|
| 182 | # the main api
|
---|
| 183 | VBOX_WITH_MAIN = 1
|
---|
| 184 | # the SDL based GUI
|
---|
| 185 | VBOX_WITH_VBOXSDL = 1
|
---|
| 186 | # the basic frontend (w/o Main)
|
---|
| 187 | VBOX_WITH_VBOXBFE = 1
|
---|
| 188 | # the Qt GUI
|
---|
| 189 | VBOX_WITH_QTGUI = 1
|
---|
| 190 | ## the Direct Framebuffer GUI
|
---|
| 191 | #VBOX_WITH_VBOXFB = 1
|
---|
| 192 | # the gui debugger
|
---|
| 193 | ifneq ($(BUILD_TYPE),release)
|
---|
| 194 | VBOX_WITH_DEBUGGER_GUI = 1
|
---|
| 195 | endif
|
---|
| 196 | # the documentation
|
---|
| 197 | VBOX_WITH_DOCS = 1
|
---|
| 198 | # build the Host Guest Communication Manager component
|
---|
| 199 | VBOX_WITH_HGCM = 1
|
---|
| 200 | # Enable the USB feature.
|
---|
| 201 | VBOX_WITH_USB = 1
|
---|
| 202 | # Enable the ISCSI feature.
|
---|
| 203 | VBOX_WITH_ISCSI = 1
|
---|
[1075] | 204 | # Enable ALSA support for Linux
|
---|
[787] | 205 | VBOX_WITH_ALSA = 1
|
---|
[1075] | 206 | # Disable WINMM support for Windows (not implemented)
|
---|
| 207 | VBOX_WITH_WINMM =
|
---|
[228] | 208 | # Enable the kchmviewer
|
---|
| 209 | VBOX_WITH_KCHMVIEWER = 1
|
---|
[1] | 210 | # Build the testsuite.
|
---|
| 211 | VBOX_WITH_TESTSUITE = 1
|
---|
| 212 | # Build the testcases.
|
---|
| 213 | VBOX_WITH_TESTCASES = 1
|
---|
| 214 | # Set this to not use COM or XPCOM in places where it can be avoided.
|
---|
| 215 | #VBOX_WITHOUT_COM = 1
|
---|
| 216 | # Set this to skip installing the redistributable compiler runtime.
|
---|
| 217 | #VBOX_WITHOUT_COMPILER_REDIST = 1
|
---|
[1345] | 218 | # Enabled internal networking.
|
---|
| 219 | VBOX_WITH_INTERNAL_NETWORKING = 1
|
---|
[1844] | 220 | # Enables the ffmpeg module for recording test runs.
|
---|
| 221 | #VBOX_WITH_FFMPEG = 1
|
---|
[1] | 222 |
|
---|
[1844] | 223 |
|
---|
[1] | 224 | #
|
---|
| 225 | # Skip stuff.
|
---|
| 226 | #
|
---|
| 227 |
|
---|
| 228 | # VBOX_QUICK can be used by core developers to speed to the build
|
---|
| 229 | ifdef VBOX_QUICK
|
---|
| 230 | # undefine variables by assigning blank.
|
---|
| 231 | VBOX_WITH_TESTSUITE=
|
---|
| 232 | VBOX_WITH_TESTCASES=
|
---|
| 233 | VBOX_WITH_MAIN =
|
---|
| 234 | VBOX_WITH_VBOXSDL =
|
---|
| 235 | VBOX_WITH_VBOXBFE =
|
---|
| 236 | VBOX_WITH_QTGUI =
|
---|
| 237 | VBOX_WITH_DEBUGGER_GUI =
|
---|
| 238 | VBOX_WITH_DOCS =
|
---|
| 239 | endif # VBOX_QUICK
|
---|
| 240 |
|
---|
[3010] | 241 | # l4 have to skip a few things.
|
---|
[1] | 242 | ifeq ($(BUILD_TARGET),l4)
|
---|
| 243 | VBOX_WITH_VBOXDRV=
|
---|
| 244 | VBOX_WITH_VRDP=
|
---|
| 245 | VBOX_WITH_VBOXSDL=
|
---|
| 246 | VBOX_WITH_QTGUI=
|
---|
| 247 | VBOX_WITH_MAIN=
|
---|
| 248 | VBOX_WITH_DOCS=
|
---|
| 249 | VBOX_WITH_ISCSI=
|
---|
[1345] | 250 | VBOX_WITH_INTERNAL_NETWORKING=
|
---|
[1] | 251 | endif
|
---|
| 252 |
|
---|
[3010] | 253 | # Darwin have to skip a few things at present.
|
---|
[1345] | 254 | ifeq ($(BUILD_TARGET),darwin)
|
---|
| 255 | # Internal networking requires testing and possibly proper ring-3/ring0 separation.
|
---|
| 256 | VBOX_WITH_INTERNAL_NETWORKING=
|
---|
| 257 | # Don't bother with SDL ttf for now.
|
---|
| 258 | VBOX_WITH_SECURELABEL=
|
---|
[1349] | 259 | ifdef VBOX_OSE
|
---|
| 260 | # Qt/Mac v3.3.x requires patching to work for us.
|
---|
| 261 | VBOX_WITH_QTGUI=
|
---|
| 262 | endif
|
---|
| 263 | # Later:
|
---|
[1345] | 264 | VBOX_WITH_VRDP_AUTHMOD=
|
---|
| 265 | VBOX_WITH_VRDP_RDESKTOP=
|
---|
| 266 | endif
|
---|
| 267 |
|
---|
| 268 | # Most stuff doesn't build yet on the new targets.
|
---|
| 269 | ifeq ($(filter-out os2 freebsd solaris,$(BUILD_TARGET)),)
|
---|
| 270 | #VBOX_WITH_VBOXBFE=
|
---|
| 271 | VBOX_WITH_MAIN=
|
---|
| 272 | VBOX_WITH_VBOXSDL=
|
---|
| 273 | VBOX_WITH_QTGUI=
|
---|
| 274 | VBOX_WITH_DEBUGGER_GUI=
|
---|
[1] | 275 | VBOX_WITH_INSTALLER=
|
---|
[615] | 276 | VBOX_WITH_SECURELABEL=
|
---|
[1] | 277 | VBOX_WITH_VRDP=
|
---|
| 278 | VBOX_WITH_VRDP_AUTHMOD=
|
---|
| 279 | VBOX_WITH_VRDP_RDESKTOP=
|
---|
| 280 | VBOX_WITH_TESTSUITE=
|
---|
| 281 | VBOX_WITH_USB=
|
---|
| 282 | VBOX_WITH_DOCS=
|
---|
| 283 | endif
|
---|
| 284 |
|
---|
| 285 |
|
---|
| 286 | #
|
---|
| 287 | # Include automatic and local config file to override the above settings
|
---|
| 288 | # and to provide defaults for the settings below this point.
|
---|
| 289 | #
|
---|
| 290 | AUTOCFG := $(wildcard $(PATH_ROOT)/AutoConfig.kmk)
|
---|
| 291 | ifeq ($(AUTOCFG),)
|
---|
| 292 | # deprecated name. to be removed.
|
---|
| 293 | AUTOCFG := $(wildcard $(PATH_ROOT)/Config.kmkconf)
|
---|
| 294 | ifneq ($(AUTOCFG),)
|
---|
| 295 | $(warning Config.kmkconf has been renamed. Please re-run configure.)
|
---|
| 296 | endif
|
---|
| 297 | endif
|
---|
| 298 | ifneq ($(AUTOCFG),)
|
---|
| 299 | include $(AUTOCFG)
|
---|
| 300 | endif
|
---|
| 301 |
|
---|
| 302 | LOCALCFG := $(wildcard $(PATH_ROOT)/LocalConfig.kmk)
|
---|
| 303 | ifeq ($(LOCALCFG),)
|
---|
| 304 | # deprecated name. to be removed.
|
---|
| 305 | LOCALCFG := $(wildcard $(PATH_ROOT)/Config.kmklocal)
|
---|
| 306 | ifneq ($(LOCALCFG),)
|
---|
| 307 | $(warning Please rename your Config.kmklocal to LocalConfig.kmk.)
|
---|
| 308 | endif
|
---|
| 309 | endif
|
---|
| 310 | ifneq ($(LOCALCFG),)
|
---|
| 311 | include $(LOCALCFG)
|
---|
| 312 | endif
|
---|
| 313 |
|
---|
| 314 |
|
---|
| 315 | #
|
---|
| 316 | # Disable components that are not open sourced.
|
---|
| 317 | #
|
---|
| 318 | ifdef VBOX_OSE
|
---|
| 319 | VBOX_WITH_VRDP=
|
---|
| 320 | VBOX_WITH_USB=
|
---|
| 321 | VBOX_WITH_ISCSI=
|
---|
| 322 | VBOX_WITH_DEBUGGER_GUI=
|
---|
| 323 | VBOX_WITH_WIN32_ADDITIONS_SHAREDFOLDERS=
|
---|
| 324 | VBOX_WITH_SECURELABEL=
|
---|
| 325 | VBOX_WITH_INSTALLER=
|
---|
[228] | 326 | VBOX_WITH_KCHMVIEWER=
|
---|
[1] | 327 | VBOX_WITH_DOCS=
|
---|
| 328 | VBOX_WITH_TESTSUITE=
|
---|
| 329 | PASSES := $(filter-out PACKING,$(PASSES))
|
---|
| 330 | endif
|
---|
| 331 |
|
---|
[1546] | 332 | #
|
---|
| 333 | # Undefined VBOX_WITH_MAIN implies exclusion of a few more items.
|
---|
| 334 | #
|
---|
| 335 | ifndef VBOX_WITH_MAIN
|
---|
| 336 | VBOX_WITH_VRDP=
|
---|
| 337 | VBOX_WITH_VBOXSDL=
|
---|
| 338 | VBOX_WITH_QTGUI=
|
---|
| 339 | VBOX_WITH_DEBUGGER_GUI=
|
---|
| 340 | endif
|
---|
[343] | 341 |
|
---|
[3100] | 342 | #
|
---|
| 343 | # Mark OSE builds clearly, helps figuring out limitations more easily.
|
---|
| 344 | #
|
---|
| 345 | ifdef VBOX_OSE
|
---|
| 346 | VBOX_VERSION_STRING = $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)_OSE
|
---|
| 347 | endif
|
---|
[1546] | 348 |
|
---|
[3100] | 349 |
|
---|
[343] | 350 | #
|
---|
[1] | 351 | # Image and object format config.
|
---|
| 352 | #
|
---|
[534] | 353 | ifeq ($(filter-out linux l4 freebsd netbsd openbsd solaris,$(BUILD_TARGET)),)
|
---|
[1] | 354 | VBOX_LDR_FMT = elf
|
---|
| 355 | endif
|
---|
| 356 | ifeq ($(BUILD_TARGET),darwin)
|
---|
| 357 | VBOX_LDR_FMT = macho
|
---|
| 358 | endif
|
---|
| 359 | ifeq ($(BUILD_TARGET),os2)
|
---|
| 360 | VBOX_LDR_FMT = lx
|
---|
| 361 | VBOX_LDR_FMT32 = lx
|
---|
| 362 | VBOX_LDR_FMT64 = elf
|
---|
| 363 | DONT_USE_YASM = 1 # yasm doesn't implement omf yet.
|
---|
| 364 | endif
|
---|
| 365 | ifeq ($(BUILD_TARGET),win)
|
---|
| 366 | VBOX_LDR_FMT = pe
|
---|
| 367 | endif
|
---|
| 368 | VBOX_LDR_FMT32 ?= $(VBOX_LDR_FMT)
|
---|
| 369 | VBOX_LDR_FMT64 ?= $(VBOX_LDR_FMT)
|
---|
| 370 |
|
---|
| 371 | #
|
---|
| 372 | # Assembler setup.
|
---|
| 373 | #
|
---|
| 374 | # This is a bit complicated since we have to support two different assmblers
|
---|
| 375 | # (yasm/nasm) and possibly two different formats (32-bit/64-bit).
|
---|
| 376 | #
|
---|
| 377 | ifeq ($(VBOX_LDR_FMT),elf)
|
---|
| 378 | ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
| 379 | VBOX_ASFLAGS_FMT = -f elf32 -DASM_FORMAT_ELF
|
---|
| 380 | else
|
---|
| 381 | VBOX_ASFLAGS_FMT = -f elf64 -DASM_FORMAT_ELF
|
---|
| 382 | endif
|
---|
| 383 | VBOX_ASFLAGS_DBFINFO = -g dwarf2
|
---|
| 384 | endif
|
---|
| 385 | ifeq ($(VBOX_LDR_FMT),lx)
|
---|
| 386 | VBOX_ASFLAGS_FMT = -f obj -DASM_FORMAT_OMF
|
---|
| 387 | VBOX_ASFLAGS_DBFINFO = -g stabs
|
---|
| 388 | endif
|
---|
| 389 | ifeq ($(VBOX_LDR_FMT),macho)
|
---|
| 390 | VBOX_ASFLAGS_FMT = -f macho -DASM_FORMAT_MACHO
|
---|
| 391 | VBOX_ASFLAGS_DBFINFO = -g dwarf2
|
---|
| 392 | endif
|
---|
| 393 | ifeq ($(VBOX_LDR_FMT),pe)
|
---|
| 394 | ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
| 395 | VBOX_ASFLAGS_FMT = -f win32 -DASM_FORMAT_PE
|
---|
| 396 | else
|
---|
| 397 | VBOX_ASFLAGS_FMT = -f win64 -DASM_FORMAT_PE
|
---|
| 398 | endif
|
---|
| 399 | endif
|
---|
| 400 | ifndef VBOX_ASFLAGS_FMT
|
---|
| 401 | $(error VBOX_ASFLAGS_FMT is not defined. VBOX_LDR_FMT=$(VBOX_LDR_FMT))
|
---|
| 402 | endif
|
---|
| 403 |
|
---|
| 404 | ifeq ($(VBOX_LDR_FMT32),elf)
|
---|
| 405 | VBOX_ASFLAGS_FMT32 = -f elf32 -DASM_FORMAT_ELF
|
---|
| 406 | VBOX_ASFLAGS_DBFINFO32 = -g dwarf2
|
---|
| 407 | endif
|
---|
| 408 | ifeq ($(VBOX_LDR_FMT32),lx)
|
---|
| 409 | VBOX_ASFLAGS_FMT32 = -f obj -DASM_FORMAT_OMF
|
---|
| 410 | VBOX_ASFLAGS_DBFINFO32 = -g stabs
|
---|
| 411 | endif
|
---|
| 412 | ifeq ($(VBOX_LDR_FMT32),macho)
|
---|
| 413 | VBOX_ASFLAGS_FMT32 = -f macho -DASM_FORMAT_MACHO
|
---|
| 414 | VBOX_ASFLAGS_DBFINFO32 = -g dwarf2
|
---|
| 415 | endif
|
---|
| 416 | ifeq ($(VBOX_LDR_FMT32),pe)
|
---|
| 417 | VBOX_ASFLAGS_FMT32 = -f win32 -DASM_FORMAT_PE
|
---|
| 418 | endif
|
---|
| 419 | ifndef VBOX_ASFLAGS_FMT32
|
---|
| 420 | $(error VBOX_ASFLAGS_FMT32 is not defined. VBOX_LDR_FMT32=$(VBOX_LDR_FMT32))
|
---|
| 421 | endif
|
---|
| 422 |
|
---|
| 423 | ifeq ($(VBOX_LDR_FMT64),elf)
|
---|
| 424 | VBOX_ASFLAGS_FMT64 = -f elf64 -DASM_FORMAT_ELF
|
---|
| 425 | VBOX_ASFLAGS_DBFINFO64 = -g dwarf2
|
---|
| 426 | endif
|
---|
| 427 | ifeq ($(VBOX_LDR_FMT64),macho)
|
---|
[1402] | 428 | VBOX_ASFLAGS_FMT64 = -f macho64 -DASM_FORMAT_MACHO
|
---|
[1] | 429 | VBOX_ASFLAGS_DBFINFO64 = -g dwarf2
|
---|
| 430 | endif
|
---|
| 431 | ifeq ($(VBOX_LDR_FMT64),pe)
|
---|
| 432 | VBOX_ASFLAGS_FMT64 = -f win64 -DASM_FORMAT_PE
|
---|
| 433 | endif
|
---|
| 434 | ifndef VBOX_ASFLAGS_FMT64
|
---|
| 435 | $(error VBOX_ASFLAGS_FMT64 is not defined. VBOX_LDR_FMT64=$(VBOX_LDR_FMT64))
|
---|
| 436 | endif
|
---|
| 437 |
|
---|
| 438 | ifndef DONT_USE_YASM
|
---|
| 439 | VBOX_ASTOOL = YASM
|
---|
| 440 | VBOX_LDR_FMT_2_YASM_DBGINFO.elf = -g dwarf2
|
---|
| 441 | VBOX_LDR_FMT_2_YASM_DBGINFO.lx = -g stabs
|
---|
[1402] | 442 | VBOX_LDR_FMT_2_YASM_DBGINFO.macho =
|
---|
[1] | 443 | VBOX_LDR_FMT_2_YASM_DBGINFO.pe =
|
---|
[1586] | 444 | VBOX_ASFLAGS = $(VBOX_ASFLAGS_FMT) -D__YASM__ -Worphan-labels $(VBOX_LDR_FMT_2_YASM_DBGINFO.$(VBOX_LDR_FMT))
|
---|
| 445 | VBOX_ASFLAGS32 = $(VBOX_ASFLAGS_FMT32) -D__YASM__ -Worphan-labels $(VBOX_LDR_FMT_2_YASM_DBGINFO.$(VBOX_LDR_FMT32))
|
---|
| 446 | VBOX_ASFLAGS64 = $(VBOX_ASFLAGS_FMT64) -D__YASM__ -Worphan-labels $(VBOX_LDR_FMT_2_YASM_DBGINFO.$(VBOX_LDR_FMT64))
|
---|
[1] | 447 | else
|
---|
| 448 | VBOX_ASTOOL = NASM
|
---|
[21] | 449 | VBOX_ASFLAGS = $(subst elf32,elf,$(VBOX_ASFLAGS_FMT)) -D__NASM__ -w+orphan-labels -g
|
---|
| 450 | VBOX_ASFLAGS32 = $(subst elf32,elf,$(VBOX_ASFLAGS_FMT32)) -D__NASM__ -w+orphan-labels -g
|
---|
[1] | 451 | VBOX_ASFLAGS64 = $(VBOX_ASFLAGS_FMT64) -D__NASM__ -w+orphan-labels -g
|
---|
| 452 | endif
|
---|
| 453 |
|
---|
| 454 | #
|
---|
| 455 | # Windows only has mingw handy. On *nix we have to deal with cross compiling
|
---|
| 456 | # 32-bit targets on 64-bit platforms, meaning we'll be using gcc32/g++32.
|
---|
| 457 | # In the latter case we'll also have to disable all the all the R0 driver related stuff.
|
---|
| 458 | #
|
---|
| 459 | ifndef VBOX_GCC_TOOL
|
---|
| 460 | ifeq ($(BUILD_TARGET),win)
|
---|
| 461 | VBOX_GCC_TOOL := MINGW32
|
---|
| 462 | TOOL_MINGW32_CFLAGS := $(UNDEFINED) # override -g
|
---|
| 463 | else ifeq ($(BUILD_TARGET),os2)
|
---|
[2887] | 464 | VBOX_GCC_TOOL := GXX3OMF
|
---|
[1] | 465 | else ifeq ($(BUILD_TARGET),darwin)
|
---|
[2887] | 466 | VBOX_GCC_TOOL := GXX4MACHO
|
---|
[1] | 467 | else
|
---|
[2887] | 468 | VBOX_GCC_TOOL := GXX3
|
---|
[1] | 469 | ifeq ($(BUILD_TARGET),$(BUILD_PLATFORM))
|
---|
| 470 | ifneq ($(BUILD_TARGET_ARCH),$(BUILD_PLATFORM_ARCH))
|
---|
[2887] | 471 | VBOX_GCC_TOOL := GXX32
|
---|
[1] | 472 | VBOX_WITH_VBOXDRV=
|
---|
| 473 | VBOX_WITH_LINUX_ADDITIONS=
|
---|
| 474 | VBOX_WITH_WIN32_ADDITIONS=
|
---|
| 475 | endif
|
---|
| 476 | endif
|
---|
| 477 | endif
|
---|
| 478 | endif
|
---|
| 479 | ifndef VBOX_GCC32_TOOL
|
---|
| 480 | ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
| 481 | VBOX_GCC32_TOOL := $(VBOX_GCC_TOOL)
|
---|
| 482 | else ifeq ($(BUILD_TARGET),win)
|
---|
| 483 | VBOX_GCC32_TOOL := MINGW32
|
---|
| 484 | else
|
---|
[2887] | 485 | VBOX_GCC32_TOOL := GXX32
|
---|
[1] | 486 | endif
|
---|
| 487 | endif
|
---|
| 488 |
|
---|
| 489 | #
|
---|
| 490 | # Decide which Visual C++ compiler version we're using by default.
|
---|
| 491 | #
|
---|
| 492 | ifndef VBOX_VCC_TOOL
|
---|
[655] | 493 | ifeq ($(BUILD_TARGET).$(BUILD_TARGET_ARCH),win.amd64)
|
---|
| 494 | VBOX_USE_VCC80 ?= 1 # Enforce VCC80 when targetting AMD64.
|
---|
| 495 | endif
|
---|
[1] | 496 | ifdef VBOX_USE_VCC80
|
---|
| 497 | ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
| 498 | VBOX_VCC_TOOL := VCC80X86
|
---|
| 499 | else
|
---|
| 500 | VBOX_VCC_TOOL := VCC80AMD64
|
---|
| 501 | endif
|
---|
| 502 | else
|
---|
| 503 | VBOX_VCC_TOOL := VCC70
|
---|
| 504 | endif
|
---|
| 505 | endif
|
---|
| 506 |
|
---|
| 507 | #
|
---|
| 508 | # The kBuild tools and SDKs are using PATH_DEVTOOLS, PATH_DEVTOOLS_BLD
|
---|
| 509 | # and PATH_DEVTOOLS_TRG to find things if we give them specific locations.
|
---|
| 510 | #
|
---|
| 511 | PATH_DEVTOOLS ?= $(PATH_ROOT)/tools
|
---|
| 512 | PATH_DEVTOOLS := $(abspath $(PATH_DEVTOOLS))
|
---|
| 513 | PATH_DEVTOOLS_BLD ?= $(PATH_DEVTOOLS)/$(BUILD_PLATFORM).$(BUILD_PLATFORM_ARCH)
|
---|
| 514 | PATH_DEVTOOLS_TRG ?= $(PATH_DEVTOOLS)/$(BUILD_TARGET).$(BUILD_TARGET_ARCH)
|
---|
| 515 |
|
---|
| 516 | ## @todo Remove the default tool crap here!
|
---|
| 517 | TOOL = $(VBOX_GCC_TOOL)
|
---|
| 518 | ifdef VBOX_USE_VCC80
|
---|
| 519 | TOOL.win.x86 = VCC80X86
|
---|
| 520 | TOOL.win.amd64 = VCC80AMD64
|
---|
| 521 | else
|
---|
| 522 | TOOL.win = VCC70
|
---|
| 523 | endif
|
---|
| 524 | ASTOOL = $(VBOX_ASTOOL)
|
---|
| 525 |
|
---|
| 526 | #
|
---|
| 527 | # L4.
|
---|
| 528 | #
|
---|
| 529 | ifdef L4_DIR
|
---|
| 530 | # default CPU type
|
---|
| 531 | ifeq ($(L4_CPU),)
|
---|
| 532 | L4_CPU = 586
|
---|
| 533 | endif
|
---|
| 534 | ifeq ($(L4_API),)
|
---|
| 535 | L4_API = l4v2
|
---|
| 536 | endif
|
---|
| 537 | L4_OBJ := $(L4_DIR)/build-x86-$(L4_CPU)-$(L4_API)
|
---|
| 538 | ifeq ($(BUILD_TARGET),l4)
|
---|
[1941] | 539 | L4LINUX26_INCDIR := \
|
---|
| 540 | $(L4LINUX26_DIR)/include \
|
---|
| 541 | $(L4LINUX26_DIR)/include/asm-l4/i386-arch
|
---|
| 542 | # support splitted Linux kernels (make O=<build directory>)
|
---|
[2536] | 543 | kernelsrc := $(shell $(SED_EXT) -ne 's+^KERNELSRC.*= *\(.*\)+\1+p' $(L4LINUX26_DIR)/Makefile)
|
---|
[1941] | 544 | ifneq ($(kernelsrc),)
|
---|
| 545 | kernelpath := $(realpath $(kernelsrc))
|
---|
| 546 | L4LINUX26_INCDIR += \
|
---|
| 547 | $(L4LINUX26_DIR)/include2 \
|
---|
| 548 | $(kernelpath)/include
|
---|
| 549 | endif
|
---|
[1] | 550 | L4_INCDIR := \
|
---|
| 551 | $(L4_OBJ)/include/uclibc++ \
|
---|
| 552 | $(L4_OBJ)/include/x86/uclibc \
|
---|
| 553 | $(L4_OBJ)/include/uclibc \
|
---|
[1941] | 554 | $(L4LINUX26_INCDIR) \
|
---|
[1] | 555 | $(L4_OBJ)/include/x86/$(L4_API) \
|
---|
| 556 | $(L4_OBJ)/include/x86 \
|
---|
| 557 | $(L4_OBJ)/include \
|
---|
| 558 | $(L4_DIR)/tool/dice/include
|
---|
| 559 | L4_LIBDIR := \
|
---|
| 560 | $(L4_DIR)/build-x86-$(L4_CPU)-$(L4_API)/lib/x86_$(L4_CPU)/$(L4_API)
|
---|
| 561 | endif # BUILD_TARGET == l4
|
---|
| 562 | endif # L4_DIR
|
---|
| 563 |
|
---|
| 564 | # Produce debugging information that the Fiasco kernel debugger can read.
|
---|
| 565 | ifeq ($(BUILD_TARGET).$(BUILD_TYPE),l4.debug)
|
---|
| 566 | DEBUG_L4 = -gstabs+
|
---|
| 567 | endif
|
---|
| 568 |
|
---|
| 569 | #
|
---|
| 570 | # Setup the global defines and includes.
|
---|
| 571 | #
|
---|
| 572 | ## @todo PATH_CURRENT has to go, fix the places where we rely on it.
|
---|
[2482] | 573 | INCS += $(PATH_ROOT)/include $(PATH_OUT)
|
---|
[1] | 574 | DEFS += VBOX
|
---|
| 575 | DEFS.debug := DEBUG DEBUG_$(subst $(subst _, ,_),_,$(USERNAME)) DEBUG_USERNAME=$(subst $(subst _, ,_),_,$(USERNAME))
|
---|
| 576 | DEFS.profile = VBOX_WITH_STATISTICS
|
---|
[534] | 577 | DEFS.x86 = __X86__
|
---|
| 578 | DEFS.amd64 = __AMD64__
|
---|
| 579 | DEFS.darwin = __DARWIN__
|
---|
[1283] | 580 | DEFS.darwin.x86 = VBOX_WITH_HYBIRD_32BIT_KERNEL
|
---|
[534] | 581 | DEFS.freebsd = __FREEBSD__
|
---|
[1941] | 582 | DEFS.l4 = __L4__ __L4ENV__ L4API_l4v2 ARCH_x86 __NO_CTYPE _FILE_OFFSET_BITS=64
|
---|
[1] | 583 | ifeq ($(L4_API),l4v2onv4)
|
---|
[534] | 584 | DEFS.l4 += L4API_l4v2onv4 STATIC_L4_INLINE
|
---|
[1] | 585 | endif
|
---|
[534] | 586 | DEFS.linux = __LINUX__ _FILE_OFFSET_BITS=64
|
---|
| 587 | DEFS.netbsd = __NETBSD__
|
---|
| 588 | DEFS.openbsd = __OPENBSD__
|
---|
| 589 | DEFS.os2 = __OS2__
|
---|
| 590 | DEFS.solaris = __SOLARIS__
|
---|
| 591 | DEFS.win = __WIN__
|
---|
[1] | 592 | DEFS.win.x86 = __WIN32__
|
---|
| 593 | DEFS.win.amd64 = __WIN64__
|
---|
| 594 | # optional defines (use environment or make commandline)
|
---|
| 595 | ifdef VBOX_WITH_DEBUGGER
|
---|
| 596 | DEFS += VBOX_WITH_DEBUGGER
|
---|
| 597 | endif
|
---|
| 598 | ifdef VBOX_WITH_DEBUGGER_GUI
|
---|
| 599 | DEFS += VBOX_WITH_DEBUGGER_GUI
|
---|
| 600 | endif
|
---|
| 601 | ifdef VBOX_WITH_STATISTICS
|
---|
| 602 | DEFS += VBOX_WITH_STATISTICS
|
---|
| 603 | endif
|
---|
| 604 | ifdef VBOX_STRICT
|
---|
| 605 | DEFS += VBOX_STRICT
|
---|
| 606 | endif
|
---|
| 607 | ifdef VBOX_WITHOUT_IDT_PATCHING
|
---|
| 608 | DEFS += VBOX_WITHOUT_IDT_PATCHING
|
---|
| 609 | endif
|
---|
| 610 | ifdef LOG_ENABLED
|
---|
| 611 | DEFS += LOG_ENABLED
|
---|
| 612 | endif
|
---|
| 613 | ifdef VBOX_OSE
|
---|
| 614 | DEFS += VBOX_OSE
|
---|
| 615 | endif
|
---|
| 616 |
|
---|
| 617 | #
|
---|
| 618 | # Compiler optimization flags.
|
---|
| 619 | #
|
---|
| 620 | ifeq ($(BUILD_TYPE),debug)
|
---|
| 621 | VBOX_GCC_FP ?= -fno-omit-frame-pointer
|
---|
| 622 | VBOX_GCC_OPT ?= -O0
|
---|
| 623 | VBOX_VCC_FP ?= -Oy-
|
---|
| 624 | VBOX_VCC_OPT ?=
|
---|
| 625 | VBOX_GCC_GC_FP ?= -fno-omit-frame-pointer
|
---|
| 626 | VBOX_GCC_GC_OPT ?= -O0
|
---|
| 627 | VBOX_VCC_GC_FP ?= -Oy-
|
---|
| 628 | VBOX_VCC_GC_OPT ?=
|
---|
| 629 | else
|
---|
| 630 | # We should use -fomit-frame-pointer for GCC / -Oy for VCC.
|
---|
| 631 | # -funwind-tables provides support for backtraces in gdb then.
|
---|
| 632 | VBOX_GCC_FP ?= -fno-omit-frame-pointer
|
---|
[2680] | 633 | VBOX_GCC_OPT ?= -O2 $(VBOX_GCC_mtune-generic)
|
---|
[1] | 634 | VBOX_VCC_FP ?= -Oy-
|
---|
| 635 | ifdef VBOX_USE_VCC80
|
---|
| 636 | VBOX_VCC_OPT ?= -O2 -GS-
|
---|
| 637 | else
|
---|
| 638 | VBOX_VCC_OPT ?= -Ogitb2
|
---|
| 639 | endif
|
---|
| 640 | VBOX_GCC_GC_FP ?= -fno-omit-frame-pointer
|
---|
[2680] | 641 | VBOX_GCC_GC_OPT ?= -O2 $(VBOX_GCC_mtune-generic)
|
---|
[1] | 642 | VBOX_VCC_GC_FP ?= -Oy-
|
---|
| 643 | ifdef VBOX_USE_VCC80
|
---|
| 644 | VBOX_VCC_GC_OPT ?= -O2
|
---|
| 645 | else
|
---|
| 646 | VBOX_VCC_GC_OPT ?= -Ogitb2
|
---|
| 647 | endif
|
---|
| 648 | endif
|
---|
| 649 |
|
---|
| 650 | #
|
---|
| 651 | # ARCH_BITS_DEFS.
|
---|
| 652 | #
|
---|
| 653 | ifeq ($(BUILD_TARGET_ARCH),amd64)
|
---|
| 654 | ARCH_BITS_DEFS := HC_ARCH_BITS=64 GC_ARCH_BITS=32
|
---|
[142] | 655 | else ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
| 656 | ARCH_BITS_DEFS := HC_ARCH_BITS=32 GC_ARCH_BITS=32
|
---|
[1] | 657 | else
|
---|
[142] | 658 | error BUILD_TARGET_ARCH=$(BUILD_TARGET_ARCH)
|
---|
[1] | 659 | endif
|
---|
| 660 |
|
---|
| 661 | #
|
---|
| 662 | # Add the output dir(s) to the dynamic loader search path.
|
---|
| 663 | #
|
---|
[534] | 664 | ifeq ($(filter-out linux l4 freebsd netbsd openbsd solaris,$(BUILD_TARGET)),)
|
---|
[1] | 665 | export LD_LIBRARY_PATH:=$(PATH_BIN):$(PATH_LIB):$(LD_LIBRARY_PATH)
|
---|
| 666 | endif
|
---|
| 667 | ifeq ($(BUILD_TARGET),os2)
|
---|
| 668 | #fixme! export BEGINLIBPATH:=$(PATH_BIN);$(PATH_LIB);$(BEGINLIBPATH)
|
---|
| 669 | endif
|
---|
[534] | 670 | ifeq ($(BUILD_TARGET),win)
|
---|
| 671 | export PATH:=$(PATH_BIN);$(PATH_LIB);$(PATH)
|
---|
| 672 | endif
|
---|
[1] | 673 |
|
---|
| 674 | #
|
---|
| 675 | # Common libraries and tools.
|
---|
| 676 | #
|
---|
| 677 | ifeq ($(BUILD_TARGET),darwin)
|
---|
| 678 | LIB_RUNTIME = $(PATH_BIN)/VBoxRT.dylib
|
---|
| 679 | LIB_RUNTIME_EF = #$(PATH_LIB)/RuntimeEFCPP.a
|
---|
| 680 | LIB_KPROFILE = $(PATH_BIN)/kPrf2.dylib
|
---|
| 681 | LIB_VMM = $(PATH_BIN)/VBoxVMM.dylib
|
---|
| 682 | LIB_VMMGC = $(PATH_BIN)/VMMGC.gc
|
---|
[960] | 683 | LIB_REM = $(PATH_LIB)/VBoxREMImp.dylib
|
---|
[3150] | 684 | LIB_XPCOM = $(PATH_BIN)/VBoxXPCOM.dylib
|
---|
[1] | 685 | endif
|
---|
| 686 | ifeq ($(BUILD_TARGET),l4)
|
---|
| 687 | LIB_RUNTIME = $(PATH_BIN)/VBoxRT.s.so
|
---|
| 688 | LIB_RUNTIME_EF = #$(PATH_LIB)/RuntimeEFCPP.a
|
---|
| 689 | LIB_KPROFILE = $(PATH_BIN)/kPrf2.s.so
|
---|
| 690 | LIB_VMM = $(PATH_BIN)/VBoxVMM.s.so
|
---|
| 691 | LIB_VMMGC = $(PATH_BIN)/VMMGC.gc
|
---|
| 692 | LIB_REM = $(PATH_BIN)/VBoxREMImp.s.so
|
---|
[3150] | 693 | LIB_XPCOM = $(PATH_BIN)/VBoxXPCOM.s.so
|
---|
[1] | 694 | endif
|
---|
[534] | 695 | ifeq ($(filter-out linux freebsd netbsd openbsd solaris,$(BUILD_TARGET)),)
|
---|
[1] | 696 | LIB_RUNTIME = $(PATH_BIN)/VBoxRT.so
|
---|
| 697 | LIB_RUNTIME_EF = $(PATH_LIB)/RuntimeEFCPP.a
|
---|
| 698 | LIB_KPROFILE = $(PATH_BIN)/kPrf2.so
|
---|
| 699 | LIB_VMM = $(PATH_BIN)/VBoxVMM.so
|
---|
| 700 | LIB_VMMGC = $(PATH_BIN)/VMMGC.gc
|
---|
| 701 | LIB_REM = $(PATH_BIN)/VBoxREMImp.so
|
---|
[3150] | 702 | LIB_XPCOM = $(PATH_BIN)/VBoxXPCOM.so
|
---|
[1] | 703 | endif
|
---|
| 704 | ifeq ($(BUILD_TARGET),os2)
|
---|
| 705 | LIB_RUNTIME = $(PATH_BIN)/VBoxRT.dll
|
---|
| 706 | LIB_RUNTIME_EF = #$(PATH_LIB)/RuntimeEFCPP.a
|
---|
| 707 | LIB_KPROFILE = $(PATH_BIN)/kPrf2.dll
|
---|
| 708 | LIB_VMM = $(PATH_BIN)/VBoxVMM.dll
|
---|
| 709 | LIB_VMMGC = $(PATH_LIB)/VMMGCImp.lib
|
---|
| 710 | LIB_REM = $(PATH_LIB)/VBoxREMImp.lib
|
---|
[3150] | 711 | LIB_XPCOM = $(PATH_BIN)/VBoxXCOM.dll
|
---|
[1] | 712 | OBJ_SYS0 = $(PATH_OBJ)/src/VBox/Runtime/RuntimeR0/os2/sys0.obj
|
---|
| 713 | endif
|
---|
| 714 | ifeq ($(BUILD_TARGET),win)
|
---|
| 715 | LIB_RUNTIME = $(PATH_LIB)/VBoxRT.lib
|
---|
| 716 | LIB_RUNTIME_EF = #$(PATH_LIB)/RuntimeEFCPP.lib
|
---|
| 717 | LIB_KPROFILE = $(PATH_LIB)/kPrf2.lib
|
---|
| 718 | LIB_VMM = $(PATH_LIB)/VBoxVMM.lib
|
---|
| 719 | LIB_VMMGC = $(PATH_OUT)/obj/src/VBox/VMM/VMMGC/VMMGC.lib
|
---|
| 720 | LIB_REM = $(PATH_LIB)/VBoxREMImp.lib
|
---|
[3150] | 721 | LIB_XPCOM = $(PATH_BIN)/VBoxXPCOM.dll
|
---|
[1] | 722 | endif
|
---|
| 723 |
|
---|
| 724 | # The kprofile build automagically links with kProfile.
|
---|
| 725 | ifeq ($(BUILD_TYPE),kprofile)
|
---|
| 726 | LIB_RUNTIME += $(LIB_KPROFILE)
|
---|
| 727 | endif
|
---|
| 728 |
|
---|
| 729 | # Overridable libraries (unix).
|
---|
| 730 | LIB_PTHREAD ?= pthread
|
---|
| 731 | LIB_XCURSOR ?= Xcursor
|
---|
| 732 |
|
---|
| 733 | ## Enable C++ electric fence heap.
|
---|
| 734 | #LIB_RUNTIME += $(LIB_RUNTIME_EF) $(LIB_RUNTIME)
|
---|
| 735 |
|
---|
| 736 | # Intel ASL compiler for ACPI
|
---|
[581] | 737 | VBOX_IASLCMD ?= $(firstword $(wildcard $(PATH_DEVTOOLS_BLD)/bin/iasl$(HOSTSUFF_EXE)) iasl$(HOSTSUFF_EXE))
|
---|
[1] | 738 |
|
---|
| 739 | # Bruce's C compile is a C-compiler for BIOS-related 8086 code
|
---|
| 740 | VBOX_BCC ?= $(PATH_DEVTOOLS_BLD)/bin/bcc$(HOSTSUFF_EXE) -B $(PATH_DEVTOOLS_BLD)/bin/
|
---|
| 741 |
|
---|
| 742 | # Assembler for BIOS-related 8086 code
|
---|
| 743 | VBOX_AS86 ?= $(PATH_DEVTOOLS_BLD)/bin/as86$(HOSTSUFF_EXE)
|
---|
| 744 |
|
---|
| 745 | # libxslt XSLT processor. (see PATH_TOOL_YASM for explanation why it's temporarily located in bin.)
|
---|
| 746 | ifeq ($(BUILD_PLATFORM),win)
|
---|
| 747 | # VBOX_XSLTPROC ?= $(PATH_DEVTOOLS)/win.x86/libxslt/10114/xsltproc.exe
|
---|
| 748 | VBOX_XSLTPROC ?= $(PATH_DEVTOOLS)/win.x86/bin/xsltproc.exe
|
---|
| 749 | else
|
---|
[3150] | 750 | ifeq ($(BUILD_PLATFORM),os2)
|
---|
| 751 | VBOX_XSLTPROC ?= $(PATH_DEVTOOLS)/os2.x86/bin/xsltproc.exe
|
---|
| 752 | else
|
---|
[1] | 753 | VBOX_XSLTPROC ?= xsltproc$(HOSTSUFF_EXE)
|
---|
| 754 | endif
|
---|
[3150] | 755 | endif
|
---|
[1] | 756 |
|
---|
| 757 | # bin2c (convert binary files into C arrays)
|
---|
| 758 | VBOX_BIN2C ?= $(PATH_OBJ)/src/bldprogs/bin2c/bin2c$(HOSTSUFF_EXE)
|
---|
| 759 |
|
---|
| 760 | # mkisofs
|
---|
| 761 | ifeq ($(BUILD_PLATFORM),win)
|
---|
| 762 | VBOX_MKISOFS ?= $(PATH_DEVTOOLS_BLD)/bin/mkisofs.exe
|
---|
| 763 | else
|
---|
| 764 | VBOX_MKISOFS ?= mkisofs
|
---|
| 765 | endif
|
---|
| 766 |
|
---|
| 767 | # Makeself for the linux installers.
|
---|
| 768 | VBOX_MAKESELF ?= $(PATH_DEVTOOLS)/common/makeself/v2.1.4_1/makeself.sh
|
---|
| 769 |
|
---|
| 770 | # Microsoft HTML Help Workshop.
|
---|
| 771 | VBOX_PATH_HTML_HELP_WORKSHOP ?= $(PATH_DEVTOOLS)/win.x86/HTML_Help_Workshop/v1.3/
|
---|
| 772 |
|
---|
| 773 | # Path to the null soft installer.
|
---|
| 774 | VBOX_PATH_NSIS ?= $(PATH_DEVTOOLS)/win.x86/nsis/v2.22
|
---|
| 775 |
|
---|
| 776 | # Windows install tools...
|
---|
| 777 | VBOX_PATH_WIX ?= $(PATH_DEVTOOLS)/win.x86/wix/v2.0.4611.0
|
---|
| 778 | VBOX_PATH_DIFX ?= $(PATH_DEVTOOLS)/win.x86/DIFx/v2.1
|
---|
| 779 |
|
---|
| 780 | # We need to export YASM for OSE, but since it was converted to .zip we need to
|
---|
| 781 | # allow for the location used by the zip to be properly cleaned up first.
|
---|
| 782 | ifeq ($(filter-out win.x86 linux.x86, $(BUILD_PLATFORM).$(BUILD_PLATFORM_ARCH)),)
|
---|
| 783 | PATH_TOOL_YASM ?= $(PATH_DEVTOOLS_BLD)/bin
|
---|
| 784 | endif
|
---|
| 785 |
|
---|
[3150] | 786 | # glib and libIDL needed by XPCOM on OS/2.
|
---|
| 787 | ifeq ($(BUILD_TARGET),os2)
|
---|
| 788 | VBOX_PATH_GLIB ?= $(PATH_DEVTOOLS_TRG)/glibidl
|
---|
| 789 | VBOX_PATH_GLIB := $(wildcard $(VBOX_PATH_GLIB))
|
---|
| 790 | VBOX_PATH_LIBIDL ?= $(PATH_DEVTOOLS_TRG)/glibidl
|
---|
| 791 | VBOX_PATH_LIBIDL := $(wildcard $(VBOX_PATH_LIBIDL))
|
---|
| 792 | ifeq ($(VBOX_PATH_GLIB),)
|
---|
| 793 | $(warning VBOX_PATH_GLIB is wrong or not defined!)
|
---|
| 794 | endif
|
---|
| 795 | ifeq ($(VBOX_PATH_LIBIDL),)
|
---|
| 796 | $(warning VBOX_PATH_LIBIDL is wrong or not defined!)
|
---|
| 797 | endif
|
---|
| 798 | endif
|
---|
| 799 |
|
---|
[1] | 800 | # XPCOM setup for all but win32.
|
---|
| 801 | ifneq ($(BUILD_TARGET),win)
|
---|
[600] | 802 | VBOX_WITH_XPCOM = 1
|
---|
[1] | 803 | VBOX_XPIDL ?= $(PATH_OBJ)/src/libs/xpcom18a4/xpidl/xpidl$(HOSTSUFF_EXE)
|
---|
[960] | 804 | VBOX_PATH_XPCOM_IDL ?= $(VBOX_PATH_SDK)/idl
|
---|
[1] | 805 | VBOX_XPCOM_INCS ?= \
|
---|
[960] | 806 | $(VBOX_PATH_SDK)/include \
|
---|
| 807 | $(VBOX_PATH_SDK)/include/xpcom \
|
---|
| 808 | $(VBOX_PATH_SDK)/include/xpcom/nsprpub \
|
---|
| 809 | $(VBOX_PATH_SDK)/include/xpcom/string \
|
---|
| 810 | $(VBOX_PATH_SDK)/include/xpcom/xpcom \
|
---|
| 811 | $(VBOX_PATH_SDK)/include/xpcom/ipcd
|
---|
[3150] | 812 | ifneq ($(BUILD_TARGET),os2)
|
---|
| 813 | # libIDL-config (for xpcom18a4)
|
---|
| 814 | ifeq ($(origin VBOX_LIBIDL_CONFIG),undefined)
|
---|
| 815 | export VBOX_LIBIDL_CONFIG := $(firstword $(shell which libIDL-config-2 libIDL-config 2> /dev/null))
|
---|
| 816 | endif
|
---|
[950] | 817 | endif
|
---|
[1] | 818 | endif
|
---|
| 819 |
|
---|
[796] | 820 | # The X11 LIBPATH. (The amd64 hack is for RHEL4.)
|
---|
[797] | 821 | ifeq ($(BUILD_TARGET_ARCH),amd64)
|
---|
| 822 | VBOX_LIBPATH_X11 ?= /usr/X11R6/lib64 /usr/X11R6/lib
|
---|
[796] | 823 | else
|
---|
| 824 | VBOX_LIBPATH_X11 ?= /usr/X11R6/lib
|
---|
| 825 | endif
|
---|
| 826 |
|
---|
[2317] | 827 | # 32bit X11 LIBPATH for building 32bit guest additions
|
---|
| 828 | VBOX_LIBPATH32_X11 ?= /usr/X11R6/lib32 /usr/X11R6/lib
|
---|
| 829 |
|
---|
[1394] | 830 | #
|
---|
| 831 | # Mac OS X SDK paths.
|
---|
| 832 | #
|
---|
| 833 | VBOX_PATH_MACOSX_SDK ?= /Developer/SDKs/MacOSX10.4u.sdk
|
---|
| 834 | VBOX_PATH_MACOSX_SDK_INCS ?= $(VBOX_PATH_MACOSX_SDK)/Developer/Headers
|
---|
[796] | 835 |
|
---|
[1394] | 836 |
|
---|
[1] | 837 | #
|
---|
| 838 | # GCC stuff properties.
|
---|
[2473] | 839 | # Most of this is resolved on first kmk invocation and cached in PATH_OUT.
|
---|
[1] | 840 | #
|
---|
[2473] | 841 | # Note! That a harmless warning is printed if the file doesn't exist.
|
---|
| 842 | # Note! Changes in GCC are not detected automatically (yet).
|
---|
[1] | 843 | #
|
---|
| 844 | include $(PATH_KBUILD)/tools/$(VBOX_GCC_TOOL).kmk
|
---|
[2473] | 845 | ifneq ($(VBOX_GCC_TOOL),$(VBOX_GCC32_TOOL))
|
---|
| 846 | include $(PATH_KBUILD)/tools/$(VBOX_GCC32_TOOL).kmk
|
---|
[1] | 847 | endif
|
---|
| 848 |
|
---|
| 849 | VBOX_GCC_CHECK_CC = $(shell \
|
---|
| 850 | if $(TOOL_$(VBOX_GCC_TOOL)_CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
|
---|
| 851 | then echo "$(1)"; \
|
---|
| 852 | else echo "$(2)"; fi; )
|
---|
[2473] | 853 |
|
---|
[1] | 854 | VBOX_GCC_CHECK_CXX = $(shell \
|
---|
| 855 | if $(TOOL_$(VBOX_GCC_TOOL)_CXX) $(1) -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1; \
|
---|
| 856 | then echo "$(1)"; \
|
---|
| 857 | else echo "$(2)"; fi; )
|
---|
| 858 |
|
---|
| 859 | VBOX_GCC32_CHECK_CXX = $(shell \
|
---|
| 860 | if $(TOOL_$(VBOX_GCC32_TOOL)_CXX) $(1) -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1; \
|
---|
| 861 | then echo "$(1)"; \
|
---|
| 862 | else echo "$(2)"; fi; )
|
---|
| 863 |
|
---|
[2523] | 864 | # This is kind of bad, the returned string needs to be re-evaluated before use.
|
---|
[2681] | 865 | # The reason for this hack is that the windows kmk_ash cannot deal with $((1+1)).
|
---|
[2497] | 866 | VBOX_GCC_VERSION = $(shell \
|
---|
[2536] | 867 | $(1) -dumpversion | $(SED_EXT) 's|\([0-9]\)\.\([0-9]\)\.\([0-9]\)|$$(int-add $$(int-mul 10000, \1), $$(int-mul 100, \2), \3)|' )
|
---|
[2497] | 868 |
|
---|
[2473] | 869 | # No $(QUIET) here as it's interesting to see what goes into the file.
|
---|
| 870 | $(PATH_OUT)/GCCConfig.kmk: $(PATH_ROOT)/Config.kmk $(LOCALCFG) $(AUTOCFG)
|
---|
| 871 | $(call MSG_GENERATE,,$@,)
|
---|
| 872 | $(QUIET)$(RM) -f "$@"
|
---|
[2474] | 873 | $(QUIET)$(MKDIR) -p $(@D)
|
---|
[2473] | 874 |
|
---|
| 875 | @# HC compiler switch detction.
|
---|
[2497] | 876 | $(APPEND) "$@" "VBOX_GCC_VERSION_CC ?= $(call VBOX_GCC_VERSION,$(TOOL_$(VBOX_GCC_TOOL)_CC))"
|
---|
| 877 | $(APPEND) "$@" "VBOX_GCC_VERSION_CXX ?= $(call VBOX_GCC_VERSION,$(TOOL_$(VBOX_GCC_TOOL)_CXX))"
|
---|
[2473] | 878 | $(APPEND) "$@" "VBOX_GCC_LIBGCC ?= $(shell $(TOOL_$(VBOX_GCC_TOOL)_CC) -print-libgcc-file-name)"
|
---|
| 879 | $(APPEND) "$@" "VBOX_GCC_Wno-pointer-sign ?= $(call VBOX_GCC_CHECK_CC,-Wno-pointer-sign,)"
|
---|
| 880 | $(APPEND) "$@" "VBOX_GCC_Wno-variadic-macros ?= $(call VBOX_GCC_CHECK_CXX,-Wno-variadic-macros,)"
|
---|
| 881 | $(APPEND) "$@" "VBOX_GCC_Wno-invalid-offsetof ?= $(call VBOX_GCC_CHECK_CXX,-Wno-invalid-offsetof,)"
|
---|
| 882 | $(APPEND) "$@" "VBOX_GCC_Wno-extra ?= $(call VBOX_GCC_CHECK_CXX,-Wno-extra)"
|
---|
| 883 | $(APPEND) "$@" "VBOX_GCC_fno-stack-protector ?= $(call VBOX_GCC_CHECK_CC,-fno-stack-protector,)"
|
---|
[2680] | 884 | @# Produce code optimized for the most common IA32/AMD64/EM64T processors. Introduced with gcc version 4.2.
|
---|
| 885 | $(APPEND) "$@" "VBOX_GCC_mtune-generic ?= $(call VBOX_GCC_CHECK_CC,-mtune=generic,)"
|
---|
[2526] | 886 | ifneq ($(BUILD_TARGET),l4)
|
---|
[2473] | 887 | @# Set default attribute for ELF and MACH-O symbols to ``hidden'' to reduce the number
|
---|
[2497] | 888 | @# of relocation entries and PLT indirections in shared libraries. Don't allow for gcc version < 4.
|
---|
[2702] | 889 | $(APPEND) "$@" "ifneq ($$(VBOX_GCC_VERSION_CC),)"
|
---|
| 890 | $(APPEND) "$@" " ifneq ($$(int-ge $$(VBOX_GCC_VERSION_CC),40000),)"
|
---|
| 891 | $(APPEND) "$@" " VBOX_GCC_fvisibility-hidden ?= $(call VBOX_GCC_CHECK_CC,-fvisibility=hidden -DVBOX_HAVE_VISIBILITY_HIDDEN,)"
|
---|
| 892 | $(APPEND) "$@" " endif"
|
---|
[2523] | 893 | $(APPEND) "$@" "endif"
|
---|
[2526] | 894 | endif
|
---|
| 895 | ifneq ($(BUILD_TARGET),l4)
|
---|
[2473] | 896 | @# Set default attribute for inline functions to ``hidden'' to reduce the number
|
---|
[2497] | 897 | @# of relocation entries and PLT indirections in shared libraries. Don't allow for gcc version < 4.
|
---|
[2702] | 898 | $(APPEND) "$@" "ifneq ($$(VBOX_GCC_VERSION_CXX),)"
|
---|
| 899 | $(APPEND) "$@" " ifneq ($$(int-ge $$(VBOX_GCC_VERSION_CXX),40000),)"
|
---|
| 900 | $(APPEND) "$@" " VBOX_GCC_fvisibility-inlines-hidden ?= $(call VBOX_GCC_CHECK_CXX,-fvisibility-inlines-hidden,)"
|
---|
| 901 | $(APPEND) "$@" " endif"
|
---|
[2523] | 902 | $(APPEND) "$@" "endif"
|
---|
[2526] | 903 | endif
|
---|
[2473] | 904 | @# Find the compiler includes for IPRT no-crt.
|
---|
| 905 | $(APPEND) "$@" "VBOX_PATH_GCC_INCS ?= $(abspath $(dir $(shell LC_ALL=C $(TOOL_$(VBOX_GCC_TOOL)_CC) -print-libgcc-file-name)))/include"
|
---|
| 906 |
|
---|
| 907 | @# 32-bit (GC) compiler switch detection.
|
---|
[2510] | 908 | $(APPEND) "$@" "VBOX_GCC32_VERSION_CC ?= $(call VBOX_GCC_VERSION,$(TOOL_$(VBOX_GCC32_TOOL)_CC))"
|
---|
| 909 | $(APPEND) "$@" "VBOX_GCC32_VERSION_CXX ?= $(call VBOX_GCC_VERSION,$(TOOL_$(VBOX_GCC32_TOOL)_CXX))"
|
---|
[2473] | 910 | $(APPEND) "$@" "VBOX_GCC32_LIBGCC ?= $(shell $(TOOL_$(VBOX_GCC32_TOOL)_CC) -print-libgcc-file-name)"
|
---|
| 911 | $(APPEND) "$@" "VBOX_GCC32_Wno-variadic-macros ?= $(call VBOX_GCC32_CHECK_CXX,-Wno-variadic-macros,)"
|
---|
| 912 |
|
---|
| 913 | ifeq ($(BUILD_TARGET),l4)
|
---|
| 914 | @# L4
|
---|
[2536] | 915 | $(APPEND) "$@" "VBOX_PATH_L4_GCC3_INSTALL ?= $(shell LANG=C $(TOOL_$(VBOX_GCC_TOOL)_CC) -print-search-dirs|$(SED_EXT) -ne 's+^install: \(.*[^/][^/]*\)/\?+\1+p')"
|
---|
[1] | 916 | endif
|
---|
| 917 |
|
---|
[2473] | 918 | include $(PATH_OUT)/GCCConfig.kmk
|
---|
| 919 |
|
---|
[1] | 920 | ifeq ($(BUILD_TARGET),l4)
|
---|
| 921 | VBOX_L4_GCC3_INCS := $(VBOX_PATH_L4_GCC3_INSTALL)/include
|
---|
| 922 | # L4_GPP3_INCS := \
|
---|
| 923 | # $(VBOX_PATH_L4_GCC3_INSTALL)/include/g++-v3/ \
|
---|
| 924 | # $(VBOX_PATH_L4_GCC3_INSTALL)/include/g++-v3/i386-pc-linux-gnu/
|
---|
| 925 | endif
|
---|
| 926 |
|
---|
| 927 | #
|
---|
[1787] | 928 | # Coding Signing.
|
---|
| 929 | #
|
---|
| 930 | ifdef VBOX_SIGNING_MODE
|
---|
| 931 | ifeq ($(BUILD_PLATFORM),win)
|
---|
| 932 | # VBOX_PATH_SELFSIGN points to the Vista WDK bin/SelfSign directory.
|
---|
| 933 | ifndef VBOX_PATH_SELFSIGN
|
---|
| 934 | VBOX_PATH_SELFSIGN := $(lastword $(sort $(wildcard $(PATH_DEVTOOLS)/win.x86/selfsign/*)))
|
---|
| 935 | ifeq ($(VBOX_PATH_SELFSIGN),)
|
---|
| 936 | VBOX_PATH_SELFSIGN := $(PATH_DEVTOOLS)/win.x86/selfsign/r1
|
---|
| 937 | endif
|
---|
| 938 | endif
|
---|
[2681] | 939 | VBOX_SIGNTOOL ?= $(VBOX_PATH_SELFSIGN)/SignTool.exe
|
---|
| 940 | VBOX_INF2CAT ?= $(VBOX_PATH_SELFSIGN)/Inf2Cat.exe
|
---|
[1787] | 941 |
|
---|
| 942 | # There are two signing modes; 'self' and 'release'.
|
---|
[2647] | 943 | ifeq ($(strip $(VBOX_SIGNING_MODE)),self)
|
---|
[1787] | 944 | ## @todo
|
---|
[2632] | 945 | else ifeq ($(strip $(VBOX_SIGNING_MODE)),release)
|
---|
[1787] | 946 | VBOX_CROSS_CERTIFICATE_FILE ?= $(VBOX_PATH_SELFSIGN)/MSCV-GlobalSign.cer
|
---|
[2949] | 947 | VBOX_CROSS_CERTIFICATE_FILE_ARGS ?= /ac "$(VBOX_CROSS_CERTIFICATE_FILE)"
|
---|
[2681] | 948 | VBOX_CERTIFICATE_SUBJECT_NAME ?= InnoTek Systemberatung GmbH
|
---|
[2949] | 949 | VBOX_CERTIFICATE_SUBJECT_NAME_ARGS ?= /n "$(VBOX_CERTIFICATE_SUBJECT_NAME)"
|
---|
[1787] | 950 | VBOX_CERTIFICATE_STORE ?= my
|
---|
[2949] | 951 | VBOX_CERTIFICATE_STORE_ARGS ?= /s "$(VBOX_CERTIFICATE_STORE)"
|
---|
[1787] | 952 | VBOX_TSA_URL ?= http://timestamp.verisign.com/scripts/timestamp.dll
|
---|
[2949] | 953 | VBOX_TSA_URL_ARGS ?= /t "$(VBOX_TSA_URL)"
|
---|
[2951] | 954 | ## Commands for signing a driver image after link.
|
---|
[2977] | 955 | VBOX_SIGN_DRIVER_CMDS ?= $(if $(eq $(tool_do),LINK_LIBRARY),,$(call VBOX_SIGN_FILE_FN,$(out)))
|
---|
[2951] | 956 | ## Commands for signing an executable or a dll image after link.
|
---|
[2977] | 957 | VBOX_SIGN_IMAGE_CMDS ?= $(if $(eq $(tool_do),LINK_LIBRARY),,$(call VBOX_SIGN_FILE_FN,$(out)))
|
---|
[2950] | 958 | ## Sign a file.
|
---|
[2951] | 959 | # @param 1 The file to sign.
|
---|
[2977] | 960 | VBOX_SIGN_FILE_FN ?= $(VBOX_SIGNTOOL) sign \
|
---|
[2949] | 961 | $(VBOX_CROSS_CERTIFICATE_FILE_ARGS) \
|
---|
| 962 | $(VBOX_CERTIFICATE_STORE_ARGS) \
|
---|
| 963 | $(VBOX_CERTIFICATE_SUBJECT_NAME_ARGS) \
|
---|
| 964 | $(VBOX_TSA_URL_ARGS) \
|
---|
[2677] | 965 | $(1)
|
---|
[2681] | 966 | ## Create a security catalog file.
|
---|
| 967 | # @param 1 The directory containing the stuff to sign.
|
---|
| 968 | # @param 2 The expected .cat name. (Inf2Cat lowercases it)
|
---|
| 969 | # @param 3 The list of OSes, separated by ';'.
|
---|
[2977] | 970 | VBOX_MAKE_CAT_HLP_FN ?= \
|
---|
[2681] | 971 | $(RM) -f $(2)\
|
---|
| 972 | $(NL)$(TAB)$(VBOX_INF2CAT) /driver:$(strip $(1)) /os:$(strip $(subst ;,$(COMMA),$(3))) /verbose \
|
---|
[2693] | 973 | $(NL)$(TAB)$(MV) $(2) $(2) \
|
---|
[2951] | 974 | $(NL)$(TAB)$(call VBOX_SIGN_FILE_FN,$(2))
|
---|
[2977] | 975 | VBOX_MAKE_CAT64_FN ?= $(call VBOX_MAKE_CAT_HLP_FN,$(1),$(2),XP_X64;Server2003_X64;Vista_X64)
|
---|
| 976 | VBOX_MAKE_CAT32_FN ?= $(call VBOX_MAKE_CAT_HLP_FN,$(1),$(2),2000;XP_X86;Server2003_X86;Vista_X86)
|
---|
[2681] | 977 | ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
[2977] | 978 | VBOX_MAKE_CAT_FN ?= $(call VBOX_MAKE_CAT32_FN,$(1),$(2))
|
---|
[2681] | 979 | else
|
---|
[2977] | 980 | VBOX_MAKE_CAT_FN ?= $(call VBOX_MAKE_CAT64_FN,$(1),$(2))
|
---|
[2681] | 981 | endif
|
---|
[2712] | 982 |
|
---|
| 983 | # Enable signing of the additions.
|
---|
[2977] | 984 | VBOX_SIGN_ADDITIONS ?= 1
|
---|
[2712] | 985 |
|
---|
[1787] | 986 | else
|
---|
| 987 | $(error Unknown VBOX_SIGNING_MODE: $(VBOX_SIGNING_MODE))
|
---|
| 988 | endif
|
---|
| 989 | else
|
---|
| 990 | VBOX_SIGNING_MODE :=
|
---|
| 991 | endif
|
---|
| 992 | endif
|
---|
| 993 |
|
---|
| 994 | #
|
---|
[2688] | 995 | # Windows .inf editing.
|
---|
| 996 | #
|
---|
| 997 | ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
| 998 | VBOX_EDIT_INF_FN = $(call VBOX_EDIT_INF32_FN,$(1),$(2))
|
---|
| 999 | else
|
---|
| 1000 | VBOX_EDIT_INF_FN = $(call VBOX_EDIT_INF64_FN,$(1),$(2))
|
---|
| 1001 | endif
|
---|
| 1002 | ## Edit an inf file an x86 target.
|
---|
| 1003 | # @param 1 The inf file to edit.
|
---|
| 1004 | # @param 2 The output file.
|
---|
[2696] | 1005 | VBOX_EDIT_INF32_FN = $(SED) $(if $(VBOX_SIGNING_MODE),-e 's/^;cat *//', -e '/^;cat /d') -e 's/^;x86 *//' -e '/^;amd64 /d' $(1) > $(2)
|
---|
[2688] | 1006 | ## Edit an inf file an x86 target.
|
---|
| 1007 | # @param 1 The inf file to edit.
|
---|
| 1008 | # @param 2 The output file.
|
---|
| 1009 | VBOX_EDIT_INF64_FN = $(SED) $(if $(VBOX_SIGNING_MODE),-e 's/^;cat *//', -e '/^;cat /d') -e 's/^;amd64 *//' -e '/^;x86 /d' $(1) > $(2)
|
---|
| 1010 |
|
---|
| 1011 | #
|
---|
[1] | 1012 | # Default prefixes and suffixes.
|
---|
| 1013 | #
|
---|
| 1014 | VBOX_PREF_LIB =
|
---|
| 1015 | ifeq ($(filter-out win os2,$(BUILD_TARGET)),)
|
---|
| 1016 | VBOX_SUFF_LIB = .lib
|
---|
| 1017 | else
|
---|
| 1018 | VBOX_SUFF_LIB = .a
|
---|
| 1019 | endif
|
---|
[600] | 1020 | VBOX_SUFF_DLL = $(SUFF_DLL)
|
---|
[1] | 1021 | VBOXW32GUEST_SUFF_LIB = .lib
|
---|
| 1022 | VBOXLNX32GUEST_SUFF_LIB = .a
|
---|
| 1023 |
|
---|
| 1024 | #
|
---|
| 1025 | # SDKs for external libraries.
|
---|
| 1026 | #
|
---|
| 1027 | SDK_VBOX_XERCES = .
|
---|
| 1028 | SDK_VBOX_XERCES_INCS ?= $(PATH_ROOT)/src/libs/xerces-2.6.0/src
|
---|
| 1029 | SDK_VBOX_XERCES_LIBS ?= $(PATH_LIB)/VBox-xerces$(VBOX_SUFF_LIB)
|
---|
| 1030 |
|
---|
| 1031 | SDK_VBOX_XALAN = .
|
---|
| 1032 | SDK_VBOX_XALAN_INCS ?= $(PATH_ROOT)/src/libs/xalan-1.10.0
|
---|
| 1033 | SDK_VBOX_XALAN_LIBS ?= $(PATH_LIB)/VBox-xalan$(VBOX_SUFF_LIB)
|
---|
| 1034 |
|
---|
| 1035 | SDK_VBOX_LIBPNG = .
|
---|
| 1036 | SDK_VBOX_LIBPNG_INCS ?= $(PATH_ROOT)/src/libs/libpng-1.2.8
|
---|
| 1037 | SDK_VBOX_LIBPNG_LIBS ?= $(PATH_LIB)/VBox-libpng$(VBOX_SUFF_LIB)
|
---|
| 1038 |
|
---|
| 1039 | SDK_VBOX_ZLIB = .
|
---|
| 1040 | ifeq ($(filter-out win os2,$(BUILD_TARGET)),)
|
---|
| 1041 | SDK_VBOX_ZLIB_INCS ?= $(PATH_ROOT)/src/libs/zlib-1.2.1
|
---|
| 1042 | SDK_VBOX_ZLIB_LIBS ?= $(PATH_LIB)/VBox-zlib$(VBOX_SUFF_LIB)
|
---|
| 1043 | else
|
---|
| 1044 | SDK_VBOX_ZLIB_INCS ?=
|
---|
| 1045 | SDK_VBOX_ZLIB_LIBS ?= z
|
---|
| 1046 | endif
|
---|
| 1047 |
|
---|
| 1048 | SDK_VBOX_OPENSSL = .
|
---|
| 1049 | SDK_VBOX_OPENSSL_INCS?= $(PATH_ROOT)/src/libs/openssl-0.9.7e/include
|
---|
| 1050 | SDK_VBOX_OPENSSL_LIBS?= $(PATH_LIB)/VBox-libcrypto$(VBOX_SUFF_LIB)
|
---|
| 1051 |
|
---|
| 1052 | SDK_VBOX_FFMPEG = .
|
---|
[1844] | 1053 | ifeq ($(filter-out win os2 darwin,$(BUILD_TARGET)),)
|
---|
[1] | 1054 | SDK_VBOX_FFMPEG_INCS ?= \
|
---|
| 1055 | $(PATH_ROOT)/src/libs/ffmpeg-20060710/libavutil \
|
---|
| 1056 | $(PATH_ROOT)/src/libs/ffmpeg-20060710/libavcodec \
|
---|
| 1057 | $(PATH_ROOT)/src/libs/ffmpeg-20060710/libavformat
|
---|
| 1058 | ifeq ($(BUILD_TARGET),win)
|
---|
[1980] | 1059 | ## @todo Michael! Where is $(PATH_LIB)/VBoxFFmpegImp$(VBOX_SUFF_LIB) supposed to come from?
|
---|
| 1060 | #SDK_VBOX_FFMPEG_LIBS ?= $(PATH_LIB)/VBoxFFmpeg.a
|
---|
| 1061 | SDK_VBOX_FFMPEG_LIBS ?= $(PATH_LIB)/VBoxFFmpegImp.lib
|
---|
[1] | 1062 | else
|
---|
| 1063 | SDK_VBOX_FFMPEG_LIBS ?= $(PATH_BIN)/VBoxFFmpeg$(SUFF_DLL)
|
---|
| 1064 | endif
|
---|
| 1065 | else
|
---|
[1844] | 1066 | SDK_VBOX_FFMPEG_INCS ?= /usr/include/ffmpeg /usr/include/libpng
|
---|
[1] | 1067 | SDK_VBOX_FFMPEG_LIBS ?= avutil avcodec avformat
|
---|
| 1068 | endif
|
---|
| 1069 |
|
---|
| 1070 | #
|
---|
[25] | 1071 | # Special SDK for the problematic NTDLL.LIB.
|
---|
| 1072 | #
|
---|
| 1073 | SDK_VBOX_NTDLL = Requires W2K3DDK
|
---|
| 1074 | SDK_VBOX_NTDLL_LIBS ?= $(PATH_SDK_W2K3DDK_LIB)/ntdll.lib
|
---|
| 1075 |
|
---|
| 1076 |
|
---|
| 1077 | #
|
---|
[957] | 1078 | # Qt build tools and libraries.
|
---|
| 1079 | # For *NIX we require it to be present on the system.
|
---|
[1] | 1080 | #
|
---|
| 1081 | ## @todo convert this into SDK and integrate the Qt stuff into kBuild.
|
---|
| 1082 | ifeq ($(BUILD_TARGET),win)
|
---|
| 1083 | ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
| 1084 | VBOX_PATH_QT ?= $(PATH_DEVTOOLS_TRG)/qt/v3.3.3
|
---|
| 1085 | LIB_QT ?= $(VBOX_PATH_QT)/lib/dynamic/qt-mt333.lib
|
---|
| 1086 | else
|
---|
| 1087 | VBOX_PATH_QT ?= $(PATH_DEVTOOLS_TRG)/qt/v3.3.6
|
---|
| 1088 | LIB_QT ?= $(VBOX_PATH_QT)/lib/dynamic/qt-mt336.lib
|
---|
| 1089 | endif
|
---|
| 1090 | LIB_QTMAIN ?= $(VBOX_PATH_QT)/lib/dynamic/qtmain.lib
|
---|
| 1091 | ifndef QTDIR
|
---|
| 1092 | QTDIR := $(sort $(wildcard $(PATH_DEVTOOLS_BLD)/v*))
|
---|
| 1093 | QTDIR := $(call lastword,$(QTDIR))
|
---|
| 1094 | endif
|
---|
[957] | 1095 |
|
---|
| 1096 | else ifeq ($(BUILD_TARGET),darwin)
|
---|
[1314] | 1097 | ifndef VBOX_PATH_QT
|
---|
| 1098 | VBOX_PATH_QT := $(lastword $(sort $(wildcard $(PATH_DEVTOOLS_TRG)/qt/v3.*)))
|
---|
| 1099 | VBOX_PATH_QT ?= $(PATH_DEVTOOLS_TRG)/qt/v3.3.8-r1
|
---|
| 1100 | endif
|
---|
[957] | 1101 | LIB_QT ?= $(VBOX_PATH_QT)/lib/libqt-mt.3.dylib
|
---|
| 1102 | LIB_QTMAIN ?= $(NO_SUCH_VARIABLE)
|
---|
| 1103 | ifndef QTDIR
|
---|
| 1104 | QTDIR := $(sort $(wildcard $(PATH_DEVTOOLS_BLD)/v*))
|
---|
| 1105 | QTDIR := $(call lastword,$(QTDIR))
|
---|
| 1106 | endif
|
---|
[2329] | 1107 | else
|
---|
| 1108 | ifndef QTDIR
|
---|
| 1109 | # This is a pretty safe shot.
|
---|
| 1110 | export QTDIR := $(wildcard /usr/share/qt3)
|
---|
| 1111 | endif
|
---|
[1] | 1112 | endif
|
---|
| 1113 | ifndef VBOX_PATH_QT
|
---|
| 1114 | VBOX_PATH_QT ?= $(QTDIR)
|
---|
| 1115 | LIB_QT ?= qt-mt
|
---|
| 1116 | endif
|
---|
| 1117 | ifeq ($(BUILD_PLATFORM),$(BUILD_TARGET))
|
---|
| 1118 | VBOX_PATH_QT_HOST ?= $(VBOX_PATH_QT)
|
---|
| 1119 | else
|
---|
| 1120 | VBOX_PATH_QT_HOST ?= $(QTDIR)
|
---|
| 1121 | endif
|
---|
| 1122 | VBOX_UIC ?= $(VBOX_PATH_QT_HOST)/bin/uic$(HOSTSUFF_EXE)
|
---|
| 1123 | VBOX_MOC ?= $(VBOX_PATH_QT_HOST)/bin/moc$(HOSTSUFF_EXE)
|
---|
| 1124 | VBOX_LUPDATE ?= $(VBOX_PATH_QT_HOST)/bin/lupdate$(HOSTSUFF_EXE)
|
---|
| 1125 | VBOX_LRELEASE ?= $(VBOX_PATH_QT_HOST)/bin/lrelease$(HOSTSUFF_EXE)
|
---|
| 1126 |
|
---|
| 1127 | #
|
---|
| 1128 | # The linux kernel headers(/sources).
|
---|
| 1129 | #
|
---|
[2825] | 1130 | ifneq ($(filter linux,$(BUILD_TARGET)),)
|
---|
[1] | 1131 | ifeq ($(origin VBOX_LINUX_SRC),undefined)
|
---|
| 1132 | ifneq ($(wildcard /lib/modules/$(shell uname -r)/build/include/linux/autoconf.h),)
|
---|
| 1133 | export VBOX_LINUX_SRC := /lib/modules/$(shell uname -r)/build
|
---|
| 1134 | else
|
---|
| 1135 | export VBOX_LINUX_SRC := /usr/src/linux
|
---|
| 1136 | endif
|
---|
| 1137 | endif
|
---|
[907] | 1138 | ifeq ($(origin VBOX_LINUX_INCS),undefined)
|
---|
| 1139 | export VBOX_LINUX_INCS := $(VBOX_LINUX_SRC)/include
|
---|
| 1140 | # support splitted Linux kernels (make O=<build directory>)
|
---|
[2536] | 1141 | kernelsrc := $(shell $(SED_EXT) -ne 's+^KERNELSRC.*= *\(.*\)+\1+p' $(VBOX_LINUX_SRC)/Makefile)
|
---|
[907] | 1142 | ifneq ($(kernelsrc),)
|
---|
| 1143 | kernelpath := $(realpath $(VBOX_LINUX_SRC)/$(kernelsrc))
|
---|
| 1144 | VBOX_LINUX_INCS += $(VBOX_LINUX_SRC)/include2 $(kernelpath)/include
|
---|
| 1145 | else
|
---|
| 1146 | kernelpath := $(VBOX_LINUX_SRC)
|
---|
| 1147 | endif
|
---|
| 1148 | ifeq ($(BUILD_TARGET_ARCH),x86)
|
---|
| 1149 | VBOX_LINUX_INCS += $(kernelpath)/include/asm-i386/mach-default
|
---|
| 1150 | endif
|
---|
| 1151 | endif
|
---|
[1] | 1152 | endif
|
---|
| 1153 |
|
---|
| 1154 |
|
---|
| 1155 | #
|
---|
| 1156 | # Template for building GC things.
|
---|
| 1157 | #
|
---|
| 1158 | TEMPLATE_VBOXGC = VBox GC
|
---|
| 1159 | TEMPLATE_VBOXGC_ASTOOL = $(VBOX_ASTOOL)
|
---|
| 1160 | TEMPLATE_VBOXGC_ASFLAGS = $(VBOX_ASFLAGS32)
|
---|
[142] | 1161 | TEMPLATE_VBOXGC_DEFS = IN_GC $(ARCH_BITS_DEFS)
|
---|
[1] | 1162 | TEMPLATE_VBOXGC_SYSSUFF = .gc
|
---|
[35] | 1163 | TEMPLATE_VBOXGC_BLD_TRG_ARCH = x86
|
---|
[1] | 1164 |
|
---|
| 1165 | ifeq ($(VBOX_LDR_FMT32),pe)
|
---|
| 1166 | ifdef VBOX_USE_VCC80
|
---|
| 1167 | TEMPLATE_VBOXGC_TOOL = VCC80X86
|
---|
| 1168 | TEMPLATE_VBOXGC_CXXFLAGS = -Zi -Zl -GR- -GS- -EHs-c- -GF- -W3 -wd4244 -wd4996 -Zc:wchar_t- -Gs8192 $(VBOX_VCC_GC_OPT) $(VBOX_VCC_GC_FP)
|
---|
| 1169 | else
|
---|
| 1170 | TEMPLATE_VBOXGC_TOOL = VCC70
|
---|
| 1171 | TEMPLATE_VBOXGC_CXXFLAGS = -Zi -Zl -GR- -GX- -GF- -W3 -wd4244 $(VBOX_VCC_GC_OPT) $(VBOX_VCC_GC_FP)
|
---|
| 1172 | endif
|
---|
| 1173 | TEMPLATE_VBOXGC_CFLAGS = $(TEMPLATE_VBOXGC_CXXFLAGS)
|
---|
| 1174 | TEMPLATE_VBOXGC_LDFLAGS = -Driver -Subsystem:NATIVE -Incremental:NO -Align:32 -MapInfo:Lines -MapInfo:Exports -NoD
|
---|
| 1175 | ifdef VBOX_USE_VCC80
|
---|
| 1176 | include $(PATH_KBUILD)/sdks/W2K3DDKX86.kmk
|
---|
| 1177 | TEMPLATE_VBOXGC_LIBS = \
|
---|
| 1178 | $(PATH_SDK_W2K3DDKX86_LIB)/int64.lib
|
---|
| 1179 | else
|
---|
| 1180 | TEMPLATE_VBOXGC_LIBS = \
|
---|
| 1181 | $(PATH_TOOL_VCC70_LIB)/libcmt.lib # for 64-bit int
|
---|
| 1182 | endif
|
---|
| 1183 | endif
|
---|
| 1184 |
|
---|
| 1185 | ifeq ($(VBOX_LDR_FMT32),elf)
|
---|
| 1186 | TEMPLATE_VBOXGC_TOOL = $(VBOX_GCC32_TOOL)
|
---|
[2435] | 1187 | TEMPLATE_VBOXGC_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -fno-exceptions -fno-rtti $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden)
|
---|
| 1188 | TEMPLATE_VBOXGC_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden)
|
---|
[1] | 1189 | TEMPLATE_VBOXGC_LDFLAGS = -nostdlib -Bsymbolic
|
---|
| 1190 | # temporarily, must fix the loader.
|
---|
| 1191 | TEMPLATE_VBOXGC_LDFLAGS += -S
|
---|
| 1192 | TEMPLATE_VBOXGC_LDFLAGS.release = -S
|
---|
| 1193 | TEMPLATE_VBOXGC_LIBS = \
|
---|
[373] | 1194 | $(VBOX_GCC32_LIBGCC) # instricts
|
---|
[1] | 1195 | endif
|
---|
| 1196 |
|
---|
| 1197 | ifeq ($(VBOX_LDR_FMT32),macho)
|
---|
[2887] | 1198 | TEMPLATE_VBOXGC_TOOL = GXX4MACHO
|
---|
[828] | 1199 | TEMPLATE_VBOXGC_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -fno-common -msoft-float -static -fno-exceptions -fno-rtti $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing
|
---|
| 1200 | TEMPLATE_VBOXGC_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -fno-common -msoft-float -static -Wno-trigraphs -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing
|
---|
[859] | 1201 | TEMPLATE_VBOXGC_LDFLAGS = -nostdlib
|
---|
[1] | 1202 | #TEMPLATE_VBOXGC_LDFLAGS.release = -Wl,-S ???
|
---|
| 1203 | endif
|
---|
| 1204 |
|
---|
| 1205 | ifeq ($(VBOX_LDR_FMT32),lx)
|
---|
[2887] | 1206 | TEMPLATE_VBOXGC_TOOL = GXX3OMF
|
---|
[1] | 1207 | TEMPLATE_VBOXGC_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -fno-exceptions -fno-rtti $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing
|
---|
| 1208 | TEMPLATE_VBOXGC_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing
|
---|
| 1209 | TEMPLATE_VBOXGC_LDFLAGS = -Zdll -nostdlib
|
---|
| 1210 | TEMPLATE_VBOXGC_LIBS = \
|
---|
[373] | 1211 | $(VBOX_GCC32_LIBGCC) \
|
---|
[1] | 1212 | $(OBJ_SYS0) \
|
---|
| 1213 | end
|
---|
| 1214 | endif
|
---|
| 1215 |
|
---|
| 1216 |
|
---|
| 1217 | #
|
---|
| 1218 | # Template for building a GC ring-3 testcase (tstVMStructGC, tstDevStructGC).
|
---|
| 1219 | #
|
---|
| 1220 | TEMPLATE_VBOXGCEXE = VBox GC as ring-3 testcase
|
---|
| 1221 | TEMPLATE_VBOXGCEXE_EXTENDS = VBOXGC
|
---|
| 1222 |
|
---|
| 1223 | ifeq ($(VBOX_LDR_FMT32),pe)
|
---|
| 1224 | TEMPLATE_VBOXGCEXE_LDFLAGS = -Incremental:NO -MapInfo:Exports -NoD -Debug
|
---|
| 1225 | TEMPLATE_VBOXGCEXE_SDKS = WIN32SDK
|
---|
| 1226 | ifdef VBOX_USE_VCC80
|
---|
| 1227 | TEMPLATE_VBOXGCEXE_LIBS = \
|
---|
| 1228 | $(PATH_TOOL_VCC80X86_LIB)/libcmt.lib \
|
---|
| 1229 | $(PATH_TOOL_VCC80X86_LIB)/oldnames.lib
|
---|
| 1230 | else
|
---|
| 1231 | TEMPLATE_VBOXGCEXE_LIBS = \
|
---|
| 1232 | $(PATH_TOOL_VCC70_LIB)/libcmt.lib \
|
---|
| 1233 | $(PATH_TOOL_VCC70_LIB)/oldnames.lib
|
---|
| 1234 | endif
|
---|
| 1235 | endif
|
---|
| 1236 |
|
---|
| 1237 | ifeq ($(VBOX_LDR_FMT32),elf)
|
---|
[859] | 1238 | TEMPLATE_VBOXGCEXE_LDFLAGS = -g
|
---|
| 1239 | TEMPLATE_VBOXGCEXE_LDFLAGS.release = -g
|
---|
[1] | 1240 | endif
|
---|
| 1241 |
|
---|
| 1242 | ifeq ($(VBOX_LDR_FMT32),macho)
|
---|
[859] | 1243 | TEMPLATE_VBOXGCEXE_CFLAGS = $(filter-out -static,$(TEMPLATE_VBOXGC_CFLAGS))
|
---|
| 1244 | TEMPLATE_VBOXGCEXE_CXXFLAGS = $(filter-out -static,$(TEMPLATE_VBOXGC_CXXFLAGS))
|
---|
| 1245 | TEMPLATE_VBOXGCEXE_LDFLAGS = -g
|
---|
[1] | 1246 | endif
|
---|
| 1247 |
|
---|
| 1248 | ifeq ($(VBOX_LDR_FMT32),lx)
|
---|
[859] | 1249 | TEMPLATE_VBOXGCEXE_LDFLAGS = -g
|
---|
| 1250 | TEMPLATE_VBOXGCEXE_LIBS = $(NO_SUCH_VARIABLE)
|
---|
[1] | 1251 | endif
|
---|
| 1252 |
|
---|
| 1253 |
|
---|
| 1254 | #
|
---|
| 1255 | # Template for building R0 things.
|
---|
| 1256 | #
|
---|
| 1257 | TEMPLATE_VBOXR0 = VBox Ring 0
|
---|
| 1258 | TEMPLATE_VBOXR0_ASTOOL = $(VBOX_ASTOOL)
|
---|
| 1259 | TEMPLATE_VBOXR0_ASFLAGS = $(VBOX_ASFLAGS)
|
---|
| 1260 | TEMPLATE_VBOXR0_DEFS = IN_RING0 $(ARCH_BITS_DEFS)
|
---|
| 1261 |
|
---|
| 1262 | ifeq ($(VBOX_LDR_FMT),pe)
|
---|
| 1263 | TEMPLATE_VBOXR0_TOOL = $(VBOX_VCC_TOOL)
|
---|
| 1264 | ifdef VBOX_USE_VCC80
|
---|
| 1265 | TEMPLATE_VBOXR0_CXXFLAGS = -Zi -Zl -GR- -GS- -EHs-c- -GF- -W3 -wd4244 -wd4996 -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
|
---|
| 1266 | else
|
---|
| 1267 | TEMPLATE_VBOXR0_CXXFLAGS = -Zi -Zl -GR- -GX- -GF- -W3 -wd4244 $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
|
---|
| 1268 | endif
|
---|
| 1269 | TEMPLATE_VBOXR0_CFLAGS = $(TEMPLATE_VBOXR0_CXXFLAGS)
|
---|
| 1270 | TEMPLATE_VBOXR0_LDFLAGS = -Driver -Subsystem:NATIVE -Incremental:NO -Align:32 -MapInfo:Exports -NoD
|
---|
| 1271 | ifdef VBOX_USE_VCC80
|
---|
| 1272 | TEMPLATE_VBOXR0_LIBS.x86 = \
|
---|
| 1273 | $(PATH_SDK_W2K3DDKX86_LIB)/int64.lib
|
---|
| 1274 | else
|
---|
| 1275 | TEMPLATE_VBOXR0_LIBS.x86 = \
|
---|
| 1276 | $(PATH_TOOL_VCC70_LIB)/libcmt.lib # for 64-bit int
|
---|
| 1277 | endif
|
---|
| 1278 | endif # pe
|
---|
| 1279 |
|
---|
| 1280 | ifeq ($(VBOX_LDR_FMT),elf)
|
---|
| 1281 | TEMPLATE_VBOXR0_TOOL = $(VBOX_GCC_TOOL)
|
---|
[2435] | 1282 | TEMPLATE_VBOXR0_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden)
|
---|
| 1283 | TEMPLATE_VBOXR0_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -fno-rtti -fno-exceptions $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden)
|
---|
[343] | 1284 | TEMPLATE_VBOXR0_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables -ffreestanding
|
---|
[336] | 1285 | TEMPLATE_VBOXR0_CXXFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables
|
---|
[1] | 1286 | TEMPLATE_VBOXR0_LDFLAGS = -nostdlib -Bsymbolic
|
---|
| 1287 | # temporarily, must fix the loader.
|
---|
| 1288 | TEMPLATE_VBOXR0_LDFLAGS += -S
|
---|
| 1289 | TEMPLATE_VBOXR0_LDFLAGS.release = -S
|
---|
| 1290 | TEMPLATE_VBOXR0_LIBS = \
|
---|
| 1291 | $(VBOX_GCC_LIBGCC) # instricts
|
---|
| 1292 | endif
|
---|
| 1293 |
|
---|
| 1294 | ifeq ($(VBOX_LDR_FMT),macho)
|
---|
[2887] | 1295 | TEMPLATE_VBOXR0_TOOL = GXX4MACHO
|
---|
[828] | 1296 | TEMPLATE_VBOXR0_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -fno-common -msoft-float -static -fno-rtti -fno-exceptions $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing
|
---|
| 1297 | TEMPLATE_VBOXR0_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -fno-common -msoft-float -static -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing
|
---|
[859] | 1298 | TEMPLATE_VBOXR0_LDFLAGS = -nostdlib
|
---|
[1] | 1299 | #TEMPLATE_VBOXR0_LDFLAGS.release = -Wl,-S ???
|
---|
| 1300 | endif
|
---|
| 1301 |
|
---|
| 1302 | ifeq ($(VBOX_LDR_FMT),lx)
|
---|
[2887] | 1303 | TEMPLATE_VBOXR0_TOOL = GXX3OMF
|
---|
[1190] | 1304 | TEMPLATE_VBOXR0_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing
|
---|
[1] | 1305 | TEMPLATE_VBOXR0_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -fno-rtti -fno-exceptions $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing
|
---|
| 1306 | TEMPLATE_VBOXR0_LDFLAGS = -Zdll -nostdlib
|
---|
| 1307 | TEMPLATE_VBOXR0_LIBS = \
|
---|
| 1308 | $(VBOX_GCC_LIBGCC) \
|
---|
| 1309 | $(OBJ_SYS0) \
|
---|
| 1310 | end
|
---|
| 1311 | endif
|
---|
| 1312 |
|
---|
| 1313 |
|
---|
| 1314 | #
|
---|
| 1315 | # Template for building SUPDRV R0 things.
|
---|
| 1316 | #
|
---|
| 1317 | TEMPLATE_VBOXR0DRV = VBox SUPDRV Ring 0
|
---|
| 1318 | TEMPLATE_VBOXR0DRV_ASTOOL = $(VBOX_ASTOOL)
|
---|
| 1319 | TEMPLATE_VBOXR0DRV_ASFLAGS = $(VBOX_ASFLAGS)
|
---|
| 1320 | TEMPLATE_VBOXR0DRV_DEFS = IN_RING0 IN_RT_R0 $(ARCH_BITS_DEFS)
|
---|
| 1321 |
|
---|
| 1322 | ifeq ($(BUILD_TARGET),win)
|
---|
| 1323 | TEMPLATE_VBOXR0DRV_TOOL = $(VBOX_VCC_TOOL)
|
---|
| 1324 | TEMPLATE_VBOXR0DRV_RCDEFS = \
|
---|
| 1325 | VBOX_VERSION_MAJOR=\"$(VBOX_VERSION_MAJOR)\" \
|
---|
| 1326 | VBOX_VERSION_MINOR=\"$(VBOX_VERSION_MINOR)\" \
|
---|
| 1327 | VBOX_VERSION_BUILD=\"$(VBOX_VERSION_BUILD)\" \
|
---|
| 1328 | VBOX_VERSION_MAJOR_NR=$(VBOX_VERSION_MAJOR) \
|
---|
| 1329 | VBOX_VERSION_MINOR_NR=$(VBOX_VERSION_MINOR) \
|
---|
| 1330 | VBOX_VERSION_BUILD_NR=$(VBOX_VERSION_BUILD)
|
---|
| 1331 | TEMPLATE_VBOXR0DRV_DEFS.x86 = _X86_
|
---|
| 1332 | TEMPLATE_VBOXR0DRV_DEFS.amd64 = _AMD64_
|
---|
| 1333 | ifdef VBOX_USE_VCC80
|
---|
| 1334 | TEMPLATE_VBOXR0DRV_CXXFLAGS = -Zi -Zl -GR- -GS- -EHs-c- -GF- -Gz -W3 -wd4996 -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
|
---|
| 1335 | else
|
---|
| 1336 | TEMPLATE_VBOXR0DRV_CXXFLAGS = -Zi -Zl -GR- -GX- -GF- -Gz -W3 $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
|
---|
| 1337 | endif
|
---|
| 1338 | TEMPLATE_VBOXR0DRV_CFLAGS = $(TEMPLATE_VBOXR0DRV_CXXFLAGS)
|
---|
| 1339 | TEMPLATE_VBOXR0DRV_LDFLAGS = -Driver -Subsystem:NATIVE -Incremental:NO -Align:32 -MapInfo:Exports -NoD -Debug
|
---|
[1787] | 1340 | TEMPLATE_VBOXR0DRV_POST_CMDS = $(VBOX_SIGN_DRIVER_CMDS)
|
---|
[1] | 1341 | endif
|
---|
| 1342 |
|
---|
| 1343 | ifeq ($(BUILD_TARGET),linux)
|
---|
| 1344 | TEMPLATE_VBOXR0DRV_TOOL = $(VBOX_GCC_TOOL)
|
---|
| 1345 | TEMPLATE_VBOXR0DRV_DEFS = __KERNEL__ MODULE IN_RING0 IN_RT_R0
|
---|
[995] | 1346 | TEMPLATE_VBOXR0DRV_INCS = $(VBOX_LINUX_INCS)
|
---|
[1] | 1347 | TEMPLATE_VBOXR0DRV_CFLAGS = -nostdinc -iwithprefix include \
|
---|
| 1348 | -Wall -Wstrict-prototypes -Wno-trigraphs $(VBOX_GCC_Wno-pointer-sign) \
|
---|
[336] | 1349 | $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing -fno-common
|
---|
| 1350 | TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -mpreferred-stack-boundary=2 -msoft-float
|
---|
| 1351 | TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow \
|
---|
| 1352 | -fno-reorder-blocks -ffreestanding -fno-asynchronous-unwind-tables -funit-at-a-time \
|
---|
| 1353 | -Wno-sign-compare -Wdeclaration-after-statement
|
---|
[1] | 1354 | TEMPLATE_VBOXR0DRV_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wno-pointer-sign,$(TEMPLATE_VBOXR0DRV_CFLAGS)) -fno-exceptions -fno-rtti
|
---|
| 1355 | ifndef VBOX_LINUX_VERSION_2_4
|
---|
| 1356 | # 2.6
|
---|
| 1357 | TEMPLATE_VBOXR0DRV_SYSSUFF = .ko
|
---|
[43] | 1358 | TEMPLATE_VBOXR0DRV_LDFLAGS.x86 = -m elf_i386 -r
|
---|
| 1359 | TEMPLATE_VBOXR0DRV_LDFLAGS.amd64 = -m elf_x86_64 -r
|
---|
[1] | 1360 | else
|
---|
| 1361 | # 2.4
|
---|
| 1362 | TEMPLATE_VBOXR0DRV_SYSSUFF = .o
|
---|
| 1363 | TEMPLATE_VBOXR0DRV_LDFLAGS = -r -s
|
---|
| 1364 | endif
|
---|
| 1365 | endif
|
---|
| 1366 |
|
---|
| 1367 | ifeq ($(BUILD_TARGET),os2)
|
---|
[2887] | 1368 | TEMPLATE_VBOXR0DRV_TOOL = GXX3OMF
|
---|
[1190] | 1369 | TEMPLATE_VBOXR0DRV_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing -fno-rtti -fno-exceptions
|
---|
[1] | 1370 | TEMPLATE_VBOXR0DRV_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing
|
---|
[1190] | 1371 | TEMPLATE_VBOXR0DRV_LIBS = $(VBOX_GCC_LIBGCC)
|
---|
| 1372 | # wlink thinks physdevice doesn't need fixups and should have a stack - stupid!
|
---|
| 1373 | TEMPLATE_VBOXR0DRV_LDFLAGS = -Zlinker Option -Zlinker internalrelocs, -Zlinker togglerelocs
|
---|
[1] | 1374 | endif
|
---|
| 1375 |
|
---|
| 1376 | ifeq ($(BUILD_TARGET),darwin)
|
---|
[2887] | 1377 | TEMPLATE_VBOXR0DRV_TOOL = GXX4MACHO
|
---|
[1] | 1378 | TEMPLATE_VBOXR0DRV_DEFS += KERNEL KERNEL_PRIVATE DRIVER_PRIVATE APPLE NeXT
|
---|
| 1379 | TEMPLATE_VBOXR0DRV_INCS += \
|
---|
| 1380 | /System/Library/Frameworks/Kernel.framework/PrivateHeaders \
|
---|
| 1381 | /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Kernel.framework/Headers
|
---|
| 1382 | TEMPLATE_VBOXR0DRV_CXXFLAGS = \
|
---|
| 1383 | -g -Wall -Wno-long-long -Wno-trigraphs -pipe -fno-common -nostdinc -fno-builtin -finline \
|
---|
| 1384 | -fno-keep-inline-functions -force_cpusubtype_ALL -fno-exceptions -msoft-float -static \
|
---|
[212] | 1385 | -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
|
---|
| 1386 | -fapple-kext -fno-rtti -fcheck-new
|
---|
[1] | 1387 | TEMPLATE_VBOXR0DRV_CXXFLAGS.release = $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing -fasm-blocks
|
---|
| 1388 | TEMPLATE_VBOXR0DRV_CXXFLAGS.profile = $(TEMPLATE_VBOXR0DRV_CXXFLAGS.release)
|
---|
| 1389 | TEMPLATE_VBOXR0DRV_CXXFLAGS.kprofile = $(TEMPLATE_VBOXR0DRV_CXXFLAGS.release)
|
---|
| 1390 | TEMPLATE_VBOXR0DRV_CFLAGS = \
|
---|
| 1391 | -g -Wall -Wno-long-long -Wno-trigraphs -pipe -fno-common -nostdinc -fno-builtin -finline \
|
---|
| 1392 | -fno-keep-inline-functions -force_cpusubtype_ALL -fno-exceptions -msoft-float -static \
|
---|
| 1393 | -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
|
---|
| 1394 | -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
|
---|
| 1395 | TEMPLATE_VBOXR0DRV_CFLAGS.release = $(TEMPLATE_VBOXR0DRV_CXXFLAGS.release)
|
---|
| 1396 | TEMPLATE_VBOXR0DRV_CFLAGS.profile = $(TEMPLATE_VBOXR0DRV_CXXFLAGS.profile)
|
---|
| 1397 | TEMPLATE_VBOXR0DRV_CFLAGS.kprofile = $(TEMPLATE_VBOXR0DRV_CXXFLAGS.kprofile)
|
---|
[376] | 1398 | TEMPLATE_VBOXR0DRV_LDFLAGS = -static -nostdlib -r -Wl,-Y,1455 \
|
---|
[1] | 1399 | -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
|
---|
[376] | 1400 | TEMPLATE_VBOXR0DRV_LIBS = kmodc++ kmod cc_kext cpp_kext $(VBOX_GCC_LIBGCC)
|
---|
[1] | 1401 | endif
|
---|
| 1402 |
|
---|
[534] | 1403 | ifeq ($(filter-out freebsd netbsd openbsd,$(BUILD_TARGET)),) # pure guess work just to avoid the warning below
|
---|
| 1404 | TEMPLATE_VBOXR0DRV_TOOL = $(VBOX_GCC_TOOL)
|
---|
| 1405 | TEMPLATE_VBOXR0DRV_DEFS = __KERNEL__ IN_RING0 IN_RT_R0
|
---|
| 1406 | TEMPLATE_VBOXR0DRV_CFLAGS = \
|
---|
| 1407 | -Wall -Wstrict-prototypes -Wno-trigraphs $(VBOX_GCC_Wno-pointer-sign) \
|
---|
| 1408 | $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing -fno-common
|
---|
| 1409 | TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -msoft-float
|
---|
| 1410 | TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow \
|
---|
| 1411 | -fno-reorder-blocks -ffreestanding -fno-asynchronous-unwind-tables -funit-at-a-time \
|
---|
| 1412 | -Wno-sign-compare -Wdeclaration-after-statement
|
---|
| 1413 | TEMPLATE_VBOXR0DRV_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wno-pointer-sign,$(TEMPLATE_VBOXR0DRV_CFLAGS)) -fno-exceptions -fno-rtti
|
---|
| 1414 | TEMPLATE_VBOXR0DRV_SYSSUFF = .ko
|
---|
| 1415 | TEMPLATE_VBOXR0DRV_LDFLAGS.x86 = -m elf_i386 -r
|
---|
| 1416 | TEMPLATE_VBOXR0DRV_LDFLAGS.amd64 = -m elf_x86_64 -r
|
---|
| 1417 | endif
|
---|
| 1418 |
|
---|
[1] | 1419 | ifdef VBOX_WITH_VBOXDRV
|
---|
| 1420 | ifndef TEMPLATE_VBOXR0DRV_TOOL
|
---|
| 1421 | $(warning Warning: VBox Build: Target $(BUILD_PLATFORM) is not officially supported!)
|
---|
| 1422 | endif
|
---|
| 1423 | endif
|
---|
| 1424 |
|
---|
| 1425 |
|
---|
| 1426 |
|
---|
| 1427 | #
|
---|
| 1428 | # Template for building R3 executables and static libraries which are linked into executables.
|
---|
| 1429 | #
|
---|
| 1430 | TEMPLATE_VBOXR3EXE = VBox Ring 3 Exe
|
---|
| 1431 | TEMPLATE_VBOXR3EXE_ASTOOL = $(VBOX_ASTOOL)
|
---|
| 1432 | TEMPLATE_VBOXR3EXE_ASFLAGS = $(VBOX_ASFLAGS)
|
---|
[655] | 1433 | TEMPLATE_VBOXR3EXE_DEFS = IN_RING3 $(ARCH_BITS_DEFS)
|
---|
[1] | 1434 | TEMPLATE_VBOXR3EXE_LIBS.kprofile = $(LIB_KPROFILE)
|
---|
| 1435 | ifeq ($(BUILD_TARGET),win)
|
---|
| 1436 | TEMPLATE_VBOXR3EXE_TOOL = $(VBOX_VCC_TOOL)
|
---|
| 1437 | TEMPLATE_VBOXR3EXE_RCDEFS = \
|
---|
| 1438 | VBOX_VERSION_MAJOR=\"$(VBOX_VERSION_MAJOR)\" \
|
---|
| 1439 | VBOX_VERSION_MINOR=\"$(VBOX_VERSION_MINOR)\" \
|
---|
| 1440 | VBOX_VERSION_BUILD=\"$(VBOX_VERSION_BUILD)\" \
|
---|
| 1441 | VBOX_VERSION_MAJOR_NR=$(VBOX_VERSION_MAJOR) \
|
---|
| 1442 | VBOX_VERSION_MINOR_NR=$(VBOX_VERSION_MINOR) \
|
---|
| 1443 | VBOX_VERSION_BUILD_NR=$(VBOX_VERSION_BUILD)
|
---|
| 1444 | TEMPLATE_VBOXR3EXE_SDKS = WINPSDK
|
---|
| 1445 | ifdef VBOX_USE_VCC80
|
---|
[297] | 1446 | TEMPLATE_VBOXR3EXE_CXXFLAGS = -Zi -Zl -GR- -EHs-c- -GF- -MD -W3 -wd4065 -wd4244 -wd4996 -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
|
---|
[1] | 1447 | TEMPLATE_VBOXR3EXE_CXXFLAGS.debug = -RTCsu
|
---|
| 1448 | else
|
---|
[297] | 1449 | TEMPLATE_VBOXR3EXE_CXXFLAGS = -Zi -Zl -GR- -GX- -GF- -MD -W3 -wd4065 -wd4244 $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
|
---|
[1] | 1450 | TEMPLATE_VBOXR3EXE_CXXFLAGS.debug = -GZ
|
---|
| 1451 | endif
|
---|
| 1452 | TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile = -Gh -GH
|
---|
| 1453 | TEMPLATE_VBOXR3EXE_CFLAGS = $(TEMPLATE_VBOXR3EXE_CXXFLAGS)
|
---|
| 1454 | TEMPLATE_VBOXR3EXE_CFLAGS.debug = $(TEMPLATE_VBOXR3EXE_CXXFLAGS.debug)
|
---|
| 1455 | TEMPLATE_VBOXR3EXE_CFLAGS.kprofile = $(TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile)
|
---|
| 1456 | TEMPLATE_VBOXR3EXE_LDFLAGS = \
|
---|
| 1457 | /NOD /INCREMENTAL:NO /MAPINFO:EXPORTS /LARGEADDRESSAWARE /DEBUG \
|
---|
| 1458 | /DISALLOWLIB:libc.lib \
|
---|
| 1459 | /DISALLOWLIB:libcd.lib \
|
---|
| 1460 | /DISALLOWLIB:libcmt.lib \
|
---|
| 1461 | /DISALLOWLIB:libcmtd.lib \
|
---|
| 1462 | /DISALLOWLIB:msvcrtd.lib
|
---|
| 1463 | TEMPLATE_VBOXR3EXE_LIBS = \
|
---|
| 1464 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/msvcrt.lib \
|
---|
| 1465 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/msvcprt.lib \
|
---|
| 1466 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/oldnames.lib
|
---|
[1787] | 1467 | TEMPLATE_VBOXR3EXE_POST_CMDS = $(VBOX_SIGN_IMAGE_CMDS)
|
---|
[1] | 1468 |
|
---|
| 1469 | else # the gcc guys
|
---|
| 1470 | TEMPLATE_VBOXR3EXE_TOOL = $(VBOX_GCC_TOOL)
|
---|
[2435] | 1471 | TEMPLATE_VBOXR3EXE_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden)
|
---|
[1] | 1472 | # L4 currently can't handle exception handling.
|
---|
| 1473 | TEMPLATE_VBOXR3EXE_CXXFLAGS.l4 = -fno-exceptions -nostdinc \
|
---|
| 1474 | $(addprefix -I,$(VBOX_L4_GCC3_INCS) $(L4_INCDIR) $(FILE_TOOL_GPP3_INCDIR)) \
|
---|
| 1475 | $(DEBUG_L4)
|
---|
| 1476 | TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile = -finstrument-functions
|
---|
| 1477 | TEMPLATE_VBOXR3EXE_CFLAGS.debug = $(TEMPLATE_VBOXR3EXE_CXXFLAGS.debug)
|
---|
| 1478 | TEMPLATE_VBOXR3EXE_CFLAGS.kprofile = $(TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile)
|
---|
[2435] | 1479 | TEMPLATE_VBOXR3EXE_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fvisibility-hidden)
|
---|
[1] | 1480 | TEMPLATE_VBOXR3EXE_CFLAGS.darwin = -fno-common
|
---|
| 1481 | TEMPLATE_VBOXR3EXE_CFLAGS.l4 = -nostdinc \
|
---|
| 1482 | $(addprefix -I,$(VBOX_L4_GCC3_INCS) $(L4_INCDIR)) $(DEBUG_L4)
|
---|
| 1483 | TEMPLATE_VBOXR3EXE_DEFS.l4 = L4_THREAD_SAFE
|
---|
| 1484 | TEMPLATE_VBOXR3EXE_LDFLAGS.l4 = \
|
---|
| 1485 | $(L4_LIBDIR)/../crt0.o \
|
---|
| 1486 | -T$(L4_LIBDIR)/../main_dyn.ld -nostdlib \
|
---|
| 1487 | -Wl,--export-dynamic,--dynamic-linker=libld-l4.s.so \
|
---|
| 1488 | -Wl,--rpath-link,$(L4_LIBDIR)
|
---|
[2122] | 1489 | TEMPLATE_VBOXR3EXE_LDFLAGS.linux = -Wl,-z,noexecstack
|
---|
[1] | 1490 | ifeq ($(BUILD_TARGET),linux)
|
---|
[1564] | 1491 | TEMPLATE_VBOXR3EXE_LIBS = pthread m rt dl
|
---|
[534] | 1492 | else ifeq ($(BUILD_TARGET),l4)
|
---|
[1] | 1493 | TEMPLATE_VBOXR3EXE_LIBS = \
|
---|
| 1494 | $(L4_LIBDIR)/libvboxserver.s.so \
|
---|
| 1495 | $(L4_LIBDIR)/libuc++.0.s.so \
|
---|
| 1496 | supc++ gcc_eh gcc \
|
---|
| 1497 | $(L4_LIBDIR)/libdl.s.so \
|
---|
| 1498 | $(L4_LIBDIR)/libuc.0.s.so
|
---|
[534] | 1499 | else ifeq ($(BUILD_TARGET),os2)
|
---|
[2887] | 1500 | TEMPLATE_VBOXR3EXE_TOOL = GXX3OMF
|
---|
[1] | 1501 | TEMPLATE_VBOXR3EXE_LIBS = socket iconv
|
---|
[534] | 1502 | else ifeq ($(BUILD_TARGET),darwin)
|
---|
[2887] | 1503 | TEMPLATE_VBOXR3EXE_TOOL = GXX4MACHO
|
---|
[1] | 1504 | TEMPLATE_VBOXR3EXE_LIBS =
|
---|
| 1505 | TEMPLATE_VBOXR3EXE_LDFLAGS = -read_only_relocs suppress
|
---|
[1394] | 1506 | TEMPLATE_VBOXR3EXE_INCS += $(VBOX_PATH_MACOSX_SDK_INCS)
|
---|
[534] | 1507 | else ifeq ($(filter-out freebsd netbsd openbsd,$(BUILD_TARGET)),)
|
---|
[2887] | 1508 | TEMPLATE_VBOXR3EXE_TOOL = GXX3
|
---|
[586] | 1509 | TEMPLATE_VBOXR3EXE_LIBS = pthread
|
---|
[534] | 1510 | else ifeq ($(BUILD_TARGET),solaris)
|
---|
[1] | 1511 | $(warning Warning: VBOX Build: Target $(BUILD_TARGET) is not officially supported!)
|
---|
[2887] | 1512 | TEMPLATE_VBOXR3EXE_TOOL = GXX3PLAIN
|
---|
[534] | 1513 | TEMPLATE_VBOXR3EXE_LIBS = rt
|
---|
| 1514 | else
|
---|
| 1515 | $(warning Warning: VBOX Build: Target $(BUILD_TARGET) is not officially supported!)
|
---|
[1] | 1516 | TEMPLATE_VBOXR3EXE_CXXFLAGS.profile = $(TEMPLATE_VBOXR3EXE_CXXFLAGS.release)
|
---|
| 1517 | TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile = $(TEMPLATE_VBOXR3EXE_CXXFLAGS.krelease)
|
---|
| 1518 | endif
|
---|
| 1519 | endif
|
---|
| 1520 |
|
---|
| 1521 | #
|
---|
| 1522 | # Template for building R3 shared objects / DLLs.
|
---|
[534] | 1523 | # This is mostly identical to the VBOXR3EXE template. (Avoid PIC if possible!)
|
---|
[1] | 1524 | #
|
---|
| 1525 | TEMPLATE_VBOXR3 = VBox Ring 3 SO/DLLs
|
---|
| 1526 | TEMPLATE_VBOXR3_EXTENDS = VBOXR3EXE
|
---|
| 1527 | TEMPLATE_VBOXR3_LDFLAGS.l4 = $(L4_LIBDIR)/../crt0.s.o -T$(L4_LIBDIR)/../main_rel.ld -nostdlib
|
---|
[2102] | 1528 | TEMPLATE_VBOXR3_DEFS.l4 = $(TEMPLATE_VBOXR3EXE_DEFS.l4) __PIC__
|
---|
[1] | 1529 | TEMPLATE_VBOXR3_DEFS.darwin = $(TEMPLATE_VBOXR3EXE_DEFS.darwin) PIC
|
---|
[45] | 1530 | ifeq ($(BUILD_TARGET_ARCH),amd64)
|
---|
| 1531 | ifneq ($(BUILD_TARGET),win)
|
---|
| 1532 | TEMPLATE_VBOXR3_DEFS = $(TEMPLATE_VBOXR3EXE_DEFS) PIC
|
---|
| 1533 | TEMPLATE_VBOXR3_CFLAGS = $(TEMPLATE_VBOXR3EXE_CFLAGS) -fPIC
|
---|
| 1534 | TEMPLATE_VBOXR3_CXXFLAGS = $(TEMPLATE_VBOXR3EXE_CXXFLAGS) -fPIC
|
---|
| 1535 | TEMPLATE_VBOXR3_LDFLAGS = $(TEMPLATE_VBOXR3EXE_LDFLAGS) -fPIC
|
---|
| 1536 | endif
|
---|
| 1537 | endif
|
---|
[1] | 1538 |
|
---|
| 1539 | #
|
---|
| 1540 | # Ring-3 testcase.
|
---|
| 1541 | # This is the VBOXR3EXE template only with a different install dir.
|
---|
| 1542 | #
|
---|
| 1543 | TEMPLATE_VBOXR3TSTEXE = VBox Ring 3 Testcase Exe
|
---|
| 1544 | TEMPLATE_VBOXR3TSTEXE_EXTENDS = VBOXR3EXE
|
---|
| 1545 | TEMPLATE_VBOXR3TSTEXE_INST = $(INST_TESTCASE)
|
---|
| 1546 | TEMPLATE_VBOXR3TSTEXE_LIBS = $(LIB_RUNTIME) $(TEMPLATE_VBOXR3EXE_LIBS)
|
---|
[2949] | 1547 | ifeq ($(BUILD_TARGET),win)
|
---|
| 1548 | ifdef VBOX_SIGNING_MODE
|
---|
| 1549 | TEMPLATE_VBOXR3TSTEXE_POST_CMDS =
|
---|
| 1550 | endif
|
---|
| 1551 | endif
|
---|
[1] | 1552 |
|
---|
| 1553 | #
|
---|
| 1554 | # Template for building bad C/C++ style R3 executables (no -pedantic).
|
---|
| 1555 | #
|
---|
| 1556 | TEMPLATE_VBOXR3NPEXE = VBox Ring 3 Non-pedantic
|
---|
| 1557 | TEMPLATE_VBOXR3NPEXE_EXTENDS = VBOXR3EXE
|
---|
| 1558 | ifneq ($(BUILD_TARGET),win)
|
---|
| 1559 | # (only gcc)
|
---|
| 1560 | TEMPLATE_VBOXR3NPEXE_TOOL = $(VBOX_GCC_TOOL)
|
---|
| 1561 | TEMPLATE_VBOXR3NPEXE_CXXFLAGS = $(filter-out -pedantic,$(TEMPLATE_VBOXR3EXE_CXXFLAGS))
|
---|
[2435] | 1562 | TEMPLATE_VBOXR3NPEXE_CFLAGS = $(filter-out -pedantic -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations,$(TEMPLATE_VBOXR3EXE_CFLAGS))
|
---|
[1] | 1563 | endif
|
---|
| 1564 |
|
---|
| 1565 | #
|
---|
| 1566 | # Template for building bad C/C++ style R3 shared libraries / Dlls (no -pedantic).
|
---|
| 1567 | # This is mostly identical to the VBOXR3NPEXE template.
|
---|
| 1568 | #
|
---|
| 1569 | TEMPLATE_VBOXR3NP= VBox Ring 3 Non-pedantic
|
---|
| 1570 | TEMPLATE_VBOXR3NP_EXTENDS = VBOXR3NPEXE
|
---|
| 1571 | TEMPLATE_VBOXR3NP_LDFLAGS.l4 = \
|
---|
| 1572 | $(L4_LIBDIR)/../crt0.s.o \
|
---|
| 1573 | -T$(L4_LIBDIR)/../main_rel.ld \
|
---|
| 1574 | -nostdlib
|
---|
[2724] | 1575 | TEMPLATE_VBOXR3NP_DEFS.l4 = $(TEMPLATE_VBOXR3NPEXE_DEFS.l4) __PIC__
|
---|
[137] | 1576 | ifeq ($(BUILD_TARGET_ARCH),amd64)
|
---|
| 1577 | ifneq ($(BUILD_TARGET),win)
|
---|
| 1578 | TEMPLATE_VBOXR3NP_DEFS = $(TEMPLATE_VBOXR3NPEXE_DEFS) PIC
|
---|
| 1579 | TEMPLATE_VBOXR3NP_CFLAGS = $(TEMPLATE_VBOXR3NPEXE_CFLAGS) -fPIC
|
---|
| 1580 | TEMPLATE_VBOXR3NP_CXXFLAGS = $(TEMPLATE_VBOXR3NPEXE_CXXFLAGS) -fPIC
|
---|
| 1581 | TEMPLATE_VBOXR3NP_LDFLAGS = $(TEMPLATE_VBOXR3NPEXE_LDFLAGS) -fPIC
|
---|
| 1582 | endif
|
---|
| 1583 | endif
|
---|
[1] | 1584 |
|
---|
| 1585 |
|
---|
| 1586 | #
|
---|
| 1587 | # Template for building libraries, shared libraries / modules
|
---|
| 1588 | # which only depends on IPRT for crt.
|
---|
| 1589 | #
|
---|
| 1590 | TEMPLATE_VBOXNOCRTGCC = VBox no-crt GCC libraries and modules, yasm/nasm.
|
---|
| 1591 | TEMPLATE_VBOXNOCRTGCC_DEFS = IN_RING3 IPRT_NO_CRT $(ARCH_BITS_DEFS)
|
---|
| 1592 | TEMPLATE_VBOXNOCRTGCC_ASDEFS = ASM_CALL64_GCC
|
---|
| 1593 | ## @todo C++
|
---|
| 1594 | TEMPLATE_VBOXNOCRTGCC_CFLAGS = -nostdinc -fno-strict-aliasing -fno-math-errno -Wall
|
---|
| 1595 | TEMPLATE_VBOXNOCRTGCC_CFLAGS.amd64 = -mcmodel=medium -fno-common
|
---|
| 1596 | #TEMPLATE_VBOXNOCRTGCC_CFLAGS.release = -O0 -fno-math-errno -fno-peephole2 -fno-strict-aliasing - for win64.
|
---|
| 1597 | TEMPLATE_VBOXNOCRTGCC_CFLAGS.release = -O2 -fno-strict-aliasing
|
---|
| 1598 | TEMPLATE_VBOXNOCRTGCC_CFLAGS.profile = $(TEMPLATE_VBOXNOCRTGCC_CFLAGS.release)
|
---|
| 1599 | TEMPLATE_VBOXNOCRTGCC_CFLAGS.kprofile = $(TEMPLATE_VBOXNOCRTGCC_CFLAGS.release)
|
---|
| 1600 | TEMPLATE_VBOXNOCRTGCC_CFLAGS.darwin = -mdynamic-no-pic
|
---|
[668] | 1601 | TEMPLATE_VBOXNOCRTGCC_INCS = $(PATH_ROOT)/include/iprt/nocrt
|
---|
[1] | 1602 |
|
---|
| 1603 | ifeq ($(BUILD_TARGET).$(BUILD_TARGET_ARCH),win.amd64)
|
---|
| 1604 | # cross compile to 64-bit ELF (linux).
|
---|
| 1605 | TEMPLATE_VBOXNOCRTGCC_TOOL = XGCCAMD64LINUX
|
---|
[655] | 1606 | TEMPLATE_VBOXNOCRTGCC_ASTOOL = YASM
|
---|
[1] | 1607 | TEMPLATE_VBOXNOCRTGCC_ASFLAGS = -f elf64 -DASM_FORMAT_ELF -D__YASM__ -w+orphan-labels -g dwarf2
|
---|
[1689] | 1608 | 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
|
---|
[1] | 1609 | TEMPLATE_VBOXNOCRTGCC_LDFLAGS = -nostdlib
|
---|
| 1610 |
|
---|
| 1611 | else ifeq ($(BUILD_TARGET).$(BUILD_TARGET_ARCH),win.x86)
|
---|
| 1612 | # Use the default GCC (MinGW) with the Microsoft linker.
|
---|
| 1613 | # (Drop all '-g' options as we're unable to strip the debug info.)
|
---|
| 1614 | TEMPLATE_VBOXNOCRTGCC_TOOL = $(VBOX_GCC_TOOL)
|
---|
| 1615 | TEMPLATE_VBOXNOCRTGCC_ASTOOL = $(VBOX_ASTOOL)
|
---|
| 1616 | TEMPLATE_VBOXNOCRTGCC_ASFLAGS = $(VBOX_ASFLAGS)
|
---|
| 1617 | TEMPLATE_VBOXNOCRTGCC_LDTOOL = $(VBOX_VCC_TOOL)
|
---|
| 1618 | TEMPLATE_VBOXNOCRTGCC_LDFLAGS = -Incremental:NO -MapInfo:Exports -NoD
|
---|
| 1619 | TEMPLATE_VBOXNOCRTGCC_LIBS = $(VBOX_GCC_LIBGCC)
|
---|
| 1620 | TEMPLATE_VBOXNOCRTGCC_CFLAGS := $(filter-out -g,$(TEMPLATE_VBOXNOCRTGCC_CFLAGS)) -s
|
---|
| 1621 |
|
---|
| 1622 | else
|
---|
| 1623 | # Use the default GCC.
|
---|
| 1624 | # The use of --exclude-libs ALL is to avoid confusing the linux ld.so.
|
---|
| 1625 | TEMPLATE_VBOXNOCRTGCC_TOOL = $(VBOX_GCC_TOOL)
|
---|
| 1626 | TEMPLATE_VBOXNOCRTGCC_ASTOOL = $(VBOX_ASTOOL)
|
---|
| 1627 | TEMPLATE_VBOXNOCRTGCC_ASFLAGS = $(VBOX_ASFLAGS)
|
---|
[2190] | 1628 | TEMPLATE_VBOXNOCRTGCC_CFLAGS += $(VBOX_GCC_fno-stack-protector)
|
---|
| 1629 | TEMPLATE_VBOXNOCRTGCC_CXXFLAGS += $(VBOX_GCC_fno-stack-protector)
|
---|
[1] | 1630 | TEMPLATE_VBOXNOCRTGCC_LDFLAGS = -nostdlib
|
---|
[534] | 1631 | ifneq ($(filter-out os2 darwin solaris,$(BUILD_TARGET)),)
|
---|
[122] | 1632 | ifneq ($(BUILD_TARGET_ARCH),amd64)
|
---|
| 1633 | TEMPLATE_VBOXNOCRTGCC_LDFLAGS += -Wl,--no-undefined
|
---|
| 1634 | endif
|
---|
[1] | 1635 | endif
|
---|
[668] | 1636 | ifneq ($(filter-out freebsd,$(BUILD_TARGET)),)
|
---|
| 1637 | TEMPLATE_VBOXNOCRTGCC_LIBS = # FIXME - has unwind mess.
|
---|
| 1638 | else
|
---|
| 1639 | TEMPLATE_VBOXNOCRTGCC_LIBS = $(VBOX_GCC_LIBGCC)
|
---|
| 1640 | endif
|
---|
[1] | 1641 | endif
|
---|
| 1642 |
|
---|
| 1643 |
|
---|
| 1644 | #
|
---|
| 1645 | # Same as VBOXNOCRTGCC only it uses GAS as the assembler instead of yasm/nasm.
|
---|
| 1646 | #
|
---|
| 1647 | TEMPLATE_VBOXNOCRTGAS = VBox no-crt GCC libraries and modules, gas.
|
---|
| 1648 | TEMPLATE_VBOXNOCRTGAS_EXTENDS = VBOXNOCRTGCC
|
---|
| 1649 | TEMPLATE_VBOXNOCRTGAS_ASTOOL = $(TEMPLATE_VBOXNOCRTGCC_TOOL)
|
---|
| 1650 | ifeq ($(BUILD_TARGET).$(BUILD_TARGET_ARCH),win.x86)
|
---|
| 1651 | TEMPLATE_VBOXNOCRTGAS_ASFLAGS = -s
|
---|
| 1652 | else
|
---|
| 1653 | TEMPLATE_VBOXNOCRTGAS_ASFLAGS = -g
|
---|
| 1654 | endif
|
---|
| 1655 |
|
---|
| 1656 |
|
---|
| 1657 | #
|
---|
| 1658 | # Template for building executables that is part of the VBox MAIN component.
|
---|
| 1659 | #
|
---|
| 1660 | TEMPLATE_VBOXMAINEXE = VBox Main Executables
|
---|
| 1661 | TEMPLATE_VBOXMAINEXE_ASTOOL = $(VBOX_ASTOOL)
|
---|
| 1662 | TEMPLATE_VBOXMAINEXE_ASFLAGS = $(VBOX_ASFLAGS)
|
---|
[2383] | 1663 | TEMPLATE_VBOXMAINEXE_DEFS = IN_RING3 UNICODE NDEBUG=1
|
---|
[1] | 1664 | TEMPLATE_VBOXMAINEXE_LIBS.kprofile = $(LIB_KPROFILE)
|
---|
[1349] | 1665 | TEMPLATE_VBOXMAINEXE_INCS = \
|
---|
| 1666 | $(VBOX_PATH_SDK)/include
|
---|
| 1667 | ifdef VBOX_WITH_XPCOM
|
---|
| 1668 | TEMPLATE_VBOXMAINEXE_INCS += \
|
---|
| 1669 | $(VBOX_XPCOM_INCS)
|
---|
| 1670 | endif
|
---|
[1] | 1671 |
|
---|
| 1672 | ifeq ($(BUILD_TARGET),win)
|
---|
| 1673 | TEMPLATE_VBOXMAINEXE_SDKS = WINPSDK W2K3DDK
|
---|
| 1674 | ifdef VBOX_USE_VCC80
|
---|
| 1675 | TEMPLATE_VBOXMAINEXE_TOOL = $(VBOX_VCC_TOOL)
|
---|
[297] | 1676 | TEMPLATE_VBOXMAINEXE_CXXFLAGS = -Zi -Zl -GR -GF- -MD -EHsc -W3 -wd4065 -wd4996 -Zc:wchar_t- $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
|
---|
[1] | 1677 | TEMPLATE_VBOXMAINEXE_CXXFLAGS.debug = -RTCsu
|
---|
| 1678 | else
|
---|
| 1679 | TEMPLATE_VBOXMAINEXE_TOOL = VCC70
|
---|
[297] | 1680 | TEMPLATE_VBOXMAINEXE_CXXFLAGS = -Zi -Zl -GR -GX- -GF- -MD -EHsc -W3 -wd4065 $(VBOX_VCC_OPT) $(VBOX_VCC_FP)
|
---|
[1] | 1681 | TEMPLATE_VBOXMAINEXE_CXXFLAGS.debug = -GZ
|
---|
| 1682 | endif
|
---|
| 1683 | TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile = -Gh -GH
|
---|
| 1684 | TEMPLATE_VBOXMAINEXE_CFLAGS = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS)
|
---|
| 1685 | TEMPLATE_VBOXMAINEXE_CFLAGS.debug = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.debug)
|
---|
| 1686 | TEMPLATE_VBOXMAINEXE_CFLAGS.kprofile = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile)
|
---|
[1349] | 1687 | TEMPLATE_VBOXMAINEXE_INCS += \
|
---|
[1] | 1688 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_ATLMFC_INC)
|
---|
| 1689 | TEMPLATE_VBOXMAINEXE_LDFLAGS = \
|
---|
| 1690 | /NOD /INCREMENTAL:NO /MAPINFO:EXPORTS /LARGEADDRESSAWARE /DEBUG\
|
---|
| 1691 | /DISALLOWLIB:libc.lib \
|
---|
| 1692 | /DISALLOWLIB:libcd.lib \
|
---|
| 1693 | /DISALLOWLIB:msvcrt.lib \
|
---|
| 1694 | /DISALLOWLIB:msvcrtd.lib \
|
---|
| 1695 | /DISALLOWLIB:libcmtd.lib \
|
---|
| 1696 | /DISALLOWLIB:libcmt.lib
|
---|
| 1697 | TEMPLATE_VBOXMAINEXE_LIBS = \
|
---|
[606] | 1698 | $(LIB_RUNTIME) \
|
---|
[1] | 1699 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/msvcrt.lib \
|
---|
| 1700 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/msvcprt.lib \
|
---|
| 1701 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/oldnames.lib \
|
---|
| 1702 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_ATLMFC_LIB)/atls.lib
|
---|
[1787] | 1703 | TEMPLATE_VBOXMAINEXE_POST_CMDS = $(VBOX_SIGN_IMAGE_CMDS)
|
---|
[1] | 1704 |
|
---|
| 1705 | else # the GCC guys:
|
---|
| 1706 |
|
---|
[603] | 1707 | TEMPLATE_VBOXMAINEXE_DEFS += VBOX_WITH_XPCOM
|
---|
[1] | 1708 | TEMPLATE_VBOXMAINEXE_TOOL = $(VBOX_GCC_TOOL)
|
---|
[2435] | 1709 | TEMPLATE_VBOXMAINEXE_CXXFLAGS = -g -Wall -Wno-long-long -Wno-trigraphs -pipe -Wno-non-virtual-dtor -fshort-wchar -fpermissive $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden)
|
---|
[1] | 1710 | TEMPLATE_VBOXMAINEXE_CXXFLAGS.debug = -fno-inline
|
---|
| 1711 | TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile = -finstrument-functions
|
---|
[2435] | 1712 | TEMPLATE_VBOXMAINEXE_CFLAGS = -g -Wall -Wno-long-long -Wno-trigraphs -pipe -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fvisibility-hidden)
|
---|
[1] | 1713 | TEMPLATE_VBOXMAINEXE_CFLAGS.debug = -fno-inline
|
---|
| 1714 | TEMPLATE_VBOXMAINEXE_CFLAGS.kprofile = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile)
|
---|
[1349] | 1715 | TEMPLATE_VBOXMAINEXE_INCS += $(VBOX_XPCOM_INCS)
|
---|
[1] | 1716 | ifeq ($(BUILD_TARGET),linux)
|
---|
[1564] | 1717 | TEMPLATE_VBOXMAINEXE_LIBS = pthread m rt
|
---|
[534] | 1718 | else ifeq ($(BUILD_TARGET),l4)
|
---|
[606] | 1719 | TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME)
|
---|
[1] | 1720 | # no libs as yet in l4 target - must be added later
|
---|
[534] | 1721 | else ifeq ($(BUILD_TARGET),os2)
|
---|
[2887] | 1722 | TEMPLATE_VBOXMAINEXE_TOOL = GXX3OMF
|
---|
[606] | 1723 | TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME)
|
---|
[534] | 1724 | else ifeq ($(BUILD_TARGET),darwin)
|
---|
[2887] | 1725 | TEMPLATE_VBOXMAINEXE_TOOL = GXX4MACHO
|
---|
[606] | 1726 | TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME)
|
---|
[604] | 1727 | TEMPLATE_VBOXMAINEXE_LDFLAGS.darwin = -bind_at_load -framework Carbon
|
---|
[534] | 1728 | else ifeq ($(filter-out freebsd netbsd openbsd,$(BUILD_TARGET)),)
|
---|
[2887] | 1729 | TEMPLATE_VBOXMAINEXE_TOOL = GXX3
|
---|
[606] | 1730 | TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME)
|
---|
[1394] | 1731 | TEMPLATE_VBOXMAINEXE_INCS += $(VBOX_PATH_MACOSX_SDK_INCS)
|
---|
[534] | 1732 | else ifeq ($(BUILD_TARGET),solaris)
|
---|
[1] | 1733 | $(warning Warning: VBOX Build: Target $(BUILD_TARGET) is not officially supported!)
|
---|
[2887] | 1734 | TEMPLATE_VBOXMAINEXE_TOOL = GXX3PLAIN
|
---|
[606] | 1735 | TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME) rt
|
---|
[534] | 1736 | else
|
---|
| 1737 | $(warning Warning: VBOX Build: Target $(BUILD_TARGET) is not officially supported!)
|
---|
[1] | 1738 | TEMPLATE_VBOXMAINEXE_LIBS =
|
---|
[586] | 1739 | endif
|
---|
[1] | 1740 |
|
---|
| 1741 | endif # !win
|
---|
| 1742 |
|
---|
| 1743 | #
|
---|
[2752] | 1744 | # Template for building the Main components.
|
---|
[1] | 1745 | # This differ from VBOXMAINEXE only in PIC handling and similar DLL stuff.
|
---|
| 1746 | #
|
---|
[2752] | 1747 | TEMPLATE_VBOXMAIN = VBox Main Components
|
---|
[1] | 1748 | TEMPLATE_VBOXMAIN_EXTENDS = VBOXMAINEXE
|
---|
[46] | 1749 | ifeq ($(BUILD_TARGET_ARCH),amd64)
|
---|
[45] | 1750 | ifneq ($(BUILD_TARGET),win)
|
---|
| 1751 | TEMPLATE_VBOXMAIN_DEFS = PIC $(TEMPLATE_VBOXMAINEXE_DEFS)
|
---|
| 1752 | TEMPLATE_VBOXMAIN_CFLAGS = -fPIC $(TEMPLATE_VBOXMAINEXE_CFLAGS)
|
---|
| 1753 | TEMPLATE_VBOXMAIN_CXXFLAGS = -fPIC $(TEMPLATE_VBOXMAINEXE_CXXFLAGS)
|
---|
| 1754 | TEMPLATE_VBOXMAIN_LDFLAGS = -fPIC $(TEMPLATE_VBOXMAINEXE_LDFLAGS)
|
---|
| 1755 | endif
|
---|
[1] | 1756 | endif
|
---|
[604] | 1757 | TEMPLATE_VBOXMAIN_LDFLAGS.darwin = $(filter-out -bind_at_load,$(TEMPLATE_VBOXMAINEXE_LDFLAGS.darwin))
|
---|
[1] | 1758 |
|
---|
| 1759 | #
|
---|
[1844] | 1760 | # Template for building executables that use the VBox MAIN component (COM stuff etc.).
|
---|
[1] | 1761 | #
|
---|
[1844] | 1762 | TEMPLATE_VBOXMAINCLIENTEXE = VBox MAIN Client (executable)
|
---|
| 1763 | TEMPLATE_VBOXMAINCLIENTEXE_EXTENDS = VBOXMAINCLIENT
|
---|
| 1764 |
|
---|
| 1765 | ## @todo Cleanup the EXE/DLL usage of this template. In the mean time, don't use this template.
|
---|
| 1766 | TEMPLATE_VBOXMAINCLIENT = VBox MAIN Client (executrable)
|
---|
[1] | 1767 | TEMPLATE_VBOXMAINCLIENT_EXTENDS = VBOXMAINEXE
|
---|
| 1768 | ifeq ($(BUILD_TARGET),win)
|
---|
| 1769 | TEMPLATE_VBOXMAINCLIENT_LIBS.win = $(TEMPLATE_VBOXMAINEXE_LIBS.win) \
|
---|
| 1770 | $(PATH_LIB)/VBoxCOM$(VBOX_SUFF_LIB) \
|
---|
| 1771 | $(PATH_SDK_WINPSDK_LIB)/User32.Lib \
|
---|
| 1772 | $(PATH_SDK_WINPSDK_LIB)/Shell32.Lib \
|
---|
| 1773 | $(PATH_SDK_WINPSDK_LIB)/ShLwApi.Lib \
|
---|
| 1774 | $(PATH_SDK_WINPSDK_LIB)/Ole32.Lib \
|
---|
| 1775 | $(PATH_SDK_WINPSDK_LIB)/OleAut32.Lib \
|
---|
| 1776 | $(PATH_SDK_WINPSDK_LIB)/Uuid.Lib
|
---|
| 1777 | else
|
---|
[600] | 1778 | TEMPLATE_VBOXMAINCLIENT_LIBS = $(TEMPLATE_VBOXMAINEXE_LIBS) \
|
---|
[1] | 1779 | $(PATH_LIB)/VBoxXPCOM$(VBOX_SUFF_LIB) \
|
---|
[600] | 1780 | $(PATH_LIB)/VBoxXPCOMGlue$(VBOX_SUFF_LIB) \
|
---|
[3150] | 1781 | $(LIB_XPCOM) \
|
---|
[600] | 1782 | $(LIB_RUNTIME)
|
---|
[1] | 1783 |
|
---|
[600] | 1784 | TEMPLATE_VBOXMAINCLIENT_DEFS = $(TEMPLATE_VBOXMAINEXE_DEFS) \
|
---|
| 1785 | NDEBUG TRIMMED
|
---|
| 1786 | ## Wonder why we compile main with defaults for these two and then drops it in the client executables...
|
---|
| 1787 | TEMPLATE_VBOXMAINCLIENT_CXXFLAGS = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS) \
|
---|
| 1788 | -fno-rtti -fno-exceptions
|
---|
[1] | 1789 | TEMPLATE_VBOXMAINCLIENT_CXXFLAGS.linux = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.linux) \
|
---|
[600] | 1790 | -pthread
|
---|
| 1791 | TEMPLATE_VBOXMAINCLIENT_LDFLAGS.darwin = $(TEMPLATE_VBOXMAINEXE_LDFLAGS.darwin) \
|
---|
| 1792 | -bind_at_load -framework Carbon
|
---|
[1] | 1793 | endif
|
---|
| 1794 |
|
---|
[1844] | 1795 | #
|
---|
| 1796 | # Template for building shared libraries / DLLs that use the VBox MAIN component (COM stuff etc.).
|
---|
| 1797 | # This differ from VBOXMAINCLIENTEXE only in PIC handling and similar DLL stuff.
|
---|
| 1798 | #
|
---|
| 1799 | TEMPLATE_VBOXMAINCLIENTDLL = VBox MAIN Client Shared Libraries
|
---|
| 1800 | TEMPLATE_VBOXMAINCLIENTDLL_EXTENDS = VBOXMAINCLIENTEXE
|
---|
| 1801 | ifeq ($(BUILD_TARGET_ARCH),amd64)
|
---|
| 1802 | ifneq ($(BUILD_TARGET),win)
|
---|
| 1803 | TEMPLATE_VBOXMAINCLIENTDLL_DEFS = PIC $(TEMPLATE_VBOXMAINCLIENTEXE_DEFS)
|
---|
| 1804 | TEMPLATE_VBOXMAINCLIENTDLL_CFLAGS = -fPIC $(TEMPLATE_VBOXMAINCLIENTEXE_CFLAGS)
|
---|
| 1805 | TEMPLATE_VBOXMAINCLIENTDLL_CXXFLAGS = -fPIC $(TEMPLATE_VBOXMAINCLIENTEXE_CXXFLAGS)
|
---|
| 1806 | TEMPLATE_VBOXMAINCLIENTDLL_LDFLAGS = -fPIC $(TEMPLATE_VBOXMAINCLIENTEXE_LDFLAGS)
|
---|
| 1807 | endif
|
---|
| 1808 | endif
|
---|
| 1809 | TEMPLATE_VBOXMAINCLIENTDLL_LDFLAGS.darwin = $(filter-out -bind_at_load,$(TEMPLATE_VBOXMAINCLIENTEXE_LDFLAGS.darwin))
|
---|
[1] | 1810 |
|
---|
[1844] | 1811 |
|
---|
[1] | 1812 | #
|
---|
| 1813 | # Template for building Qt GUI executables.
|
---|
| 1814 | #
|
---|
| 1815 | TEMPLATE_VBOXQTGUIEXE = VBox Qt GUI Executable
|
---|
| 1816 | TEMPLATE_VBOXQTGUIEXE_DEFS = IN_RING3 QT_NO_DEBUG QT_THREAD_SUPPORT $(ARCH_BITS_DEFS)
|
---|
| 1817 | TEMPLATE_VBOXQTGUIEXE_INCS = \
|
---|
[960] | 1818 | $(VBOX_PATH_SDK)/include \
|
---|
[1] | 1819 | $(VBOX_PATH_QT)/include
|
---|
| 1820 |
|
---|
| 1821 | ifeq ($(BUILD_TARGET),win)
|
---|
| 1822 | TEMPLATE_VBOXQTGUIEXE_TOOL = $(VBOX_VCC_TOOL)
|
---|
| 1823 | TEMPLATE_VBOXQTGUIEXE_DEFS += _WIN32_WINNT=0x0500 UNICODE QT_DLL _CRT_SECURE_NO_DEPRECATE
|
---|
| 1824 | ## @todo VCC70 flags?
|
---|
| 1825 | ifdef VBOX_USE_VCC80
|
---|
| 1826 | TEMPLATE_VBOXQTGUIEXE_CXXFLAGS = \
|
---|
| 1827 | -nologo -Zm200 -W3 -MD -EHsc -Zc:wchar_t-
|
---|
| 1828 | TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.debug = -RTCsu
|
---|
| 1829 | else
|
---|
| 1830 | TEMPLATE_VBOXQTGUIEXE_CXXFLAGS = \
|
---|
| 1831 | -nologo -Zm200 -W3 -MD -GX
|
---|
| 1832 | TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.debug = -GZ
|
---|
| 1833 | endif
|
---|
| 1834 | TEMPLATE_VBOXQTGUIEXE_INCS += \
|
---|
| 1835 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_ATLMFC_INC)
|
---|
| 1836 | TEMPLATE_VBOXQTGUIEXE_LDFLAGS = \
|
---|
| 1837 | /NOD /NOLOGO /INCREMENTAL:NO /MAPINFO:EXPORTS /DEBUG \
|
---|
| 1838 | /DELAYLOAD:oleaut32.dll
|
---|
| 1839 | TEMPLATE_VBOXQTGUIEXE_SDKS = WINPSDK
|
---|
| 1840 | TEMPLATE_VBOXQTGUIEXE_LIBS = \
|
---|
| 1841 | $(LIB_QT) \
|
---|
| 1842 | $(LIB_QTMAIN) \
|
---|
| 1843 | $(PATH_LIB)/VBoxCOM$(VBOX_SUFF_LIB) \
|
---|
| 1844 | $(LIB_RUNTIME) \
|
---|
| 1845 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/msvcprt.lib \
|
---|
| 1846 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/msvcrt.lib \
|
---|
| 1847 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/oldnames.lib \
|
---|
| 1848 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib \
|
---|
| 1849 | $(PATH_TOOL_$(VBOX_VCC_TOOL)_ATLMFC_LIB)/atls.lib
|
---|
[1787] | 1850 | TEMPLATE_VBOXQTGUIEXE_POST_CMDS = $(VBOX_SIGN_IMAGE_CMDS)
|
---|
[1] | 1851 |
|
---|
| 1852 | else # the gcc guys:
|
---|
| 1853 | TEMPLATE_VBOXQTGUIEXE_TOOL = $(VBOX_GCC_TOOL)
|
---|
[603] | 1854 | TEMPLATE_VBOXQTGUIEXE_DEFS += VBOX_WITH_XPCOM
|
---|
| 1855 | TEMPLATE_VBOXQTGUIEXE_DEFS.linux = _REENTRANT
|
---|
| 1856 |
|
---|
[1] | 1857 | TEMPLATE_VBOXQTGUIEXE_INCS += \
|
---|
| 1858 | $(LIB_SDL_INC) \
|
---|
| 1859 | $(VBOX_XPCOM_INCS)
|
---|
| 1860 | TEMPLATE_VBOXQTGUIEXE_CXXFLAGS = \
|
---|
| 1861 | -pipe -Wall -W -frtti -fno-exceptions -Wno-non-virtual-dtor \
|
---|
[2435] | 1862 | -Wno-long-long -fshort-wchar -fno-strict-aliasing \
|
---|
| 1863 | $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden)
|
---|
[603] | 1864 | TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.linux = -pthread
|
---|
[1] | 1865 | ## @todo no $(LIB_QTMAIN) here?
|
---|
| 1866 | TEMPLATE_VBOXQTGUIEXE_LIBS = \
|
---|
| 1867 | $(LIB_QT) \
|
---|
| 1868 | $(LIB_SDL) \
|
---|
| 1869 | $(PATH_LIB)/VBoxXPCOM$(VBOX_SUFF_LIB) \
|
---|
| 1870 | $(LIB_RUNTIME) \
|
---|
| 1871 | $(LIB_REM) \
|
---|
| 1872 | $(LIB_VMM) \
|
---|
[957] | 1873 | $(PATH_LIB)/VBoxXPCOMGlue$(VBOX_SUFF_LIB) \
|
---|
[3150] | 1874 | $(LIB_XPCOM)
|
---|
[1] | 1875 |
|
---|
[2570] | 1876 | ifeq ($(BUILD_TARGET_ARCH),amd64)
|
---|
| 1877 | TEMPLATE_VBOXQTGUIEXE_LIBPATH = \
|
---|
| 1878 | $(VBOX_PATH_QT)/lib64 $(VBOX_PATH_QT)/lib
|
---|
| 1879 | else
|
---|
| 1880 | TEMPLATE_VBOXQTGUIEXE_LIBPATH = \
|
---|
[957] | 1881 | $(VBOX_PATH_QT)/lib
|
---|
[2570] | 1882 | endif
|
---|
[957] | 1883 |
|
---|
| 1884 | ifeq ($(BUILD_TARGET),darwin)
|
---|
[1394] | 1885 | TEMPLATE_VBOXQTGUIEXE_INCS += $(VBOX_PATH_MACOSX_SDK_INCS)
|
---|
| 1886 | TEMPLATE_VBOXQTGUIEXE_LDFLAGS += -framework Carbon -framework QuickTime -bind_at_load
|
---|
[957] | 1887 | TEMPLATE_VBOXQTGUIEXE_LIBS +=
|
---|
| 1888 | TEMPLATE_VBOXQTGUIEXE_LIBPATH +=
|
---|
| 1889 | else ifeq ($(BUILD_TARGET),os2)
|
---|
| 1890 | TEMPLATE_VBOXQTGUIEXE_LIBS +=
|
---|
| 1891 | TEMPLATE_VBOXQTGUIEXE_LIBPATH +=
|
---|
| 1892 | else
|
---|
| 1893 | TEMPLATE_VBOXQTGUIEXE_LIBS += \
|
---|
| 1894 | Xext \
|
---|
| 1895 | X11 \
|
---|
| 1896 | m \
|
---|
| 1897 | $(LIB_PTHREAD)
|
---|
| 1898 | TEMPLATE_VBOXQTGUIEXE_LIBPATH += \
|
---|
[796] | 1899 | $(VBOX_LIBPATH_X11)
|
---|
[957] | 1900 | endif
|
---|
[1] | 1901 |
|
---|
| 1902 | endif
|
---|
| 1903 |
|
---|
| 1904 | #
|
---|
| 1905 | # Template for building Qt GUI components.
|
---|
| 1906 | #
|
---|
| 1907 | TEMPLATE_VBOXQTGUI = VBox Qt GUI Components
|
---|
| 1908 | TEMPLATE_VBOXQTGUI_EXTENDS = VBOXQTGUIEXE
|
---|
[957] | 1909 | TEMPLATE_VBOXQTGUI_LIBS = $(filter-out $(QTMAIN) $(PATH_BIN)/VBoxXML$(VBOX_SUFF_DLL),$(TEMPLATE_VBOXQTGUIEXE_LIBS))
|
---|
| 1910 | ifeq ($(BUILD_TARGET),darwin)
|
---|
[1394] | 1911 | TEMPLATE_VBOXQTGUI_LDFLAGS = $(filter-out -framework Carbon -framework QuickTime -bind_at_load,$(TEMPLATE_VBOXQTGUIEXE_LDFLAGS))
|
---|
[957] | 1912 | endif
|
---|
[116] | 1913 | ifeq ($(BUILD_TARGET_ARCH),amd64)
|
---|
| 1914 | ifneq ($(BUILD_TARGET),win)
|
---|
| 1915 | TEMPLATE_VBOXQTGUI_DEFS = PIC $(TEMPLATE_VBOXQTGUIEXE_DEFS)
|
---|
| 1916 | TEMPLATE_VBOXQTGUI_CFLAGS = -fPIC $(TEMPLATE_VBOXQTGUIEXE_CFLAGS)
|
---|
| 1917 | TEMPLATE_VBOXQTGUI_CXXFLAGS = -fPIC $(TEMPLATE_VBOXQTGUIEXE_CXXFLAGS)
|
---|
| 1918 | TEMPLATE_VBOXQTGUI_LDFLAGS = -fPIC $(TEMPLATE_VBOXQTGUIEXE_LDFLAGS)
|
---|
| 1919 | endif
|
---|
| 1920 | endif
|
---|
[1] | 1921 |
|
---|
| 1922 |
|
---|
| 1923 | #
|
---|
| 1924 | # Template for building build bldprogs.
|
---|
| 1925 | #
|
---|
| 1926 | TEMPLATE_VBOXBLDPROG = VBox Build Program
|
---|
| 1927 | TEMPLATE_VBOXBLDPROG_DEFS = IN_RING3
|
---|
| 1928 | ifeq ($(BUILD_PLATFORM),win)
|
---|
| 1929 | ifeq ($(BUILD_PLATFORM_ARCH),x86)
|
---|
| 1930 | ifdef VBOX_USE_VCC80
|
---|
| 1931 | TEMPLATE_VBOXBLDPROG_TOOL = VCC80X86
|
---|
| 1932 | else
|
---|
| 1933 | TEMPLATE_VBOXBLDPROG_TOOL = VCC70
|
---|
| 1934 | endif
|
---|
| 1935 | TEMPLATE_VBOXBLDPROG_SDKS = WIN32SDK
|
---|
| 1936 | else
|
---|
| 1937 | TEMPLATE_VBOXBLDPROG_TOOL = VCC80AMD64
|
---|
| 1938 | TEMPLATE_VBOXBLDPROG_SDKS = WIN64SDK
|
---|
| 1939 | endif
|
---|
| 1940 | ifneq ($(TEMPLATE_VBOXBLDPROG_TOOL),VCC70)
|
---|
| 1941 | TEMPLATE_VBOXBLDPROG_CXXFLAGS = -Zi -Zl -GR- -EHs-c- -GF- -MT -W3 -wd4996 -Zc:wchar_t-
|
---|
| 1942 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.debug = -RTCsu
|
---|
| 1943 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.release = -O2 -Oy- -GS-
|
---|
| 1944 | else
|
---|
| 1945 | TEMPLATE_VBOXBLDPROG_CXXFLAGS = -Zi -Zl -GR- -GX- -GF- -MT -W3
|
---|
| 1946 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.debug = -GZ
|
---|
| 1947 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.release = -Ogitb2 -Oy-
|
---|
| 1948 | endif
|
---|
| 1949 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release)
|
---|
| 1950 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release)
|
---|
| 1951 | TEMPLATE_VBOXBLDPROG_CFLAGS = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS)
|
---|
| 1952 | TEMPLATE_VBOXBLDPROG_CFLAGS.debug = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.debug)
|
---|
| 1953 | TEMPLATE_VBOXBLDPROG_CFLAGS.release = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release)
|
---|
| 1954 | TEMPLATE_VBOXBLDPROG_CFLAGS.profile = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile)
|
---|
| 1955 | TEMPLATE_VBOXBLDPROG_CFLAGS.kprofile = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile)
|
---|
| 1956 | TEMPLATE_VBOXBLDPROG_LDFLAGS = \
|
---|
| 1957 | /NOD /INCREMENTAL:NO /MAPINFO:EXPORTS /LARGEADDRESSAWARE /DEBUG \
|
---|
| 1958 | /DISALLOWLIB:libcd.lib \
|
---|
| 1959 | /DISALLOWLIB:libcmtd.lib \
|
---|
| 1960 | /DISALLOWLIB:msvcrt.lib \
|
---|
| 1961 | /DISALLOWLIB:msvcrtd.lib \
|
---|
| 1962 | /DISALLOWLIB:msvcprt.lib \
|
---|
| 1963 | /DISALLOWLIB:msvcprtd.lib
|
---|
| 1964 | TEMPLATE_VBOXBLDPROG_LIBS = \
|
---|
| 1965 | $(PATH_TOOL_$(TEMPLATE_VBOXBLDPROG_TOOL)_LIB)/oldnames.lib \
|
---|
| 1966 | $(PATH_TOOL_$(TEMPLATE_VBOXBLDPROG_TOOL)_LIB)/libcmt.lib \
|
---|
| 1967 | $(PATH_TOOL_$(TEMPLATE_VBOXBLDPROG_TOOL)_LIB)/libcpmt.lib
|
---|
| 1968 |
|
---|
| 1969 | else
|
---|
| 1970 | # (gcc of some kind )
|
---|
[2887] | 1971 | TEMPLATE_VBOXBLDPROG_TOOL = GXX3
|
---|
[1] | 1972 | TEMPLATE_VBOXBLDPROG_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
|
---|
| 1973 | TEMPLATE_VBOXBLDPROG_CFLAGS.debug = -fno-inline
|
---|
| 1974 | TEMPLATE_VBOXBLDPROG_CFLAGS.release = -O2 -fno-omit-frame-pointer -fno-strict-aliasing
|
---|
| 1975 | TEMPLATE_VBOXBLDPROG_CFLAGS.profile = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile)
|
---|
| 1976 | TEMPLATE_VBOXBLDPROG_CFLAGS.kprofile = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile)
|
---|
| 1977 | TEMPLATE_VBOXBLDPROG_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs -pipe
|
---|
| 1978 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.debug = -fno-inline
|
---|
| 1979 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.release = -O2 -fno-omit-frame-pointer -fno-strict-aliasing
|
---|
| 1980 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.profile = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release)
|
---|
| 1981 | TEMPLATE_VBOXBLDPROG_CXXFLAGS.kprofile = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.release)
|
---|
| 1982 | ifeq ($(BUILD_PLATFORM),linux)
|
---|
[1564] | 1983 | TEMPLATE_VBOXBLDPROG_LIBS = pthread m rt dl
|
---|
[534] | 1984 | else ifeq ($(BUILD_PLATFORM),os2)
|
---|
[2887] | 1985 | TEMPLATE_VBOXBLDPROG_TOOL = GXX3OMF
|
---|
[1] | 1986 | TEMPLATE_VBOXBLDPROG_LIBS = socket iconv
|
---|
[534] | 1987 | else ifeq ($(BUILD_PLATFORM),darwin)
|
---|
[2887] | 1988 | TEMPLATE_VBOXBLDPROG_TOOL = GXX4MACHO
|
---|
[1] | 1989 | TEMPLATE_VBOXBLDPROG_LIBS =
|
---|
[1394] | 1990 | TEMPLATE_VBOXBLDPROG_INCS += $(VBOX_PATH_MACOSX_SDK_INCS)
|
---|
[534] | 1991 | else ifeq ($(filter-out freebsd netbsd openbsd,$(BUILD_PLATFORM)),)
|
---|
[2887] | 1992 | TEMPLATE_VBOXBLDPROG_TOOL = GXX3
|
---|
[534] | 1993 | TEMPLATE_VBOXBLDPROG_LIBS =
|
---|
| 1994 | else ifeq ($(BUILD_PLATFORM),solaris)
|
---|
[1] | 1995 | $(warning Warning: VBOX Build: Target $(BUILD_PLATFORM) is not officially supported!)
|
---|
[2887] | 1996 | TEMPLATE_VBOXBLDPROG_TOOL = GXX3PLAIN
|
---|
[534] | 1997 | TEMPLATE_VBOXBLDPROG_LIBS = rt
|
---|
[586] | 1998 | else
|
---|
[534] | 1999 | $(warning Warning: VBOX Build: Target $(BUILD_PLATFORM) is not officially supported!)
|
---|
[586] | 2000 | endif
|
---|
[534] | 2001 |
|
---|
[1] | 2002 | endif # !win
|
---|
| 2003 |
|
---|
| 2004 |
|
---|
| 2005 |
|
---|
| 2006 | #
|
---|
| 2007 | # Template for building R3 win32 guest additions.
|
---|
| 2008 | #
|
---|
| 2009 | TEMPLATE_VBOXW32GUESTR3 = VBox Win32 Guest Program
|
---|
| 2010 | TEMPLATE_VBOXW32GUESTR3_INST = $(INST_ADDITIONS)
|
---|
| 2011 | TEMPLATE_VBOXW32GUESTR3_BLD_TRG = win
|
---|
| 2012 | TEMPLATE_VBOXW32GUESTR3_BLD_TRG_ARCH = x86
|
---|
| 2013 | TEMPLATE_VBOXW32GUESTR3_BLD_TRG_CPU = i386
|
---|
[1728] | 2014 | TEMPLATE_VBOXW32GUESTR3_DEFS = IN_GUEST IN_GUEST_R3 IN_RING3 IN_RT_R3 __WIN32__ __WIN__ HC_ARCH_BITS=32 GC_ARCH_BITS=32
|
---|
[1] | 2015 | TEMPLATE_VBOXW32GUESTR3_RCDEFS = \
|
---|
| 2016 | VBOX_VERSION_MAJOR=\"$(VBOX_VERSION_MAJOR)\" \
|
---|
| 2017 | VBOX_VERSION_MINOR=\"$(VBOX_VERSION_MINOR)\" \
|
---|
| 2018 | VBOX_VERSION_BUILD=\"$(VBOX_VERSION_BUILD)\" \
|
---|
| 2019 | VBOX_VERSION_MAJOR_NR=$(VBOX_VERSION_MAJOR) \
|
---|
| 2020 | VBOX_VERSION_MINOR_NR=$(VBOX_VERSION_MINOR) \
|
---|
| 2021 | VBOX_VERSION_BUILD_NR=$(VBOX_VERSION_BUILD)
|
---|
| 2022 | TEMPLATE_VBOXW32GUESTR3_ASTOOL = YASM
|
---|
| 2023 | TEMPLATE_VBOXW32GUESTR3_ASFLAGS = -f win -DASM_FORMAT_PE -D__YASM__ -w+orphan-labels
|
---|
| 2024 | TEMPLATE_VBOXW32GUESTR3_DLLSUFF = .dll
|
---|
| 2025 | TEMPLATE_VBOXW32GUESTR3_EXESUFF = .exe
|
---|
| 2026 | TEMPLATE_VBOXW32GUESTR3_LIBSUFF = .lib
|
---|
| 2027 | TEMPLATE_VBOXW32GUESTR3_ARLIBSUFF = .lib
|
---|
| 2028 | TEMPLATE_VBOXW32GUESTR3_SDKS = WIN32SDK W2K3DDKX86
|
---|
| 2029 | ifdef VBOX_USE_VCC80
|
---|
| 2030 | TEMPLATE_VBOXW32GUESTR3_TOOL = VCC80X86
|
---|
| 2031 | TEMPLATE_VBOXW32GUESTR3_CXXFLAGS = -Zi -Zl -GR- -EHs-c- -GF- -MT -U__LINUX__ -U__OS2__ -W3 -wd4996 -Zc:wchar_t-
|
---|
| 2032 | TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.debug = -RTCsu
|
---|
| 2033 | TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.release = -O2 -Oy- -GS-
|
---|
| 2034 | else
|
---|
| 2035 | TEMPLATE_VBOXW32GUESTR3_TOOL = VCC70
|
---|
| 2036 | TEMPLATE_VBOXW32GUESTR3_CXXFLAGS = -Zi -Zl -GR- -GX- -GF- -MT -U__LINUX__ -U__OS2__ -W3
|
---|
| 2037 | TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.debug = -GZ
|
---|
| 2038 | TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.release = -Ogitb2 -Oy-
|
---|
| 2039 | endif
|
---|
| 2040 | TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.profile = $(TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.release)
|
---|
| 2041 | TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.kprofile = $(TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.release)
|
---|
| 2042 | TEMPLATE_VBOXW32GUESTR3_CFLAGS = $(TEMPLATE_VBOXW32GUESTR3_CXXFLAGS)
|
---|
| 2043 | TEMPLATE_VBOXW32GUESTR3_CFLAGS.debug = $(TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.debug)
|
---|
| 2044 | TEMPLATE_VBOXW32GUESTR3_CFLAGS.release = $(TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.release)
|
---|
| 2045 | TEMPLATE_VBOXW32GUESTR3_CFLAGS.profile = $(TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.profile)
|
---|
| 2046 | TEMPLATE_VBOXW32GUESTR3_CFLAGS.kprofile = $(TEMPLATE_VBOXW32GUESTR3_CXXFLAGS.kprofile)
|
---|
| 2047 | TEMPLATE_VBOXW32GUESTR3_INCS = \
|
---|
[960] | 2048 | $(VBOX_PATH_SDK)/include
|
---|
[1] | 2049 | TEMPLATE_VBOXW32GUESTR3_LDFLAGS = \
|
---|
| 2050 | /NOD /INCREMENTAL:NO /MAPINFO:EXPORTS /LARGEADDRESSAWARE \
|
---|
| 2051 | /DISALLOWLIB:libc.lib \
|
---|
| 2052 | /DISALLOWLIB:libcd.lib \
|
---|
| 2053 | /DISALLOWLIB:msvcrt.lib \
|
---|
| 2054 | /DISALLOWLIB:libcmtd.lib \
|
---|
| 2055 | /DISALLOWLIB:msvcrtd.lib
|
---|
| 2056 | ifdef VBOX_USE_VCC80
|
---|
| 2057 | TEMPLATE_VBOXW32GUESTR3_LIBS = \
|
---|
| 2058 | $(PATH_TOOL_VCC80X86_LIB)/oldnames.lib \
|
---|
| 2059 | $(PATH_TOOL_VCC80X86_LIB)/libcmt.lib \
|
---|
| 2060 | $(PATH_SDK_W2K3DDKX86_LIB)/ntdll.lib
|
---|
| 2061 | else
|
---|
| 2062 | TEMPLATE_VBOXW32GUESTR3_LIBS = \
|
---|
| 2063 | $(PATH_TOOL_VCC70_LIB)/oldnames.lib \
|
---|
| 2064 | $(PATH_TOOL_VCC70_LIB)/libcmt.lib \
|
---|
| 2065 | $(PATH_SDK_W2K3DDKX86_LIB)/ntdll.lib
|
---|
| 2066 | endif
|
---|
[1787] | 2067 | TEMPLATE_VBOXW32GUESTR3_POST_CMDS = $(VBOX_SIGN_IMAGE_CMDS)
|
---|
[1] | 2068 |
|
---|
| 2069 | #
|
---|
| 2070 | # R3 win32 guest libraries
|
---|
| 2071 | #
|
---|
| 2072 | TEMPLATE_VBOXW32GUESTR3LIB = VBox Win32 Guest User Libraries
|
---|
| 2073 | TEMPLATE_VBOXW32GUESTR3LIB_EXTENDS = VBOXW32GUESTR3
|
---|
| 2074 | TEMPLATE_VBOXW32GUESTR3LIB_INST = $(INST_ADDITIONS_LIB)
|
---|
| 2075 |
|
---|
| 2076 |
|
---|
| 2077 | #
|
---|
| 2078 | # Template for building R0 win32 guest tools.
|
---|
| 2079 | #
|
---|
| 2080 | TEMPLATE_VBOXW32GUESTR0 = VBox Win32 Guest Driver
|
---|
| 2081 | TEMPLATE_VBOXW32GUESTR0_INST = $(INST_ADDITIONS)
|
---|
| 2082 | TEMPLATE_VBOXW32GUESTR0_BLD_TRG = win
|
---|
| 2083 | TEMPLATE_VBOXW32GUESTR0_BLD_TRG_ARCH = x86
|
---|
| 2084 | TEMPLATE_VBOXW32GUESTR0_BLD_TRG_CPU = i386
|
---|
[1728] | 2085 | TEMPLATE_VBOXW32GUESTR0_DEFS = _X86_ IN_GUEST IN_GUEST_R0 IN_RING0 IN_RT_R0 __WIN32__ __WIN__ HC_ARCH_BITS=32 GC_ARCH_BITS=32
|
---|
[1] | 2086 | TEMPLATE_VBOXW32GUESTR0_RCDEFS = \
|
---|
| 2087 | VBOX_VERSION_MAJOR=\"$(VBOX_VERSION_MAJOR)\" \
|
---|
| 2088 | VBOX_VERSION_MINOR=\"$(VBOX_VERSION_MINOR)\" \
|
---|
| 2089 | VBOX_VERSION_BUILD=\"$(VBOX_VERSION_BUILD)\" \
|
---|
| 2090 | VBOX_VERSION_MAJOR_NR=$(VBOX_VERSION_MAJOR) \
|
---|
| 2091 | VBOX_VERSION_MINOR_NR=$(VBOX_VERSION_MINOR) \
|
---|
| 2092 | VBOX_VERSION_BUILD_NR=$(VBOX_VERSION_BUILD)
|
---|
| 2093 | TEMPLATE_VBOXW32GUESTR0_ASTOOL = YASM
|
---|
| 2094 | TEMPLATE_VBOXW32GUESTR0_ASFLAGS = -f win32 -DASM_FORMAT_PE -D__YASM__ -w+orphan-labels
|
---|
| 2095 | TEMPLATE_VBOXW32GUESTR0_SYSSUFF = .sys
|
---|
| 2096 | ifdef VBOX_USE_VCC80
|
---|
| 2097 | TEMPLATE_VBOXW32GUESTR0_TOOL = VCC80X86
|
---|
| 2098 | TEMPLATE_VBOXW32GUESTR0_CXXFLAGS = -Zi -Zl -GR- -GS- -EHs-c- -GF- -Gz -U__LINUX__ -U__OS2__ -W3 -wd4996 -Zc:wchar_t-
|
---|
| 2099 | TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.debug = -GR- -EHs-c- -Zl
|
---|
| 2100 | TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.release = -O2 -Oy-
|
---|
| 2101 | else
|
---|
| 2102 | TEMPLATE_VBOXW32GUESTR0_TOOL = VCC70
|
---|
| 2103 | TEMPLATE_VBOXW32GUESTR0_CXXFLAGS = -Zi -Zl -GR- -GX- -GF- -Gz -U__LINUX__ -U__OS2__ -W3
|
---|
| 2104 | TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.debug = -GR- -GX- -Zl
|
---|
| 2105 | TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.release = -Ogitb2 -Oy-
|
---|
| 2106 | endif
|
---|
| 2107 | TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.profile = $(TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.release)
|
---|
| 2108 | TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.kprofile = $(TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.release)
|
---|
| 2109 | TEMPLATE_VBOXW32GUESTR0_CFLAGS = $(TEMPLATE_VBOXW32GUESTR0_CXXFLAGS)
|
---|
| 2110 | TEMPLATE_VBOXW32GUESTR0_CFLAGS.debug = $(TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.debug)
|
---|
| 2111 | TEMPLATE_VBOXW32GUESTR0_CFLAGS.release = $(TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.release)
|
---|
| 2112 | TEMPLATE_VBOXW32GUESTR0_CFLAGS.profile = $(TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.profile)
|
---|
| 2113 | TEMPLATE_VBOXW32GUESTR0_CFLAGS.kprofile = $(TEMPLATE_VBOXW32GUESTR0_CXXFLAGS.kprofile)
|
---|
| 2114 | TEMPLATE_VBOXW32GUESTR0_LDFLAGS = \
|
---|
| 2115 | -Driver -Subsystem:NATIVE -Incremental:NO -Align:32 -MapInfo:Exports -NoD -Machine:X86 -Debug \
|
---|
| 2116 | /DISALLOWLIB:libcd.lib \
|
---|
| 2117 | /DISALLOWLIB:msvcrt.lib \
|
---|
| 2118 | /DISALLOWLIB:msvcrtd.lib \
|
---|
| 2119 | /DISALLOWLIB:libcmtd.lib
|
---|
[1787] | 2120 | TEMPLATE_VBOXW32GUESTR0_POST_CMDS = $(VBOX_SIGN_DRIVER_CMDS)
|
---|
[1] | 2121 |
|
---|
| 2122 | #
|
---|
| 2123 | # R0 win32 guest libraries
|
---|
| 2124 | #
|
---|
| 2125 | TEMPLATE_VBOXW32GUESTR0LIB = VBox Win32 Guest Driver
|
---|
| 2126 | TEMPLATE_VBOXW32GUESTR0LIB_EXTENDS = VBOXW32GUESTR0
|
---|
| 2127 | TEMPLATE_VBOXW32GUESTR0LIB_INST = $(INST_ADDITIONS_LIB)
|
---|
| 2128 |
|
---|
| 2129 |
|
---|
| 2130 | #
|
---|
| 2131 | # Windows rc workaround for crosscompiling.
|
---|
| 2132 | # (Some (old) Wine versions fails loading msvcrt.dll from the VCC bin directory.)
|
---|
| 2133 | #
|
---|
| 2134 | ifneq ($(BUILD_PLATFORM),win)
|
---|
| 2135 | TOOL_VCC80X86_RC := $(EXEC_X86_WIN32) $(PATH_DEVTOOLS)/win.x86/bin/rc.exe
|
---|
| 2136 | TOOL_VCC80AMD64_RC := $(EXEC_X86_WIN32) $(PATH_DEVTOOLS)/win.x86/bin/rc.exe
|
---|
| 2137 | TOOL_VCC70_RC := $(EXEC_X86_WIN32) $(PATH_DEVTOOLS)/win.x86/bin/rc.exe
|
---|
| 2138 | WIN32_MC = $(EXEC_X86_WIN32) $(PATH_DEVTOOLS)/win.x86/bin/mc.exe
|
---|
| 2139 | else
|
---|
| 2140 | WIN32_MC = $(EXEC_X86_WIN32) $(firstword $(wildcard \
|
---|
| 2141 | $(PATH_SDK_WINPSDK_BIN)/MC.Exe\
|
---|
| 2142 | $(PATH_SDK_WINPSDK)/Bin/MC.Exe\
|
---|
| 2143 | $(PATH_SDK_WIN32SDK_BIN)/MC.Exe\
|
---|
| 2144 | $(PATH_SDK_WIN64SDK_BIN)/MC.Exe\
|
---|
| 2145 | $(PATH_DEVTOOLS)/win.x86/bin/mc.exe\
|
---|
| 2146 | ) Sorry_Cannot_find_mc_in_the_PSDK)
|
---|
| 2147 | endif
|
---|
| 2148 |
|
---|
| 2149 |
|
---|
| 2150 | #
|
---|
| 2151 | # Template for syntax checking the linux guest additions.
|
---|
| 2152 | # Not properly realized yet.
|
---|
| 2153 | #
|
---|
| 2154 | TEMPLATE_VBOXLNX32GUESTR0 = Template for *syntax checking* linux guest additions kernel modules
|
---|
| 2155 | TEMPLATE_VBOXLNX32GUESTR0_TOOL = $(VBOX_GCC_TOOL)
|
---|
| 2156 | TEMPLATE_VBOXLNX32GUESTR0_BLD_TRG = linux
|
---|
[1728] | 2157 | TEMPLATE_VBOXLNX32GUESTR0_DEFS = __KERNEL__ MODULE IN_GUEST IN_GUEST_R0 IN_RING0 IN_RT_R0
|
---|
[907] | 2158 | TEMPLATE_VBOXLNX32GUESTR0_INCS = $(VBOX_LINUX_INCS)
|
---|
[1] | 2159 | TEMPLATE_VBOXLNX32GUESTR0_CFLAGS = -nostdinc -iwithprefix include \
|
---|
| 2160 | -O2 -Wall -Wstrict-prototypes -Wno-trigraphs $(VBOX_GCC_Wno-pointer-sign) \
|
---|
| 2161 | $(VBOX_GCC_fno-stack-protector) -fno-strict-aliasing -fno-common \
|
---|
| 2162 | -mpreferred-stack-boundary=2 -msoft-float
|
---|
| 2163 | TEMPLATE_VBOXLNX32GUESTR0_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wno-pointer-sign,$(TEMPLATE_VBOXLNX32GUESTR0_CFLAGS)) -fno-exceptions -fno-rtti
|
---|
| 2164 | ifndef VBOX_LINUX_VERSION_2_4
|
---|
| 2165 | # 2.6
|
---|
| 2166 | TEMPLATE_VBOXLNX32GUESTR0_SYSSUFF = .ko
|
---|
| 2167 | TEMPLATE_VBOXLNX32GUESTR0_LDFLAGS = -m elf_i386 -r
|
---|
| 2168 | else
|
---|
| 2169 | # 2.4
|
---|
| 2170 | TEMPLATE_VBOXLNX32GUESTR0_SYSSUFF = .o
|
---|
| 2171 | TEMPLATE_VBOXLNX32GUESTR0_LDFLAGS = -r -s
|
---|
| 2172 | endif
|
---|
| 2173 |
|
---|
[762] | 2174 |
|
---|
| 2175 | #
|
---|
| 2176 | # Tools and templates for building 32-bit linux guest additions.
|
---|
| 2177 | #
|
---|
| 2178 | TOOL_VBOXLNX32NOCPPLD = Linker tool replacing the VBOX_GCC32_TOOL linker (g++).
|
---|
| 2179 | TOOL_VBOXLNX32NOCPPLD_LINK_PROGRAM_OUTPUT = $(outbase).map
|
---|
| 2180 | TOOL_VBOXLNX32NOCPPLD_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
|
---|
| 2181 | TOOL_VBOXLNX32NOCPPLD_LINK_PROGRAM_DEPORD =
|
---|
| 2182 | define TOOL_VBOXLNX32NOCPPLD_LINK_PROGRAM_CMDS
|
---|
| 2183 | $(QUIET)$(TOOL_$(VBOX_GCC32_TOOL)_CC) $(flags) -o $(out) $(objs)\
|
---|
| 2184 | $(foreach p,$(libpath), -L$(p))\
|
---|
| 2185 | $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\
|
---|
| 2186 | $(call TOOL_$(VBOX_GCC32_TOOL)_LD_MAP,$(outbase).map)
|
---|
| 2187 | endef
|
---|
| 2188 | TOOL_VBOXLNX32NOCPPLD_LINK_DLL_OUTPUT = $(outbase).map
|
---|
| 2189 | TOOL_VBOXLNX32NOCPPLD_LINK_DLL_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
|
---|
| 2190 | TOOL_VBOXLNX32NOCPPLD_LINK_DLL_DEPORD =
|
---|
| 2191 | # (no SONAME for now)
|
---|
| 2192 | define TOOL_VBOXLNX32NOCPPLD_LINK_DLL_CMDS
|
---|
| 2193 | $(QUIET)$(TOOL_$(VBOX_GCC32_TOOL)_CC) $(TOOL_$(VBOX_GCC32_TOOL)_LDFLAGS.dll) $(flags) -o $(out)\
|
---|
| 2194 | $(objs)\
|
---|
| 2195 | $(foreach p,$(libpath), -L$(p))\
|
---|
| 2196 | $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\
|
---|
| 2197 | $(call TOOL_$(VBOX_GCC32_TOOL)_LD_MAP,$(outbase).map)
|
---|
| 2198 | endef
|
---|
| 2199 | TOOL_VBOXLNX32NOCPPLD_LINK_SYSMOD_OUTPUT = $(outbase).map
|
---|
| 2200 | TOOL_VBOXLNX32NOCPPLD_LINK_SYSMOD_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
|
---|
| 2201 | TOOL_VBOXLNX32NOCPPLD_LINK_SYSMOD_DEPORD =
|
---|
| 2202 | define TOOL_VBOXLNX32NOCPPLD_LINK_SYSMOD_CMDS
|
---|
| 2203 | $(QUIET)$(TOOL_$(VBOX_GCC32_TOOL)_LD_SYSMOD) $(TOOL_VBOXLNX32NOCPPLD_LDFLAGS.sysmod) $(flags) -o $(out) $(objs)\
|
---|
| 2204 | $(foreach p,$(libpath), -L$(p))\
|
---|
| 2205 | $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\
|
---|
| 2206 | $(call TOOL_$(VBOX_GCC32_TOOL)_LD_SYSMOD_MAP,$(outbase).map)
|
---|
| 2207 | endef
|
---|
| 2208 |
|
---|
[1] | 2209 | TEMPLATE_VBOXLNX32GUESTR3EXE = Template for building 32-bit linux guest additions programs.
|
---|
| 2210 | TEMPLATE_VBOXLNX32GUESTR3EXE_INST = $(INST_ADDITIONS)
|
---|
| 2211 | TEMPLATE_VBOXLNX32GUESTR3EXE_BLD_TRG = linux
|
---|
| 2212 | TEMPLATE_VBOXLNX32GUESTR3EXE_BLD_TRG_ARCH = x86
|
---|
| 2213 | TEMPLATE_VBOXLNX32GUESTR3EXE_BLD_TRG_CPU = i386
|
---|
| 2214 | TEMPLATE_VBOXLNX32GUESTR3EXE_TOOL = $(VBOX_GCC32_TOOL)
|
---|
| 2215 | TEMPLATE_VBOXLNX32GUESTR3EXE_ASTOOL = YASM
|
---|
| 2216 | TEMPLATE_VBOXLNX32GUESTR3EXE_ASFLAGS = -f elf32 -DASM_FORMAT_ELF -D__YASM__ -w+orphan-labels
|
---|
[1728] | 2217 | TEMPLATE_VBOXLNX32GUESTR3EXE_DEFS = IN_GUEST IN_GUEST_R3 IN_RING3 HC_ARCH_BITS=32 GC_ARCH_BITS=32
|
---|
[147] | 2218 | TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs -pipe $(VBOX_GCC_fno-stack-protector)
|
---|
[1] | 2219 | TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.debug = -fno-inline
|
---|
| 2220 | TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.release = -O2 -fno-omit-frame-pointer -fno-strict-aliasing
|
---|
| 2221 | TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.profile = $(TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.release)
|
---|
| 2222 | TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.kprofile = $(TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.release)
|
---|
| 2223 | TEMPLATE_VBOXLNX32GUESTR3EXE_CFLAGS.release = $(TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.release)
|
---|
| 2224 | TEMPLATE_VBOXLNX32GUESTR3EXE_CFLAGS.debug = $(TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.debug)
|
---|
| 2225 | TEMPLATE_VBOXLNX32GUESTR3EXE_CFLAGS.profile = $(TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.profile)
|
---|
| 2226 | TEMPLATE_VBOXLNX32GUESTR3EXE_CFLAGS.kprofile = $(TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS.kprofile)
|
---|
[147] | 2227 | TEMPLATE_VBOXLNX32GUESTR3EXE_CFLAGS = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs -pipe -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations $(VBOX_GCC_fno-stack-protector)
|
---|
[762] | 2228 | # No LDFLAGS nor LIBS!
|
---|
[1] | 2229 |
|
---|
[762] | 2230 | TEMPLATE_VBOXLNX32GUESTR3EXENOCPP = Template for building 32-bit linux guest additions programs without any C++.
|
---|
| 2231 | TEMPLATE_VBOXLNX32GUESTR3EXENOCPP_EXTENDS = VBOXLNX32GUESTR3EXE
|
---|
| 2232 | TEMPLATE_VBOXLNX32GUESTR3EXENOCPP_LDTOOL = VBOXLNX32NOCPPLD
|
---|
| 2233 | # No LDFLAGS nor LIBS!
|
---|
| 2234 |
|
---|
| 2235 | TEMPLATE_VBOXLNX32GUESTR3DLLNOCPP = Template for building 32-bit linux guest additions shared objects without any C++.
|
---|
| 2236 | TEMPLATE_VBOXLNX32GUESTR3DLLNOCPP_EXTENDS = VBOXLNX32GUESTR3EXE
|
---|
| 2237 | TEMPLATE_VBOXLNX32GUESTR3DLLNOCPP_LDTOOL = VBOXLNX32NOCPPLD
|
---|
| 2238 | TEMPLATE_VBOXLNX32GUESTR3DLLNOCPP_CFLAGS = -fPIC $(TEMPLATE_VBOXLNX32GUESTR3EXE_CFLAGS)
|
---|
| 2239 | TEMPLATE_VBOXLNX32GUESTR3DLLNOCPP_CXXFLAGS = -fPIC $(TEMPLATE_VBOXLNX32GUESTR3EXE_CXXFLAGS)
|
---|
| 2240 | TEMPLATE_VBOXLNX32GUESTR3DLLNOCPP_LDFLAGS = -fPIC
|
---|
| 2241 |
|
---|
| 2242 | TEMPLATE_VBOXLNX32GUESTR3LIB = Template for building 32-bit linux guest additions libraries.
|
---|
[1] | 2243 | TEMPLATE_VBOXLNX32GUESTR3LIB_EXTENDS = VBOXLNX32GUESTR3EXE
|
---|
| 2244 | TEMPLATE_VBOXLNX32GUESTR3LIB_INST = $(INST_ADDITION_LIB)
|
---|
| 2245 |
|
---|
| 2246 |
|
---|
| 2247 | #
|
---|
| 2248 | # Two targets to coordinate version number changes properly. Note that the
|
---|
| 2249 | # only way to get a really consistent build is to run 'kmk' in the top-level
|
---|
| 2250 | # directory. If you don't run it there, you get a consistent sub-tree only.
|
---|
| 2251 | #
|
---|
[1397] | 2252 | VBOX_VERSION_STAMP = $(PATH_OUT)/version-stamp-$(VBOX_VERSION_STRING)
|
---|
[1] | 2253 | VBOX_VERSION_HEADER = $(PATH_OUT)/version-generated.h
|
---|
| 2254 | VBOX_VERSION_MK = $(PATH_OUT)/version-generated.mk
|
---|
| 2255 |
|
---|
| 2256 | $(VBOX_VERSION_STAMP): | $(PATH_ROOT)/Config.kmk
|
---|
[2472] | 2257 | $(call MSG_GENERATE,,$@)
|
---|
| 2258 | $(QUIET)$(MKDIR) -p $(@D)
|
---|
| 2259 | $(QUIET)$(RM) -f $(filter-out $@,$(wildcard $(PATH_OUT)/version-stamp-*))
|
---|
| 2260 | $(QUIET)$(ECHO_EXT) > $@
|
---|
[1] | 2261 |
|
---|
| 2262 | $(VBOX_VERSION_HEADER): $(VBOX_VERSION_STAMP)
|
---|
[2472] | 2263 | $(call MSG_GENERATE,,$@)
|
---|
| 2264 | $(QUIET)$(MKDIR) -p $(@D)
|
---|
| 2265 | $(QUIET)$(RM) -f $@ $@.tmp
|
---|
| 2266 | $(QUIET)$(APPEND) $@.tmp "#ifndef __version_generated_h__"
|
---|
| 2267 | $(QUIET)$(APPEND) $@.tmp "#define __version_generated_h__"
|
---|
| 2268 | $(QUIET)$(APPEND) $@.tmp ""
|
---|
| 2269 | $(QUIET)$(APPEND) $@.tmp "#define VBOX_VERSION_MAJOR $(VBOX_VERSION_MAJOR)"
|
---|
| 2270 | $(QUIET)$(APPEND) $@.tmp "#define VBOX_VERSION_MINOR $(VBOX_VERSION_MINOR)"
|
---|
| 2271 | $(QUIET)$(APPEND) $@.tmp "#define VBOX_VERSION_BUILD $(VBOX_VERSION_BUILD)"
|
---|
| 2272 | $(QUIET)$(APPEND) $@.tmp '#define VBOX_VERSION_STRING "$(VBOX_VERSION_STRING)"'
|
---|
| 2273 | $(QUIET)$(APPEND) $@.tmp ""
|
---|
| 2274 | $(QUIET)$(APPEND) $@.tmp "#endif"
|
---|
| 2275 | $(QUIET)$(MV) -f $@.tmp $@
|
---|
[1] | 2276 |
|
---|
| 2277 | #
|
---|
| 2278 | # Used for external makefiles which cannot include Config.kmk
|
---|
| 2279 | #
|
---|
| 2280 | $(VBOX_VERSION_MK): $(VBOX_VERSION_STAMP)
|
---|
[2472] | 2281 | $(call MSG_GENERATE,,$@)
|
---|
| 2282 | $(QUIET)$(MKDIR) -p $(@D)
|
---|
| 2283 | $(QUIET)$(RM) -f $@ $@.tmp
|
---|
| 2284 | $(QUIET)$(APPEND) $@.tmp "VBOX_VERSION_MAJOR = $(VBOX_VERSION_MAJOR)"
|
---|
| 2285 | $(QUIET)$(APPEND) $@.tmp "VBOX_VERSION_MINOR = $(VBOX_VERSION_MINOR)"
|
---|
| 2286 | $(QUIET)$(APPEND) $@.tmp "VBOX_VERSION_BUILD = $(VBOX_VERSION_BUILD)"
|
---|
| 2287 | $(QUIET)$(APPEND) $@.tmp "VBOX_VERSION_STRING = $(VBOX_VERSION_STRING)"
|
---|
| 2288 | $(QUIET)$(MV) -f $@.tmp $@
|
---|
[1] | 2289 |
|
---|
| 2290 |
|
---|
| 2291 | # Force building of the version header file as the first thing anywhere in
|
---|
| 2292 | # the tree. This eliminates the need for manual dependencies on it.
|
---|
| 2293 | Makefile.kmk: | $(VBOX_VERSION_HEADER) $(VBOX_VERSION_MK)
|
---|
| 2294 | Makefile: | $(VBOX_VERSION_HEADER) $(VBOX_VERSION_MK)
|
---|
| 2295 | makefile: | $(VBOX_VERSION_HEADER) $(VBOX_VERSION_MK)
|
---|
| 2296 |
|
---|
| 2297 |
|
---|
| 2298 | #
|
---|
| 2299 | # Legacy.
|
---|
| 2300 | #
|
---|
| 2301 | ifneq ($(LOCALCFG),)
|
---|
| 2302 | include $(LOCALCFG)
|
---|
| 2303 | endif
|
---|
| 2304 |
|
---|
| 2305 |
|
---|
| 2306 | #
|
---|
| 2307 | # Some extra goals.
|
---|
| 2308 | #
|
---|
| 2309 | .PHONY: up update st stat status
|
---|
| 2310 | up update::
|
---|
| 2311 | svn$(HOSTSUFF_EXE) up
|
---|
| 2312 |
|
---|
| 2313 | st stat status:
|
---|
| 2314 | svn$(HOSTSUFF_EXE) status
|
---|
| 2315 |
|
---|
| 2316 | quick:
|
---|
| 2317 | $(MAKE) VBOX_QUICK=1
|
---|
| 2318 |
|
---|