VirtualBox

source: vbox/trunk/src/libs/xpcom18a4/Config.kmk@ 29064

Last change on this file since 29064 was 29064, checked in by vboxsync, 15 years ago

xpcom18a4/*.kmk: Moved the templates and globals from Makefile.kmk to Config.kmk (new).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 14.8 KB
Line 
1# $Id: Config.kmk 29064 2010-05-05 11:41:08Z vboxsync $
2## @file
3# XPCOM kBuild Configuration file.
4#
5
6#
7# Copyright (C) 2006-2010 Oracle Corporation
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
18# Include the top-level configure file.
19ifndef VBOX_ROOT_CONFIG_KMK_INCLUDED
20 include $(PATH_ROOT)/Config.kmk
21endif
22
23#
24# Globals.
25#
26VBOX_PATH_XPCOM_SRC := $(PATH_ROOT)/src/libs/xpcom18a4
27
28#
29# Template for building the XPCOM libraries (shared).
30#
31TEMPLATE_XPCOM = XPCOM libraries (shared)
32TEMPLATE_XPCOM_EXTENDS = VBOXR3NP
33## @todo correct inheritance here to make it use all the VBOXR3NP settings instead of overriding all of them.
34TEMPLATE_XPCOM_ASTOOL = $(TEMPLATE_VBOXR3NP_TOOL)
35TEMPLATE_XPCOM_ASFLAGS = $(NO_SUCH_VARIABLE)
36TEMPLATE_XPCOM_ASFLAGS.x86 = -m32
37TEMPLATE_XPCOM_ASFLAGS.amd64 = -m64
38TEMPLATE_XPCOM_ASDEFS = $(NO_SUCH_VARIABLE)
39TEMPLATE_XPCOM_CXXFLAGS = -g -pipe -ansi -Wall -Wno-unused -Wno-non-virtual-dtor \
40 $(VBOX_GCC_Wno-invalid-offsetof) -Wno-sign-compare -Wno-unused -Wno-ctor-dtor-privacy \
41 $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fdiagnostics-show-option)
42TEMPLATE_XPCOM_CXXFLAGS.x86 = -m32
43TEMPLATE_XPCOM_CXXFLAGS.amd64 = -m64
44TEMPLATE_XPCOM_CXXFLAGS.release = -O
45TEMPLATE_XPCOM_CXXFLAGS.profile = -O
46TEMPLATE_XPCOM_CXXFLAGS.darwin = -fpascal-strings -fshort-wchar -fno-common -fno-rtti $(VBOX_DARWIN_DEF_SDK_CXXFLAGS)
47TEMPLATE_XPCOM_CXXFLAGS.freebsd = -pthread
48TEMPLATE_XPCOM_CXXFLAGS.l4 = -fno-exceptions -nostdinc
49TEMPLATE_XPCOM_CXXFLAGS.linux = -pthread
50TEMPLATE_XPCOM_CXXFLAGS.solaris = -fno-omit-frame-pointer # for now anyway.
51TEMPLATE_XPCOM_CFLAGS = -g -pipe -Wall -Wno-unused -Wno-parentheses -Wno-uninitialized $(VBOX_GCC_fvisibility-hidden) \
52 $(VBOX_GCC_fdiagnostics-show-option)
53TEMPLATE_XPCOM_CFLAGS.x86 = -m32
54TEMPLATE_XPCOM_CFLAGS.amd64 = -m64
55TEMPLATE_XPCOM_CFLAGS.release = -O
56TEMPLATE_XPCOM_CFLAGS.profile = -O
57TEMPLATE_XPCOM_CFLAGS.freebsd = -pthread
58TEMPLATE_XPCOM_CFLAGS.l4 = -nostdinc
59TEMPLATE_XPCOM_CFLAGS.linux = -pthread -ansi
60TEMPLATE_XPCOM_CFLAGS.solaris = -fno-omit-frame-pointer # for now anyway.
61TEMPLATE_XPCOM_DEFS = MOZILLA_CLIENT=1 NDEBUG=1 _IMPL_NS_COM \
62 XPCOM_DLL_BASE=\"$(basename $(notdir $(LIB_XPCOM)))\" \
63 MOZ_DLL_SUFFIX=\"$(suffix $(LIB_XPCOM))\" \
64 IN_RING3
65ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
66 TEMPLATE_XPCOM_DEFS += VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
67endif
68TEMPLATE_XPCOM_DEFS.x86 = i386=1
69TEMPLATE_XPCOM_DEFS.amd64 = HAVE_VA_LIST_AS_ARRAY HAVE_VA_COPY VA_COPY\(a\,b\)=__builtin_va_copy\(a\,b\)
70TEMPLATE_XPCOM_DEFS.darwin = OSTYPE=\"Darwin8.8.1\" OSARCH=\"Darwin\" XP_UNIX=1 XP_MACOSX=1 TARGET_CARBON=1 HAVE_VISIBILITY_ATTRIBUTE=1 DARWIN=1 $(TEMPLATE_VBOXR3NP_DEFS.darwin)
71TEMPLATE_XPCOM_DEFS.darwin.amd64 = VBOX_MACOSX_FOLLOWS_UNIX_IO
72TEMPLATE_XPCOM_DEFS.freebsd = OSTYPE=\"FreeBSD5+\" OSARCH=\"FreeBSD\" XP_UNIX=1 FREEBSD=1 HAVE_VISIBILITY_ATTRIBUTE=1
73TEMPLATE_XPCOM_DEFS.linux = OSTYPE=\"Linux2.6\" OSARCH=\"Linux\" XP_UNIX=1 _GNU_SOURCE HAVE_VISIBILITY_ATTRIBUTE=1 ## @todo LINUX=1
74TEMPLATE_XPCOM_DEFS.l4 = OSTYPE=\"L4ENV\" OSARCH=\"L4\" XP_UNIX=1 L4ENV HAVE_VISIBILITY_ATTRIBUTE=1
75# Don't define BSD_SELECT because bsdselect() from kLIBC <= 0.6.3 has problems on SMP
76TEMPLATE_XPCOM_DEFS.os2 = OSTYPE=\"OS/2_4.5\" OSARCH=\"OS/2\" XP_OS2 XP_PC OS2=4
77TEMPLATE_XPCOM_DEFS.solaris = OSTYPE=\"Solaris10\" OSARCH=\"Solaris\" XP_UNIX=1 XP_SOLARIS=1 HAVE_LIBDL=1 HAVE_SENDFILEV=1 SOLARIS=1 _REENTRANT
78## @todo The LDFLAGS inheriting is being hidden here and below where -fPIC is added.
79ifdef VBOX_WITH_RUNPATH
80TEMPLATE_XPCOM_LDFLAGS += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)'
81else ifdef VBOX_WITH_RELATIVE_RUNPATH
82TEMPLATE_XPCOM_LDFLAGS += '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)'
83endif
84TEMPLATE_XPCOM_LDFLAGS.x86 = -m32
85TEMPLATE_XPCOM_LDFLAGS.amd64 = -m64
86TEMPLATE_XPCOM_LDFLAGS.darwin = $(TEMPLATE_VBOXR3NP_LDFLAGS.darwin) \
87 -fshort-wchar -fno-rtti -fno-exceptions -fpascal-strings \
88 -current_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
89 -compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \
90 -framework CoreServices \
91 -framework CoreFoundation \
92 -framework Foundation \
93 -framework AppKit \
94 -framework Carbon
95## @todo wy is -fno-exceptions here.
96ifn1of ($(KBUILD_TARGET), os2 win)
97 TEMPLATE_XPCOM_CXXFLAGS += -fPIC
98 TEMPLATE_XPCOM_CFLAGS += -fPIC
99 TEMPLATE_XPCOM_LDFLAGS += -fPIC
100 TEMPLATE_XPCOM_DEFS += MOZ_PRESERVE_PIC
101endif
102TEMPLATE_XPCOM_INCS = $(VBOX_PATH_XPCOM_SRC)/xpcom/build \
103 $(VBOX_PATH_XPCOM_SRC)/xpcom/ds \
104 $(VBOX_PATH_XPCOM_SRC)/xpcom/io \
105 $(VBOX_PATH_XPCOM_SRC)/xpcom/base \
106 $(VBOX_PATH_XPCOM_SRC)/xpcom/components \
107 $(VBOX_PATH_XPCOM_SRC)/xpcom/threads \
108 $(VBOX_PATH_XPCOM_SRC)/xpcom/proxy/src \
109 $(VBOX_PATH_XPCOM_SRC)/xpcom/reflect/xptcall/src \
110 $(VBOX_PATH_XPCOM_SRC)/ipc/ipcd/client/src \
111 $(VBOX_PATH_XPCOM_SRC)/ipc/ipcd/shared/src \
112 $(VBOX_PATH_XPCOM_SRC)/ipc/ipcd/extensions/lock/src \
113 $(VBOX_PATH_XPCOM_SRC)/ipc/ipcd/extensions/transmngr/src \
114 $(VBOX_PATH_XPCOM_SRC)/ipc/ipcd/extensions/dconnect/src \
115 $(VBOX_PATH_XPCOM_SRC)/ipc/ipcd/extensions/transmngr/common \
116 $(VBOX_PATH_SDK)/bindings/xpcom/include \
117 $(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \
118 $(VBOX_PATH_SDK)/bindings/xpcom/include/string \
119 $(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \
120 $(VBOX_PATH_SDK)/bindings/xpcom/include/ipcd \
121 .
122TEMPLATE_XPCOM_INCS.darwin = $(VBOX_PATH_MACOSX_SDK)/Developer/Headers/FlatCarbon
123TEMPLATE_XPCOM_INCS.l4 = $(L4_INCDIR) $(VBOX_L4_GCC3_INCS)
124TEMPLATE_XPCOM_LDFLAGS.l4 = $(L4_DIR)/lib/x86_586/crt0.o \
125 -T$(L4_DIR)/lib/x86_586/main_rel.ld -nostdlib \
126 # -Wl,--whole-archive,--no-allow-shlib-undefined
127TEMPLATE_XPCOM_LIBS.l4 = $(VBOX_GCC_LIBGCC)
128TEMPLATE_XPCOM_LIBS.solaris = sendfile
129TEMPLATE_XPCOM_ORDERDEPS = $(foreach hdrinst, $(filter %-HEADERS, $(INSTALLS)), $(TARGET_$(hdrinst))) \
130 $(if $(PATH_VBox-xpcom-string),$(PATH_VBox-xpcom-string)/idl_ts,)
131ifeq ($(KBUILD_TARGET),os2)
132 ifndef USE_OS2_TOOLKIT_HEADERS
133 TEMPLATE_XPCOM_DEFS.os2 += OS2EMX_PLAIN_CHAR
134 endif
135 TEMPLATE_XPCOM_DEFS.os2 += XP_OS2_EMX OS2=4
136 # this is at least for strnicmp()
137 TEMPLATE_XPCOM_DEFS.os2 += _EMX_SOURCE
138 # @@todo shouldn't this be somehow default for ASTOOL?
139 TEMPLATE_XPCOM_ASFLAGS.os2 += -Zomf
140endif
141
142# When using IPRT in NSRP or/and using IPRT for logging, link with IPRT.
143TEMPLATE_XPCOM_LIBS += $(LIB_RUNTIME)
144
145#
146# Template for building the XPCOM executables.
147# Used as a base template by XPCOMTSTEXE and XPCOMIPCEXE.
148#
149TEMPLATE_XPCOMEXE = XPCOM executable files
150TEMPLATE_XPCOMEXE_EXTENDS = XPCOM
151## @todo undo -fPIC.
152TEMPLATE_XPCOMEXE_INCS = ipc/ipcd/shared/src \
153 $(VBOX_PATH_SDK)/bindings/xpcom/include \
154 $(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \
155 $(VBOX_PATH_SDK)/bindings/xpcom/include/string \
156 $(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \
157 $(VBOX_PATH_SDK)/bindings/xpcom/include/ipcd \
158 .
159TEMPLATE_XPCOMEXE_LIBS = \
160 $(TARGET_VBox-xpcom-ipcshared) \
161 $(TARGET_VBoxXPCOM) \
162 $(TEMPLATE_XPCOM_LIBS)
163TEMPLATE_XPCOMEXE_LIBS.freebsd = $(LIB_PTHREAD)
164TEMPLATE_XPCOMEXE_LIBS.linux = dl $(LIB_PTHREAD)
165TEMPLATE_XPCOMEXE_LIBS.l4 = $(LIB_RUNTIME) $(VBOX_GCC_LIBGCC)
166TEMPLATE_XPCOMEXE_LDFLAGS.darwin = -bind_at_load $(filter-out -current_version -compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD),$(TEMPLATE_XPCOM_LDFLAGS.darwin))
167TEMPLATE_XPCOMEXE_LDFLAGS.l4 = $(L4_DIR)/lib/x86_586/crt0.o \
168 -T$(L4_DIR)/lib/x86_586/main_dyn.ld -nostdlib -lgcc \
169 -Wl,--export-dynamic,--dynamic-linker=libld-l4.s.so \
170 -Wl,--rpath-link,$(L4_LIBDIR) \
171 # -Wl,--whole-archive,--no-allow-shlib-undefined
172# -Wno-format
173
174
175#
176# Template for building the XPCOM testcase executables
177#
178TEMPLATE_XPCOMTSTEXE = XPCOM executable files (testcases)
179TEMPLATE_XPCOMTSTEXE_EXTENDS = XPCOMEXE
180TEMPLATE_XPCOMTSTEXE_CXXFLAGS = $(TEMPLATE_XPCOMEXE_CXXFLAGS) -Wno-format
181TEMPLATE_XPCOMTSTEXE_CFLAGS = $(TEMPLATE_XPCOMEXE_CFLAGS) -Wno-format
182
183
184#
185# Template for building XPCOM executables for running at build time.
186#
187# It extends the BLDPROG template in config.kmk but overrides CFLAGS
188# and CXXFLAGS completely at the moment.
189#
190TEMPLATE_XPCOMBLDPROG = XPCOM Build programs executables
191TEMPLATE_XPCOMBLDPROG_EXTENDS = VBOXBLDPROG
192## @todo Verify that this doesn't blow up because of template inheriance ordering. (we're assuming XPCOMEXE is expanded when this is being used.)
193TEMPLATE_XPCOMBLDPROG_DEFS = $(TEMPLATE_VBOXBLDPROG_DEFS) $(TEMPLATE_XPCOMEXE_DEFS)
194TEMPLATE_XPCOMBLDPROG_DEFS.$(KBUILD_HOST) = $(TEMPLATE_VBOXBLDPROG_DEFS.$(KBUILD_HOST)) $(TEMPLATE_XPCOMEXE_DEFS.$(KBUILD_HOST))
195TEMPLATE_XPCOMBLDPROG_DEFS.x86 = $(TEMPLATE_VBOXBLDPROG_DEFS.x86) $(TEMPLATE_XPCOMEXE_DEFS.x86)
196TEMPLATE_XPCOMBLDPROG_DEFS.amd64 = $(TEMPLATE_VBOXBLDPROG_DEFS.amd64) $(TEMPLATE_XPCOMEXE_DEFS.amd64)
197TEMPLATE_XPCOMBLDPROG_INCS = \
198 $(VBOX_PATH_SDK)/bindings/xpcom/include \
199 $(VBOX_PATH_SDK)/bindings/xpcom/include/nsprpub \
200 $(VBOX_PATH_SDK)/bindings/xpcom/include/string \
201 $(VBOX_PATH_SDK)/bindings/xpcom/include/xpcom \
202 $(VBOX_PATH_SDK)/bindings/xpcom/include/ipcd
203TEMPLATE_XPCOMBLDPROG_CFLAGS = $(filter-out -pedantic -Wshadow, $(TEMPLATE_VBOX_BLDPROG_CFLAGS)) $(VBOX_GCC_Wno-int-to-pointer-cast) $(VBOX_GCC_Wno-pointer-to-int-cast) -Wno-format
204TEMPLATE_XPCOMBLDPROG_CXXFLAGS.darwin = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.darwin) -fpascal-strings -fshort-wchar -fno-common -fno-rtti
205TEMPLATE_XPCOMBLDPROG_CXXFLAGS.solaris = $(TEMPLATE_VBOXBLDPROG_CXXFLAGS.solaris) -fno-omit-frame-pointer # for now anyway.
206TEMPLATE_XPCOMBLDPROG_LDFLAGS.darwin = $(TEMPLATE_VBOXBLDPROG_LDFLAGS.darwin) -fpascal-strings -fshort-wchar -fno-rtti -fno-exceptions
207TEMPLATE_XPCOMBLDPROG_ORDERDEPS = $(foreach hdrinst, $(filter %-HEADERS, $(INSTALLS)), $(TARGET_$(hdrinst)))
208
209
210ifeq ($(VBOX_DEF_MACOSX_VERSION_MIN),10.4)
211 #
212 # Template for building VBoxPhython against the Mac OS X 10.4 SDK.
213 # ASSUMES that the SDK bits are in the .darwin properties we're overriding below.
214 #
215 TEMPLATE_XPCOMOSX104 = XPCOM libraries (shared) built against the Mac OS X 10.4 SDK
216 TEMPLATE_XPCOMOSX104_EXTENDS = XPCOM
217 TEMPLATE_XPCOMOSX104_CXXFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_CXXFLAGS),$(TEMPLATE_XPCOM_CXXFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_4_CXXFLAGS)
218 TEMPLATE_XPCOMOSX104_CFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_CFLAGS),$(TEMPLATE_XPCOM_CFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_4_CFLAGS)
219 TEMPLATE_XPCOMOSX104_LDFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_LDFLAGS),$(TEMPLATE_XPCOM_LDFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_4_LDFLAGS)
220 TEMPLATE_XPCOMOSX104_DEFS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_DEFS),$(TEMPLATE_XPCOM_DEFS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_4_DEFS)
221 TEMPLATE_XPCOMOSX104_INCS.darwin = $(VBOX_PATH_MACOSX_SDK_10_4)/Developer/Headers/FlatCarbon
222endif
223
224#
225# Template for building VBoxPhython against the Mac OS X 10.5 SDK.
226# ASSUMES that the SDK bits are in the .darwin properties we're overriding below.
227#
228TEMPLATE_XPCOMOSX105 = XPCOM libraries (shared) built against the Mac OS X 10.5 SDK
229TEMPLATE_XPCOMOSX105_EXTENDS = XPCOM
230TEMPLATE_XPCOMOSX105_CXXFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_CXXFLAGS),$(TEMPLATE_XPCOM_CXXFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_5_CXXFLAGS)
231TEMPLATE_XPCOMOSX105_CFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_CFLAGS),$(TEMPLATE_XPCOM_CFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_5_CFLAGS)
232TEMPLATE_XPCOMOSX105_LDFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_LDFLAGS),$(TEMPLATE_XPCOM_LDFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_5_LDFLAGS)
233TEMPLATE_XPCOMOSX105_DEFS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_DEFS),$(TEMPLATE_XPCOM_DEFS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_5_DEFS)
234TEMPLATE_XPCOMOSX105_INCS.darwin = $(VBOX_PATH_MACOSX_SDK_10_5)/Developer/Headers/FlatCarbon
235
236#
237# Template for building VBoxPhython against the Mac OS X 10.6 SDK.
238# ASSUMES that the SDK bits are in the .darwin properties we're overriding below.
239#
240TEMPLATE_XPCOMOSX106 = XPCOM libraries (shared) built against the Mac OS X 10.6 SDK
241TEMPLATE_XPCOMOSX106_EXTENDS = XPCOM
242TEMPLATE_XPCOMOSX106_CXXFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_CXXFLAGS),$(TEMPLATE_XPCOM_CXXFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_6_CXXFLAGS)
243TEMPLATE_XPCOMOSX106_CFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_CFLAGS),$(TEMPLATE_XPCOM_CFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_6_CFLAGS)
244TEMPLATE_XPCOMOSX106_LDFLAGS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_LDFLAGS),$(TEMPLATE_XPCOM_LDFLAGS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_6_LDFLAGS)
245TEMPLATE_XPCOMOSX106_DEFS.darwin = $(filter-out $(VBOX_DARWIN_DEF_SDK_DEFS),$(TEMPLATE_XPCOM_DEFS.darwin)) $(VBOX_DARWIN_DEF_SDK_10_6_DEFS)
246TEMPLATE_XPCOMOSX106_INCS.darwin = $(VBOX_PATH_MACOSX_SDK_10_6)/Developer/Headers/FlatCarbon
247
248
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