VirtualBox

root/trunk/Makefile.kmk

Revision 11723, 26.9 kB (checked in by vboxsync, 1 day ago)

Python shell docs, tweaks

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

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy