1
# $Id: Makefile.kmk 38152 2011-07-25 12:19:13Z vboxsync $
3
# Sub-Makefile for XPCOM.
7
# Copyright (C) 2006-2007 Oracle Corporation
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.
19
include $(KBUILD_PATH)/subheader.kmk
21
# Make sure our Config.kmk is included.
22
ifndef VBOX_PATH_XPCOM_SRC
23
include $(PATH_SUB_CURRENT)/Config.kmk
30
# File for filtering out C symbols from the XPCOM library. Used to avoid
31
# symbol namespace pollution, causing trouble with system libraries.
32
XPCOM_C_NAMESPACE_MAP = $(VBOX_PATH_XPCOM_SRC)/xpcom-namespace-cleanup.map
33
ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
34
VBOX_NM = nm$(HOSTSUFF_EXE)
35
# At the moment, only Solaris uses the generated map file. GNU ld is smart
36
# enough to handle symbol wildcards itself.
37
if1of ($(KBUILD_TARGET), solaris)
38
XPCOM_C_NAMESPACE_MAP = $(PATH_TARGET)/xpcom-namespace-cleanup.map
39
OTHER_CLEAN += $(XPCOM_C_NAMESPACE_MAP)
43
# @todo check whether VBoxXPCOMIPCC.so or VBoxXPCOMIPCD contain undefined
44
# symbols starting with NS_, PL_, PR_ or XPT. Would move the test time failure
45
# when missing a symbol renaming to a build time failure. Likewise, there
46
# should be a check whether VBoxXPCOM.so contains global C symbols (at least
47
# where the whitelisting of symbols via the map file is not used).
56
NSPRPUB-PRIV-HEADERS \
62
# The IDL compiler, typelib linker and xpt files.
69
$(PATH_TARGET)/VBox-xpcom-xpt-files/
72
# We build several libraries so that any linker command line
73
# length restrictions limit will be avoided. (Solaris, Mac?)
84
VBox-xpcom-components \
92
VBox-xpcom-ipcshared \
94
VBox-xpcom-ipctransmgr \
101
ifdef VBOX_WITH_TESTCASES
103
tstnsIFileEnumerator \
108
tstTestCallTemplates \
115
tstTestObserverService \
122
tstTestMinStringAPI \
128
# tstTestPermanentAtoms
129
endif # VBOX_WITH_TESTCASES
130
PROGRAMS += VBoxXPCOMIPCD
132
endif # !VBOX_ONLY_SDK
138
# SDK headers - lot's of files to install...
140
# Tip: If you are going to remove files here, you might
141
# wish to do a `kmk uninstall' first to avoid have
142
# obsoleted files in the $(INST_SDK) directory.
144
NSPRPUB-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/nsprpub/
145
NSPRPUB-HEADERS_IFFLAGS = -m 644
146
NSPRPUB-HEADERS_SOURCES = \
147
nsprpub/pr/include/nspr.h \
148
nsprpub/lib/ds/plarena.h \
149
nsprpub/lib/ds/plarenas.h \
150
nsprpub/lib/libc/include/plbase64.h \
151
nsprpub/lib/libc/include/plerror.h \
152
nsprpub/lib/libc/include/plgetopt.h \
153
nsprpub/lib/ds/plhash.h \
154
nsprpub/lib/libc/include/plresolv.h \
155
nsprpub/lib/libc/include/plstr.h \
156
nsprpub/pr/include/pratom.h \
157
nsprpub/pr/include/prbit.h \
158
nsprpub/pr/include/prclist.h \
159
nsprpub/pr/include/prcmon.h \
160
nsprpub/pr/include/prcountr.h \
161
nsprpub/pr/include/prcvar.h \
162
nsprpub/pr/include/prdtoa.h \
163
nsprpub/pr/include/prenv.h \
164
nsprpub/pr/include/prerr.h \
165
nsprpub/pr/include/prerror.h \
166
nsprpub/pr/include/prinet.h \
167
nsprpub/pr/include/prinit.h \
168
nsprpub/pr/include/prinrval.h \
169
nsprpub/pr/include/prio.h \
170
nsprpub/pr/include/pripcsem.h \
171
nsprpub/pr/include/prlink.h \
172
nsprpub/pr/include/prlock.h \
173
nsprpub/pr/include/prlog.h \
174
nsprpub/pr/include/prlong.h \
175
nsprpub/pr/include/prmem.h \
176
nsprpub/pr/include/prmon.h \
177
nsprpub/pr/include/prmwait.h \
178
nsprpub/pr/include/prnetdb.h \
179
nsprpub/pr/include/prolock.h \
180
nsprpub/pr/include/prpdce.h \
181
nsprpub/pr/include/prprf.h \
182
nsprpub/pr/include/prproces.h \
183
nsprpub/pr/include/prrng.h \
184
nsprpub/pr/include/prrwlock.h \
185
nsprpub/pr/include/prshm.h \
186
nsprpub/pr/include/prshma.h \
187
nsprpub/pr/include/prsystem.h \
188
nsprpub/pr/include/prthread.h \
189
nsprpub/pr/include/prtime.h \
190
nsprpub/pr/include/prtpool.h \
191
nsprpub/pr/include/prtrace.h \
192
nsprpub/pr/include/prtypes.h \
193
nsprpub/pr/include/prvrsion.h \
194
nsprpub/pr/include/prwin16.h \
195
nsprpub/pr/include/md/_vbox.cfg=>prcpucfg.h \
197
NSPRPUB-MD-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/nsprpub/md/
198
NSPRPUB-MD-HEADERS_IFFLAGS = -m 644
199
NSPRPUB-MD-HEADERS_SOURCES = \
200
nsprpub/pr/include/md/_iprt_atomic.h \
201
nsprpub/pr/include/md/_darwin.h \
202
nsprpub/pr/include/md/_freebsd.h \
203
nsprpub/pr/include/md/_l4v2.h \
204
nsprpub/pr/include/md/_linux.h \
205
nsprpub/pr/include/md/_macos.h \
206
nsprpub/pr/include/md/_netbsd.h \
207
nsprpub/pr/include/md/_openbsd.h \
208
nsprpub/pr/include/md/_os2_errors.h \
209
nsprpub/pr/include/md/_os2.h \
210
nsprpub/pr/include/md/_pcos.h \
211
nsprpub/pr/include/md/_solaris.h \
212
nsprpub/pr/include/md/_unix_errors.h \
213
nsprpub/pr/include/md/_unixos.h \
214
nsprpub/pr/include/md/_pth.h \
215
nsprpub/pr/include/md/prosdep.h \
217
nsprpub/pr/include/md/_freebsd.cfg \
218
nsprpub/pr/include/md/_linux.cfg \
219
nsprpub/pr/include/md/_darwin.cfg \
220
nsprpub/pr/include/md/_netbsd.cfg \
221
nsprpub/pr/include/md/_openbsd.cfg \
222
nsprpub/pr/include/md/_os2.cfg \
223
nsprpub/pr/include/md/_solaris32.cfg \
224
nsprpub/pr/include/md/_solaris64.cfg \
225
nsprpub/pr/include/md/_l4v2.cfg
227
NSPRPUB-OBS-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/nsprpub/obsolete/
228
NSPRPUB-OBS-HEADERS_IFFLAGS = -m 644
229
NSPRPUB-OBS-HEADERS_SOURCES = \
230
nsprpub/pr/include/obsolete/pralarm.h \
231
nsprpub/pr/include/obsolete/probslet.h \
232
nsprpub/pr/include/obsolete/protypes.h \
233
nsprpub/pr/include/obsolete/prsem.h
235
NSPRPUB-PRIV-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/nsprpub/private/
236
NSPRPUB-PRIV-HEADERS_IFFLAGS = -m 644
237
NSPRPUB-PRIV-HEADERS_SOURCES = \
238
nsprpub/pr/include/private/pprio.h \
239
nsprpub/pr/include/private/pprthred.h \
240
nsprpub/pr/include/private/prpriv.h
242
STRING-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/string/
243
STRING-HEADERS_IFFLAGS = -m 644
244
STRING-HEADERS_SOURCES = \
245
xpcom/string/public/nsAString.h \
246
xpcom/string/public/nsAlgorithm.h \
247
xpcom/string/public/nsCharTraits.h \
248
xpcom/string/public/nsDependentString.h \
249
xpcom/string/public/nsDependentSubstring.h \
250
xpcom/string/public/nsEmbedString.h \
251
xpcom/string/public/nsLiteralString.h \
252
xpcom/string/public/nsObsoleteAString.h \
253
xpcom/string/public/nsPrintfCString.h \
254
xpcom/string/public/nsPromiseFlatString.h \
255
xpcom/string/public/nsReadableUtils.h \
256
xpcom/string/public/nsString.h \
257
xpcom/string/public/nsStringAPI.h \
258
xpcom/string/public/nsStringFwd.h \
259
xpcom/string/public/nsStringIterator.h \
260
xpcom/string/public/nsSubstring.h \
261
xpcom/string/public/nsSubstringTuple.h \
262
xpcom/string/public/nsTAString.h \
263
xpcom/string/public/nsTDependentString.h \
264
xpcom/string/public/nsTDependentSubstring.h \
265
xpcom/string/public/nsTObsoleteAString.h \
266
xpcom/string/public/nsTPromiseFlatString.h \
267
xpcom/string/public/nsTString.h \
268
xpcom/string/public/nsTSubstring.h \
269
xpcom/string/public/nsTSubstringTuple.h \
270
xpcom/string/public/nsUTF8Utils.h \
271
xpcom/string/public/nsXPIDLString.h \
272
xpcom/string/public/string-template-def-char.h \
273
xpcom/string/public/string-template-def-unichar.h \
274
xpcom/string/public/string-template-undef.h
276
XPCOM-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/xpcom/
277
XPCOM-HEADERS_IFFLAGS = -m 644
278
XPCOM-HEADERS_SOURCES = \
280
xpcom/io/nsAppDirectoryServiceDefs.h \
282
xpcom/ds/nsArrayEnumerator.h \
283
xpcom/ds/nsAtomService.h \
284
xpcom/ds/nsAutoBuffer.h \
285
xpcom/threads/nsAutoLock.h \
286
xpcom/base/nsAutoPtr.h \
287
xpcom/ds/nsBaseHashtable.h \
288
xpcom/ds/nsCOMArray.h \
290
xpcom/components/nsCategoryManagerUtils.h \
291
xpcom/ds/nsCheapSets.h \
292
xpcom/ds/nsClassHashtable.h \
294
xpcom/components/nsComponentManagerObsolete.h \
295
xpcom/components/nsComponentManagerUtils.h \
296
xpcom/ds/nsCppSharedAllocator.h \
297
xpcom/ds/nsDataHashtable.h \
298
xpcom/base/nsDebugImpl.h \
300
xpcom/io/nsDirectoryService.h \
301
xpcom/io/nsDirectoryServiceDefs.h \
302
xpcom/io/nsDirectoryServiceUtils.h \
303
xpcom/ds/nsDoubleHashtable.h \
304
xpcom/ds/nsEnumeratorUtils.h \
305
xpcom/base/nsError.h \
306
xpcom/io/nsEscape.h \
307
xpcom/threads/nsEventQueueUtils.h \
308
xpcom/io/nsFastLoadPtr.h \
309
xpcom/io/nsFastLoadService.h \
310
xpcom/ds/nsFixedSizeAllocator.h \
311
xpcom/ds/nsHashKeys.h \
312
xpcom/ds/nsHashSets.h \
313
xpcom/ds/nsHashtable.h \
314
xpcom/base/nsIAllocator.h \
315
xpcom/ds/nsIByteBuffer.h \
318
xpcom/components/nsIServiceManagerObsolete.h \
319
xpcom/components/nsIServiceManagerUtils.h \
320
xpcom/base/nsISupportsBase.h \
321
xpcom/base/nsISupportsObsolete.h \
322
xpcom/ds/nsIUnicharBuffer.h \
323
xpcom/io/nsIUnicharInputStream.h \
325
xpcom/ds/nsInterfaceHashtable.h \
326
xpcom/io/nsLinebreakConverter.h \
327
xpcom/io/nsLocalFile.h \
328
xpcom/io/nsLocalFileUnix.h \
329
xpcom/io/nsLocalFileOS2.h \
330
xpcom/io/nsLocalFileOSX.h \
331
xpcom/components/nsModule.h \
332
xpcom/io/nsMultiplexInputStream.h \
333
xpcom/io/nsNativeCharsetUtils.h \
334
xpcom/components/nsNativeComponentLoader.h \
335
xpcom/ds/nsObserverService.h \
336
xpcom/components/nsObsoleteModuleLoading.h \
337
xpcom/threads/nsProcess.h \
338
xpcom/proxy/public/nsProxiedService.h \
339
xpcom/proxy/public/nsProxyEvent.h \
340
xpcom/proxy/public/nsProxyRelease.h \
341
xpcom/ds/nsQuickSort.h \
342
xpcom/ds/nsRecyclingAllocator.h \
343
xpcom/ds/nsRefPtrHashtable.h \
344
xpcom/io/nsScriptableInputStream.h \
345
xpcom/ds/nsStaticAtom.h \
346
xpcom/components/nsStaticComponent.h \
347
xpcom/ds/nsStaticNameTable.h \
348
xpcom/io/nsStorageStream.h \
349
xpcom/io/nsStreamUtils.h \
350
xpcom/ds/nsStringEnumerator.h \
351
xpcom/io/nsStringIO.h \
352
xpcom/io/nsStringStream.h \
353
xpcom/ds/nsSupportsArray.h \
354
xpcom/ds/nsSupportsPrimitives.h \
355
xpcom/ds/nsTHashtable.h \
356
xpcom/ds/nsTextFormatter.h \
358
xpcom/base/nsTraceRefcntImpl.h \
359
xpcom/ds/nsUnitConversion.h \
360
xpcom/ds/nsValueArray.h \
361
xpcom/ds/nsVariant.h \
362
xpcom/ds/nsVoidArray.h \
363
xpcom/base/nsWeakPtr.h \
364
xpcom/build/nsXPCOM.h \
365
xpcom/build/nsXPCOMCID.h \
366
xpcom/base/nscore.h \
368
xpcom/threads/plevent.h \
369
xpcom/components/xcDll.h \
370
xpcom/typelib/xpt/public/xpt_arena.h \
371
xpcom/typelib/xpt/public/xpt_struct.h \
372
xpcom/typelib/xpt/public/xpt_xdr.h \
373
xpcom/reflect/xptcall/public/xptcall.h \
374
xpcom/reflect/xptcall/public/xptcstubsdecl.inc \
375
xpcom/reflect/xptcall/public/xptcstubsdef.inc \
376
xpcom/reflect/xptinfo/public/xptinfo.h \
378
xpcom/glue/nsIInterfaceRequestorUtils.h \
379
xpcom/glue/nsISupportsImpl.h \
380
xpcom/glue/nsISupportsUtils.h \
381
xpcom/glue/nsIWeakReferenceUtils.h \
383
xpcom/glue/nsCOMPtr.h \
384
xpcom/glue/nsDebug.h \
385
xpcom/glue/nsGenericFactory.h \
386
xpcom/glue/nsIGenericFactory.h \
387
xpcom/glue/nsMemory.h \
388
xpcom/glue/nsTraceRefcnt.h \
389
xpcom/glue/nsWeakReference.h \
391
xpcom/glue/standalone/nsXPCOMGlue.h \
395
IPCD-HEADERS_INST = $(INST_SDK)bindings/xpcom/include/ipcd/
396
IPCD-HEADERS_IFFLAGS = -m 644
397
IPCD-HEADERS_SOURCES = \
398
ipc/ipcd/client/public/ipcCID.h \
399
ipc/ipcd/extensions/lock/public/ipcLockCID.h \
400
ipc/ipcd/util/public/ipcMessageReader.h \
401
ipc/ipcd/util/public/ipcMessageWriter.h \
402
ipc/ipcd/daemon/public/ipcModule.h \
403
ipc/ipcd/daemon/public/ipcModuleUtil.h \
404
ipc/ipcd/client/public/ipcdclient.h
410
# We build it statically because we cannot rely on additional .a files
411
# like in the original build
413
xpidl_TEMPLATE = XPCOMBLDPROG
414
xpidl_DEFS = EXPORT_XPT_API
415
## @todo This assumes HOST == TARGET.
416
xpidl_INST = $(INST_BIN)
417
## Obsolete hack: MacPorts is 32-bit on 10.5 and 64-bit on 10.6. Set your KBUILD_HOST_ARCH env.vars. accordingly.
418
#if "$(KBUILD_HOST).$(KBUILD_HOST_ARCH)" == "darwin.amd64" && defined(VBOX_MACOS_10_5_WORKAROUND)
419
# xpidl_BLD_TRG_ARCH = x86
420
# ## @todo kBuild ticket 84 workarounds:
421
# xpidl_DEFS.x86 = $(TEMPLATE_XPCOMBLDPROG_DEFS.x86)
422
# xpidl_CFLAGS.x86 = $(TEMPLATE_XPCOMBLDPROG_CFLAGS.x86)
423
# xpidl_CXXFLAGS.x86 = $(TEMPLATE_XPCOMBLDPROG_CXXFLAGS.x86)
424
# xpidl_LDFLAGS.x86 = $(TEMPLATE_XPCOMBLDPROG_LDFLAGS.x86)
426
ifdef VBOX_WITH_JAVA_SUPPORT_IN_XPIDL
427
xpidl_DEFS += VBOX_XPIDL_EMULATE_GENJIFACES VBOX_XPIDL_EMULATE_GENJIFACES_DIFF
430
xpcom/typelib/xpidl/xpidl.c \
431
xpcom/typelib/xpidl/xpidl_idl.c \
432
xpcom/typelib/xpidl/xpidl_util.c \
433
xpcom/typelib/xpidl/xpidl_header.c \
434
xpcom/typelib/xpidl/xpidl_typelib.c \
435
xpcom/typelib/xpidl/xpidl_doc.c \
436
xpcom/typelib/xpidl/xpidl_java.c \
437
xpcom/typelib/xpt/src/xpt_arena.c \
438
xpcom/typelib/xpt/src/xpt_struct.c \
439
xpcom/typelib/xpt/src/xpt_xdr.c
441
ifeq ($(KBUILD_TARGET),os2)
442
# glib and libIDL needed by XPCOM on OS/2.
443
ifeq ($(VBOX_PATH_GLIB),)
444
VBOX_PATH_GLIB := $(lastword $(sort $(wildcard $(PATH_DEVTOOLS_TRG)/glibidl/*/glibidl/gcc335)))
446
VBOX_PATH_LIBIDL ?= $(VBOX_PATH_GLIB)
447
ifeq ($(wildcard $(VBOX_PATH_GLIB)),)
448
$(warning VBOX_PATH_GLIB is "$(VBOX_PATH_GLIB)" which is not a valid directory!)
450
ifeq ($(wildcard $(VBOX_PATH_LIBIDL)),)
451
$(warning VBOX_PATH_LIBIDL is "$(VBOX_PATH_LIBIDL)" which is not a valid directory!)
454
$(VBOX_PATH_LIBIDL)/include \
455
$(VBOX_PATH_GLIB)/include
457
$(VBOX_PATH_LIBIDL)/lib/libidl.lib \
458
$(VBOX_PATH_LIBIDL)/lib/glib.lib
459
# install necessary DLLs to the same place where xpidl goes
460
INSTALLS += xpidl-DLLS
461
xpidl_ORDERDEPS = $(xpidl-DLLS_1_TARGET)
462
xpidl-DLLS_INST = $(xpidl_INST)
463
# static libraries of these may be provided instead,
464
# so copy DLLs only when they are present
465
xpidl-DLLS_SOURCES += $(wildcard $(VBOX_PATH_GLIB)/lib/glib.dll)
466
xpidl-DLLS_SOURCES += $(wildcard $(VBOX_PATH_LIBIDL)/lib/libIDL.dll)
469
libIDL_config_cflags := $(shell $(VBOX_LIBIDL_CONFIG) --cflags)
470
libIDL_config_libs := $(shell $(VBOX_LIBIDL_CONFIG) --libs)
472
$(libIDL_config_cflags)
474
$(libIDL_config_libs)
475
xpidl_LDFLAGS.linux = \
482
xpt_link_TEMPLATE = XPCOMBLDPROG
484
xpcom/typelib/xpt/tools/xpt_link.c \
485
xpcom/typelib/xpt/src/xpt_arena.c \
486
xpcom/typelib/xpt/src/xpt_struct.c \
487
xpcom/typelib/xpt/src/xpt_xdr.c
493
VBox-xpcom-nspr_TEMPLATE = XPCOM
494
VBox-xpcom-nspr_NOINST = 1
495
VBox-xpcom-nspr_DEFS = \
500
VBox-xpcom-nspr_DEFS += \
501
VBOX_USE_IPRT_IN_NSPR
502
VBox-xpcom-nspr_DEFS.darwin.amd64 = \
503
VBOX_USE_MORE_IPRT_IN_NSPR
504
VBox-xpcom-nspr_DEFS.darwin = \
507
VBox-xpcom-nspr_DEFS.freebsd = \
509
HAVE_CVAR_BUILT_ON_SEM \
511
## @todo filling in the missing stuff, please don't just copy it from linux.
512
# FIXME: LINUX should be defined by _linux.cfg
513
VBox-xpcom-nspr_DEFS.linux = \
519
_LARGEFILE64_SOURCE=1 \
520
HAVE_FCNTL_FILE_LOCKING=1 \
521
HAVE_CVAR_BUILT_ON_SEM \
523
# _BSD_SOURCE is here to keep the Glibc header files happy and make them include the right things
524
# FIXME: L4 should be defined by _linux.cfg
525
VBox-xpcom-nspr_DEFS.l4 = \
528
_LARGEFILE64_SOURCE=1 \
531
HAVE_FCNTL_FILE_LOCKING=1 \
532
HAVE_CVAR_BUILT_ON_SEM
533
VBox-xpcom-nspr_DEFS.netbsd = \
535
VBox-xpcom-nspr_DEFS.openbsd = \
537
VBox-xpcom-nspr_DEFS.os2 =
538
VBox-xpcom-nspr_DEFS.solaris = \
539
HAVE_FCNTL_FILE_LOCKING=1 \
541
VBox-xpcom-nspr_INCS = \
542
nsprpub/pr/include/private \
543
$(VBox-xpcom-nspr_0_OUTDIR)
545
VBox-xpcom-nspr_SOURCES = \
546
nsprpub/pr/src/io/prfdcach.c \
547
nsprpub/pr/src/io/prmwait.c \
548
nsprpub/pr/src/io/priometh.c \
549
nsprpub/pr/src/io/pripv6.c \
550
nsprpub/pr/src/io/prmapopt.c \
551
nsprpub/pr/src/io/prlayer.c \
552
nsprpub/pr/src/io/prlog.c \
553
nsprpub/pr/src/io/prmmap.c \
554
nsprpub/pr/src/io/prpolevt.c \
555
nsprpub/pr/src/io/prprf.c \
556
nsprpub/pr/src/io/prscanf.c \
557
nsprpub/pr/src/io/prstdio.c \
558
nsprpub/pr/src/linking/prlink.c \
559
nsprpub/pr/src/malloc/prmalloc.c \
560
nsprpub/pr/src/malloc/prmem.c \
561
nsprpub/pr/src/md/prosdep.c \
562
nsprpub/pr/src/memory/prseg.c \
563
nsprpub/pr/src/memory/prshm.c \
564
nsprpub/pr/src/memory/prshma.c \
565
nsprpub/pr/src/misc/pralarm.c \
566
nsprpub/pr/src/misc/pratom.c \
567
nsprpub/pr/src/misc/prcountr.c \
568
nsprpub/pr/src/misc/prdtoa.c \
569
nsprpub/pr/src/misc/prenv.c \
570
nsprpub/pr/src/misc/prerr.c \
571
nsprpub/pr/src/misc/prerror.c \
572
nsprpub/pr/src/misc/prerrortable.c \
573
nsprpub/pr/src/misc/prinit.c \
574
nsprpub/pr/src/misc/prinrval.c \
575
nsprpub/pr/src/misc/pripc.c \
576
nsprpub/pr/src/misc/prlog2.c \
577
nsprpub/pr/src/misc/prlong.c \
578
nsprpub/pr/src/misc/prnetdb.c \
579
nsprpub/pr/src/misc/prolock.c \
580
nsprpub/pr/src/misc/prrng.c \
581
nsprpub/pr/src/misc/prsystem.c \
582
nsprpub/pr/src/misc/prtime.c \
583
nsprpub/pr/src/misc/prthinfo.c \
584
nsprpub/pr/src/misc/prtpool.c \
585
nsprpub/pr/src/misc/prtrace.c \
586
nsprpub/pr/src/threads/prcmon.c \
587
nsprpub/pr/src/threads/prrwlock.c \
588
nsprpub/pr/src/threads/prtpd.c \
589
nsprpub/pr/src/prvrsion.c \
590
nsprpub/lib/ds/plarena.c \
591
nsprpub/lib/ds/plhash.c \
592
nsprpub/lib/libc/src/strlen.c \
593
nsprpub/lib/libc/src/strcpy.c \
594
nsprpub/lib/libc/src/strdup.c \
595
nsprpub/lib/libc/src/strcat.c \
596
nsprpub/lib/libc/src/strcmp.c \
597
nsprpub/lib/libc/src/strccmp.c \
598
nsprpub/lib/libc/src/strchr.c \
599
nsprpub/lib/libc/src/strpbrk.c \
600
nsprpub/lib/libc/src/strstr.c \
601
nsprpub/lib/libc/src/strcstr.c \
602
nsprpub/lib/libc/src/strtok.c \
603
nsprpub/lib/libc/src/base64.c \
604
nsprpub/lib/libc/src/plerror.c \
605
nsprpub/lib/libc/src/plgetopt.c
607
ifeq ($(filter-out darwin freebsd linux netbsd openbsd solaris,$(KBUILD_TARGET)),) # unixish
608
VBox-xpcom-nspr_SOURCES += \
609
nsprpub/pr/src/md/unix/unix.c \
610
nsprpub/pr/src/md/unix/unix_errors.c \
611
nsprpub/pr/src/md/unix/uxproces.c \
612
nsprpub/pr/src/md/unix/uxrng.c \
613
nsprpub/pr/src/md/unix/uxshm.c \
614
nsprpub/pr/src/md/unix/uxwrap.c \
615
nsprpub/pr/src/pthreads/ptio.c \
616
nsprpub/pr/src/pthreads/ptsynch.c \
617
nsprpub/pr/src/pthreads/ptthread.c \
618
nsprpub/pr/src/pthreads/ptmisc.c
621
VBox-xpcom-nspr_SOURCES.darwin = nsprpub/pr/src/md/unix/darwin.c
622
VBox-xpcom-nspr_SOURCES.darwin.x86 = nsprpub/pr/src/md/unix/os_Darwin_x86.s
624
VBox-xpcom-nspr_SOURCES.freebsd = nsprpub/pr/src/md/unix/freebsd.c
626
VBox-xpcom-nspr_SOURCES.l4 = \
627
nsprpub/pr/src/io/prfile.c /* why not for Linux? */ \
628
nsprpub/pr/src/io/prio.c /* "" "" "" "" */ \
629
nsprpub/pr/src/io/prsocket.c \
630
nsprpub/pr/src/md/unix/unix.c \
631
nsprpub/pr/src/md/unix/unix_errors.c \
632
nsprpub/pr/src/md/unix/uxpoll.c \
633
nsprpub/pr/src/md/unix/uxproces.c \
634
nsprpub/pr/src/md/unix/uxrng.c \
635
nsprpub/pr/src/md/unix/uxshm.c \
636
nsprpub/pr/src/md/unix/uxwrap.c \
637
nsprpub/pr/src/md/unix/l4env.c \
638
nsprpub/pr/src/threads/prcthr.c \
639
nsprpub/pr/src/threads/prmon.c \
640
nsprpub/pr/src/threads/combined/prucpu.c \
641
nsprpub/pr/src/threads/combined/prucv.c \
642
nsprpub/pr/src/threads/combined/prulock.c \
643
nsprpub/pr/src/threads/combined/prustack.c \
644
nsprpub/pr/src/threads/combined/pruthr.c
645
# nsprpub/pr/src/md/l4env/prnetdb.c \
646
# nsprpub/pr/src/md/l4env/threads.c
647
VBox-xpcom-nspr_SOURCES.l4.x86 = nsprpub/pr/src/md/unix/os_Linux_x86.s
648
VBox-xpcom-nspr_SOURCES.l4.amd64 = nsprpub/pr/src/md/unix/os_Linux_x86_64.s
650
VBox-xpcom-nspr_SOURCES.linux = nsprpub/pr/src/md/unix/linux.c
651
VBox-xpcom-nspr_SOURCES.linux.x86 = nsprpub/pr/src/md/unix/os_Linux_x86.s
652
VBox-xpcom-nspr_SOURCES.linux.amd64 = nsprpub/pr/src/md/unix/os_Linux_x86_64.s
654
VBox-xpcom-nspr_SOURCES.os2 = \
655
nsprpub/pr/src/io/prdir.c \
656
nsprpub/pr/src/io/prfile.c \
657
nsprpub/pr/src/io/prio.c \
658
nsprpub/pr/src/io/prsocket.c \
659
nsprpub/pr/src/md/os2/os2misc.c \
660
nsprpub/pr/src/md/os2/os2sem.c \
661
nsprpub/pr/src/md/os2/os2inrval.c \
662
nsprpub/pr/src/md/os2/os2gc.c \
663
nsprpub/pr/src/md/os2/os2thred.c \
664
nsprpub/pr/src/md/os2/os2io.c \
665
nsprpub/pr/src/md/os2/os2cv.c \
666
nsprpub/pr/src/md/os2/os2sock.c \
667
nsprpub/pr/src/md/os2/os2_errors.c \
668
nsprpub/pr/src/md/os2/os2poll.c \
669
nsprpub/pr/src/md/os2/os2rng.c \
670
nsprpub/pr/src/threads/prdump.c \
671
nsprpub/pr/src/threads/prmon.c \
672
nsprpub/pr/src/threads/prsem.c \
673
nsprpub/pr/src/threads/prcthr.c \
674
nsprpub/pr/src/threads/combined/prucpu.c \
675
nsprpub/pr/src/threads/combined/prucv.c \
676
nsprpub/pr/src/threads/combined/prulock.c \
677
nsprpub/pr/src/threads/combined/prustack.c \
678
nsprpub/pr/src/threads/combined/pruthr.c
680
VBox-xpcom-nspr_SOURCES.os2 += \
681
nsprpub/pr/src/md/os2/os2emx.s \
682
nsprpub/pr/src/md/os2/os2vaclegacy.s
683
# IBM VAC sources (not used)
684
#VBox-xpcom-nspr_SOURCES.os2 += \
685
# nsprpub/pr/src/md/os2/os2vacpp.asm
687
VBox-xpcom-nspr_SOURCES.solaris = nsprpub/pr/src/md/unix/solaris.c
688
VBox-xpcom-nspr_SOURCES.solaris.x86 = nsprpub/pr/src/md/unix/os_SunOS_x86.s
689
VBox-xpcom-nspr_SOURCES.solaris.amd64 = nsprpub/pr/src/md/unix/os_SunOS_x86_64.s
691
# generate build stamps
692
nsprpub/pr/src/prvrsion.c_DEPS = $(VBox-xpcom-nspr_0_OUTDIR)/_pr_bld.h
693
nsprpub/lib/ds/plvrsion.c_DEPS = $(VBox-xpcom-nspr_0_OUTDIR)/_pl_bld.h
694
VBox-xpcom-nspr_CLEAN += \
695
$(VBox-xpcom-nspr_0_OUTDIR)/_pr_bld.h \
696
$(VBox-xpcom-nspr_0_OUTDIR)/_pl_bld.h
698
$$(VBox-xpcom-nspr_0_OUTDIR)/_pr_bld.h: | $$(VBox-xpcom-nspr_0_OUTDIR)/
699
$(call MSG_GENERATE,,$@)
700
$(QUIET)$(APPEND) -t $@ '#define _BUILD_STRING "$(date +%Y-%m-%d %T)"'
702
$$(VBox-xpcom-nspr_0_OUTDIR)/_pl_bld.h: | $$(VBox-xpcom-nspr_0_OUTDIR)/
703
$(call MSG_GENERATE,,$@)
704
$(QUIET)$(APPEND) -t $@ '#define _BUILD_STRING "$(date +%Y-%m-%d %T)"'
707
VBox-xpcom-typelib_TEMPLATE = XPCOM
708
VBox-xpcom-typelib_NOINST = 1
709
VBox-xpcom-typelib_SOURCES = \
710
xpcom/typelib/xpt/src/xpt_arena.c \
711
xpcom/typelib/xpt/src/xpt_struct.c \
712
xpcom/typelib/xpt/src/xpt_xdr.c
714
VBox-xpcom-string_TEMPLATE = XPCOM
715
VBox-xpcom-string_NOINST = 1
716
VBox-xpcom-string_SOURCES = \
717
xpcom/string/src/nsAString.cpp \
718
xpcom/string/src/nsDependentSubstring.cpp \
719
xpcom/string/src/nsObsoleteAStringThunk.cpp \
720
xpcom/string/src/nsPrintfCString.cpp \
721
xpcom/string/src/nsPromiseFlatString.cpp \
722
xpcom/string/src/nsReadableUtils.cpp \
723
xpcom/string/src/nsSubstring.cpp \
724
xpcom/string/src/nsSubstringTuple.cpp \
725
xpcom/string/src/nsString.cpp \
726
xpcom/string/src/nsStringComparator.cpp \
727
xpcom/string/src/nsStringObsolete.cpp
729
VBox-xpcom-base_TEMPLATE = XPCOM
730
VBox-xpcom-base_NOINST = 1
731
VBox-xpcom-base_DEFS = _IMPL_NS_COM
732
VBox-xpcom-base_SOURCES = \
733
xpcom/base/nsAllocator.cpp \
734
xpcom/base/nsConsoleMessage.cpp \
735
xpcom/base/nsConsoleService.cpp \
736
xpcom/base/nsDebugImpl.cpp \
737
xpcom/base/nsErrorService.cpp \
738
xpcom/base/nsExceptionService.cpp \
739
xpcom/base/nsID.cpp \
740
xpcom/base/nsMemoryImpl.cpp \
741
xpcom/base/nsTraceRefcntImpl.cpp \
742
xpcom/base/nsStackFrameUnix.cpp
744
VBox-xpcom-ds_TEMPLATE = XPCOM
745
VBox-xpcom-ds_NOINST = 1
746
VBox-xpcom-ds_DEFS = _IMPL_NS_COM
747
VBox-xpcom-ds_SOURCES = \
749
xpcom/ds/nsAtomTable.cpp \
750
xpcom/ds/nsAtomService.cpp \
751
xpcom/ds/nsByteBuffer.cpp \
752
xpcom/ds/nsCheapSets.cpp \
754
xpcom/ds/nsDeque.cpp \
755
xpcom/ds/nsEmptyEnumerator.cpp \
756
xpcom/ds/nsEnumeratorUtils.cpp \
757
xpcom/ds/nsFixedSizeAllocator.cpp \
758
xpcom/ds/nsHashSets.cpp \
759
xpcom/ds/nsHashtable.cpp \
760
xpcom/ds/nsObserverList.cpp \
761
xpcom/ds/nsObserverService.cpp \
762
xpcom/ds/nsProperties.cpp \
763
xpcom/ds/nsPersistentProperties.cpp \
764
xpcom/ds/nsQuickSort.cpp \
765
xpcom/ds/nsRecyclingAllocator.cpp \
766
xpcom/ds/nsStaticNameTable.cpp \
767
xpcom/ds/nsStringEnumerator.cpp \
768
xpcom/ds/nsSupportsArray.cpp \
769
xpcom/ds/nsSupportsArrayEnumerator.cpp \
770
xpcom/ds/nsSupportsPrimitives.cpp \
771
xpcom/ds/nsTHashtable.cpp \
772
xpcom/ds/nsUnicharBuffer.cpp \
773
xpcom/ds/nsVariant.cpp \
774
xpcom/ds/nsVoidArray.cpp \
775
xpcom/ds/nsTextFormatter.cpp \
776
xpcom/ds/nsTimelineService.cpp \
777
xpcom/ds/nsValueArray.cpp \
778
xpcom/ds/nsCOMArray.cpp \
779
xpcom/ds/nsArray.cpp \
780
xpcom/ds/nsArrayEnumerator.cpp
781
# xpcom/ds/nsHashPropertyBag.cpp
783
# @todo what about MOZ_USER_DIR?
784
VBox-xpcom-io_TEMPLATE = XPCOM
785
VBox-xpcom-io_NOINST = 1
786
VBox-xpcom-io_DEFS = _IMPL_NS_COM MOZ_USER_DIR=\".mozilla\"
787
VBox-xpcom-io_INCS.darwin = \
789
VBox-xpcom-io_SOURCES = \
790
xpcom/io/nsAppFileLocationProvider.cpp \
791
xpcom/io/nsBinaryStream.cpp \
792
xpcom/io/nsByteArrayInputStream.cpp \
793
xpcom/io/nsDirectoryService.cpp \
794
xpcom/io/nsEscape.cpp \
795
xpcom/io/nsFastLoadFile.cpp \
796
xpcom/io/nsFastLoadService.cpp \
797
xpcom/io/nsInputStreamTee.cpp \
798
xpcom/io/nsLinebreakConverter.cpp \
799
xpcom/io/nsLocalFileCommon.cpp \
800
xpcom/io/nsMultiplexInputStream.cpp \
801
xpcom/io/nsPipe3.cpp \
802
xpcom/io/nsStreamUtils.cpp \
803
xpcom/io/nsScriptableInputStream.cpp \
804
xpcom/io/nsSegmentedBuffer.cpp \
805
xpcom/io/SpecialSystemDirectory.cpp \
806
xpcom/io/nsStorageStream.cpp \
807
xpcom/io/nsStringStream.cpp \
808
xpcom/io/nsUnicharInputStream.cpp \
809
xpcom/io/nsNativeCharsetUtils.cpp
810
VBox-xpcom-io_SOURCES.darwin.x86 = \
811
xpcom/io/nsLocalFileOSX.cpp \
812
xpcom/MoreFiles/FSCopyObject.c \
813
xpcom/MoreFiles/MoreFilesX.c
814
VBox-xpcom-io_SOURCES.l4 = \
815
xpcom/io/nsLocalFileL4.cpp
816
if1of ($(KBUILD_TARGET) $(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), freebsd linux netbsd openbsd solaris darwin.amd64)
817
VBox-xpcom-io_SOURCES += \
818
xpcom/io/nsLocalFileUnix.cpp
820
VBox-xpcom-io_SOURCES.os2 = \
821
xpcom/io/nsLocalFileOS2.cpp
823
VBox-xpcom-components_TEMPLATE = XPCOM
824
VBox-xpcom-components_NOINST = 1
825
VBox-xpcom-components_DEFS = _IMPL_NS_COM EXPORT_XPTI_API
826
VBox-xpcom-components_SOURCES = \
827
xpcom/components/nsCategoryManager.cpp \
828
xpcom/components/nsComponentManager.cpp \
829
xpcom/components/nsComponentManagerObsolete.cpp \
830
xpcom/components/nsNativeComponentLoader.cpp \
831
xpcom/components/nsServiceManagerObsolete.cpp \
832
xpcom/components/xcDll.cpp \
833
xpcom/components/nsStaticComponentLoader.cpp
835
VBox-xpcom-threads_TEMPLATE = XPCOM
836
VBox-xpcom-threads_NOINST = 1
837
VBox-xpcom-threads_DEFS = _IMPL_NS_COM
838
VBox-xpcom-threads_SOURCES = \
839
xpcom/threads/plevent.c \
840
xpcom/threads/nsAutoLock.cpp \
841
xpcom/threads/nsEnvironment.cpp \
842
xpcom/threads/nsEventQueue.cpp \
843
xpcom/threads/nsEventQueueService.cpp \
844
xpcom/threads/nsThread.cpp \
845
xpcom/threads/nsTimerImpl.cpp \
846
xpcom/threads/nsProcessCommon.cpp \
847
xpcom/threads/TimerThread.cpp
849
VBox-xpcom-xptinfo_TEMPLATE = XPCOM
850
VBox-xpcom-xptinfo_NOINST = 1
851
VBox-xpcom-xptinfo_DEFS = _IMPL_NS_COM _IMPL_NS_BASE EXPORT_XPTI_API EXPORT_XPT_API
852
VBox-xpcom-xptinfo_SOURCES = \
853
xpcom/reflect/xptinfo/src/xptiFile.cpp \
854
xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp \
855
xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp \
856
xpcom/reflect/xptinfo/src/xptiManifest.cpp \
857
xpcom/reflect/xptinfo/src/xptiMisc.cpp \
858
xpcom/reflect/xptinfo/src/xptiTypelibGuts.cpp \
859
xpcom/reflect/xptinfo/src/xptiWorkingSet.cpp \
860
xpcom/reflect/xptinfo/src/xptiZipItem.cpp \
861
xpcom/reflect/xptinfo/src/xptiZipLoader.cpp
864
VBox-xpcom-xptcall_TEMPLATE = XPCOM
865
VBox-xpcom-xptcall_NOINST = 1
866
VBox-xpcom-xptcall_DEFS = _IMPL_NS_COM _IMPL_NS_BASE EXPORT_XPTC_API
867
VBox-xpcom-xptcall_DEFS.darwin = KEEP_STACK_16_BYTE_ALIGNED
868
VBox-xpcom-xptcall_DEFS.l4 = L4
869
VBox-xpcom-xptcall_DEFS.os2 = MOZ_NEED_LEADING_UNDERSCORE
870
VBox-xpcom-xptcall_INCS.os2 = xpcom/reflect/xptcall/src/md/unix
871
VBox-xpcom-xptcall_SOURCES = xpcom/reflect/xptcall/src/xptcall.cpp
872
VBox-xpcom-xptcall_SOURCES.darwin.x86 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_x86.cpp \
873
xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_x86.cpp
874
VBox-xpcom-xptcall_SOURCES.darwin.amd64= xpcom/reflect/xptcall/src/md/unix/xptcinvoke_amd64_darwin.cpp \
875
xpcom/reflect/xptcall/src/md/unix/xptcstubs_amd64_darwin.cpp
876
VBox-xpcom-xptcall_SOURCES.freebsd.x86 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_gcc_x86_unix.cpp \
877
xpcom/reflect/xptcall/src/md/unix/xptcstubs_gcc_x86_unix.cpp
878
VBox-xpcom-xptcall_SOURCES.freebsd.amd64=xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp \
879
xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_linux.cpp
880
VBox-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
882
VBox-xpcom-xptcall_SOURCES.linux.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp \
883
xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_linux.cpp
884
VBox-xpcom-xptcall_SOURCES.os2 = xpcom/reflect/xptcall/src/md/os2/xptcinvoke_gcc_x86_os2.cpp \
885
xpcom/reflect/xptcall/src/md/os2/xptcstubs_gcc_x86_os2.cpp
886
VBox-xpcom-xptcall_SOURCES.solaris.x86 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_solaris.cpp \
887
xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_solaris.cpp
888
VBox-xpcom-xptcall_SOURCES.solaris.amd64 = xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp \
889
xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_linux.cpp
891
xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_solaris.cpp_CXXFLAGS = -O0
892
# -O0 works fine, while -O1 doesn't. The gcc man page can't be listing all the -f*
893
# stuff that -O1 enables, because when using the options without -O1, it's -fomit-frame-pointer
894
# that triggers is, while -O1 -fno-omit-frame-pointer does not work. Anyway, it's probably a gcc/mozila
895
# bug and it's not worth investigating as I'm not the maintainger of the solaris gcc port. [bird, 2007-09-17]
898
VBox-xpcom-proxy_TEMPLATE = XPCOM
899
VBox-xpcom-proxy_NOINST = 1
900
VBox-xpcom-proxy_DEFS = _IMPL_NS_COM EXPORT_XPTC_API EXPORT_XPTI_API
901
VBox-xpcom-proxy_SOURCES = xpcom/proxy/src/nsProxyEvent.cpp \
902
xpcom/proxy/src/nsProxyEventClass.cpp \
903
xpcom/proxy/src/nsProxyEventObject.cpp \
904
xpcom/proxy/src/nsProxyObjectManager.cpp \
905
xpcom/proxy/src/nsProxyRelease.cpp
909
# The VBoxXPCOM Glue static libraries.
911
# See http://developer.mozilla.org/en/docs/XPCOM_Glue for details about the
912
# original XPCOM glue library purpose and usage.
914
# We don't really use the glue library in the described way because we don't
915
# provide frozen APIs (yet), so all VBox XPCOM client applications are
916
# dependent on the given version of both the VBox XPCOM runtime (binary
917
# dependency) and VirtualBox component library (COM interface dependency). For
918
# this reason, VBox client applications link to the VBox XPCOM shared library
919
# directly (instead of linking to the standalone XPCOM glue library that would
920
# dynamically search for and load the installed XPCOM runtime). For the same
921
# reason, we link all parts of XPCOM into a single shared XPCOM library below
922
# (as opposed to the original XPCOM where e.g. NSPR lives in a separate DLL).
924
VBoxXPCOMGlue_COMMON_SOURCES = \
925
xpcom/glue/nsCOMPtr.cpp \
926
xpcom/glue/nsComponentManagerUtils.cpp \
927
xpcom/glue/nsDebug.cpp \
928
xpcom/glue/nsGenericFactory.cpp \
929
xpcom/glue/nsIInterfaceRequestorUtils.cpp \
930
xpcom/glue/nsMemory.cpp \
931
xpcom/glue/nsTraceRefcnt.cpp \
932
xpcom/glue/nsWeakReference.cpp
934
# dependent glue library which goes in to the VBoxXPCOM shared library
935
VBoxXPCOMGlue_s_TEMPLATE = XPCOM
936
VBoxXPCOMGlue_s_NOINST = 1
937
VBoxXPCOMGlue_s_DEFS = _IMPL_NS_COM
938
VBoxXPCOMGlue_s_SOURCES = $(VBoxXPCOMGlue_COMMON_SOURCES)
940
# standalone glue library which all third-party client apps (if any) will link with
941
# (currently not used anywhere (see above) but still built to make sure
942
# the code inside #ifdef XPCOM_GLUE compiles)
943
VBoxXPCOMGlue_TEMPLATE = XPCOM
944
VBoxXPCOMGlue_DEFS = XPCOM_GLUE
945
VBoxXPCOMGlue_SOURCES = $(VBoxXPCOMGlue_COMMON_SOURCES) \
946
xpcom/glue/standalone/nsXPCOMGlue.cpp \
947
xpcom/glue/standalone/nsGREDirServiceProvider.cpp
948
VBoxXPCOMGlue_SOURCES += \
949
$(VBox-xpcom-string_1_TARGET)
950
#VBoxXPCOMGlue_INST = lib/ $(INST_SDK)lib/
954
# The VBoxXPCOM Shared Object, assembling all lib files.
956
VBoxXPCOM_TEMPLATE = XPCOM
957
VBoxXPCOM_NAME = $(basename $(notdir $(LIB_XPCOM)))
958
VBoxXPCOM_DEFS = BUILD_DCONNECT="1" _IMPL_NS_COM
959
ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
960
VBoxXPCOM_LDFLAGS.linux = -Wl,--version-script=$(XPCOM_C_NAMESPACE_MAP)
961
VBoxXPCOM_LNK_DEPS.linux += $(XPCOM_C_NAMESPACE_MAP)
962
VBoxXPCOM_LDFLAGS.solaris = -Wl,-M,$(XPCOM_C_NAMESPACE_MAP)
963
VBoxXPCOM_LNK_DEPS.solaris+= $(XPCOM_C_NAMESPACE_MAP)
965
VBoxXPCOM_SOURCES = \
966
xpcom/build/nsXPComInit.cpp \
967
xpcom/build/nsStringAPI.cpp
968
VBoxXPCOM_SOURCES.darwin = \
970
VBoxXPCOM_SOURCES.os2 = \
972
VBoxXPCOM_SOURCES.solaris = \
975
$(VBox-xpcom-typelib_1_TARGET) \
976
$(VBox-xpcom-string_1_TARGET) \
977
$(VBox-xpcom-base_1_TARGET) \
978
$(VBox-xpcom-ds_1_TARGET) \
979
$(VBox-xpcom-io_1_TARGET) \
980
$(VBox-xpcom-components_1_TARGET) \
981
$(VBox-xpcom-threads_1_TARGET) \
982
$(VBox-xpcom-xptinfo_1_TARGET) \
983
$(VBox-xpcom-xptcall_1_TARGET) \
984
$(VBox-xpcom-proxy_1_TARGET) \
985
$(VBox-xpcom-nspr_1_TARGET) \
986
$(VBoxXPCOMGlue_s_1_TARGET)
987
VBoxXPCOM_LIBS.linux = \
990
ifeq ($(filter-out freebsd l4 linux netbsd openbsd,$(KBUILD_TARGET)),) # gnu ld.
991
VBoxXPCOM_LDFLAGS = -Wl,--whole-archive \
992
$(VBox-xpcom-typelib_1_TARGET) \
993
$(VBox-xpcom-string_1_TARGET) \
994
$(VBox-xpcom-base_1_TARGET) \
995
$(VBox-xpcom-ds_1_TARGET) \
996
$(VBox-xpcom-io_1_TARGET) \
997
$(VBox-xpcom-components_1_TARGET) \
998
$(VBox-xpcom-threads_1_TARGET) \
999
$(VBox-xpcom-xptinfo_1_TARGET) \
1000
$(VBox-xpcom-xptcall_1_TARGET) \
1001
$(VBox-xpcom-proxy_1_TARGET) \
1002
$(VBox-xpcom-nspr_1_TARGET) \
1003
$(VBoxXPCOMGlue_s_1_TARGET) \
1004
-Wl,--no-whole-archive
1007
VBoxXPCOM_LDFLAGS.solaris += -Wl,-z,allextract \
1008
$(VBox-xpcom-typelib_1_TARGET) \
1009
$(VBox-xpcom-string_1_TARGET) \
1010
$(VBox-xpcom-base_1_TARGET) \
1011
$(VBox-xpcom-ds_1_TARGET) \
1012
$(VBox-xpcom-io_1_TARGET) \
1013
$(VBox-xpcom-components_1_TARGET) \
1014
$(VBox-xpcom-threads_1_TARGET) \
1015
$(VBox-xpcom-xptinfo_1_TARGET) \
1016
$(VBox-xpcom-xptcall_1_TARGET) \
1017
$(VBox-xpcom-proxy_1_TARGET) \
1018
$(VBox-xpcom-nspr_1_TARGET) \
1019
$(VBoxXPCOMGlue_s_1_TARGET) \
1020
-Wl,-z,defaultextract
1022
#VBoxXPCOM_LIBS.l4 = $(L4_LIBDIR)/libxpcomstubs.a $(L4_LIBDIR)/../libuc_c++.a \
1023
# $(VBOX_PATH_L4_GCC3_INSTALL)/libsupc++.a $(VBOX_PATH_L4_GCC3_INSTALL)/libgcc_eh.a
1025
#VBoxXPCOM_LIBS += $(LIB_RUNTIME_EF)
1026
#VBoxXPCOM_LDFLAGS = -Wl,--whole-archive $(VBoxXPCOM_LIBS) -Wl,--no-whole-archive $(LIB_RUNTIME)
1027
VBoxXPCOM_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxXPCOM.dylib
1029
ifdef VBOX_IPC_RELEASE_LOG
1031
else ifneq ($(KBUILD_TYPE),release)
1035
TEMPLATE_XPCOMIPC = XPCOM IPC libraries
1036
TEMPLATE_XPCOMIPC_EXTENDS = XPCOM
1037
TEMPLATE_XPCOMIPC_DEFS = \
1038
$(TEMPLATE_XPCOM_DEFS) BUILD_DCONNECT="1" \
1039
IPC_DAEMON_APP_NAME=\"VBoxXPCOMIPCD$(SUFF_EXE)\"
1041
TEMPLATE_XPCOMIPC_DEFS += IPC_LOGGING
1044
TEMPLATE_XPCOMIPC_LIBS = $(VBoxXPCOM_1_TARGET) $(TEMPLATE_XPCOM_LIBS)
1046
TEMPLATE_XPCOMIPCEXE = XPCOM IPC executables
1047
TEMPLATE_XPCOMIPCEXE_EXTENDS = XPCOMEXE
1048
TEMPLATE_XPCOMIPCEXE_DEFS = $(TEMPLATE_XPCOMEXE_DEFS) BUILD_DCONNECT="1"
1050
TEMPLATE_XPCOMIPCEXE_DEFS += IPC_LOGGING
1053
VBox-xpcom-ipcutils_TEMPLATE = XPCOMIPC
1054
VBox-xpcom-ipcutils_NOINST = 1
1055
VBox-xpcom-ipcutils_SOURCES = \
1056
ipc/ipcd/util/src/ipcMessageReader.cpp \
1057
ipc/ipcd/util/src/ipcMessageWriter.cpp
1059
VBox-xpcom-ipcshared_TEMPLATE = XPCOMIPC
1060
VBox-xpcom-ipcshared_NOINST = 1
1061
VBox-xpcom-ipcshared_SOURCES = \
1062
ipc/ipcd/shared/src/ipcLog.cpp \
1063
ipc/ipcd/shared/src/ipcConfig.cpp \
1064
ipc/ipcd/shared/src/ipcMessage.cpp \
1065
ipc/ipcd/shared/src/ipcMessagePrimitives.cpp \
1066
ipc/ipcd/shared/src/ipcStringList.cpp \
1067
ipc/ipcd/shared/src/ipcIDList.cpp \
1068
ipc/ipcd/shared/src/ipcm.cpp
1070
VBox-xpcom-ipcdlock_TEMPLATE = XPCOMIPC
1071
VBox-xpcom-ipcdlock_NOINST = 1
1072
VBox-xpcom-ipcdlock_SOURCES = \
1073
ipc/ipcd/extensions/lock/src/ipcLockProtocol.cpp \
1074
ipc/ipcd/extensions/lock/src/ipcLockService.cpp
1076
VBox-xpcom-ipctransmgr_TEMPLATE = XPCOMIPC
1077
VBox-xpcom-ipctransmgr_NOINST = 1
1078
VBox-xpcom-ipctransmgr_SOURCES = \
1079
ipc/ipcd/extensions/transmngr/src/tmTransactionService.cpp
1081
VBox-xpcom-ipctmgrcom_TEMPLATE = XPCOMIPC
1082
VBox-xpcom-ipctmgrcom_NOINST = 1
1083
VBox-xpcom-ipctmgrcom_SOURCES = \
1084
ipc/ipcd/extensions/transmngr/common/tmTransaction.cpp \
1085
ipc/ipcd/extensions/transmngr/common/tmVector.cpp
1089
# DCONNECT client shared object
1091
VBoxXPCOMIPCC_TEMPLATE = XPCOMIPC
1092
VBoxXPCOMIPCC_NAME.os2 = VBoxIPCC
1093
VBoxXPCOMIPCC_INST = $(INST_BIN)components/
1094
#VBoxXPCOMIPCC_DEFS = HAVE_DEPENDENT_LIBS - dependentLibs.h is linux specific, so this cannot be required.
1095
VBoxXPCOMIPCC_SOURCES = \
1096
ipc/ipcd/client/src/ipcdclient.cpp \
1097
ipc/ipcd/client/src/ipcService.cpp \
1098
ipc/ipcd/client/src/ipcModuleFactory.cpp \
1099
ipc/ipcd/extensions/dconnect/src/ipcDConnectService.cpp
1100
ifeq ($(KBUILD_TARGET),win)
1101
VBoxXPCOMIPCC_SOURCES += \
1102
ipc/ipcd/client/src/ipcConnectionWin.cpp
1104
VBoxXPCOMIPCC_SOURCES += \
1105
ipc/ipcd/client/src/ipcConnectionUnix.cpp
1107
VBoxXPCOMIPCC_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxXPCOMIPCC.dylib
1108
VBoxXPCOMIPCC_LIBS = \
1109
$(VBox-xpcom-ipcutils_1_TARGET) \
1110
$(VBox-xpcom-ipcshared_1_TARGET) \
1111
$(VBox-xpcom-ipcdlock_1_TARGET) \
1112
$(VBox-xpcom-ipctransmgr_1_TARGET) \
1113
$(VBox-xpcom-ipctmgrcom_1_TARGET)
1115
#VBoxXPCOMIPCC_LIBS += $(LIB_RUNTIME)
1119
# DCONNECT daemon executable
1121
VBoxXPCOMIPCD_TEMPLATE = XPCOMIPCEXE
1122
VBoxXPCOMIPCD_SOURCES = \
1123
ipc/ipcd/daemon/src/ipcd.cpp \
1124
ipc/ipcd/daemon/src/ipcClient.cpp \
1125
ipc/ipcd/daemon/src/ipcModuleReg.cpp \
1126
ipc/ipcd/daemon/src/ipcCommandModule.cpp
1127
ifeq ($(KBUILD_TARGET),win)
1128
VBoxXPCOMIPCD_SOURCES += \
1129
ipc/ipcd/daemon/src/ipcdWin.cpp
1131
VBoxXPCOMIPCD_SOURCES += \
1132
ipc/ipcd/daemon/src/ipcdUnix.cpp
1137
# Include sub-makefiles for the Python<->XPCOM and Java<->XPCOM bridges.
1140
# Find the Python headers for the Python<->XPCOM bridge if enabled.
1141
ifdef VBOX_WITH_PYTHON
1142
include $(PATH_SUB_CURRENT)/python/Makefile.kmk
1145
ifdef VBOX_WITH_JXPCOM
1146
include $(PATH_SUB_CURRENT)/java/Makefile.kmk
1153
tstnsIFileEnumerator_TEMPLATE = XPCOMTSTEXE
1154
tstnsIFileEnumerator_SOURCES = xpcom/tests/nsIFileEnumerator.cpp
1155
tstnsIFileTest_TEMPLATE = XPCOMTSTEXE
1156
tstnsIFileTest_SOURCES = xpcom/tests/nsIFileTest.cpp
1157
tstTestArray_TEMPLATE = XPCOMTSTEXE
1158
tstTestArray_SOURCES = xpcom/tests/TestArray.cpp
1159
tstTestAtoms_TEMPLATE = XPCOMTSTEXE
1160
tstTestAtoms_SOURCES = xpcom/tests/TestAtoms.cpp
1161
tstTestAutoLock_TEMPLATE = XPCOMTSTEXE
1162
tstTestAutoLock_SOURCES = xpcom/tests/TestAutoLock.cpp
1163
tstTestCallTemplates_TEMPLATE = XPCOMTSTEXE
1164
tstTestCallTemplates_SOURCES = xpcom/tests/TestCallTemplates.cpp
1165
tstTestCOMPtr_TEMPLATE = XPCOMTSTEXE
1166
tstTestCOMPtr_SOURCES = xpcom/tests/TestCOMPtr.cpp
1167
tstTestCOMPtrEq_TEMPLATE = XPCOMTSTEXE
1168
tstTestCOMPtrEq_SOURCES = xpcom/tests/TestCOMPtrEq.cpp
1169
tstTestCRT_TEMPLATE = XPCOMTSTEXE
1170
tstTestCRT_SOURCES = xpcom/tests/TestCRT.cpp
1171
tstTestFactory_TEMPLATE = XPCOMTSTEXE
1172
tstTestFactory_SOURCES = xpcom/tests/TestFactory.cpp
1173
tstTestHashtables_TEMPLATE = XPCOMTSTEXE
1174
tstTestHashtables_SOURCES = xpcom/tests/TestHashtables.cpp
1175
tstTestID_TEMPLATE = XPCOMTSTEXE
1176
tstTestID_SOURCES = xpcom/tests/TestID.cpp
1177
tstTestObserverService_TEMPLATE= XPCOMTSTEXE
1178
tstTestObserverService_SOURCES = xpcom/tests/TestObserverService.cpp
1179
tstTestPermanentAtoms_TEMPLATE = XPCOMTSTEXE
1180
tstTestPermanentAtoms_SOURCES = xpcom/tests/TestPermanentAtoms.cpp
1181
tstTestPipes_TEMPLATE = XPCOMTSTEXE
1182
tstTestPipes_SOURCES = xpcom/tests/TestPipes.cpp
1183
tstTestServMgr_TEMPLATE = XPCOMTSTEXE
1184
tstTestServMgr_SOURCES = xpcom/tests/TestServMgr.cpp
1185
tstTestServMgr_INCS = xpcom/tests/services
1186
tstTestThreads_TEMPLATE = XPCOMTSTEXE
1187
tstTestThreads_SOURCES = xpcom/tests/TestThreads.cpp
1188
tstTestXPIDLString_TEMPLATE = XPCOMTSTEXE
1189
tstTestXPIDLString_SOURCES = xpcom/tests/TestXPIDLString.cpp
1190
tstTestDeque_TEMPLATE = XPCOMTSTEXE
1191
tstTestDeque_SOURCES = xpcom/tests/TestDeque.cpp
1192
tstTestAutoPtr_TEMPLATE = XPCOMTSTEXE
1193
tstTestAutoPtr_SOURCES = xpcom/tests/TestAutoPtr.cpp
1194
tstTestMinStringAPI_TEMPLATE = XPCOMTSTEXE
1195
tstTestMinStringAPI_SOURCES = xpcom/tests/TestMinStringAPI.cpp
1196
tstTestStrings_TEMPLATE = XPCOMTSTEXE
1197
tstTestStrings_SOURCES = xpcom/tests/TestStrings.cpp
1198
tstPrimitiveTest_TEMPLATE = XPCOMTSTEXE
1199
tstPrimitiveTest_SOURCES = xpcom/typelib/xpt/tests/PrimitiveTest.c
1200
tstSimpleTypeLib_TEMPLATE = XPCOMTSTEXE
1201
tstSimpleTypeLib_SOURCES = xpcom/typelib/xpt/tests/SimpleTypeLib.c
1202
tstXptDump_TEMPLATE = XPCOMTSTEXE
1203
tstXptDump_SOURCES = xpcom/typelib/xpt/tools/xpt_dump.c
1204
tstXptLink_TEMPLATE = XPCOMTSTEXE
1205
tstXptLink_SOURCES = xpcom/typelib/xpt/tools/xpt_link.c
1210
$(PATH_TARGET)/VBox-xpcom-idl-timestamp \
1211
$(addprefix $(VBOX_PATH_SDK)/bindings/xpcom/include,$(notdir $(subst .idl,.h,$(XPCOM_IDLFILES)))) \
1212
$(addprefix $(VBOX_PATH_SDK)/bindings/xpcom/include,$(notdir $(subst .idl,.xpt,$(XPCOM_IDLFILES)))) \
1213
$(addprefix $(VBOX_PATH_SDK)/bindings/xpcom/idl/,$(notdir $(XPCOM_IDLFILES))) \
1214
$(addprefix $(PATH_TARGET)/VBox-xpcom-xpt-files/,$(notdir $(subst .idl,.xpt,$(XPCOM_IDLFILES))))
1218
# Create and install VBoxXPCOMBase.xpt
1220
INSTALLS += VBoxXPCOMBase-xpt-inst
1221
VBOX_XPTFILES = $(addprefix $(PATH_TARGET)/VBox-xpcom-xpt-files/, \
1222
nsIConsoleListener.xpt \
1223
nsIConsoleMessage.xpt \
1224
nsIConsoleService.xpt \
1225
nsIErrorService.xpt \
1227
nsIExceptionService.xpt \
1229
nsIInterfaceRequestor.xpt \
1231
nsIProgrammingLanguage.xpt \
1233
nsITraceRefcnt.xpt \
1234
nsIWeakReference.xpt \
1237
nsIAtomService.xpt \
1240
nsIPersistentProperties2.xpt \
1241
nsIPropertyBag.xpt \
1242
nsIRecyclingAllocator.xpt \
1244
nsISerializable.xpt \
1245
nsIStringEnumerator.xpt \
1246
nsISupportsArray.xpt \
1247
nsISupportsIterators.xpt \
1248
nsITimelineService.xpt \
1250
nsIObserverService.xpt \
1253
nsISimpleEnumerator.xpt \
1254
nsISupportsPrimitives.xpt \
1255
nsIBinaryInputStream.xpt \
1256
nsIBinaryOutputStream.xpt \
1257
nsIByteArrayInputStream.xpt \
1258
nsIFastLoadFileControl.xpt \
1259
nsIFastLoadService.xpt \
1260
nsIInputStreamTee.xpt \
1261
nsILineInputStream.xpt \
1262
nsIMultiplexInputStream.xpt \
1263
nsIObjectInputStream.xpt \
1264
nsIObjectOutputStream.xpt \
1266
nsISeekableStream.xpt \
1267
nsIStorageStream.xpt \
1268
nsIStringStream.xpt \
1269
nsIStreamBufferAccess.xpt \
1270
nsIAsyncInputStream.xpt \
1271
nsIAsyncOutputStream.xpt \
1272
nsIDirectoryService.xpt \
1275
nsIInputStream.xpt \
1276
nsIOutputStream.xpt \
1277
nsIScriptableInputStream.xpt \
1278
nsIComponentLoader.xpt \
1279
nsIComponentLoaderManager.xpt \
1280
nsIComponentManagerObsolete.xpt \
1281
nsINativeComponentLoader.xpt \
1283
nsIComponentRegistrar.xpt \
1286
nsIServiceManager.xpt \
1287
nsIComponentManager.xpt \
1288
nsICategoryManager.xpt \
1291
nsITimerInternal.xpt \
1292
nsITimerManager.xpt \
1294
nsIEventTarget.xpt \
1296
nsIEventQueueService.xpt \
1297
nsIEnvironment.xpt \
1299
nsIInterfaceInfo.xpt \
1300
nsIInterfaceInfoManager.xpt \
1303
VBoxXPCOMBase-xpt-inst_INST = $(INST_BIN)components/
1304
VBoxXPCOMBase-xpt-inst_MODE = 0644
1305
VBoxXPCOMBase-xpt-inst_SOURCES = \
1306
$(PATH_TARGET)/VBox-xpcom-xpt-files/VBoxXPCOMBase.xpt
1307
VBoxXPCOMBase-xpt-inst_CLEAN = \
1309
$(PATH_TARGET)/VBox-xpcom-xpt-files/VBoxXPCOMBase.xpt
1311
# combined typelib library
1312
$(PATH_TARGET)/VBox-xpcom-xpt-files/VBoxXPCOMBase.xpt: $$(VBOX_XPTFILES) | $$(xpt_link_1_TARGET) $(PATH_TARGET)/VBox-xpcom-xpt-files/
1313
$(call MSG_LINK,XPCOM_TYPELIB,$@)
1314
$(QUIET)$(MKDIR) -p -- $(PATH_STAGE_BIN)/components
1315
$(QUIET)$(xpt_link_1_TARGET) $@ $^
1320
include $(KBUILD_PATH)/subfooter.kmk
1325
# Generate IDL rules.
1329
# Define for compiling one IDL into a header and a typelib
1330
# @param idl The filename with everything.
1332
$(VBOX_PATH_SDK)/bindings/xpcom/include/$(notdir $(subst .idl,.h,$(idl))) \
1333
+ $(PATH_TARGET)/VBox-xpcom-xpt-files/$(notdir $(subst .idl,.xpt,$(idl))): \
1334
$(VBOX_PATH_XPCOM_SRC)/$(idl) \
1335
| $$$$(xpidl_1_TARGET) \
1336
$(PATH_TARGET)/VBox-xpcom-xpt-files/
1337
$$(call MSG_TOOL,xpidl,XPCOM,$$<,$$@)
1338
$$(QUIET)$(MKDIR) -p $(VBOX_PATH_SDK)/bindings/xpcom/include $(VBOX_PATH_SDK)/bindings/xpcom/idl
1339
$$(QUIET)$$(xpidl_1_TARGET) -m header $(XPIDL_INCS) -e $$@ $$<
1340
$$(QUIET)$$(xpidl_1_TARGET) -m typelib $(XPIDL_INCS) -e $(addprefix $(PATH_TARGET)/VBox-xpcom-xpt-files/,$(notdir $(subst .idl,.xpt,$(idl)))) $$<
1341
$$(QUIET)$(CP) $$< $$(VBOX_PATH_SDK)/bindings/xpcom/idl
1344
$(foreach idl, $(XPCOM_IDLFILES), $(eval $(def_IDL)))
1347
$(PATH_TARGET)/VBox-xpcom-idl-timestamp: $$(addprefix $$(VBOX_PATH_SDK)/bindings/xpcom/include/,$$(notdir $$(subst .idl,.h,$$(XPCOM_IDLFILES))))
1348
$(call MSG_L1,IDL processing completed.)
1349
$(QUIET)$(MKDIR) -p $(dir $@)
1350
$(QUIET)$(APPEND) -t $@
1353
# HACK ALERT! Make sure main doesn't start using xpidl before we're done
1354
# with the idl files here. The trick here is that we're using TARGET_xpidl,
1355
# i.e. the copy residing in obj/, while VBOX_XPIDL is pointing to
1356
# xpidl_1_STAGE_TARGET which is the one in bin/.
1358
$(VBOX_XPIDL): | $(PATH_TARGET)/VBox-xpcom-idl-timestamp
1362
# Generate linker map file filtering out unwanted global symbols.
1364
$(PATH_TARGET)/xpcom-namespace-cleanup.map foo.map: $$(VBoxXPCOM_LIBS) $$(VBoxXPCOM_OBJS_)
1365
$(call MSG_L1, Creating linker map $@ for scrubbing the symbol namespace)
1366
$(QUIET)$(APPEND) -t $@ '{ local: *; global: '
1367
$(QUIET)$(VBOX_NM) -p -g $^ \
1372
-e 's/^[^ ]* [A-Z] \(.*\)$$/\1/' \
1373
-e 's/\<_Z[^ ]*$$/&;/p' \
1374
-e 's/\<VBoxNs[^ ]*$$/&;/p' \
1375
-e 's/\<_edata$$/&;/p' \
1376
-e 's/\<_end$$/&;/p' \
1377
-e 's/\<_etext$$/&;/p'\
1378
-e 's/\<_fini$$/&;/p' \
1379
-e 's/\<_init$$/&;/p' \
1381
$(QUIET)$(APPEND) $@ '};'