2
# This Source Code Form is subject to the terms of the Mozilla Public
3
# License, v. 2.0. If a copy of the MPL was not distributed with this
4
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
topsrcdir = @top_srcdir@
10
NO_PROFILE_GUIDED_OPTIMIZE = 1
12
include $(DEPTH)/config/autoconf.mk
16
EXPORT_LIBRARY = ../..
17
MOZILLA_INTERNAL_API = 1
20
# The default is this buildable, but non-functioning code.
22
CPPSRCS = $(error XPTCall not implemented on this platform!)
25
ifeq ($(OS_ARCH),SunOS)
26
ifneq (86,$(findstring 86,$(OS_TEST)))
27
# disable PGO for this directory with Sun Studio on SPARC because
28
# compiling with xprofile=collect will insert code into nsXPTCStubBase::Stub##n
29
NO_PROFILE_GUIDED_OPTIMIZE = 1
33
include $(topsrcdir)/config/config.mk
35
######################################################################
37
######################################################################
39
# Lots of Unixish x86 flavors
42
ifeq (Darwin,$(OS_ARCH))
43
ifeq (86,$(findstring 86,$(OS_TEST)))
44
ifeq (x86_64,$(OS_TEST))
45
CPPSRCS := xptcinvoke_x86_64_unix.cpp xptcstubs_x86_64_darwin.cpp
47
DEFINES += -DMOZ_NEED_LEADING_UNDERSCORE
48
CPPSRCS := xptcinvoke_gcc_x86_unix.cpp xptcstubs_gcc_x86_unix.cpp
53
ifneq (,$(filter NetBSD OpenBSD BSD_OS GNU,$(OS_ARCH)))
54
ifeq (86,$(findstring 86,$(OS_TEST)))
55
CPPSRCS := xptcinvoke_gcc_x86_unix.cpp xptcstubs_gcc_x86_unix.cpp
59
# New code for Linux, et. al., with gcc
60
# Migrate other platforms here after testing
62
ifneq (,$(filter Linux FreeBSD GNU_%,$(OS_ARCH)))
64
ifeq (x86_64,$(OS_TEST))
65
CPPSRCS := xptcinvoke_x86_64_unix.cpp xptcstubs_x86_64_linux.cpp
67
ifeq (86,$(findstring 86,$(OS_TEST)))
68
CPPSRCS := xptcinvoke_gcc_x86_unix.cpp xptcstubs_gcc_x86_unix.cpp
73
ifneq (,$(filter Linux FreeBSD,$(OS_ARCH)))
74
ifneq (,$(findstring ia64,$(OS_TEST)))
75
CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp
76
ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s
82
ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDx86_64)
83
CPPSRCS := xptcinvoke_amd64_openbsd.cpp xptcstubs_amd64_openbsd.cpp
86
# Neutrino/Intel (uses the same unixish_x86 code)
88
ifeq ($(OS_TARGET),NTO)
90
CPPSRCS := xptcinvoke_gcc_x86_unix.cpp xptcstubs_gcc_x86_unix.cpp
93
CPPSRCS := xptcinvoke_nto_arm.cpp xptcstubs_nto_arm.cpp
96
CPPSRCS := xptcinvoke_nto_shle.cpp xptcstubs_nto_shle.cpp
97
ASFILES := xptcstubs_asm_shle.s
102
######################################################################
104
######################################################################
108
ifeq ($(OS_ARCH),SunOS)
109
ifeq (x86_64,$(OS_TEST))
111
CPPSRCS := xptcstubs_x86_64_solaris.cpp xptcinvoke_x86_64_solaris.cpp
112
ASFILES := xptcstubs_asm_x86_64_solaris_SUNW.s
114
CPPSRCS := xptcstubs_x86_64_linux.cpp xptcinvoke_x86_64_unix.cpp
117
ifeq (86,$(findstring 86,$(OS_TEST)))
118
# 28817: if Solaris Intel OS, and native compiler, always build optimised.
120
CPPSRCS := xptcinvoke_x86_solaris.cpp xptcstubs_x86_solaris.cpp
121
ASFILES := xptcinvoke_asm_x86_solaris_SUNW.s xptcstubs_asm_x86_solaris_SUNW.s
123
CPPSRCS := xptcinvoke_gcc_x86_unix.cpp xptcstubs_gcc_x86_unix.cpp
129
######################################################################
131
######################################################################
135
ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
136
CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
141
ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDalpha)
142
CPPSRCS := xptcinvoke_alpha_openbsd.cpp xptcstubs_alpha_openbsd.cpp
145
######################################################################
147
######################################################################
151
ifeq ($(OS_ARCH),Linux)
152
ifneq (,$(filter arm% sa110,$(OS_TEST)))
153
CPPSRCS := xptcinvoke_arm.cpp xptcstubs_arm.cpp
160
ifeq ($(OS_ARCH),NetBSD)
161
ifneq (,$(filter arm% sa110,$(OS_TEST)))
162
CPPSRCS := xptcinvoke_arm_netbsd.cpp xptcstubs_arm_netbsd.cpp
168
ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDarm)
169
CPPSRCS := xptcinvoke_arm_openbsd.cpp xptcstubs_arm_openbsd.cpp
172
######################################################################
174
######################################################################
178
# for gas and gcc, check comment in xptcinvoke_asm_pa32.s
179
ifeq ($(OS_ARCH),HP-UX)
181
ifneq ($(OS_TEST),ia64)
182
CPPSRCS := xptcinvoke_pa32.cpp xptcstubs_pa32.cpp
183
ASFILES := xptcstubs_asm_pa32.s xptcinvoke_asm_pa32.s
185
CPPSRCS := xptcinvoke_ipf32.cpp xptcstubs_ipf32.cpp
186
ASFILES := xptcstubs_asm_ipf32.s xptcinvoke_asm_ipf32.s
189
# #18875 Building the CPP's (CXX) optimized causes a crash
190
CXXFLAGS := $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(CXXFLAGS))
197
ifeq ($(OS_ARCH),Linux)
198
ifneq (,$(filter hppa hppa2.0 hppa1.1,$(OS_TEST)))
200
$(error Unknown C++ compiler, xptcall assembly will probably be incorrect.)
202
CPPSRCS := xptcinvoke_pa32.cpp xptcstubs_pa32.cpp
203
ASFILES := xptcstubs_asm_parisc_linux.s xptcinvoke_asm_parisc_linux.s
204
# #434190 optimized builds crash
205
CXXFLAGS := $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(CXXFLAGS))
211
######################################################################
213
######################################################################
217
ifeq ($(OS_ARCH),NetBSD)
218
ifneq (,$(filter amiga atari hp300 mac68k mvme68k next68k sun3 sun3x x68k,$(OS_TEST)))
219
CPPSRCS := xptcinvoke_netbsd_m68k.cpp xptcstubs_netbsd_m68k.cpp
226
ifeq ($(OS_ARCH),Linux)
227
ifeq ($(OS_TEST),m68k)
228
CPPSRCS := xptcinvoke_linux_m68k.cpp xptcstubs_linux_m68k.cpp
232
ifeq ($(OS_ARCH),Linux)
233
ifneq (,$(findstring mips, $(OS_TEST)))
234
ifneq (,$(findstring mips64, $(OS_TEST)))
235
CPPSRCS := xptcinvoke_mips64.cpp xptcstubs_mips64.cpp
236
ASFILES := xptcinvoke_asm_mips64.s xptcstubs_asm_mips64.s
238
CPPSRCS := xptcinvoke_mips.cpp xptcstubs_mips.cpp
239
ASFILES := xptcinvoke_asm_mips.s xptcstubs_asm_mips.s
241
ASFLAGS += -I$(DIST)/include -x assembler-with-cpp
245
######################################################################
247
######################################################################
251
ifeq ($(OS_ARCH),AIX)
253
CPPSRCS := xptcinvoke_ppc_aix64.cpp xptcstubs_ppc_aix64.cpp
254
ASFILES := xptcinvoke_asm_ppc_aix64.s xptcstubs_asm_ppc_aix64.s
256
ifeq ($(AIX_OBJMODEL),ibm)
257
CPPSRCS := xptcinvoke_ppc_aix.cpp xptcstubs_ppc_aix.cpp
258
ASFILES := xptcinvoke_asm_ppc_ibmobj_aix.s xptcstubs_asm_ppc_aix.s
260
CPPSRCS := xptcinvoke_ppc_aix.cpp xptcstubs_ppc_aix.cpp
261
ASFILES := xptcinvoke_asm_ppc_aix.s xptcstubs_asm_ppc_aix.s
265
# #24617 Building the CPP's (CXX) optimized causes a crash
266
CXXFLAGS := $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(CXXFLAGS))
272
ifneq (,$(filter Linuxpowerpc FreeBSDpowerpc,$(OS_ARCH)$(OS_TEST)))
273
CPPSRCS := xptcinvoke_ppc_linux.cpp xptcstubs_ppc_linux.cpp
274
ASFILES := xptcinvoke_asm_ppc_linux.s xptcstubs_asm_ppc_linux.s
275
AS := $(CC) -c -x assembler-with-cpp
281
ifneq (,$(filter Linuxpowerpc64 FreeBSDpowerpc64,$(OS_ARCH)$(OS_TEST)))
282
CPPSRCS := xptcinvoke_ppc64_linux.cpp xptcstubs_ppc64_linux.cpp
283
ASFILES := xptcinvoke_asm_ppc64_linux.s xptcstubs_asm_ppc64_linux.s
284
AS := $(CC) -c -x assembler-with-cpp
290
ifneq (,$(filter NetBSDmacppc NetBSDbebox NetBSDofppc NetBSDprep NetBSDamigappc,$(OS_ARCH)$(OS_TEST)))
291
CPPSRCS := xptcinvoke_ppc_netbsd.cpp xptcstubs_ppc_netbsd.cpp
292
ASFILES := xptcinvoke_asm_ppc_netbsd.s xptcstubs_asm_ppc_netbsd.s
298
ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDpowerpc)
299
CPPSRCS := xptcinvoke_ppc_openbsd.cpp xptcstubs_ppc_openbsd.cpp
300
ASFILES := xptcinvoke_asm_ppc_openbsd.s xptcstubs_asm_ppc_openbsd.s
301
AS := $(CC) -c -x assembler-with-cpp
307
ifeq ($(OS_ARCH),Darwin)
308
ifeq ($(TARGET_CPU), powerpc)
309
ASFLAGS += -x assembler-with-cpp # assumes $(AS) == $(CC)
310
CPPSRCS := xptcinvoke_ppc_rhapsody.cpp xptcstubs_ppc_rhapsody.cpp
311
ASFILES := xptcinvoke_asm_ppc_rhapsody.s xptcstubs_asm_ppc_darwin.s
315
######################################################################
317
######################################################################
321
ifeq ($(OS_ARCH),BSD_OS)
322
ifneq (,$(findstring sparc,$(OS_TEST)))
323
CPPSRCS := xptcinvoke_sparc_solaris.cpp xptcstubs_sparc_solaris.cpp
324
ASFILES := xptcinvoke_asm_sparc_bsdos.s xptcstubs_asm_sparc_solaris.s
330
ifeq ($(OS_ARCH),Linux)
331
ifneq (,$(findstring sparc,$(OS_TEST)))
332
CPPSRCS := xptcinvoke_sparc_solaris.cpp xptcstubs_sparc_solaris.cpp
333
ASFILES := xptcinvoke_asm_sparc_linux_GCC3.s xptcstubs_asm_sparc_solaris.s
339
ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
340
CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp
341
ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
346
ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDsparc)
347
CPPSRCS := xptcinvoke_sparc_openbsd.cpp xptcstubs_sparc_openbsd.cpp
348
ASFILES := xptcinvoke_asm_sparc_openbsd.s xptcstubs_asm_sparc_openbsd.s
353
ifneq (,$(filter OpenBSDsparc64 FreeBSDsparc64,$(OS_ARCH)$(OS_TEST)))
354
CPPSRCS := xptcinvoke_sparc64_openbsd.cpp xptcstubs_sparc64_openbsd.cpp
355
ASFILES := xptcinvoke_asm_sparc64_openbsd.s xptcstubs_asm_sparc64_openbsd.s
360
ifeq ($(OS_ARCH),SunOS)
361
ifneq (86,$(findstring 86,$(OS_TEST)))
364
CPPSRCS := xptcinvoke_sparcv9_solaris.cpp xptcstubs_sparcv9_solaris.cpp
366
CPPSRCS := xptcinvoke_sparc_solaris.cpp xptcstubs_sparc_solaris.cpp
370
ASFILES := xptcinvoke_asm_sparc_solaris_GCC3.s xptcstubs_asm_sparc_solaris.s
374
ASFILES := xptcinvoke_asm_sparcv9_solaris_SUNW.s xptcstubs_asm_sparcv9_solaris.s
376
ASFILES := xptcinvoke_asm_sparc_solaris_SUNW.s xptcstubs_asm_sparc_solaris.s
383
######################################################################
385
######################################################################
389
ifeq ($(OS_ARCH)$(OS_TEST),Linuxs390)
390
CPPSRCS := xptcinvoke_linux_s390.cpp xptcstubs_linux_s390.cpp
391
CXXFLAGS += -fno-strict-aliasing -fno-inline -fomit-frame-pointer -mbackchain
394
ifeq ($(OS_ARCH)$(OS_TEST),Linuxs390x)
395
CPPSRCS := xptcinvoke_linux_s390x.cpp xptcstubs_linux_s390x.cpp
396
CXXFLAGS += -fno-strict-aliasing -fno-inline -fomit-frame-pointer -mbackchain
400
# we don't want the shared lib, but we want to force the creation of a static lib.
403
include $(topsrcdir)/config/rules.mk
405
DEFINES += -DEXPORT_XPTC_API -D_IMPL_NS_COM
409
-I$(srcdir)/../../../../xptinfo/src \
412
ifeq ($(OS_ARCH),Linux)
413
ifneq (,$(findstring mips, $(OS_TEST)))
414
xptcstubs_asm_mips.o: $(DIST)/include/xptcstubsdef.inc
418
ifeq ($(OS_ARCH),Darwin)
419
xptcstubs_asm_ppc_darwin.o: xptcstubs_asm_ppc_darwin.s.m4 $(DIST)/include/xptcstubsdef.inc Makefile
420
gm4 $(INCLUDES) $< > ./xptcstubs_asm_ppc_darwin.s && \
421
$(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) ./xptcstubs_asm_ppc_darwin.s
422
$(RM) -f ./xptcstubs_asm_ppc_darwin.s
425
ifeq ($(OS_ARCH),AIX)
427
xptcstubs_asm_ppc_aix64.o: xptcstubs_asm_ppc_aix64.s.m4 $(DIST)/include/xptcstubsdef.inc Makefile
428
m4 -DAIX_OBJMODEL=$(AIX_OBJMODEL) $(INCLUDES) -I. $< > ./xptcstubs_asm_ppc_aix64.s && \
429
$(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) ./xptcstubs_asm_ppc_aix64.s
430
$(RM) ./xptcstubs_asm_ppc_aix64.s
432
xptcstubs_asm_ppc_aix.o: xptcstubs_asm_ppc_aix.s.m4 $(DIST)/include/xptcstubsdef.inc Makefile
433
m4 -DAIX_OBJMODEL=$(AIX_OBJMODEL) $(INCLUDES) -I. $< > ./xptcstubs_asm_ppc_aix.s && \
434
$(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) ./xptcstubs_asm_ppc_aix.s
435
$(RM) ./xptcstubs_asm_ppc_aix.s
439
ifeq ($(OS_ARCH),SunOS)
440
ifeq (86,$(findstring 86,$(OS_TEST)))
442
ifeq (x86_64,$(OS_TEST))
443
xptcstubs_asm_x86_64_solaris_SUNW.o: $(DIST)/include/xptcstubsdef.inc $(srcdir)/xptcstubs_asm_x86_64_solaris_SUNW.s
445
-e 's/^\(STUB_ENTRY\)(\([0-9]\))/\11\(\2\)/' \
446
-e 's/^\(STUB_ENTRY\)(\([0-9][0-9]\))/\12\(\2\)/' \
447
-e 's/^\(STUB_ENTRY\)(\([0-9][0-9][0-9]\))/\13\(\2\)/' \
448
$(DIST)/include/xptcstubsdef.inc > ./xptcstubsdef_asm.solx86
449
$(AS) -o $@ -xarch=amd64 $(ASFLAGS) $(AS_DASH_C_FLAG) -I./ $(srcdir)/xptcstubs_asm_x86_64_solaris_SUNW.s
451
xptcstubs_asm_x86_solaris_SUNW.o: $(DIST)/include/xptcstubsdef.inc $(srcdir)/xptcstubs_asm_x86_solaris_SUNW.s
453
-e 's/^\(STUB_ENTRY\)(\([0-9]\))/\11\(\2\)/' \
454
-e 's/^\(STUB_ENTRY\)(\([0-9][0-9]\))/\12\(\2\)/' \
455
-e 's/^\(STUB_ENTRY\)(\([0-9][0-9][0-9]\))/\13\(\2\)/' \
456
$(DIST)/include/xptcstubsdef.inc > ./xptcstubsdef_asm.solx86
457
$(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) -I./ $(srcdir)/xptcstubs_asm_x86_solaris_SUNW.s
459
@rm -f ./xptcstubsdef_asm.solx86