VirtualBox

source: vbox/trunk/Makefile.kmk@ 9774

Last change on this file since 9774 was 9768, checked in by vboxsync, 17 years ago

Regenerate err.mac and x86.mac. Adjusted the rule for generting these as x86.h now include multiline macros.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 22.1 KB
Line 
1# $Id: Makefile.kmk 9768 2008-06-17 13:51:39Z vboxsync $
2## @file
3# Top level makefile.
4#
5
6#
7# Copyright (C) 2006-2007 Sun Microsystems, Inc.
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18# Clara, CA 95054 USA or visit http://www.sun.com if you need
19# additional information or have any questions.
20#
21
22DEPTH = .
23include $(KBUILD_PATH)/header.kmk
24
25ifdef VBOX_WITH_DOCS
26 ifndef VBOX_ONLY_ADDITIONS
27 SUBDIRS = doc/manual
28 endif
29endif
30SUBDIRS += src
31
32ifndef VBOX_ONLY_ADDITIONS
33#
34# Install external binaries (mostly redistributable parts of tools we use).
35# This must be done *before* we build the manual.
36#
37# To avoid dragging in unnecessary tools and sdks here, we don't use the .win
38# and .linux property suffixes.
39#
40INSTALLS = bin
41
42bin_INST = $(INST_BIN)
43
44# The SDL DLLs
45if1of ($(KBUILD_TARGET), win os2)
46 ifneq ($(VBOX_WITH_VBOXSDL)$(VBOX_WITH_VBOXBFE),)
47 include $(KBUILD_PATH)/sdks/LIBSDL.kmk
48 bin_SOURCES += \
49 $(DLL_SDK_LIBSDL_SDL)
50 ifdef VBOX_WITH_SECURELABEL
51 bin_SOURCES += \
52 $(DLL_SDK_LIBSDL_SDLTTF)
53 endif
54 ifeq ($(KBUILD_TARGET),os2)
55 bin_SOURCES += \
56 $(DLL_SDK_LIBSDL_FSLIB)
57 endif
58 endif
59endif
60
61
62# The Qt DLLs.
63ifneq ($(VBOX_WITH_QTGUI),)
64 if1of ($(KBUILD_TARGET), win os2)
65 #include $(KBUILD_PATH)/sdks/QT3.kmk
66 #bin_SOURCES += \
67 # $(DLL_SDK_QT3_QT)
68 ifneq ($(strip $(VBOX_DLL_QT)),)
69 bin_SOURCES += \
70 $(VBOX_DLL_QT)=>$(not-dir $(VBOX_DLL_QT))
71 endif
72 ifdef VBOX_QT_BINARIES
73 bin_SOURCES += $(VBOX_QT_BINARIES)
74 endif
75 else ifeq ($(VBOX_MUST_INSTALL_LIB_QT),1)
76 bin_SOURCES += \
77 $(LIB_QT)
78 endif
79endif
80
81
82# The compiler runtime DLLs.
83ifeq ($(KBUILD_TARGET).$(VBOX_WITHOUT_COMPILER_REDIST),win.)
84 ifdef VBOX_USE_VCC80
85 include $(KBUILD_PATH)/tools/VCC80X86.kmk
86 include $(KBUILD_PATH)/tools/VCC80AMD64.kmk
87 bin_SOURCES.x86 += \
88 $(PATH_TOOL_VCC80X86)/redist/x86/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest=>Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest \
89 $(PATH_TOOL_VCC80X86)/redist/x86/Microsoft.VC80.CRT/msvcr80.dll=>Microsoft.VC80.CRT/msvcr80.dll \
90 $(PATH_TOOL_VCC80X86)/redist/x86/Microsoft.VC80.CRT/msvcp80.dll=>Microsoft.VC80.CRT/msvcp80.dll \
91 $(PATH_TOOL_VCC80X86)/redist/x86/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest=>testcase/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest \
92 $(PATH_TOOL_VCC80X86)/redist/x86/Microsoft.VC80.CRT/msvcr80.dll=>testcase/Microsoft.VC80.CRT/msvcr80.dll \
93 $(PATH_TOOL_VCC80X86)/redist/x86/Microsoft.VC80.CRT/msvcp80.dll=>testcase/Microsoft.VC80.CRT/msvcp80.dll
94 bin_SOURCES.amd64 += \
95 $(PATH_TOOL_VCC80AMD64)/redist/amd64/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest=>Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest \
96 $(PATH_TOOL_VCC80AMD64)/redist/amd64/Microsoft.VC80.CRT/msvcr80.dll=>Microsoft.VC80.CRT/msvcr80.dll \
97 $(PATH_TOOL_VCC80AMD64)/redist/amd64/Microsoft.VC80.CRT/msvcp80.dll=>Microsoft.VC80.CRT/msvcp80.dll \
98 $(PATH_TOOL_VCC80AMD64)/redist/amd64/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest=>testcase/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest \
99 $(PATH_TOOL_VCC80AMD64)/redist/amd64/Microsoft.VC80.CRT/msvcr80.dll=>testcase/Microsoft.VC80.CRT/msvcr80.dll \
100 $(PATH_TOOL_VCC80AMD64)/redist/amd64/Microsoft.VC80.CRT/msvcp80.dll=>testcase/Microsoft.VC80.CRT/msvcp80.dll
101 endif
102 ifndef VBOX_USE_VCC80
103 VBOX_INSTALL_VCC70_RT = 1
104 endif
105 ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),win.x86)
106 VBOX_INSTALL_VCC70_RT = 1
107 endif
108 ifdef VBOX_INSTALL_VCC70_RT
109 include $(KBUILD_PATH)/tools/VCC70.kmk
110 ## @todo Move these defines to VCC70.
111 DLL_TOOL_VCC70_MSVCR71 ?= $(PATH_TOOL_VCC70)/bin/msvcr71.dll
112 ifneq ($(wildcard $(DLL_TOOL_VCC70_MSVCR71)),)
113 bin_SOURCES += \
114 $(DLL_TOOL_VCC70_MSVCR71)=>msvcr71.dll \
115 $(DLL_TOOL_VCC70_MSVCR71)=>testcase/msvcr71.dll
116 endif
117 DLL_TOOL_VCC70_MSVCP71 ?= $(PATH_TOOL_VCC70)/bin/msvcp71.dll
118 ifneq ($(wildcard $(DLL_TOOL_VCC70_MSVCP71)),)
119 bin_SOURCES += \
120 $(DLL_TOOL_VCC70_MSVCP71)=>msvcp71.dll \
121 $(DLL_TOOL_VCC70_MSVCP71)=>testcase/msvcp71.dll
122 endif
123 DLL_TOOL_VCC70_MSVCRT ?= $(PATH_TOOL_VCC70)/bin/msvcrt.dll
124 ifneq ($(wildcard $(DLL_TOOL_VCC70_MSVCRT)),)
125 bin_SOURCES += \
126 $(DLL_TOOL_VCC70_MSVCRT)=>msvcrt.dll \
127 $(DLL_TOOL_VCC70_MSVCRT)=>testcase/msvcrt.dll
128 endif
129 endif
130endif
131
132
133#
134# Install additions iso from the build server.
135# The $(CP)/$(RM) stuff can be replaced by a simple $(TOUCH) once that has
136# been added to kBuild.
137#
138## @todo need kmk_builtin_touch!
139ifdef VBOX_WITH_ADDITIONS_FROM_BUILD_SERVER
140INSTALLS += buildserver-additions
141buildserver-additions_INST = $(INST_ADDITIONS)
142buildserver-additions_MODE = 0644
143buildserver-additions_SOURCES = $(PATH_TARGET)/VBoxGuestAdditions.iso
144buildserver-additions_CLEANS = $(PATH_TARGET)/VBoxGuestAdditions.iso $(PATH_TARGET)/VBoxGuestAdditions.iso.tmp
145
146$(PATH_TARGET)/VBoxGuestAdditions.iso: $(VBOX_SVN_REV_KMK) $(PATH_DEVTOOLS)/bin/additions.sh | $(call DIRDEP, $(PATH_TARGET))
147 $(RM) -f $(PATH_TARGET)/VBoxGuestAdditions.iso $(PATH_TARGET)/VBoxGuestAdditions.iso.tmp
148# $(PATH_DEVTOOLS)/bin/additions.sh --cmd fetch --filename $(PATH_TARGET)/VBoxGuestAdditions.iso.tmp
149 $(KMK) --affinity 1 -f $(MAKEFILE) buildserver-additions-affinity-hack
150 $(CP) -f $(PATH_TARGET)/VBoxGuestAdditions.iso.tmp $(PATH_TARGET)/VBoxGuestAdditions.iso
151 $(RM) -f $(PATH_TARGET)/VBoxGuestAdditions.iso.tmp
152
153buildserver-additions-affinity-hack:
154 $(SHELL) $(PATH_DEVTOOLS)/bin/additions.sh --cmd fetch --filename $(PATH_TARGET)/VBoxGuestAdditions.iso.tmp
155endif
156
157
158#
159# Install staged binaries on platforms where we can't cross
160# compile things.
161#
162ifn1of ($(KBUILD_TARGET), l4 linux win)
163 VBOX_PATH_STAGED ?= .
164
165 # Additions.
166 ifndef VBOX_WITH_LINUX_ADDITIONS
167 ifndef VBOX_WITH_WIN32_ADDITIONS
168 ifneq ($(wildcard $(VBOX_PATH_STAGED)/VBoxGuestAdditions.iso),)
169 INSTALLS += staged-additions
170 staged-additions_INST = $(INST_ADDITIONS)
171 staged-additions_MODE = 0644
172 staged-additions_SOURCES = $(VBOX_PATH_STAGED)/VBoxGuestAdditions.iso
173 endif
174 endif
175 endif
176
177 # guesttool.exe
178 ifndef VBOX_WITH_WIN32_ADDITIONS
179 ifneq ($(wildcard $(VBOX_PATH_STAGED)/guesttool.exe),)
180 INSTALLS += staged-guesttool
181 staged-guesttool_INST = $(INST_BIN)
182 staged-guesttool_SOURCES = $(VBOX_PATH_STAGED)/guesttool.exe
183 endif
184 endif
185
186endif
187
188endif # !VBOX_ONLY_ADDITIONS
189
190
191include $(KBUILD_PATH)/footer.kmk
192
193
194#
195# Generate documentation.
196# (This should be converted into a separate pass or merged with an existing one later.)
197#
198docs: docs.Core
199 $(KMK) -C src/VBox/Main docs
200 $(KMK) -C src/VBox/Runtime docs
201
202docs.Core: $(PATH_TARGET)/docs.Core
203
204
205
206#
207# The core (VMM+REM+Devices+Main) documentation.
208#
209# This includes so much because we wish to have the complete CFGM
210# and GCFGM lists.
211#
212OTHER_CLEAN += \
213 $(PATH_TARGET)/Doxyfile \
214 $(PATH_TARGET)/Doxyfile.dep
215
216DOXYGEN_INPUT_DIRS = \
217 include/iprt \
218 include/VBox \
219 include/VBox/com \
220 include/VBox/HostServices \
221 src/VBox/VMM \
222 src/VBox/VMM/VMMR0 \
223 src/VBox/VMM/VMMGC \
224 src/VBox/VMM/VMMAll \
225 src/VBox/VMM/PATM \
226 src/VBox/VMM/PATM/VMMR0 \
227 src/VBox/VMM/PATM/VMMGC \
228 src/VBox/VMM/PATM/VMMAll \
229 src/VBox/VMM/VMMSwitcher \
230 src/VBox/Debugger \
231 src/VBox/Devices/ \
232 src/VBox/Devices/Audio \
233 src/VBox/Devices/Bus \
234 src/VBox/Devices/Graphics \
235 src/VBox/Devices/Graphics/BIOS \
236 src/VBox/Devices/Input \
237 src/VBox/Devices/Networking \
238 src/VBox/Devices/PC \
239 src/VBox/Devices/PC/BIOS \
240 src/VBox/Devices/Parallel \
241 src/VBox/Devices/Serial \
242 src/VBox/Devices/Storage \
243 src/VBox/Devices/VBoxHDDFormats \
244 src/VBox/Devices/VBoxHDDFormats/StorageCraft \
245 src/VBox/Devices/USB \
246 src/VBox/Devices/USB/darwin \
247 src/VBox/Devices/USB/linux \
248 src/VBox/Devices/USB/os2 \
249 src/VBox/Devices/USB/solaris \
250 src/VBox/Devices/USB/vrdp \
251 src/VBox/Devices/USB/win32 \
252 src/VBox/Devices/VMMDev \
253 src/VBox/Main/include \
254 src/VBox/Main/include/hgcm \
255 src/VBox/Main/ \
256 src/VBox/Main/glue \
257 src/VBox/Main/hgcm \
258 src/VBox/Main/webservice \
259 src/VBox/Main/xml \
260 src/VBox/Main/darwin \
261 src/VBox/Main/linux \
262 src/VBox/Main/os2 \
263 src/VBox/Main/solaris \
264 src/VBox/Main/win32 \
265 src/VBox/HostServices/ \
266 src/VBox/HostServices/SharedClipboard \
267 src/VBox/HostServices/SharedFolders \
268 src/VBox/HostServices/SharedOpenGL \
269 src/VBox/HostDrivers/Support \
270 src/VBox/HostDrivers/Support/darwin \
271 src/VBox/HostDrivers/Support/freebsd \
272 src/VBox/HostDrivers/Support/l4 \
273 src/VBox/HostDrivers/Support/linux \
274 src/VBox/HostDrivers/Support/os2 \
275 src/VBox/HostDrivers/Support/solaris \
276 src/VBox/HostDrivers/Support/win \
277 src/VBox/HostDrivers/VBoxTAP/ \
278 src/VBox/HostDrivers/VBoxTAP/win \
279 src/VBox/HostDrivers/VBoxTAP/darwin \
280 src/VBox/HostDrivers/VBoxUSB/ \
281 src/VBox/HostDrivers/VBoxUSB/darwin \
282 src/VBox/HostDrivers/VBoxUSB/os2 \
283 src/VBox/HostDrivers/VBoxUSB/win \
284 src/VBox/HostDrivers/VBoxUSB/win/Device \
285 src/VBox/HostDrivers/VBoxUSB/win/Device/amd64 \
286 src/VBox/HostDrivers/VBoxUSB/win/Device/x86 \
287 src/VBox/HostDrivers/VBoxUSB/win/Filter \
288 src/VBox/HostDrivers/VBoxUSB/win/Install \
289 src/VBox/HostDrivers/VBoxUSB/win/Monitor \
290 src/VBox/HostDrivers/VBoxUSB/win/Monitor/win32 \
291 src/VBox/HostDrivers/VBoxUSB/win/Monitor/win64 \
292 src/VBox/HostDrivers/VBoxUSB/win/usbd \
293
294# These must come first in order to make things look nice.
295DOXYGEN_INPUT_FIRST =\
296 $(PATH_ROOT)/doc/VBox-doc.c \
297 $(PATH_ROOT)/doc/VBox-CodingGuidelines.cpp \
298 $(PATH_ROOT)/src/VBox/VMM/VMMCodingGuidelines.cpp \
299 $(PATH_ROOT)/src/VBox/VMM/VMMDocsRawMode.cpp \
300 $(PATH_ROOT)/include/VBox/cdefs.h \
301 $(PATH_ROOT)/include/VBox/vmapi.h \
302 $(PATH_ROOT)/include/VBox/vmm.h \
303 $(PATH_ROOT)/include/VBox/cpum.h \
304 $(PATH_ROOT)/include/VBox/mm.h \
305 $(PATH_ROOT)/include/VBox/pgm.h \
306 $(PATH_ROOT)/include/VBox/selm.h \
307 $(PATH_ROOT)/include/VBox/trpm.h \
308 $(PATH_ROOT)/include/VBox/patm.h \
309 $(PATH_ROOT)/include/VBox/dbgf.h \
310 $(PATH_ROOT)/include/VBox/stam.h \
311 $(PATH_ROOT)/include/VBox/em.h \
312 $(PATH_ROOT)/include/VBox/pdm.h \
313 $(PATH_ROOT)/include/VBox/rem.h \
314 $(PATH_ROOT)/include/VBox/iom.h \
315 $(PATH_ROOT)/include/VBox/cfgm.h \
316 $(PATH_ROOT)/include/VBox/tm.h \
317 $(PATH_ROOT)/include/VBox/csam.h \
318 $(PATH_ROOT)/include/VBox/ssm.h \
319 $(PATH_ROOT)/include/VBox/hwaccm.h \
320 $(PATH_ROOT)/include/VBox/hwacc_svm.h \
321 $(PATH_ROOT)/include/VBox/hwacc_vmx.h \
322 $(PATH_ROOT)/\
323 $(PATH_ROOT)/src/VBox/VMM/CFGMInternal.h \
324 $(PATH_ROOT)/src/VBox/VMM/CPUMInternal.h \
325 $(PATH_ROOT)/src/VBox/VMM/DBGFInternal.h \
326 $(PATH_ROOT)/src/VBox/VMM/EMInternal.h \
327 $(PATH_ROOT)/src/VBox/VMM/HWACCMInternal.h \
328 $(PATH_ROOT)/src/VBox/VMM/IOMInternal.h \
329 $(PATH_ROOT)/src/VBox/VMM/MMInternal.h \
330 $(PATH_ROOT)/src/VBox/VMM/PDMInternal.h \
331 $(PATH_ROOT)/src/VBox/VMM/PGMInternal.h \
332 $(PATH_ROOT)/src/VBox/VMM/PATM/CSAMInternal.h \
333 $(PATH_ROOT)/src/VBox/VMM/PATM/PATMInternal.h \
334 $(PATH_ROOT)/src/VBox/VMM/REMInternal.h \
335 $(PATH_ROOT)/src/VBox/VMM/SELMInternal.h \
336 $(PATH_ROOT)/src/VBox/VMM/SSMInternal.h \
337 $(PATH_ROOT)/src/VBox/VMM/STAMInternal.h \
338 $(PATH_ROOT)/src/VBox/VMM/TMInternal.h \
339 $(PATH_ROOT)/src/VBox/VMM/TRPMInternal.h \
340 $(PATH_ROOT)/src/VBox/VMM/VMInternal.h \
341 $(PATH_ROOT)/src/VBox/VMM/VMMInternal.h \
342 $(PATH_ROOT)/\
343 $(PATH_ROOT)/include/VBox/vm.h \
344 \
345 $(PATH_ROOT)/include/VBox/sup.h \
346 $(PATH_ROOT)/include/VBox/VBoxHDD.h \
347 $(PATH_ROOT)/include/VBox/types.h \
348 $(PATH_ROOT)/include/VBox/err.h \
349 $(PATH_ROOT)/include/VBox/x86.h \
350 $(PATH_ROOT)/include/VBox/cpumdis.h \
351 $(PATH_ROOT)/include/VBox/dbggui.h \
352 $(PATH_ROOT)/include/VBox/dis.h \
353 $(PATH_ROOT)/include/VBox/disopcode.h \
354 $(PATH_ROOT)/include/VBox/intnet.h \
355 $(PATH_ROOT)/include/VBox/settings.h \
356 $(PATH_ROOT)/include/VBox/pci.h \
357 $(PATH_ROOT)/include/VBox/scsi.h \
358 $(PATH_ROOT)/include/VBox/shflsvc.h \
359 $(PATH_ROOT)/include/VBox/hgcmsvc.h \
360 $(PATH_ROOT)/include/VBox/usb.h \
361 $(PATH_ROOT)/include/VBox/vusb.h \
362 $(PATH_ROOT)/\
363 $(PATH_ROOT)/include/VBox/log.h \
364 $(PATH_ROOT)/include/VBox/param.h \
365 $(PATH_ROOT)/include/VBox/version.h
366
367DOXYGEN_INPUT := \
368 $(filter-out %.cpp.h, $(sort $(wildcard $(addsuffix /*.h, $(DOXYGEN_INPUT_DIRS)))) ) \
369 $(foreach dir, $(DOXYGEN_INPUT_DIRS), $(wildcard $(dir)/*.cpp $(dir)/.c $(dir)/.asm))
370DOXYGEN_INPUT := \
371 $(DOXYGEN_INPUT_FIRST) \
372 $(filter-out $(DOXYGEN_INPUT_FIRST), $(DOXYGEN_INPUT))
373
374# And some some additional stuff.
375DOXYGEN_INPUT += \
376 $(PATH_ROOT)/src/recompiler/VBoxRecompiler.c \
377 $(PATH_ROOT)/src/recompiler/VBoxREMWrapper.cpp
378
379
380DOXYGEN_OUTPUT = $(PATH_OUT)/docs/Core
381
382-include $(PATH_TARGET)/Doxyfile.dep
383
384# Generate the Doxyfile
385$(PATH_TARGET)/Doxyfile: Doxyfile.Core \
386 $(comp-vars DOXYGEN_INPUT,DOXYGEN_INPUT_PREV,FORCE) \
387 $(comp-vars DOXYGEN_OUTPUT,DOXYGEN_OUTPUT_PREV,FORCE) \
388 | $(call DIRDEP, $(PATH_TARGET))
389 $(RM) -f $@ $@.tmp $(PATH_TARGET)/Doxyfile.dep
390 $(CP) -f Doxyfile.Core $@.tmp
391 $(APPEND) $@.tmp
392 $(APPEND) $@.tmp "OUTPUT_DIRECTORY = $(DOXYGEN_OUTPUT)"
393 $(APPEND) $@.tmp "WARN_LOGFILE = $(DOXYGEN_OUTPUT)/errors"
394 $(APPEND) $@.tmp "INCLUDE_PATH = $(PATH_ROOT)/include $(PATH_ROOT)/src/VBox/VMM $(PATH_ROOT)/src/VBox/Main/include "
395 $(APPEND) $@.tmp "INCLUDE_FILE_PATTERNS = *.cpp.h"
396 $(APPEND) $@.tmp
397 $(APPEND) $@.tmp "INPUT = $(DOXYGEN_INPUT)"
398 $(APPEND) $@.tmp
399 $(APPEND) $@.tmp "PREDEFINED += $(DEFS) $(DEFS.$(KBUILD_TARGET)) $(DEFS.$(KBUILD_TARGET_ARCH)) $(ARCH_BITS_DEFS)"
400 $(APPEND) $@.tmp "PREDEFINED += ARCH_BITS=HC_ARCH_BITS R3_ARCH_BITS=HC_ARCH_BITS R0_ARCH_BITS=HC_ARCH_BITS "
401 $(APPEND) $@.tmp
402 $(MV) -f $@.tmp $@
403 @$(APPEND) $(PATH_TARGET)/Doxyfile.dep "DOXYGEN_OUTPUT_PREV = $(DOXYGEN_OUTPUT)"
404 @$(APPEND) $(PATH_TARGET)/Doxyfile.dep "DOXYGEN_INPUT_PREV = $(DOXYGEN_INPUT)"
405
406# Create the output directory.
407$(call DIRDEP, $(DOXYGEN_OUTPUT)):
408 $(MKDIR) -p $@
409
410# Do the actual job.
411$(PATH_TARGET)/docs.Core: $(PATH_TARGET)/Doxyfile $(DOXYGEN_INPUT) | $(call DIRDEP, $(DOXYGEN_OUTPUT))
412 $(RM) -f $(wildcard $(DOXYGEN_OUTPUT)/html/*) $(PATH_TARGET)/docs.Core
413 doxygen $(PATH_TARGET)/Doxyfile
414 $(APPEND) $(PATH_TARGET)/docs.Core
415
416
417#
418# Generate x86.mac and err.mac.
419#
420incs:
421 $(SED) -f include/VBox/err.sed --output include/VBox/err.mac include/VBox/err.h
422 $(APPEND) include/VBox/err.mac '%include "iprt/err.mac"'
423 $(SED) -f include/VBox/err.sed --output include/iprt/err.mac include/iprt/err.h
424 $(SED) \
425 -e '/__VBox_x86_h__/d' \
426 -e '/#define/!d' \
427 -e '/\\$$/d' \
428 -e 's/#define/%define/' \
429 --output include/VBox/x86.mac \
430 include/VBox/x86.h
431
432
433#
434# Generate Visual SlickEdit tagging #defines.
435#
436vslick.h: include/VBox/cdefs.h Makefile
437 echo '// autogenerated' > $@.tmp
438 #echo '#define __BEGIN_DECLS ' >> $@.tmp
439 #echo '#define __END_DECLS ' >> $@.tmp
440
441 echo '#define ATL_NO_VTABLE ' >> $@.tmp
442 echo '#define BEGIN_COM_MAP(a) ' >> $@.tmp
443 echo '#define END_COM_MAP(a) ' >> $@.tmp
444
445 echo '#define CHECKREADY if(!isReady()) return E_UNEXPECTED; ' >> $@.tmp
446 echo '#define COM_DECL_READONLY_ENUM_AND_COLLECTION(a) ' >> $@.tmp
447 echo '#define COM_INTERFACE_ENTRY(a) ' >> $@.tmp
448 echo '#define COMGETTER(n) Get##n ' >> $@.tmp
449 echo '#define COMSETTER(n) Set##n ' >> $@.tmp
450 echo '#define ComSafeArrayIn(t,a) t a[] ' >> $@.tmp
451 echo '#define ComSafeArrayOut(t,a) t * a[] ' >> $@.tmp
452 echo '#define DECLARE_NOT_AGGREGATABLE(a) ' >> $@.tmp
453 echo '#define DECLARE_PROTECT_FINAL_CONSTRUCT(a) ' >> $@.tmp
454 echo '#define NS_DECL_ISUPPORTS ' >> $@.tmp
455 echo '#define NS_IMETHOD NS_IMETHOD_(nsresult) ' >> $@.tmp
456 echo '#define NS_IMETHOD_(type) type ' >> $@.tmp
457 echo '#define PARSERS_EXPORT ' >> $@.tmp
458 echo '#define SAX_EXPORT ' >> $@.tmp
459 echo '#define STDMETHOD(a) NS_IMETHOD a ' >> $@.tmp
460 echo '#define XERCES_CPP_NAMESPACE_BEGIN ' >> $@.tmp
461 echo '#define XERCES_CPP_NAMESPACE_END ' >> $@.tmp
462
463 echo '#define CTXAllSUFF(var) var##R3 ' >> $@.tmp
464 echo '#define CTXSUFF(var) var##HC ' >> $@.tmp
465 echo '#define OTHERCTXSUFF(var) var##GC ' >> $@.tmp
466 echo '#define CTXALLMID(first, last) first##R3##last ' >> $@.tmp
467 echo '#define CTXMID(first, last) first##HC##last ' >> $@.tmp
468 echo '#define OTHERCTXMID(first, last) first##GC##last ' >> $@.tmp
469 echo '#define CTXTYPE(GCType, R3Type, R0Type) R3Type ' >> $@.tmp
470 echo '#define GCPTRTYPE(GCType) GCType ' >> $@.tmp
471 echo '#define GCTYPE(GCType, HCType) GCType ' >> $@.tmp
472 echo '#define HCPTRTYPE(HCType) HCType ' >> $@.tmp
473 echo '#define R3R0PTRTYPE(HCType) HCType ' >> $@.tmp
474 echo '#define R0PTRTYPE(R3Type) R3Type ' >> $@.tmp
475 echo '#define R3PTRTYPE(R0Type) R0Type ' >> $@.tmp
476 echo '#define RT_SRC_POS __FILE__, __LINE__, __PRETTY_FUNCTION__ ' >> $@.tmp
477 echo '#define RT_SRC_POS_DECL const char *pszFile, unsigned iLine, const char *pszFunction ' >> $@.tmp
478 echo '#define RT_SRC_POS_ARGS pszFile, iLine, pszFunction ' >> $@.tmp
479 echo '#define RTCALL' >> $@.tmp
480 echo '#define DECLINLINE(type) inline type ' >> $@.tmp
481
482 echo '#define PDM_SRC_POS __FILE__, __LINE__, __PRETTY_FUNCTION__ ' >> $@.tmp
483 echo '#define PDM_SRC_POS_DECL const char *pszFile, unsigned iLine, const char *pszFunction ' >> $@.tmp
484 echo '#define PDM_SRC_POS_ARGS pszFile, iLine, pszFunction ' >> $@.tmp
485 echo '#define PDMDEVINSINT_DECLARED 1' >> $@.tmp
486 echo '#define VBOXCALL' >> $@.tmp
487
488 $(SED) -e '/__cdecl/d' \
489 -e '/^ *# *define.*DECL/!d' \
490 -e '/DECLS/d' \
491 -e '/DECLARE_CLS_/d' \
492 -e '/_SRC_POS_DECL/d' \
493 -e '/declspec/d' \
494 -e '/__attribute__/d' \
495 -e 's/# */#/g' \
496 -e 's/ */ /g' \
497 -e '/(type) DECLEXPORT/d' \
498 -e '/ DECLEXPORT_CLASS/d' \
499 -e 's/ *VBOXCALL//' \
500 -e 's/ *RTCALL//' \
501 -e 's/(type) DECLIMPORT(type)/(type) type/' \
502 -e '/ DECLASM(type) type/d' \
503 -e '/define *DECL..CALLBACKMEMBER(type[^)]*) *RT/d' \
504 -e '/define *DECLINLINE(type)/d' \
505 \
506 --append $@.tmp \
507 $(filter-out include/VBox/err.h, $(wildcard include/VBox/*.h)) \
508 include/iprt/cdefs.h
509 $(CAT_EXT) $@.tmp | sort | $(SED_EXT) -e 's/$$/\n/' --output $@.tmp2
510 $(MV) -f $@.tmp2 $@
511 $(RM) -f $@.tmp $@.tmp2 $@.tmp3
512 $(ECHO) "TODO: Merge ./vslick.h with your ~/.slickedit/x.y.z/unxcpp.h file."
513
514
515#
516# Add fetching of the tools to the 'up[date][2]' targets.
517#
518up update up2 update2::
519ifndef VBOX_OSE
520 $(MAKE) -C tools fetch
521else
522 $(MAKE) -C tools -f Makefile-ose.kmk fetch
523endif
524
525
526#
527# Build the additions, all of them.
528#
529# This is currently tailored (hardcoded) for the additions
530# build box. Can make it pretty and configurable later.
531#
532# The fetching must be done in serial fashion, while the building
533# should be more flexible wrt to -jN.
534#
535additions-fetch:
536 + $(KMK) -C tools fetch
537 + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=linux BUILD_TARGET_ARCH=x86 BUILD_TARGET=linux
538# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=os2 BUILD_TARGET_ARCH=x86 BUILD_TARGET=os2
539 + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=solaris BUILD_TARGET_ARCH=x86 BUILD_TARGET=solaris
540 + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=win BUILD_TARGET_ARCH=x86 BUILD_TARGET=win
541
542
543additions-build: \
544 additions-build-win.x86 \
545 additions-build-solaris.x86 \
546 additions-build-os2.x86 \
547 additions-build-linux.x86
548
549VBOX_ADDITIONS_BUILD.x86 = VBOX_ONLY_ADDITIONS=1 VBOX_WITHOUT_ADDITIONS_ISO=1 \
550 KBUILD_TYPE=$(KBUILD_TYPE) BUILD_TYPE=$(KBUILD_TYPE) \
551 KBUILD_TARGET_ARCH=x86 BUILD_TARGET_ARCH=x86 \
552 all packing
553
554additions-build-win.x86:
555ifeq ($(KBUILD_TARGET),win)
556 + $(KMK) $(VBOX_ADDITIONS_BUILD.x86)
557else
558 rsync -av --delete --delete-excluded --exclude .svn/ --exclude out/ --exclude tinderclient.log . 192.168.27.5:/cygdrive/c/vbox
559 ssh vbox@192.168.27.5 " cd /cygdrive/c/vbox && PATH_OUT_BASE=Z:/add/out tools/env.sh kmk $(VBOX_ADDITIONS_BUILD.x86)"
560# ssh vbox@192.168.27.5 "cmd.exe /c cd /d z:\\add && set PATH_DEVTOOLS=c:\\vbox\\tools && c:\\vbox\\tools\\env.cmd -KBUILD c:\\vbox\\kBuild && set KMK_DONT_USE_NT_QUERY_INFORMATION_FILE=1 && set USER=vbox && kmk $(VBOX_ADDITIONS_BUILD.x86)"
561endif
562
563additions-build-solaris.x86:
564ifeq ($(KBUILD_TARGET),solaris)
565 + $(KMK) $(VBOX_ADDITIONS_BUILD.x86)
566else
567 ssh vbox@192.168.27.4 " cd /mnt/vbox/add && ./tools/env.sh --no-wine kmk $(VBOX_ADDITIONS_BUILD.x86) "
568endif
569
570additions-build-os2.x86:
571#ifeq ($(KBUILD_TARGET),os2)
572# + $(KMK) $(VBOX_ADDITIONS_BUILD.x86)
573#else
574# ssh vbox@192.168.27.3 " cd /mnt/vbox/add && ./tools/env.sh --no-wine kmk $(VBOX_ADDITIONS_BUILD.x86) "
575#endif
576
577additions-build-linux.x86:
578ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),linux.x86)
579 + $(KMK) $(VBOX_ADDITIONS_BUILD.x86)
580else
581 ssh vbox@192.168.27.2 " cd /mnt/vbox/add && ./tools/env.sh --no-wine kmk $(VBOX_ADDITIONS_BUILD.x86) "
582endif
583
584
585additions-packing:
586 + $(KMK) VBOX_ONLY_ADDITIONS=1 \
587 VBOX_WITH_ADDITIONS_ISO.freebsd.amd64= \
588 VBOX_WITH_ADDITIONS_ISO.freebsd.x86= \
589 VBOX_WITH_ADDITIONS_ISO.linux.amd64= \
590 VBOX_WITH_ADDITIONS_ISO.linux.x86=1 \
591 VBOX_WITH_ADDITIONS_ISO.solaris.amd64= \
592 VBOX_WITH_ADDITIONS_ISO.solaris.x86=1 \
593 VBOX_WITH_ADDITIONS_ISO.win.amd64= \
594 VBOX_WITH_ADDITIONS_ISO.win.x86=1 \
595 -C src/VBox/Additions \
596 $(VBOX_PATH_ADDITIONS)/VBoxGuestAdditions.iso
597
598
599#
600# Generate VirtualBox-OSE-x.x.x.tar.bz2 tarballs for distribution
601#
602# - includes kBuild
603# - must be executed on an OSE checkout
604#
605
606# the path where to store the tarball
607TARBALLPATH ?= $(shell cd $(PATH_ROOT)/..; pwd)
608#TARBALLPATH ?= $(abspath $(PATH_ROOT)/..) - this should also do the trick without spawning a shell.
609# the root directory inside the tarball
610TARBALLROOT ?= VirtualBox-$(VBOX_VERSION_STRING)
611# the name of the tarball file
612TARBALLNAME ?= VirtualBox-$(VBOX_VERSION_STRING).tar.bz2
613snapshot:
614 @$(call MSG_L1,Creating tarball $(TARBALLPATH)/$(TARBALLNAME))
615 @if [ -d "$(PATH_ROOT)/src/VBox/Devices/USB" ]; then echo; echo "Found USB stuff, refused to build OSE tarball!"; echo; exit 1; fi
616 $(QUIET)$(MKDIR) -p $(TARBALLPATH)
617 $(QUIET)$(RM) -f $(wildcard $(TARBALLPATH)/VirtualBox*)
618 $(QUIET)$(LN_SYMLINK) $(PATH_ROOT) $(TARBALLPATH)/$(TARBALLROOT)
619 $(QUIET)tar -cjh --owner 0 --group 0 --totals \
620 --exclude=.svn \
621 --exclude=$(TARBALLROOT)/out \
622 --exclude=$(TARBALLROOT)/env.sh \
623 --exclude=$(TARBALLROOT)/configure.log \
624 --exclude=$(TARBALLROOT)/AutoConfig.kmk \
625 --exclude=$(TARBALLROOT)/LocalConfig.kmk \
626 -C $(TARBALLPATH) \
627 -f $(TARBALLPATH)/$(TARBALLNAME) \
628 $(TARBALLROOT)
629 $(QUIET)$(RM) $(TARBALLPATH)/$(TARBALLROOT)
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette