VirtualBox

source: vbox/trunk/src/libs/xpcom18a4/Makefile.kmk@ 95970

Last change on this file since 95970 was 95622, checked in by vboxsync, 2 years ago

/Config.kmk,Installer/solaris,xpcom18a4/{Config.kmk,Makefile.kmk},tools/Makefile.kmk:
Remove the "legacy" Solaris 10 libraries (libstdc++.so.6, libxcb.so.1,
libgcc_s.so.1, libX11-xcb.so.1, libGL.so.1, libX11.so.4) added in r107933
and all vestiges of their presence in Makefiles and installation
scripts. These libraries were bundled in order to run VirtualBox on
Solaris 10 hosts since they are part of optional package clusters like
SUNWCuser which might not be installed so were packaged with VirtualBox
in a /legacy/ subdirectory under /opt/VirtualBox. Solaris 10 is no
longer supported as a host so these unused bits can go now.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 49.2 KB
Line 
1# $Id: Makefile.kmk 95622 2022-07-13 17:49:31Z vboxsync $
2## @file
3# Sub-Makefile for XPCOM.
4#
5
6#
7# Copyright (C) 2006-2017 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
18SUB_DEPTH = ../../..
19include $(KBUILD_PATH)/subheader.kmk
20
21# Make sure our Config.kmk is included.
22ifndef VBOX_PATH_XPCOM_SRC
23 include $(PATH_SUB_CURRENT)/Config.kmk
24endif
25
26#
27# Globals
28#
29
30# File for filtering out C symbols from the XPCOM library. Used to avoid
31# symbol namespace pollution, causing trouble with system libraries.
32XPCOM_C_NAMESPACE_MAP = $(VBOX_PATH_XPCOM_SRC)/xpcom-namespace-cleanup.map
33ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
34 # At the moment, only Solaris uses the generated map file. GNU ld is smart
35 # enough to handle symbol wildcards itself.
36 if1of ($(KBUILD_TARGET), solaris)
37 XPCOM_C_NAMESPACE_MAP = $(PATH_TARGET)/xpcom-namespace-cleanup.map
38 OTHER_CLEAN += $(XPCOM_C_NAMESPACE_MAP)
39 endif
40endif
41
42# @todo check whether VBoxXPCOMIPCC.so or VBoxXPCOMIPCD contain undefined
43# symbols starting with NS_, PL_, PR_ or XPT. Would move the test time failure
44# when missing a symbol renaming to a build time failure. Likewise, there
45# should be a check whether VBoxXPCOM.so contains global C symbols (at least
46# where the whitelisting of symbols via the map file is not used).
47
48#
49# Header installs.
50#
51INSTALLS += \
52 NSPRPUB-HEADERS \
53 NSPRPUB-MD-HEADERS \
54 NSPRPUB-OBS-HEADERS \
55 NSPRPUB-PRIV-HEADERS \
56 STRING-HEADERS \
57 XPCOM-HEADERS \
58 IPCD-HEADERS
59
60#
61# The IDL compiler, typelib linker and xpt files.
62#
63BLDPROGS += \
64 xpidl \
65 xpt_link
66
67BLDDIRS += \
68 $(PATH_TARGET)/VBox-xpcom-xpt-files/
69
70#
71# Always build the VBoxXPCOM import library.
72#
73IMPORT_LIBS += VBoxXPCOMImp
74
75#
76# We build several libraries so that any linker command line
77# length restrictions limit will be avoided. (Solaris, Mac?)
78#
79if !defined(VBOX_ONLY_SDK) && (!defined(VBOX_ONLY_EXTPACKS) || !defined(VBOX_ONLY_EXTPACKS_USE_IMPLIBS))
80
81VBOX_XPCOM_LIBRARIES := \
82 VBox-xpcom-nspr \
83 VBox-xpcom-typelib \
84 VBox-xpcom-string \
85 VBox-xpcom-base \
86 VBox-xpcom-ds \
87 VBox-xpcom-io \
88 VBox-xpcom-components \
89 VBox-xpcom-threads \
90 VBox-xpcom-xptinfo \
91 VBox-xpcom-xptcall \
92 VBox-xpcom-proxy \
93 VBox-xpcom-ipcshared \
94 VBoxXPCOMGlue_s \
95 $(if $(VBOX_WITH_XPCOM_GLUE_WHICH_IS_UNUSED),VBoxXPCOMGlue,)
96LIBRARIES += $(VBOX_XPCOM_LIBRARIES)
97
98VBOX_XPCOM_DLLS := \
99 VBoxXPCOM \
100 VBoxXPCOMIPCC
101DLLS += $(VBOX_XPCOM_DLLS)
102
103 ifdef VBOX_WITH_32_ON_64_MAIN_API
104LIBRARIES += $(addsuffix -x86,$(VBOX_XPCOM_LIBRARIES))
105DLLS += $(addsuffix -x86,$(VBOX_XPCOM_DLLS))
106 endif
107
108
109 ifdef VBOX_WITH_TESTCASES
110PROGRAMS += \
111 tstnsIFileTest \
112 tstTestArray \
113 tstTestAutoLock \
114 tstTestCOMPtr \
115 tstTestCOMPtrEq \
116 tstTestCRT \
117 tstTestFactory \
118 tstTestHashtables \
119 tstTestID \
120 tstTestObserverService \
121 tstTestPipes \
122 tstTestThreads \
123 tstTestXPIDLString \
124 tstTestXPTCInvoke \
125 tstTestDeque \
126 tstTestAutoPtr \
127 tstTestMinStringAPI \
128 tstTestStrings \
129 tstPrimitiveTest \
130# tstnsIFileEnumerator
131# tstTestAtoms
132# tstTestServMgr
133# tstTestCallTemplates
134# tstTestPermanentAtoms
135# tstSimpleTypeLib
136# tstXptDump
137# tstXptLink
138 endif # VBOX_WITH_TESTCASES
139PROGRAMS += VBoxXPCOMIPCD
140
141endif # !VBOX_ONLY_SDK && (!defined(VBOX_ONLY_EXTPACKS) || !defined(VBOX_ONLY_EXTPACKS_USE_IMPLIBS))
142
143
144
145
146#
147# SDK headers - lot's of files to install...
148#
149# Tip: If you are going to remove files here, you might
150# wish to do a `kmk uninstall' first to avoid have
151# obsoleted files in the $(INST_SDK) directory.
152#
153NSPRPUB-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/nsprpub/
154NSPRPUB-HEADERS_IFFLAGS = -m 644
155NSPRPUB-HEADERS_SOURCES = \
156 nsprpub/pr/include/nspr.h \
157 nsprpub/lib/ds/plarena.h \
158 nsprpub/lib/ds/plarenas.h \
159 nsprpub/lib/libc/include/plbase64.h \
160 nsprpub/lib/libc/include/plerror.h \
161 nsprpub/lib/libc/include/plgetopt.h \
162 nsprpub/lib/ds/plhash.h \
163 nsprpub/lib/libc/include/plresolv.h \
164 nsprpub/lib/libc/include/plstr.h \
165 nsprpub/pr/include/pratom.h \
166 nsprpub/pr/include/prbit.h \
167 nsprpub/pr/include/prclist.h \
168 nsprpub/pr/include/prcmon.h \
169 nsprpub/pr/include/prcountr.h \
170 nsprpub/pr/include/prcvar.h \
171 nsprpub/pr/include/prdtoa.h \
172 nsprpub/pr/include/prenv.h \
173 nsprpub/pr/include/prerr.h \
174 nsprpub/pr/include/prerror.h \
175 nsprpub/pr/include/prinet.h \
176 nsprpub/pr/include/prinit.h \
177 nsprpub/pr/include/prinrval.h \
178 nsprpub/pr/include/prio.h \
179 nsprpub/pr/include/pripcsem.h \
180 nsprpub/pr/include/prlink.h \
181 nsprpub/pr/include/prlock.h \
182 nsprpub/pr/include/prlog.h \
183 nsprpub/pr/include/prlong.h \
184 nsprpub/pr/include/prmem.h \
185 nsprpub/pr/include/prmon.h \
186 nsprpub/pr/include/prmwait.h \
187 nsprpub/pr/include/prnetdb.h \
188 nsprpub/pr/include/prolock.h \
189 nsprpub/pr/include/prpdce.h \
190 nsprpub/pr/include/prprf.h \
191 nsprpub/pr/include/prproces.h \
192 nsprpub/pr/include/prrng.h \
193 nsprpub/pr/include/prrwlock.h \
194 nsprpub/pr/include/prshm.h \
195 nsprpub/pr/include/prshma.h \
196 nsprpub/pr/include/prsystem.h \
197 nsprpub/pr/include/prthread.h \
198 nsprpub/pr/include/prtime.h \
199 nsprpub/pr/include/prtpool.h \
200 nsprpub/pr/include/prtrace.h \
201 nsprpub/pr/include/prtypes.h \
202 nsprpub/pr/include/prvrsion.h \
203 nsprpub/pr/include/prwin16.h \
204 nsprpub/pr/include/md/_vbox.cfg=>prcpucfg.h \
205
206NSPRPUB-MD-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/nsprpub/md/
207NSPRPUB-MD-HEADERS_IFFLAGS = -m 644
208NSPRPUB-MD-HEADERS_SOURCES = \
209 nsprpub/pr/include/md/_iprt_atomic.h \
210 nsprpub/pr/include/md/_darwin.h \
211 nsprpub/pr/include/md/_freebsd.h \
212 nsprpub/pr/include/md/_linux.h \
213 nsprpub/pr/include/md/_macos.h \
214 nsprpub/pr/include/md/_netbsd.h \
215 nsprpub/pr/include/md/_openbsd.h \
216 nsprpub/pr/include/md/_os2_errors.h \
217 nsprpub/pr/include/md/_os2.h \
218 nsprpub/pr/include/md/_pcos.h \
219 nsprpub/pr/include/md/_solaris.h \
220 nsprpub/pr/include/md/_unix_errors.h \
221 nsprpub/pr/include/md/_unixos.h \
222 nsprpub/pr/include/md/_pth.h \
223 nsprpub/pr/include/md/prosdep.h \
224 \
225 nsprpub/pr/include/md/_freebsd.cfg \
226 nsprpub/pr/include/md/_linux.cfg \
227 nsprpub/pr/include/md/_darwin.cfg \
228 nsprpub/pr/include/md/_netbsd.cfg \
229 nsprpub/pr/include/md/_openbsd.cfg \
230 nsprpub/pr/include/md/_os2.cfg \
231 nsprpub/pr/include/md/_solaris32.cfg \
232 nsprpub/pr/include/md/_solaris64.cfg \
233
234NSPRPUB-OBS-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/nsprpub/obsolete/
235NSPRPUB-OBS-HEADERS_IFFLAGS = -m 644
236NSPRPUB-OBS-HEADERS_SOURCES = \
237 nsprpub/pr/include/obsolete/pralarm.h \
238 nsprpub/pr/include/obsolete/probslet.h \
239 nsprpub/pr/include/obsolete/protypes.h \
240 nsprpub/pr/include/obsolete/prsem.h
241
242NSPRPUB-PRIV-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/nsprpub/private/
243NSPRPUB-PRIV-HEADERS_IFFLAGS = -m 644
244NSPRPUB-PRIV-HEADERS_SOURCES = \
245 nsprpub/pr/include/private/pprio.h \
246 nsprpub/pr/include/private/pprthred.h \
247 nsprpub/pr/include/private/prpriv.h
248
249STRING-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/string/
250STRING-HEADERS_IFFLAGS = -m 644
251STRING-HEADERS_SOURCES = \
252 xpcom/string/public/nsAString.h \
253 xpcom/string/public/nsAlgorithm.h \
254 xpcom/string/public/nsCharTraits.h \
255 xpcom/string/public/nsDependentString.h \
256 xpcom/string/public/nsDependentSubstring.h \
257 xpcom/string/public/nsEmbedString.h \
258 xpcom/string/public/nsLiteralString.h \
259 xpcom/string/public/nsObsoleteAString.h \
260 xpcom/string/public/nsPrintfCString.h \
261 xpcom/string/public/nsPromiseFlatString.h \
262 xpcom/string/public/nsReadableUtils.h \
263 xpcom/string/public/nsString.h \
264 xpcom/string/public/nsStringAPI.h \
265 xpcom/string/public/nsStringFwd.h \
266 xpcom/string/public/nsStringIterator.h \
267 xpcom/string/public/nsSubstring.h \
268 xpcom/string/public/nsSubstringTuple.h \
269 xpcom/string/public/nsTAString.h \
270 xpcom/string/public/nsTDependentString.h \
271 xpcom/string/public/nsTDependentSubstring.h \
272 xpcom/string/public/nsTObsoleteAString.h \
273 xpcom/string/public/nsTPromiseFlatString.h \
274 xpcom/string/public/nsTString.h \
275 xpcom/string/public/nsTSubstring.h \
276 xpcom/string/public/nsTSubstringTuple.h \
277 xpcom/string/public/nsUTF8Utils.h \
278 xpcom/string/public/nsXPIDLString.h \
279 xpcom/string/public/string-template-def-char.h \
280 xpcom/string/public/string-template-def-unichar.h \
281 xpcom/string/public/string-template-undef.h
282
283XPCOM-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/xpcom/
284XPCOM-HEADERS_IFFLAGS = -m 644
285XPCOM-HEADERS_SOURCES = \
286 xpcom/base/nsAgg.h \
287 xpcom/io/nsAppDirectoryServiceDefs.h \
288 xpcom/ds/nsArray.h \
289 xpcom/ds/nsArrayEnumerator.h \
290 xpcom/ds/nsAtomService.h \
291 xpcom/ds/nsAutoBuffer.h \
292 xpcom/threads/nsAutoLock.h \
293 xpcom/base/nsAutoPtr.h \
294 xpcom/ds/nsBaseHashtable.h \
295 xpcom/ds/nsCOMArray.h \
296 xpcom/ds/nsCRT.h \
297 xpcom/components/nsCategoryManagerUtils.h \
298 xpcom/ds/nsCheapSets.h \
299 xpcom/ds/nsClassHashtable.h \
300 xpcom/base/nsCom.h \
301 xpcom/components/nsComponentManagerObsolete.h \
302 xpcom/components/nsComponentManagerUtils.h \
303 xpcom/ds/nsCppSharedAllocator.h \
304 xpcom/ds/nsDataHashtable.h \
305 xpcom/base/nsDebugImpl.h \
306 xpcom/ds/nsDeque.h \
307 xpcom/io/nsDirectoryService.h \
308 xpcom/io/nsDirectoryServiceDefs.h \
309 xpcom/io/nsDirectoryServiceUtils.h \
310 xpcom/ds/nsDoubleHashtable.h \
311 xpcom/ds/nsEnumeratorUtils.h \
312 xpcom/base/nsError.h \
313 xpcom/io/nsEscape.h \
314 xpcom/threads/nsEventQueueUtils.h \
315 xpcom/io/nsFastLoadPtr.h \
316 xpcom/io/nsFastLoadService.h \
317 xpcom/ds/nsFixedSizeAllocator.h \
318 xpcom/ds/nsHashKeys.h \
319 xpcom/ds/nsHashSets.h \
320 xpcom/ds/nsHashtable.h \
321 xpcom/base/nsIAllocator.h \
322 xpcom/ds/nsIByteBuffer.h \
323 xpcom/base/nsID.h \
324 xpcom/base/nsIID.h \
325 xpcom/components/nsIServiceManagerObsolete.h \
326 xpcom/components/nsIServiceManagerUtils.h \
327 xpcom/base/nsISupportsBase.h \
328 xpcom/base/nsISupportsObsolete.h \
329 xpcom/ds/nsIUnicharBuffer.h \
330 xpcom/io/nsIUnicharInputStream.h \
331 xpcom/ds/nsInt64.h \
332 xpcom/ds/nsInterfaceHashtable.h \
333 xpcom/io/nsLinebreakConverter.h \
334 xpcom/io/nsLocalFile.h \
335 xpcom/io/nsLocalFileUnix.h \
336 xpcom/io/nsLocalFileOS2.h \
337 xpcom/io/nsLocalFileOSX.h \
338 xpcom/components/nsModule.h \
339 xpcom/io/nsMultiplexInputStream.h \
340 xpcom/io/nsNativeCharsetUtils.h \
341 xpcom/components/nsNativeComponentLoader.h \
342 xpcom/ds/nsObserverService.h \
343 xpcom/components/nsObsoleteModuleLoading.h \
344 xpcom/threads/nsProcess.h \
345 xpcom/proxy/public/nsProxiedService.h \
346 xpcom/proxy/public/nsProxyEvent.h \
347 xpcom/proxy/public/nsProxyRelease.h \
348 xpcom/ds/nsQuickSort.h \
349 xpcom/ds/nsRecyclingAllocator.h \
350 xpcom/ds/nsRefPtrHashtable.h \
351 xpcom/io/nsScriptableInputStream.h \
352 xpcom/ds/nsStaticAtom.h \
353 xpcom/components/nsStaticComponent.h \
354 xpcom/ds/nsStaticNameTable.h \
355 xpcom/io/nsStorageStream.h \
356 xpcom/io/nsStreamUtils.h \
357 xpcom/ds/nsStringEnumerator.h \
358 xpcom/io/nsStringIO.h \
359 xpcom/io/nsStringStream.h \
360 xpcom/ds/nsSupportsArray.h \
361 xpcom/ds/nsSupportsPrimitives.h \
362 xpcom/ds/nsTHashtable.h \
363 xpcom/ds/nsTextFormatter.h \
364 xpcom/ds/nsTime.h \
365 xpcom/base/nsTraceRefcntImpl.h \
366 xpcom/ds/nsUnitConversion.h \
367 xpcom/ds/nsValueArray.h \
368 xpcom/ds/nsVariant.h \
369 xpcom/ds/nsVoidArray.h \
370 xpcom/base/nsWeakPtr.h \
371 xpcom/build/nsXPCOM.h \
372 xpcom/build/nsXPCOMCID.h \
373 xpcom/base/nscore.h \
374 xpcom/ds/pldhash.h \
375 xpcom/threads/plevent.h \
376 xpcom/components/xcDll.h \
377 xpcom/typelib/xpt/public/xpt_arena.h \
378 xpcom/typelib/xpt/public/xpt_struct.h \
379 xpcom/typelib/xpt/public/xpt_xdr.h \
380 xpcom/reflect/xptcall/public/xptcall.h \
381 xpcom/reflect/xptcall/public/xptcstubsdecl.inc \
382 xpcom/reflect/xptcall/public/xptcstubsdef.inc \
383 xpcom/reflect/xptinfo/public/xptinfo.h \
384 \
385 xpcom/glue/nsIInterfaceRequestorUtils.h \
386 xpcom/glue/nsISupportsImpl.h \
387 xpcom/glue/nsISupportsUtils.h \
388 xpcom/glue/nsIWeakReferenceUtils.h \
389 \
390 xpcom/glue/nsCOMPtr.h \
391 xpcom/glue/nsDebug.h \
392 xpcom/glue/nsGenericFactory.h \
393 xpcom/glue/nsIGenericFactory.h \
394 xpcom/glue/nsMemory.h \
395 xpcom/glue/nsTraceRefcnt.h \
396 xpcom/glue/nsWeakReference.h \
397 \
398 xpcom/glue/standalone/nsXPCOMGlue.h \
399 \
400 xpcom-config.h
401
402IPCD-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/ipcd/
403IPCD-HEADERS_IFFLAGS = -m 644
404IPCD-HEADERS_SOURCES = \
405 ipc/ipcd/client/public/ipcCID.h \
406 ipc/ipcd/extensions/lock/public/ipcLockCID.h \
407 ipc/ipcd/util/public/ipcMessageReader.h \
408 ipc/ipcd/util/public/ipcMessageWriter.h \
409 ipc/ipcd/daemon/public/ipcModule.h \
410 ipc/ipcd/daemon/public/ipcModuleUtil.h \
411 ipc/ipcd/client/public/ipcdclient.h
412
413
414#
415# The IDL compiler.
416#
417# We build it statically because we cannot rely on additional .a files
418# like in the original build
419#
420xpidl_TEMPLATE = XPCOMBLDPROG
421xpidl_DEFS = EXPORT_XPT_API
422## @todo This assumes HOST == TARGET.
423xpidl_INST = $(INST_BIN)
424## Obsolete hack: MacPorts is 32-bit on 10.5 and 64-bit on 10.6. Set your KBUILD_HOST_ARCH env.vars. accordingly.
425#if "$(KBUILD_HOST).$(KBUILD_HOST_ARCH)" == "darwin.amd64" && defined(VBOX_MACOS_10_5_WORKAROUND)
426# xpidl_BLD_TRG_ARCH = x86
427# ## @todo kBuild ticket 84 workarounds:
428# xpidl_DEFS.x86 = $(TEMPLATE_XPCOMBLDPROG_DEFS.x86)
429# xpidl_CFLAGS.x86 = $(TEMPLATE_XPCOMBLDPROG_CFLAGS.x86)
430# xpidl_CXXFLAGS.x86 = $(TEMPLATE_XPCOMBLDPROG_CXXFLAGS.x86)
431# xpidl_LDFLAGS.x86 = $(TEMPLATE_XPCOMBLDPROG_LDFLAGS.x86)
432#endif
433ifdef VBOX_WITH_JAVA_SUPPORT_IN_XPIDL
434 xpidl_DEFS += VBOX_XPIDL_EMULATE_GENJIFACES VBOX_XPIDL_EMULATE_GENJIFACES_DIFF
435endif
436xpidl_SOURCES = \
437 xpcom/typelib/xpidl/xpidl.c \
438 xpcom/typelib/xpidl/xpidl_idl.c \
439 xpcom/typelib/xpidl/xpidl_util.c \
440 xpcom/typelib/xpidl/xpidl_header.c \
441 xpcom/typelib/xpidl/xpidl_typelib.c \
442 xpcom/typelib/xpidl/xpidl_doc.c \
443 xpcom/typelib/xpidl/xpidl_java.c \
444 xpcom/typelib/xpt/src/xpt_arena.c \
445 xpcom/typelib/xpt/src/xpt_struct.c \
446 xpcom/typelib/xpt/src/xpt_xdr.c
447
448ifeq ($(KBUILD_TARGET),os2)
449 # glib and libIDL needed by XPCOM on OS/2.
450 ifeq ($(VBOX_PATH_GLIB),)
451 VBOX_PATH_GLIB := $(lastword $(sort $(wildcard $(KBUILD_DEVTOOLS_TRG)/glibidl/*/glibidl/gcc335)))
452 endif
453 VBOX_PATH_LIBIDL ?= $(VBOX_PATH_GLIB)
454 ifeq ($(wildcard $(VBOX_PATH_GLIB)),)
455 $(warning VBOX_PATH_GLIB is "$(VBOX_PATH_GLIB)" which is not a valid directory!)
456 endif
457 ifeq ($(wildcard $(VBOX_PATH_LIBIDL)),)
458 $(warning VBOX_PATH_LIBIDL is "$(VBOX_PATH_LIBIDL)" which is not a valid directory!)
459 endif
460 xpidl_INCS = \
461 $(VBOX_PATH_LIBIDL)/include \
462 $(VBOX_PATH_GLIB)/include
463 xpidl_LIBS = \
464 $(VBOX_PATH_LIBIDL)/lib/libidl.lib \
465 $(VBOX_PATH_LIBIDL)/lib/glib.lib
466 # install necessary DLLs to the same place where xpidl goes
467 INSTALLS += xpidl-DLLS
468 xpidl_ORDERDEPS = $(xpidl-DLLS_1_TARGET)
469 xpidl-DLLS_INST = $(xpidl_INST)
470 # static libraries of these may be provided instead,
471 # so copy DLLs only when they are present
472 xpidl-DLLS_SOURCES += $(wildcard $(VBOX_PATH_GLIB)/lib/glib.dll)
473 xpidl-DLLS_SOURCES += $(wildcard $(VBOX_PATH_LIBIDL)/lib/libIDL.dll)
474else
475 # We do these ONCE.
476 libIDL_config_cflags := $(shell $(VBOX_LIBIDL_CONFIG) --cflags)
477 libIDL_config_libs := $(shell $(VBOX_LIBIDL_CONFIG) --libs)
478 xpidl_CFLAGS = \
479 $(libIDL_config_cflags)
480 if1of ($(KBUILD_HOST), linux solaris)
481 xpidl_LDFLAGS = \
482 $(filter-out -l%,$(libIDL_config_libs))
483 xpidl_LIBS.$(KBUILD_HOST) += \
484 $(subst -l,,$(filter -l%,$(libIDL_config_libs)))
485 else
486 xpidl_LDFLAGS = \
487 $(libIDL_config_libs)
488 endif
489 xpidl_LDFLAGS.linux = \
490 $(VBOX_LD_as_needed)
491endif
492
493#
494# The XPT linker.
495#
496xpt_link_TEMPLATE = XPCOMBLDPROG
497xpt_link_SOURCES = \
498 xpcom/typelib/xpt/tools/xpt_link.c \
499 xpcom/typelib/xpt/src/xpt_arena.c \
500 xpcom/typelib/xpt/src/xpt_struct.c \
501 xpcom/typelib/xpt/src/xpt_xdr.c
502
503
504#
505# The NSPR Library.
506#
507VBox-xpcom-nspr_TEMPLATE = XPCOM
508VBox-xpcom-nspr_INSTTYPE = none
509VBox-xpcom-nspr_DEFS = \
510 _NSPR_BUILD_ \
511 HAVE_LCHOWN=1 \
512 HAVE_STRERROR=1 \
513 FORCE_PR_LOG
514VBox-xpcom-nspr_DEFS += \
515 VBOX_USE_IPRT_IN_NSPR
516VBox-xpcom-nspr_DEFS.darwin.amd64 = \
517 VBOX_USE_MORE_IPRT_IN_NSPR
518VBox-xpcom-nspr_DEFS.darwin.arm64 = \
519 VBOX_USE_MORE_IPRT_IN_NSPR
520VBox-xpcom-nspr_DEFS.darwin = \
521 HAVE_BSD_FLOCK=1 \
522 HAVE_SOCKLEN_T=1 \
523 _PR_PTHREADS
524VBox-xpcom-nspr_DEFS.freebsd = \
525 FREEBSD=1 \
526 HAVE_CVAR_BUILT_ON_SEM \
527 _PR_PTHREADS
528## @todo filling in the missing stuff, please don't just copy it from linux.
529# FIXME: LINUX should be defined by _linux.cfg
530VBox-xpcom-nspr_DEFS.linux = \
531 LINUX=1 \
532 _POSIX_SOURCE=1 \
533 _BSD_SOURCE=1 \
534 _SVID_SOURCE=1 \
535 _DEFAULT_SOURCE \
536 _REENTRANT=1 \
537 _LARGEFILE64_SOURCE=1 \
538 HAVE_FCNTL_FILE_LOCKING=1 \
539 HAVE_CVAR_BUILT_ON_SEM \
540 _PR_PTHREADS
541# _BSD_SOURCE is here to keep the Glibc header files happy and make them include the right things
542VBox-xpcom-nspr_DEFS.netbsd = \
543 _PR_PTHREADS
544VBox-xpcom-nspr_DEFS.openbsd = \
545 _PR_PTHREADS
546VBox-xpcom-nspr_DEFS.os2 =
547VBox-xpcom-nspr_DEFS.solaris = \
548 HAVE_FCNTL_FILE_LOCKING=1 \
549 HAVE_SOCKLEN_T=1 \
550 _PR_PTHREADS
551VBox-xpcom-nspr_INCS = \
552 nsprpub/pr/include/private \
553 $(VBox-xpcom-nspr_0_OUTDIR)
554
555VBox-xpcom-nspr_SOURCES = \
556 nsprpub/pr/src/io/prfdcach.c \
557 nsprpub/pr/src/io/prmwait.c \
558 nsprpub/pr/src/io/priometh.c \
559 nsprpub/pr/src/io/pripv6.c \
560 nsprpub/pr/src/io/prmapopt.c \
561 nsprpub/pr/src/io/prlayer.c \
562 nsprpub/pr/src/io/prlog.c \
563 nsprpub/pr/src/io/prmmap.c \
564 nsprpub/pr/src/io/prpolevt.c \
565 nsprpub/pr/src/io/prprf.c \
566 nsprpub/pr/src/io/prscanf.c \
567 nsprpub/pr/src/io/prstdio.c \
568 nsprpub/pr/src/linking/prlink.c \
569 nsprpub/pr/src/malloc/prmalloc.c \
570 nsprpub/pr/src/malloc/prmem.c \
571 nsprpub/pr/src/md/prosdep.c \
572 nsprpub/pr/src/memory/prseg.c \
573 nsprpub/pr/src/memory/prshm.c \
574 nsprpub/pr/src/memory/prshma.c \
575 nsprpub/pr/src/misc/pralarm.c \
576 nsprpub/pr/src/misc/pratom.c \
577 nsprpub/pr/src/misc/prcountr.c \
578 nsprpub/pr/src/misc/prdtoa.c \
579 nsprpub/pr/src/misc/prenv.c \
580 nsprpub/pr/src/misc/prerr.c \
581 nsprpub/pr/src/misc/prerror.c \
582 nsprpub/pr/src/misc/prerrortable.c \
583 nsprpub/pr/src/misc/prinit.c \
584 nsprpub/pr/src/misc/prinrval.c \
585 nsprpub/pr/src/misc/pripc.c \
586 nsprpub/pr/src/misc/prlog2.c \
587 nsprpub/pr/src/misc/prlong.c \
588 nsprpub/pr/src/misc/prnetdb.c \
589 nsprpub/pr/src/misc/prolock.c \
590 nsprpub/pr/src/misc/prrng.c \
591 nsprpub/pr/src/misc/prsystem.c \
592 nsprpub/pr/src/misc/prtime.c \
593 nsprpub/pr/src/misc/prthinfo.c \
594 nsprpub/pr/src/misc/prtpool.c \
595 nsprpub/pr/src/misc/prtrace.c \
596 nsprpub/pr/src/threads/prcmon.c \
597 nsprpub/pr/src/threads/prrwlock.c \
598 nsprpub/pr/src/threads/prtpd.c \
599 nsprpub/pr/src/prvrsion.c \
600 nsprpub/lib/ds/plarena.c \
601 nsprpub/lib/ds/plhash.c \
602 nsprpub/lib/libc/src/strlen.c \
603 nsprpub/lib/libc/src/strcpy.c \
604 nsprpub/lib/libc/src/strdup.c \
605 nsprpub/lib/libc/src/strcat.c \
606 nsprpub/lib/libc/src/strcmp.c \
607 nsprpub/lib/libc/src/strccmp.c \
608 nsprpub/lib/libc/src/strchr.c \
609 nsprpub/lib/libc/src/strpbrk.c \
610 nsprpub/lib/libc/src/strstr.c \
611 nsprpub/lib/libc/src/strcstr.c \
612 nsprpub/lib/libc/src/strtok.c \
613 nsprpub/lib/libc/src/base64.c \
614 nsprpub/lib/libc/src/plerror.c \
615 nsprpub/lib/libc/src/plgetopt.c
616
617ifeq ($(filter-out darwin freebsd linux netbsd openbsd solaris,$(KBUILD_TARGET)),) # unixish
618VBox-xpcom-nspr_SOURCES += \
619 nsprpub/pr/src/md/unix/unix.c \
620 nsprpub/pr/src/md/unix/unix_errors.c \
621 nsprpub/pr/src/md/unix/uxproces.c \
622 nsprpub/pr/src/md/unix/uxrng.c \
623 nsprpub/pr/src/md/unix/uxshm.c \
624 nsprpub/pr/src/md/unix/uxwrap.c \
625 nsprpub/pr/src/pthreads/ptio.c \
626 nsprpub/pr/src/pthreads/ptsynch.c \
627 nsprpub/pr/src/pthreads/ptthread.c \
628 nsprpub/pr/src/pthreads/ptmisc.c
629endif
630
631VBox-xpcom-nspr_SOURCES.darwin = nsprpub/pr/src/md/unix/darwin.c
632VBox-xpcom-nspr_SOURCES.darwin.x86 = nsprpub/pr/src/md/unix/os_Darwin_x86.s
633
634VBox-xpcom-nspr_SOURCES.freebsd = nsprpub/pr/src/md/unix/freebsd.c
635
636VBox-xpcom-nspr_SOURCES.linux = nsprpub/pr/src/md/unix/linux.c
637VBox-xpcom-nspr_SOURCES.linux.x86 = nsprpub/pr/src/md/unix/os_Linux_x86.s
638VBox-xpcom-nspr_SOURCES.linux.amd64 = nsprpub/pr/src/md/unix/os_Linux_x86_64.s
639
640VBox-xpcom-nspr_SOURCES.os2 = \
641 nsprpub/pr/src/io/prdir.c \
642 nsprpub/pr/src/io/prfile.c \
643 nsprpub/pr/src/io/prio.c \
644 nsprpub/pr/src/io/prsocket.c \
645 nsprpub/pr/src/md/os2/os2misc.c \
646 nsprpub/pr/src/md/os2/os2sem.c \
647 nsprpub/pr/src/md/os2/os2inrval.c \
648 nsprpub/pr/src/md/os2/os2gc.c \
649 nsprpub/pr/src/md/os2/os2thred.c \
650 nsprpub/pr/src/md/os2/os2io.c \
651 nsprpub/pr/src/md/os2/os2cv.c \
652 nsprpub/pr/src/md/os2/os2sock.c \
653 nsprpub/pr/src/md/os2/os2_errors.c \
654 nsprpub/pr/src/md/os2/os2poll.c \
655 nsprpub/pr/src/md/os2/os2rng.c \
656 nsprpub/pr/src/threads/prdump.c \
657 nsprpub/pr/src/threads/prmon.c \
658 nsprpub/pr/src/threads/prsem.c \
659 nsprpub/pr/src/threads/prcthr.c \
660 nsprpub/pr/src/threads/combined/prucpu.c \
661 nsprpub/pr/src/threads/combined/prucv.c \
662 nsprpub/pr/src/threads/combined/prulock.c \
663 nsprpub/pr/src/threads/combined/prustack.c \
664 nsprpub/pr/src/threads/combined/pruthr.c
665# gcc/emx sources
666VBox-xpcom-nspr_SOURCES.os2 += \
667 nsprpub/pr/src/md/os2/os2emx.s \
668 nsprpub/pr/src/md/os2/os2vaclegacy.s
669# IBM VAC sources (not used)
670#VBox-xpcom-nspr_SOURCES.os2 += \
671# nsprpub/pr/src/md/os2/os2vacpp.asm
672
673VBox-xpcom-nspr_SOURCES.solaris = nsprpub/pr/src/md/unix/solaris.c
674VBox-xpcom-nspr_SOURCES.solaris.x86 = nsprpub/pr/src/md/unix/os_SunOS_x86.s
675VBox-xpcom-nspr_SOURCES.solaris.amd64 = nsprpub/pr/src/md/unix/os_SunOS_x86_64.s
676
677# generate build stamps
678nsprpub/pr/src/prvrsion.c_DEPS = $(VBox-xpcom-nspr_0_OUTDIR)/_pr_bld.h
679nsprpub/lib/ds/plvrsion.c_DEPS = $(VBox-xpcom-nspr_0_OUTDIR)/_pl_bld.h
680VBox-xpcom-nspr_CLEAN += \
681 $(VBox-xpcom-nspr_0_OUTDIR)/_pr_bld.h \
682 $(VBox-xpcom-nspr_0_OUTDIR)/_pl_bld.h
683
684$$(VBox-xpcom-nspr_0_OUTDIR)/_pr_bld.h: | $$(VBox-xpcom-nspr_0_OUTDIR)/
685 $(call MSG_GENERATE,,$@)
686 $(QUIET)$(APPEND) -t $@ '#define _BUILD_STRING "$(date +%Y-%m-%d %T)"'
687
688$$(VBox-xpcom-nspr_0_OUTDIR)/_pl_bld.h: | $$(VBox-xpcom-nspr_0_OUTDIR)/
689 $(call MSG_GENERATE,,$@)
690 $(QUIET)$(APPEND) -t $@ '#define _BUILD_STRING "$(date +%Y-%m-%d %T)"'
691
692$(evalcall2 VBOX_XPCOM_X86,VBox-xpcom-nspr)
693
694
695VBox-xpcom-typelib_TEMPLATE = XPCOM
696VBox-xpcom-typelib_INSTTYPE = none
697VBox-xpcom-typelib_SOURCES = \
698 xpcom/typelib/xpt/src/xpt_arena.c \
699 xpcom/typelib/xpt/src/xpt_struct.c \
700 xpcom/typelib/xpt/src/xpt_xdr.c
701$(evalcall VBOX_XPCOM_X86,VBox-xpcom-typelib)
702
703VBox-xpcom-string_TEMPLATE = XPCOM
704VBox-xpcom-string_INSTTYPE = none
705VBox-xpcom-string_SOURCES = \
706 xpcom/string/src/nsAString.cpp \
707 xpcom/string/src/nsDependentSubstring.cpp \
708 xpcom/string/src/nsObsoleteAStringThunk.cpp \
709 xpcom/string/src/nsPrintfCString.cpp \
710 xpcom/string/src/nsPromiseFlatString.cpp \
711 xpcom/string/src/nsReadableUtils.cpp \
712 xpcom/string/src/nsSubstring.cpp \
713 xpcom/string/src/nsSubstringTuple.cpp \
714 xpcom/string/src/nsString.cpp \
715 xpcom/string/src/nsStringComparator.cpp \
716 xpcom/string/src/nsStringObsolete.cpp
717$(evalcall VBOX_XPCOM_X86,VBox-xpcom-string)
718
719VBox-xpcom-base_TEMPLATE = XPCOM
720VBox-xpcom-base_INSTTYPE = none
721VBox-xpcom-base_DEFS = _IMPL_NS_COM
722VBox-xpcom-base_SOURCES = \
723 xpcom/base/nsAllocator.cpp \
724 xpcom/base/nsConsoleMessage.cpp \
725 xpcom/base/nsConsoleService.cpp \
726 xpcom/base/nsDebugImpl.cpp \
727 xpcom/base/nsErrorService.cpp \
728 xpcom/base/nsExceptionService.cpp \
729 xpcom/base/nsID.cpp \
730 xpcom/base/nsMemoryImpl.cpp \
731 xpcom/base/nsTraceRefcntImpl.cpp \
732 xpcom/base/nsStackFrameUnix.cpp
733$(evalcall VBOX_XPCOM_X86,VBox-xpcom-base)
734
735VBox-xpcom-ds_TEMPLATE = XPCOM
736VBox-xpcom-ds_INSTTYPE = none
737VBox-xpcom-ds_DEFS = _IMPL_NS_COM
738VBox-xpcom-ds_SOURCES = \
739 xpcom/ds/pldhash.c \
740 xpcom/ds/nsAtomTable.cpp \
741 xpcom/ds/nsAtomService.cpp \
742 xpcom/ds/nsByteBuffer.cpp \
743 xpcom/ds/nsCheapSets.cpp \
744 xpcom/ds/nsCRT.cpp \
745 xpcom/ds/nsDeque.cpp \
746 xpcom/ds/nsEmptyEnumerator.cpp \
747 xpcom/ds/nsEnumeratorUtils.cpp \
748 xpcom/ds/nsFixedSizeAllocator.cpp \
749 xpcom/ds/nsHashSets.cpp \
750 xpcom/ds/nsHashtable.cpp \
751 xpcom/ds/nsObserverList.cpp \
752 xpcom/ds/nsObserverService.cpp \
753 xpcom/ds/nsProperties.cpp \
754 xpcom/ds/nsPersistentProperties.cpp \
755 xpcom/ds/nsQuickSort.cpp \
756 xpcom/ds/nsRecyclingAllocator.cpp \
757 xpcom/ds/nsStaticNameTable.cpp \
758 xpcom/ds/nsStringEnumerator.cpp \
759 xpcom/ds/nsSupportsArray.cpp \
760 xpcom/ds/nsSupportsArrayEnumerator.cpp \
761 xpcom/ds/nsSupportsPrimitives.cpp \
762 xpcom/ds/nsTHashtable.cpp \
763 xpcom/ds/nsUnicharBuffer.cpp \
764 xpcom/ds/nsVariant.cpp \
765 xpcom/ds/nsVoidArray.cpp \
766 xpcom/ds/nsTextFormatter.cpp \
767 xpcom/ds/nsTimelineService.cpp \
768 xpcom/ds/nsValueArray.cpp \
769 xpcom/ds/nsCOMArray.cpp \
770 xpcom/ds/nsArray.cpp \
771 xpcom/ds/nsArrayEnumerator.cpp
772# xpcom/ds/nsHashPropertyBag.cpp
773$(evalcall VBOX_XPCOM_X86,VBox-xpcom-ds)
774
775# @todo what about MOZ_USER_DIR?
776VBox-xpcom-io_TEMPLATE = XPCOM
777VBox-xpcom-io_INSTTYPE = none
778ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
779 VBox-xpcom-io_DEFS = _IMPL_NS_COM MOZ_USER_DIR=".mozilla"
780else
781 VBox-xpcom-io_DEFS = _IMPL_NS_COM MOZ_USER_DIR=\".mozilla\"
782endif
783if defined(VBOX_WITH_HARDENING) && defined(VBOX_PATH_APP_PRIVATE_ARCH)
784 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
785 VBox-xpcom-io_DEFS += MOZ_DEFAULT_VBOX_XPCOM_HOME="$(VBOX_PATH_APP_PRIVATE_ARCH)"
786 else
787 VBox-xpcom-io_DEFS += MOZ_DEFAULT_VBOX_XPCOM_HOME=\"$(VBOX_PATH_APP_PRIVATE_ARCH)\"
788 endif
789endif
790VBox-xpcom-io_INCS.darwin = \
791 xpcom/MoreFiles
792VBox-xpcom-io_SOURCES = \
793 xpcom/io/nsAppFileLocationProvider.cpp \
794 xpcom/io/nsBinaryStream.cpp \
795 xpcom/io/nsByteArrayInputStream.cpp \
796 xpcom/io/nsDirectoryService.cpp \
797 xpcom/io/nsEscape.cpp \
798 xpcom/io/nsFastLoadFile.cpp \
799 xpcom/io/nsFastLoadService.cpp \
800 xpcom/io/nsInputStreamTee.cpp \
801 xpcom/io/nsLinebreakConverter.cpp \
802 xpcom/io/nsLocalFileCommon.cpp \
803 xpcom/io/nsMultiplexInputStream.cpp \
804 xpcom/io/nsPipe3.cpp \
805 xpcom/io/nsStreamUtils.cpp \
806 xpcom/io/nsScriptableInputStream.cpp \
807 xpcom/io/nsSegmentedBuffer.cpp \
808 xpcom/io/SpecialSystemDirectory.cpp \
809 xpcom/io/nsStorageStream.cpp \
810 xpcom/io/nsStringStream.cpp \
811 xpcom/io/nsUnicharInputStream.cpp \
812 xpcom/io/nsNativeCharsetUtils.cpp
813VBox-xpcom-io_SOURCES.darwin.x86 = \
814 xpcom/io/nsLocalFileOSX.cpp \
815 xpcom/MoreFiles/FSCopyObject.c \
816 xpcom/MoreFiles/MoreFilesX.c
817if1of ($(KBUILD_TARGET) $(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), freebsd linux netbsd openbsd solaris darwin.amd64 darwin.arm64)
818VBox-xpcom-io_SOURCES += \
819 xpcom/io/nsLocalFileUnix.cpp
820endif
821VBox-xpcom-io_SOURCES.os2 = \
822 xpcom/io/nsLocalFileOS2.cpp
823$(evalcall VBOX_XPCOM_X86,VBox-xpcom-io)
824
825VBox-xpcom-components_TEMPLATE = XPCOM
826VBox-xpcom-components_INSTTYPE = none
827VBox-xpcom-components_DEFS = _IMPL_NS_COM EXPORT_XPTI_API
828VBox-xpcom-components_SOURCES = \
829 xpcom/components/nsCategoryManager.cpp \
830 xpcom/components/nsComponentManager.cpp \
831 xpcom/components/nsComponentManagerObsolete.cpp \
832 xpcom/components/nsNativeComponentLoader.cpp \
833 xpcom/components/nsServiceManagerObsolete.cpp \
834 xpcom/components/xcDll.cpp \
835 xpcom/components/nsStaticComponentLoader.cpp
836$(evalcall VBOX_XPCOM_X86,VBox-xpcom-components)
837
838VBox-xpcom-threads_TEMPLATE = XPCOM
839VBox-xpcom-threads_INSTTYPE = none
840VBox-xpcom-threads_DEFS = _IMPL_NS_COM
841VBox-xpcom-threads_SOURCES = \
842 xpcom/threads/plevent.c \
843 xpcom/threads/nsAutoLock.cpp \
844 xpcom/threads/nsEnvironment.cpp \
845 xpcom/threads/nsEventQueue.cpp \
846 xpcom/threads/nsEventQueueService.cpp \
847 xpcom/threads/nsThread.cpp \
848 xpcom/threads/nsTimerImpl.cpp \
849 xpcom/threads/nsProcessCommon.cpp \
850 xpcom/threads/TimerThread.cpp
851$(evalcall VBOX_XPCOM_X86,VBox-xpcom-threads)
852
853VBox-xpcom-xptinfo_TEMPLATE = XPCOM
854VBox-xpcom-xptinfo_INSTTYPE = none
855VBox-xpcom-xptinfo_DEFS = _IMPL_NS_COM _IMPL_NS_BASE EXPORT_XPTI_API EXPORT_XPT_API
856VBox-xpcom-xptinfo_SOURCES = \
857 xpcom/reflect/xptinfo/src/xptiFile.cpp \
858 xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp \
859 xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp \
860 xpcom/reflect/xptinfo/src/xptiManifest.cpp \
861 xpcom/reflect/xptinfo/src/xptiMisc.cpp \
862 xpcom/reflect/xptinfo/src/xptiTypelibGuts.cpp \
863 xpcom/reflect/xptinfo/src/xptiWorkingSet.cpp \
864 xpcom/reflect/xptinfo/src/xptiZipItem.cpp \
865 xpcom/reflect/xptinfo/src/xptiZipLoader.cpp
866$(evalcall VBOX_XPCOM_X86,VBox-xpcom-xptinfo)
867
868
869VBox-xpcom-xptcall_TEMPLATE = XPCOMYASM
870VBox-xpcom-xptcall_INSTTYPE = none
871VBox-xpcom-xptcall_DEFS = _IMPL_NS_COM _IMPL_NS_BASE EXPORT_XPTC_API
872VBox-xpcom-xptcall_DEFS.darwin = KEEP_STACK_16_BYTE_ALIGNED
873VBox-xpcom-xptcall_DEFS.os2 = MOZ_NEED_LEADING_UNDERSCORE
874VBox-xpcom-xptcall_INCS.os2 = xpcom/reflect/xptcall/src/md/unix
875VBox-xpcom-xptcall_SOURCES = xpcom/reflect/xptcall/src/xptcall.cpp
876VBox-xpcom-xptcall_SOURCES.darwin.x86 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_x86.cpp \
877 xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_x86.cpp
878VBox-xpcom-xptcall_SOURCES.freebsd.x86 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_gcc_x86_unix.cpp \
879 xpcom/reflect/xptcall/src/md/unix/xptcstubs_gcc_x86_unix.cpp
880VBox-xpcom-xptcall_SOURCES.linux.x86 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_gcc_x86_unix.cpp \
881 xpcom/reflect/xptcall/src/md/unix/xptcstubs_gcc_x86_unix.cpp
882VBox-xpcom-xptcall_SOURCES.os2 = xpcom/reflect/xptcall/src/md/os2/xptcinvoke_gcc_x86_os2.cpp \
883 xpcom/reflect/xptcall/src/md/os2/xptcstubs_gcc_x86_os2.cpp
884VBox-xpcom-xptcall_SOURCES.solaris.x86 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_solaris.cpp \
885 xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_solaris.cpp
886VBox-xpcom-xptcall_SOURCES.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_amd64_vbox.asm
887VBox-xpcom-xptcall_SOURCES.arm64 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm64_vbox.cpp \
888 xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm64_vbox.cpp
889VBox-xpcom-xptcall_SOURCES.darwin.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcstubs_amd64_darwin.cpp # Underscore prefix.
890VBox-xpcom-xptcall_SOURCES.freebsd.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_linux.cpp
891VBox-xpcom-xptcall_SOURCES.linux.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_linux.cpp
892ifndef VBOX_GCC_USING_SOLARIS_AS
893VBox-xpcom-xptcall_SOURCES.solaris.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_linux.cpp
894else
895VBox-xpcom-xptcall_SOURCES.solaris.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_solaris.cpp
896endif
897
898xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_solaris.cpp_CXXFLAGS = -O0
899# -O0 works fine, while -O1 doesn't. The gcc man page can't be listing all the -f*
900# stuff that -O1 enables, because when using the options without -O1, it's -fomit-frame-pointer
901# that triggers is, while -O1 -fno-omit-frame-pointer does not work. Anyway, it's probably a gcc/mozila
902# bug and it's not worth investigating as I'm not the maintainger of the solaris gcc port. [bird, 2007-09-17]
903
904$(evalcall VBOX_XPCOM_X86,VBox-xpcom-xptcall)
905
906
907VBox-xpcom-proxy_TEMPLATE = XPCOM
908VBox-xpcom-proxy_INSTTYPE = none
909VBox-xpcom-proxy_DEFS = _IMPL_NS_COM EXPORT_XPTC_API EXPORT_XPTI_API
910VBox-xpcom-proxy_SOURCES = \
911 xpcom/proxy/src/nsProxyEvent.cpp \
912 xpcom/proxy/src/nsProxyEventClass.cpp \
913 xpcom/proxy/src/nsProxyEventObject.cpp \
914 xpcom/proxy/src/nsProxyObjectManager.cpp \
915 xpcom/proxy/src/nsProxyRelease.cpp
916$(evalcall VBOX_XPCOM_X86,VBox-xpcom-proxy)
917
918
919#
920# The VBoxXPCOM Glue static libraries.
921#
922# This isn't the normal XPCOM glue (see the places in XPCOM where XPCOM_GLUE is
923# checked), VirtualBox has its own glue library and this means this isn't used
924# much (one reason is that we don't provide frozen APIs yet). All VBox XPCOM
925# client applications are dependent on the given version of both the VBox XPCOM
926# runtime (binary dependency) and VirtualBox component library (COM interface
927# dependency). For this reason, VBox client applications link to the VBox XPCOM
928# shared library directly (instead of linking to the standalone XPCOM glue
929# library that would dynamically search for and load the installed XPCOM
930# runtime). For the same reason, we link all parts of XPCOM into a single
931# shared XPCOM library below (as opposed to the original XPCOM where e.g. NSPR
932# lives in a separate DLL). Additionally there is VBox specific glue code to
933# make both the client and server side code build with both XPCOM and COM,
934# which should be made part of the SDK eventually, but this is a higher level
935# of abstraction than this XPCOM specific glue code.
936#
937VBoxXPCOMGlue_COMMON_SOURCES = \
938 xpcom/glue/nsCOMPtr.cpp \
939 xpcom/glue/nsComponentManagerUtils.cpp \
940 xpcom/glue/nsDebug.cpp \
941 xpcom/glue/nsGenericFactory.cpp \
942 xpcom/glue/nsIInterfaceRequestorUtils.cpp \
943 xpcom/glue/nsMemory.cpp \
944 xpcom/glue/nsTraceRefcnt.cpp \
945 xpcom/glue/nsWeakReference.cpp
946
947# dependent glue library which goes in to the VBoxXPCOM shared library
948VBoxXPCOMGlue_s_TEMPLATE = XPCOM
949VBoxXPCOMGlue_s_INSTTYPE = none
950VBoxXPCOMGlue_s_DEFS = _IMPL_NS_COM
951VBoxXPCOMGlue_s_SOURCES = $(VBoxXPCOMGlue_COMMON_SOURCES)
952$(evalcall VBOX_XPCOM_X86,VBoxXPCOMGlue_s)
953
954# standalone glue library which all third-party client apps (if any) will
955# link with (currently completely unused and nit built, to be part of the SDK)
956VBoxXPCOMGlue_TEMPLATE = XPCOM
957VBoxXPCOMGlue_SOURCES = $(VBoxXPCOMGlue_COMMON_SOURCES)
958#VBoxXPCOMGlue_INST = lib/ $(INST_SDK)lib/
959$(evalcall VBOX_XPCOM_X86,VBoxXPCOMGlue)
960
961
962#
963# The VBoxXPCOM Shared Object, assembling all lib files.
964#
965VBoxXPCOM_TEMPLATE = XPCOM
966VBoxXPCOM_NAME = $(basename $(notdir $(LIB_XPCOM)))
967VBoxXPCOM_DEFS = BUILD_DCONNECT=1 _IMPL_NS_COM
968ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
969 VBoxXPCOM_LDFLAGS.linux = -Wl,--version-script=$(XPCOM_C_NAMESPACE_MAP)
970 VBoxXPCOM_LNK_DEPS.linux += $(XPCOM_C_NAMESPACE_MAP)
971 VBoxXPCOM_LDFLAGS.solaris = -Wl,-M,$(XPCOM_C_NAMESPACE_MAP)
972 VBoxXPCOM_LNK_DEPS.solaris+= $(XPCOM_C_NAMESPACE_MAP)
973endif
974VBoxXPCOM_SOURCES = \
975 xpcom/build/nsXPComInit.cpp \
976 xpcom/build/nsStringAPI.cpp
977VBoxXPCOM_SOURCES.darwin = \
978 vboxdeps.cpp
979VBoxXPCOM_SOURCES.os2 = \
980 vboxdeps.cpp
981VBoxXPCOM_SOURCES.solaris = \
982 vboxdeps.cpp
983VBoxXPCOM_LIBS = \
984 $(VBox-xpcom-typelib_1_TARGET) \
985 $(VBox-xpcom-string_1_TARGET) \
986 $(VBox-xpcom-base_1_TARGET) \
987 $(VBox-xpcom-ds_1_TARGET) \
988 $(VBox-xpcom-io_1_TARGET) \
989 $(VBox-xpcom-components_1_TARGET) \
990 $(VBox-xpcom-threads_1_TARGET) \
991 $(VBox-xpcom-xptinfo_1_TARGET) \
992 $(VBox-xpcom-xptcall_1_TARGET) \
993 $(VBox-xpcom-proxy_1_TARGET) \
994 $(VBox-xpcom-nspr_1_TARGET) \
995 $(VBoxXPCOMGlue_s_1_TARGET)
996VBoxXPCOM_LIBS.linux = \
997 pthread dl
998
999ifeq ($(filter-out freebsd linux netbsd openbsd,$(KBUILD_TARGET)),) # gnu ld.
1000VBoxXPCOM_LDFLAGS = -Wl,--whole-archive \
1001 $(VBox-xpcom-typelib_1_TARGET) \
1002 $(VBox-xpcom-string_1_TARGET) \
1003 $(VBox-xpcom-base_1_TARGET) \
1004 $(VBox-xpcom-ds_1_TARGET) \
1005 $(VBox-xpcom-io_1_TARGET) \
1006 $(VBox-xpcom-components_1_TARGET) \
1007 $(VBox-xpcom-threads_1_TARGET) \
1008 $(VBox-xpcom-xptinfo_1_TARGET) \
1009 $(VBox-xpcom-xptcall_1_TARGET) \
1010 $(VBox-xpcom-proxy_1_TARGET) \
1011 $(VBox-xpcom-nspr_1_TARGET) \
1012 $(VBoxXPCOMGlue_s_1_TARGET) \
1013 -Wl,--no-whole-archive
1014endif
1015
1016VBoxXPCOM_LDFLAGS.solaris += -Wl,-z,allextract \
1017 $(VBox-xpcom-typelib_1_TARGET) \
1018 $(VBox-xpcom-string_1_TARGET) \
1019 $(VBox-xpcom-base_1_TARGET) \
1020 $(VBox-xpcom-ds_1_TARGET) \
1021 $(VBox-xpcom-io_1_TARGET) \
1022 $(VBox-xpcom-components_1_TARGET) \
1023 $(VBox-xpcom-threads_1_TARGET) \
1024 $(VBox-xpcom-xptinfo_1_TARGET) \
1025 $(VBox-xpcom-xptcall_1_TARGET) \
1026 $(VBox-xpcom-proxy_1_TARGET) \
1027 $(VBox-xpcom-nspr_1_TARGET) \
1028 $(VBoxXPCOMGlue_s_1_TARGET) \
1029 -Wl,-z,defaultextract
1030
1031# EF heap
1032#VBoxXPCOM_LIBS += $(LIB_RUNTIME_EF)
1033#VBoxXPCOM_LDFLAGS = -Wl,--whole-archive $(VBoxXPCOM_LIBS) -Wl,--no-whole-archive $(LIB_RUNTIME)
1034VBoxXPCOM_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxXPCOM.dylib
1035
1036#
1037# The 32-bit VBoxXPCOM Shared Object, assembling all lib files.
1038#
1039VBoxXPCOM-x86_TEMPLATE = XPCOM-x86
1040VBoxXPCOM-x86_EXTENDS = VBoxXPCOM
1041VBoxXPCOM-x86_NAME = VBoxXPCOM-x86
1042VBoxXPCOM-x86_LIBS = \
1043 $(VBox-xpcom-typelib-x86_1_TARGET) \
1044 $(VBox-xpcom-string-x86_1_TARGET) \
1045 $(VBox-xpcom-base-x86_1_TARGET) \
1046 $(VBox-xpcom-ds-x86_1_TARGET) \
1047 $(VBox-xpcom-io-x86_1_TARGET) \
1048 $(VBox-xpcom-components-x86_1_TARGET) \
1049 $(VBox-xpcom-threads-x86_1_TARGET) \
1050 $(VBox-xpcom-xptinfo-x86_1_TARGET) \
1051 $(VBox-xpcom-xptcall-x86_1_TARGET) \
1052 $(VBox-xpcom-proxy-x86_1_TARGET) \
1053 $(VBox-xpcom-nspr-x86_1_TARGET) \
1054 $(VBoxXPCOMGlue_s-x86_1_TARGET)
1055
1056ifeq ($(filter-out freebsd linux netbsd openbsd,$(KBUILD_TARGET)),) # gnu ld.
1057VBoxXPCOM-x86_LDFLAGS = -Wl,--whole-archive \
1058 $(VBox-xpcom-typelib-x86_1_TARGET) \
1059 $(VBox-xpcom-string-x86_1_TARGET) \
1060 $(VBox-xpcom-base-x86_1_TARGET) \
1061 $(VBox-xpcom-ds-x86_1_TARGET) \
1062 $(VBox-xpcom-io-x86_1_TARGET) \
1063 $(VBox-xpcom-components-x86_1_TARGET) \
1064 $(VBox-xpcom-threads-x86_1_TARGET) \
1065 $(VBox-xpcom-xptinfo-x86_1_TARGET) \
1066 $(VBox-xpcom-xptcall-x86_1_TARGET) \
1067 $(VBox-xpcom-proxy-x86_1_TARGET) \
1068 $(VBox-xpcom-nspr-x86_1_TARGET) \
1069 $(VBoxXPCOMGlue_s-x86_1_TARGET) \
1070 -Wl,--no-whole-archive
1071endif
1072
1073VBoxXPCOM-x86_LDFLAGS.solaris += -Wl,-z,allextract \
1074 $(VBox-xpcom-typelib-x86_1_TARGET) \
1075 $(VBox-xpcom-string-x86_1_TARGET) \
1076 $(VBox-xpcom-base-x86_1_TARGET) \
1077 $(VBox-xpcom-ds-x86_1_TARGET) \
1078 $(VBox-xpcom-io-x86_1_TARGET) \
1079 $(VBox-xpcom-components-x86_1_TARGET) \
1080 $(VBox-xpcom-threads-x86_1_TARGET) \
1081 $(VBox-xpcom-xptinfo-x86_1_TARGET) \
1082 $(VBox-xpcom-xptcall-x86_1_TARGET) \
1083 $(VBox-xpcom-proxy-x86_1_TARGET) \
1084 $(VBox-xpcom-nspr-x86_1_TARGET) \
1085 $(VBoxXPCOMGlue_s-x86_1_TARGET) \
1086 -Wl,-z,defaultextract
1087
1088
1089#
1090# VBoxXPCOMImp - Import library/hack.
1091#
1092ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
1093$(call VBOX_GENERATE_IMPORT_TARGET_FN,VBoxXPCOMImp,VBoxXPCOM,VBoxXPCOM-mangled.def)
1094else
1095$(call VBOX_GENERATE_IMPORT_TARGET_FN,VBoxXPCOMImp,VBoxXPCOM,VBoxXPCOM.def)
1096endif
1097
1098
1099#
1100# IPC templates.
1101#
1102ifdef VBOX_IPC_RELEASE_LOG
1103IPC_LOGGING = 1
1104else ifneq ($(KBUILD_TYPE),release)
1105IPC_LOGGING = 1
1106endif
1107
1108TEMPLATE_XPCOMIPC = XPCOM IPC libraries
1109TEMPLATE_XPCOMIPC_EXTENDS = XPCOM
1110TEMPLATE_XPCOMIPC_DEFS = $(TEMPLATE_XPCOM_DEFS) BUILD_DCONNECT=1
1111ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
1112 TEMPLATE_XPCOMIPC_DEFS += IPC_DAEMON_APP_NAME="VBoxXPCOMIPCD$(SUFF_EXE)"
1113else
1114 TEMPLATE_XPCOMIPC_DEFS += IPC_DAEMON_APP_NAME=\"VBoxXPCOMIPCD$(SUFF_EXE)\"
1115endif
1116ifdef IPC_LOGGING
1117 TEMPLATE_XPCOMIPC_DEFS += IPC_LOGGING
1118endif
1119TEMPLATE_XPCOMIPC_LIBS = $(VBoxXPCOM_1_TARGET) $(TEMPLATE_XPCOM_LIBS)
1120ifneq ($(KBUILD_TARGET),win)
1121 ifeq ($(filter-out solaris.x86 %.amd64 %.sparc32 %.sparc64,$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)),) ## TODO: cleanup!
1122 if defined(VBOX_WITH_RELATIVE_RUNPATH) && !defined(VBOX_WITH_HARDENING)
1123 TEMPLATE_XPCOMIPC_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)%',$(TEMPLATE_XPCOM_LDFLAGS)) '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/..'
1124 endif
1125 else ifndef VBOX_WITH_HARDENING
1126 ifdef VBOX_WITH_RELATIVE_RUNPATH
1127 TEMPLATE_XPCOMIPC_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)%',$(TEMPLATE_XPCOM_LDFLAGS)) '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/..'
1128 endif
1129 endif
1130endif
1131
1132TEMPLATE_XPCOMIPC-x86 = 32-bit XPCOM IPC libraries
1133TEMPLATE_XPCOMIPC-x86_EXTENDS = XPCOMIPC
1134TEMPLATE_XPCOMIPC-x86_BLD_TRG_ARCH = x86
1135TEMPLATE_XPCOMIPC-x86_LIBS = $(VBoxXPCOM-x86_1_TARGET) $(TEMPLATE_XPCOM-x86_LIBS)
1136
1137TEMPLATE_XPCOMIPCEXE = XPCOM IPC executables
1138TEMPLATE_XPCOMIPCEXE_EXTENDS = XPCOMEXE
1139TEMPLATE_XPCOMIPCEXE_DEFS = $(TEMPLATE_XPCOMEXE_DEFS) BUILD_DCONNECT=1
1140ifdef IPC_LOGGING
1141 TEMPLATE_XPCOMIPCEXE_DEFS += IPC_LOGGING
1142endif
1143
1144#
1145# Shared IPC code. Used by the IPC component as well as the executables.
1146#
1147VBox-xpcom-ipcshared_TEMPLATE = XPCOMIPC
1148VBox-xpcom-ipcshared_INSTTYPE = none
1149VBox-xpcom-ipcshared_SOURCES = \
1150 ipc/ipcd/shared/src/ipcLog.cpp \
1151 ipc/ipcd/shared/src/ipcConfig.cpp \
1152 ipc/ipcd/shared/src/ipcMessage.cpp \
1153 ipc/ipcd/shared/src/ipcMessagePrimitives.cpp \
1154 ipc/ipcd/shared/src/ipcStringList.cpp \
1155 ipc/ipcd/shared/src/ipcIDList.cpp \
1156 ipc/ipcd/shared/src/ipcm.cpp
1157$(evalcall VBOX_XPCOM_X86,VBox-xpcom-ipcshared)
1158
1159
1160#
1161# DCONNECT client shared object
1162#
1163VBoxXPCOMIPCC_TEMPLATE = XPCOMIPC
1164VBoxXPCOMIPCC_NAME.os2 = VBoxIPCC
1165VBoxXPCOMIPCC_INST = $(INST_BIN)components/
1166#VBoxXPCOMIPCC_DEFS = HAVE_DEPENDENT_LIBS - dependentLibs.h is linux specific, so this cannot be required.
1167VBoxXPCOMIPCC_SOURCES = \
1168 ipc/ipcd/client/src/ipcdclient.cpp \
1169 ipc/ipcd/client/src/ipcService.cpp \
1170 ipc/ipcd/client/src/ipcModuleFactory.cpp \
1171 ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp\
1172 \
1173 ipc/ipcd/util/src/ipcMessageReader.cpp \
1174 ipc/ipcd/util/src/ipcMessageWriter.cpp \
1175 \
1176 ipc/ipcd/extensions/lock/src/ipcLockProtocol.cpp \
1177 ipc/ipcd/extensions/lock/src/ipcLockService.cpp \
1178 \
1179 ipc/ipcd/extensions/transmngr/src/tmTransactionService.cpp \
1180 \
1181 ipc/ipcd/extensions/transmngr/common/tmTransaction.cpp \
1182 ipc/ipcd/extensions/transmngr/common/tmVector.cpp
1183
1184ifeq ($(KBUILD_TARGET),win)
1185VBoxXPCOMIPCC_SOURCES += \
1186 ipc/ipcd/client/src/ipcConnectionWin.cpp
1187else
1188VBoxXPCOMIPCC_SOURCES += \
1189 ipc/ipcd/client/src/ipcConnectionUnix.cpp
1190endif
1191VBoxXPCOMIPCC_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxXPCOMIPCC.dylib
1192VBoxXPCOMIPCC_LIBS = \
1193 $(VBox-xpcom-ipcshared_1_TARGET)
1194
1195# 32-bit version of the component.
1196$(evalcall VBOX_XPCOM_X86,VBoxXPCOMIPCC)
1197VBoxXPCOMIPCC-x86_LIBS = \
1198 $(VBox-xpcom-ipcshared-x86_1_TARGET)
1199
1200
1201#
1202# DCONNECT daemon executable
1203#
1204VBoxXPCOMIPCD_TEMPLATE = XPCOMIPCEXE
1205VBoxXPCOMIPCD_SOURCES = \
1206 ipc/ipcd/daemon/src/ipcd.cpp \
1207 ipc/ipcd/daemon/src/ipcClient.cpp \
1208 ipc/ipcd/daemon/src/ipcModuleReg.cpp \
1209 ipc/ipcd/daemon/src/ipcCommandModule.cpp
1210ifeq ($(KBUILD_TARGET),win)
1211 VBoxXPCOMIPCD_SOURCES += \
1212 ipc/ipcd/daemon/src/ipcdWin.cpp
1213else
1214 VBoxXPCOMIPCD_SOURCES += \
1215 ipc/ipcd/daemon/src/ipcdUnix.cpp
1216endif
1217
1218
1219#
1220# Include sub-makefiles for the Python<->XPCOM and Java<->XPCOM bridges.
1221#
1222ifndef VBOX_ONLY_EXTPACKS
1223 # Find the Python headers for the Python<->XPCOM bridge if enabled.
1224 ifdef VBOX_WITH_PYTHON
1225 include $(PATH_SUB_CURRENT)/python/Makefile.kmk
1226 endif
1227
1228 ifdef VBOX_WITH_JXPCOM
1229 include $(PATH_SUB_CURRENT)/java/Makefile.kmk
1230 endif
1231endif # !VBOX_ONLY_EXTPACKS
1232
1233
1234#
1235# testcases
1236#
1237tstnsIFileEnumerator_TEMPLATE = XPCOMTSTEXE
1238tstnsIFileEnumerator_SOURCES = xpcom/tests/nsIFileEnumerator.cpp
1239tstnsIFileTest_TEMPLATE = XPCOMTSTEXE
1240tstnsIFileTest_SOURCES = xpcom/tests/nsIFileTest.cpp
1241tstTestArray_TEMPLATE = XPCOMTSTEXE
1242tstTestArray_SOURCES = xpcom/tests/TestArray.cpp
1243tstTestAtoms_TEMPLATE = XPCOMTSTEXE
1244tstTestAtoms_SOURCES = xpcom/tests/TestAtoms.cpp
1245tstTestAutoLock_TEMPLATE = XPCOMTSTEXE
1246tstTestAutoLock_SOURCES = xpcom/tests/TestAutoLock.cpp
1247tstTestCallTemplates_TEMPLATE = XPCOMTSTEXE
1248tstTestCallTemplates_SOURCES = xpcom/tests/TestCallTemplates.cpp
1249tstTestCOMPtr_TEMPLATE = XPCOMTSTEXE
1250tstTestCOMPtr_SOURCES = xpcom/tests/TestCOMPtr.cpp
1251tstTestCOMPtrEq_TEMPLATE = XPCOMTSTEXE
1252tstTestCOMPtrEq_SOURCES = xpcom/tests/TestCOMPtrEq.cpp
1253tstTestCRT_TEMPLATE = XPCOMTSTEXE
1254tstTestCRT_SOURCES = xpcom/tests/TestCRT.cpp
1255tstTestFactory_TEMPLATE = XPCOMTSTEXE
1256tstTestFactory_SOURCES = xpcom/tests/TestFactory.cpp
1257tstTestHashtables_TEMPLATE = XPCOMTSTEXE
1258tstTestHashtables_SOURCES = xpcom/tests/TestHashtables.cpp
1259tstTestID_TEMPLATE = XPCOMTSTEXE
1260tstTestID_SOURCES = xpcom/tests/TestID.cpp
1261tstTestObserverService_TEMPLATE= XPCOMTSTEXE
1262tstTestObserverService_SOURCES = xpcom/tests/TestObserverService.cpp
1263tstTestPermanentAtoms_TEMPLATE = XPCOMTSTEXE
1264tstTestPermanentAtoms_SOURCES = xpcom/tests/TestPermanentAtoms.cpp
1265tstTestPipes_TEMPLATE = XPCOMTSTEXE
1266tstTestPipes_SOURCES = xpcom/tests/TestPipes.cpp
1267tstTestServMgr_TEMPLATE = XPCOMTSTEXE
1268tstTestServMgr_SOURCES = xpcom/tests/TestServMgr.cpp
1269tstTestServMgr_INCS = xpcom/tests/services
1270tstTestThreads_TEMPLATE = XPCOMTSTEXE
1271tstTestThreads_SOURCES = xpcom/tests/TestThreads.cpp
1272tstTestXPIDLString_TEMPLATE = XPCOMTSTEXE
1273tstTestXPIDLString_SOURCES = xpcom/tests/TestXPIDLString.cpp
1274tstTestXPTCInvoke_TEMPLATE = XPCOMTSTEXE
1275tstTestXPTCInvoke_SOURCES = xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp
1276tstTestDeque_TEMPLATE = XPCOMTSTEXE
1277tstTestDeque_SOURCES = xpcom/tests/TestDeque.cpp
1278tstTestAutoPtr_TEMPLATE = XPCOMTSTEXE
1279tstTestAutoPtr_SOURCES = xpcom/tests/TestAutoPtr.cpp
1280tstTestMinStringAPI_TEMPLATE = XPCOMTSTEXE
1281tstTestMinStringAPI_SOURCES = xpcom/tests/TestMinStringAPI.cpp
1282tstTestStrings_TEMPLATE = XPCOMTSTEXE
1283tstTestStrings_SOURCES = xpcom/tests/TestStrings.cpp
1284tstPrimitiveTest_TEMPLATE = XPCOMTSTEXE
1285tstPrimitiveTest_SOURCES = xpcom/typelib/xpt/tests/PrimitiveTest.c
1286tstSimpleTypeLib_TEMPLATE = XPCOMTSTEXE
1287tstSimpleTypeLib_SOURCES = xpcom/typelib/xpt/tests/SimpleTypeLib.c
1288tstXptDump_TEMPLATE = XPCOMTSTEXE
1289tstXptDump_SOURCES = xpcom/typelib/xpt/tools/xpt_dump.c
1290tstXptLink_TEMPLATE = XPCOMTSTEXE
1291tstXptLink_SOURCES = xpcom/typelib/xpt/tools/xpt_link.c
1292
1293
1294
1295OTHER_CLEAN += \
1296 $(PATH_TARGET)/VBox-xpcom-idl-timestamp \
1297 $(addprefix $(VBOX_PATH_SDK)/bindings/xpcom/include,$(notdir $(subst .idl,.h,$(XPCOM_IDLFILES)))) \
1298 $(addprefix $(VBOX_PATH_SDK)/bindings/xpcom/include,$(notdir $(subst .idl,.xpt,$(XPCOM_IDLFILES)))) \
1299 $(addprefix $(VBOX_PATH_SDK)/bindings/xpcom/idl/,$(notdir $(XPCOM_IDLFILES))) \
1300 $(addprefix $(PATH_TARGET)/VBox-xpcom-xpt-files/,$(notdir $(subst .idl,.xpt,$(XPCOM_IDLFILES))))
1301
1302
1303#
1304# Create and install VBoxXPCOMBase.xpt
1305#
1306INSTALLS += VBoxXPCOMBase-xpt-inst
1307VBOX_XPTFILES = $(addprefix $(PATH_TARGET)/VBox-xpcom-xpt-files/, \
1308 nsIConsoleListener.xpt \
1309 nsIConsoleMessage.xpt \
1310 nsIConsoleService.xpt \
1311 nsIErrorService.xpt \
1312 nsIException.xpt \
1313 nsIExceptionService.xpt \
1314 nsIDebug.xpt \
1315 nsIInterfaceRequestor.xpt \
1316 nsIMemory.xpt \
1317 nsIProgrammingLanguage.xpt \
1318 nsISupports.xpt \
1319 nsITraceRefcnt.xpt \
1320 nsIWeakReference.xpt \
1321 nsrootidl.xpt \
1322 nsIAtom.xpt \
1323 nsIAtomService.xpt \
1324 nsICollection.xpt \
1325 nsIEnumerator.xpt \
1326 nsIPersistentProperties2.xpt \
1327 nsIPropertyBag.xpt \
1328 nsIRecyclingAllocator.xpt \
1329 nsIVariant.xpt \
1330 nsISerializable.xpt \
1331 nsIStringEnumerator.xpt \
1332 nsISupportsArray.xpt \
1333 nsISupportsIterators.xpt \
1334 nsITimelineService.xpt \
1335 nsIArray.xpt \
1336 nsIObserverService.xpt \
1337 nsIObserver.xpt \
1338 nsIProperties.xpt \
1339 nsISimpleEnumerator.xpt \
1340 nsISupportsPrimitives.xpt \
1341 nsIBinaryInputStream.xpt \
1342 nsIBinaryOutputStream.xpt \
1343 nsIByteArrayInputStream.xpt \
1344 nsIFastLoadFileControl.xpt \
1345 nsIFastLoadService.xpt \
1346 nsIInputStreamTee.xpt \
1347 nsILineInputStream.xpt \
1348 nsIMultiplexInputStream.xpt \
1349 nsIObjectInputStream.xpt \
1350 nsIObjectOutputStream.xpt \
1351 nsIPipe.xpt \
1352 nsISeekableStream.xpt \
1353 nsIStorageStream.xpt \
1354 nsIStringStream.xpt \
1355 nsIStreamBufferAccess.xpt \
1356 nsIAsyncInputStream.xpt \
1357 nsIAsyncOutputStream.xpt \
1358 nsIDirectoryService.xpt \
1359 nsIFile.xpt \
1360 nsILocalFile.xpt \
1361 nsIInputStream.xpt \
1362 nsIOutputStream.xpt \
1363 nsIScriptableInputStream.xpt \
1364 nsIComponentLoader.xpt \
1365 nsIComponentLoaderManager.xpt \
1366 nsIComponentManagerObsolete.xpt \
1367 nsINativeComponentLoader.xpt \
1368 nsIClassInfo.xpt \
1369 nsIComponentRegistrar.xpt \
1370 nsIFactory.xpt \
1371 nsIModule.xpt \
1372 nsIServiceManager.xpt \
1373 nsIComponentManager.xpt \
1374 nsICategoryManager.xpt \
1375 nsIThread.xpt \
1376 nsITimer.xpt \
1377 nsITimerInternal.xpt \
1378 nsITimerManager.xpt \
1379 nsIRunnable.xpt \
1380 nsIEventTarget.xpt \
1381 nsIEventQueue.xpt \
1382 nsIEventQueueService.xpt \
1383 nsIEnvironment.xpt \
1384 nsIProcess.xpt \
1385 nsIInterfaceInfo.xpt \
1386 nsIInterfaceInfoManager.xpt \
1387 nsIXPTLoader.xpt)
1388
1389VBoxXPCOMBase-xpt-inst_INST = $(INST_BIN)components/
1390VBoxXPCOMBase-xpt-inst_MODE = 0644
1391VBoxXPCOMBase-xpt-inst_SOURCES = \
1392 $(PATH_TARGET)/VBox-xpcom-xpt-files/VBoxXPCOMBase.xpt
1393VBoxXPCOMBase-xpt-inst_CLEAN = \
1394 $(VBOX_XPTFILES) \
1395 $(PATH_TARGET)/VBox-xpcom-xpt-files/VBoxXPCOMBase.xpt
1396
1397# combined typelib library
1398$(PATH_TARGET)/VBox-xpcom-xpt-files/VBoxXPCOMBase.xpt: $$(VBOX_XPTFILES) | $$(xpt_link_1_TARGET) $(PATH_TARGET)/VBox-xpcom-xpt-files/
1399 $(call MSG_LINK,XPCOM_TYPELIB,$@)
1400 $(QUIET)$(MKDIR) -p -- $(PATH_STAGE_BIN)/components
1401 $(QUIET)$(xpt_link_1_TARGET) $@ $^
1402
1403
1404
1405# generate rules
1406include $(FILE_KBUILD_SUB_FOOTER)
1407
1408
1409
1410#
1411# Generate IDL rules.
1412#
1413
1414##
1415# Define for compiling one IDL into a header and a typelib
1416# @param idl The filename with everything.
1417define def_IDL
1418$(VBOX_PATH_SDK)/bindings/xpcom/include/$(notdir $(subst .idl,.h,$(idl))) \
1419+ $(PATH_TARGET)/VBox-xpcom-xpt-files/$(notdir $(subst .idl,.xpt,$(idl))): \
1420 $(VBOX_PATH_XPCOM_SRC)/$(idl) \
1421 | $$$$(xpidl_1_TARGET) \
1422 $(PATH_TARGET)/VBox-xpcom-xpt-files/
1423 $$(call MSG_TOOL,xpidl,XPCOM,$$<,$$@)
1424 $$(QUIET)$(MKDIR) -p $(VBOX_PATH_SDK)/bindings/xpcom/include $(VBOX_PATH_SDK)/bindings/xpcom/idl
1425 $$(QUIET)$$(xpidl_1_TARGET) -m header $(XPIDL_INCS) -e $$@ $$<
1426 $$(QUIET)$$(xpidl_1_TARGET) -m typelib $(XPIDL_INCS) -e $(addprefix $(PATH_TARGET)/VBox-xpcom-xpt-files/,$(notdir $(subst .idl,.xpt,$(idl)))) $$<
1427 $$(QUIET)$(CP) $$< $$(VBOX_PATH_SDK)/bindings/xpcom/idl
1428endef
1429
1430$(foreach idl, $(XPCOM_IDLFILES), $(eval $(def_IDL)))
1431
1432# dummy target.
1433$(PATH_TARGET)/VBox-xpcom-idl-timestamp: $$(addprefix $$(VBOX_PATH_SDK)/bindings/xpcom/include/,$$(notdir $$(subst .idl,.h,$$(XPCOM_IDLFILES))))
1434 $(call MSG_L1,IDL processing completed.)
1435 $(QUIET)$(MKDIR) -p $(dir $@)
1436 $(QUIET)$(APPEND) -t $@
1437
1438#
1439# HACK ALERT! Make sure main doesn't start using xpidl before we're done
1440# with the idl files here. The trick here is that we're using TARGET_xpidl,
1441# i.e. the copy residing in obj/, while VBOX_XPIDL is pointing to
1442# xpidl_1_STAGE_TARGET which is the one in bin/.
1443#
1444$(VBOX_XPIDL): | $(PATH_TARGET)/VBox-xpcom-idl-timestamp
1445
1446
1447#
1448# Generate linker map file filtering out unwanted global symbols.
1449#
1450$(PATH_TARGET)/xpcom-namespace-cleanup.map foo.map: $$(VBoxXPCOM_LIBS) $$(VBoxXPCOM_2_OBJS)
1451 $(call MSG_L1, Creating linker map $@ for scrubbing the symbol namespace)
1452 $(QUIET)$(APPEND) -t $@ '{ local: *; global: '
1453 $(QUIET)$(VBOX_NM) -p -g $^ \
1454 | $(SED) -n \
1455 -e '/^$$/b' \
1456 -e '/:$$/b' \
1457 -e '/ U /b' \
1458 -e 's/^[^ ]* [A-Z] \(.*\)$$/\1/' \
1459 -e 's/\<_Z[^ ]*$$/&;/p' \
1460 -e 's/\<VBoxNs[^ ]*$$/&;/p' \
1461 -e 's/\<_edata$$/&;/p' \
1462 -e 's/\<_end$$/&;/p' \
1463 -e 's/\<_etext$$/&;/p'\
1464 -e 's/\<_fini$$/&;/p' \
1465 -e 's/\<_init$$/&;/p' \
1466 --append $@
1467 $(QUIET)$(APPEND) $@ '};'
1468#ifeq ($(KBUILD_TARGET),solaris)
1469# # Temporary gcc 4.5.2 hack on Solaris which emits unknown mangled symbols for ctors/dtors for certain objects. See @bugref{5838}.
1470# if $(VBOX_GCC_VERSION_CXX) == 40502
1471# $(QUIET)$(SED) -re '/^_Z.*[C-D]5E/d' $@ > $@-sedtmp
1472# $(QUIET)$(MV) $@-sedtmp $@
1473# endif
1474#endif
1475
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