# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. if CONFIG['OS_ARCH'] == 'Darwin': SOURCES += [ 'xptcinvoke_darwin.cpp', 'xptcstubs_darwin.cpp', ] if CONFIG['OS_TEST'] == 'powerpc': SOURCES += [ '!xptcstubs_asm_ppc_darwin.s', 'xptcinvoke_asm_ppc_rhapsody.s', ] if '86' in CONFIG['OS_TEST'] and CONFIG['OS_TEST'] != 'x86_64': DEFINES['MOZ_NEED_LEADING_UNDERSCORE'] = True if CONFIG['OS_ARCH'] == 'GNU': if CONFIG['CPU_ARCH'] == 'x86': SOURCES += [ 'xptcinvoke_gcc_x86_unix.cpp', 'xptcstubs_gcc_x86_unix.cpp' ] if CONFIG['OS_ARCH'] in ('Linux', 'Bitrig', 'DragonFly', 'FreeBSD', 'NetBSD', 'OpenBSD') or \ CONFIG['OS_ARCH'].startswith('GNU_'): if CONFIG['OS_TEST'] == 'x86_64': SOURCES += [ 'xptcinvoke_x86_64_unix.cpp', 'xptcstubs_x86_64_linux.cpp', ] elif '86' in CONFIG['OS_TEST']: SOURCES += [ 'xptcinvoke_gcc_x86_unix.cpp', 'xptcstubs_gcc_x86_unix.cpp' ] if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD'): if 'ia64' in CONFIG['OS_TEST']: SOURCES += [ 'xptcinvoke_asm_ipf64.s', 'xptcinvoke_ipf64.cpp', 'xptcstubs_asm_ipf64.s', 'xptcstubs_ipf64.cpp' ] # Without the need to accomodate the Sun compiler, Solaris/GCC support is pretty # standard, actually. Not all that different from Linux. if CONFIG['OS_ARCH'] == 'SunOS': if CONFIG['OS_TEST'] == 'x86_64': SOURCES += [ 'xptcinvoke_asm_x86_64_unix.S', 'xptcinvoke_x86_64_solaris.cpp', 'xptcstubs_x86_64_linux.cpp' ] elif '86' in CONFIG['OS_TEST']: SOURCES += [ 'xptcinvoke_gcc_x86_unix.cpp', 'xptcstubs_gcc_x86_unix.cpp' ] if CONFIG['OS_TEST'] == 'alpha': if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD', 'NetBSD'): SOURCES += [ 'xptcinvoke_linux_alpha.cpp', 'xptcstubs_linux_alpha.cpp', ] elif CONFIG['OS_ARCH'] == 'OpenBSD': SOURCES += [ 'xptcinvoke_alpha_openbsd.cpp', 'xptcstubs_alpha_openbsd.cpp', ] if CONFIG['CPU_ARCH'] == 'arm' or CONFIG['OS_TEST'] == 'sa110': if CONFIG['OS_ARCH'] == 'Linux': SOURCES += [ 'xptcinvoke_arm.cpp', 'xptcstubs_arm.cpp' ] CXXFLAGS += ['-O2'] elif CONFIG['OS_ARCH'] == 'NetBSD': SOURCES += [ 'xptcinvoke_arm_netbsd.cpp', 'xptcstubs_arm_netbsd.cpp', ] if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['OS_ARCH'] in ('Bitrig', 'OpenBSD'): SOURCES += [ 'xptcinvoke_arm_openbsd.cpp', 'xptcstubs_arm_openbsd.cpp', ] if CONFIG['OS_ARCH'] == 'Linux': if CONFIG['OS_TEST'] in ('hppa', 'hppa2.0', 'hppa1.1'): if CONFIG['GNU_CXX']: SOURCES += [ 'xptcinvoke_asm_parisc_linux.s', 'xptcinvoke_pa32.cpp', 'xptcstubs_asm_parisc_linux.s', 'xptcstubs_pa32.cpp', ] elif CONFIG['COMPILE_ENVIRONMENT']: error('Unknown C++ compiler, xptcall assembly will probably be incorrect.') if CONFIG['OS_ARCH'] == 'NetBSD': if CONFIG['OS_TEST'] in ('amiga', 'atari', 'hp300', 'mac68k', 'mvme68k', 'next68k', 'sun3', 'sun3x', 'x68k'): SOURCES += [ 'xptcinvoke_netbsd_m68k.cpp', 'xptcstubs_netbsd_m68k.cpp' ] if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD', 'NetBSD', 'OpenBSD'): if CONFIG['OS_TEST'] == 'aarch64': SOURCES += [ 'xptcinvoke_aarch64.cpp', 'xptcinvoke_asm_aarch64.s', 'xptcstubs_aarch64.cpp', 'xptcstubs_asm_aarch64.s', ] if CONFIG['OS_TEST'] == 'm68k': SOURCES += [ 'xptcinvoke_linux_m68k.cpp', 'xptcstubs_linux_m68k.cpp', ] if 'mips' in CONFIG['OS_TEST']: if 'mips64' in CONFIG['OS_TEST']: SOURCES += [ 'xptcinvoke_asm_mips64.S', 'xptcinvoke_mips64.cpp', 'xptcstubs_asm_mips64.S', 'xptcstubs_mips64.cpp', ] else: SOURCES += [ 'xptcinvoke_asm_mips.S', 'xptcinvoke_mips.cpp', 'xptcstubs_asm_mips.S', 'xptcstubs_mips.cpp', ] if CONFIG['OS_TEST'] == 'powerpc': if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD'): SOURCES += [ 'xptcinvoke_asm_ppc_linux.S', 'xptcinvoke_ppc_linux.cpp', 'xptcstubs_asm_ppc_linux.S', 'xptcstubs_ppc_linux.cpp', ] if CONFIG['OS_TEST'] in ('powerpc64', 'powerpc64le'): if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD'): SOURCES += [ 'xptcinvoke_asm_ppc64_linux.S', 'xptcinvoke_ppc64_linux.cpp', 'xptcstubs_asm_ppc64_linux.S', 'xptcstubs_ppc64_linux.cpp', ] if CONFIG['OS_TEST'] in ('macppc', 'bebox', 'ofppc', 'prep', 'amigappc'): if CONFIG['OS_ARCH'] == 'NetBSD': SOURCES += [ 'xptcinvoke_asm_ppc_netbsd.s', 'xptcinvoke_ppc_netbsd.cpp', 'xptcstubs_asm_ppc_netbsd.s', 'xptcstubs_ppc_netbsd.cpp', ] if CONFIG['OS_ARCH'] == 'OpenBSD' and CONFIG['OS_TEST'] == 'powerpc': SOURCES += [ 'xptcinvoke_asm_ppc_openbsd.S', 'xptcinvoke_ppc_openbsd.cpp', 'xptcstubs_asm_ppc_openbsd.S', 'xptcstubs_ppc_openbsd.cpp', ] if CONFIG['OS_ARCH'] == 'Linux' and CONFIG['OS_TEST'] == 'sparc': SOURCES += [ 'xptcinvoke_asm_sparc_linux_GCC3.s', 'xptcinvoke_sparc_solaris.cpp', 'xptcstubs_asm_sparc_solaris.s', 'xptcstubs_sparc_solaris.cpp', ] if CONFIG['OS_ARCH'] == 'NetBSD' and CONFIG['OS_TEST'] == 'sparc': SOURCES += [ 'xptcinvoke_asm_sparc_netbsd.s', 'xptcinvoke_sparc_netbsd.cpp', 'xptcstubs_asm_sparc_netbsd.s', 'xptcstubs_sparc_netbsd.cpp', ] if CONFIG['OS_ARCH'] == 'OpenBSD' and CONFIG['OS_TEST'] == 'sparc': SOURCES += [ 'xptcinvoke_asm_sparc_openbsd.s', 'xptcinvoke_sparc_openbsd.cpp', 'xptcstubs_asm_sparc_openbsd.s', 'xptcstubs_sparc_openbsd.cpp', ] # Mozilla discovered at some point that Solaris and Linux can also use these # files for 64-bit SPARC with no ill effects, so basically the entire mess that # was there before is no longer needed. if CONFIG['OS_ARCH'] in ('OpenBSD', 'FreeBSD', 'SunOS', 'Linux') and CONFIG['OS_TEST'] == 'sparc64': SOURCES += [ 'xptcinvoke_asm_sparc64_openbsd.s', 'xptcinvoke_sparc64_openbsd.cpp', 'xptcstubs_asm_sparc64_openbsd.s', 'xptcstubs_sparc64_openbsd.cpp', ] # As for the 32-bit SPARC build? That would look like the Linux version with # one file changed. if CONFIG['OS_ARCH'] == 'SunOS' and CONFIG['OS_TEST'] == 'sparc': SOURCES += [ 'xptcinvoke_asm_sparc_solaris_GCC3.s', 'xptcinvoke_sparc_solaris.cpp', 'xptcstubs_asm_sparc_solaris.s', 'xptcstubs_sparc_solaris.cpp', ] if CONFIG['OS_ARCH'] == 'Linux': if CONFIG['OS_TEST'] == 's390': SOURCES += [ 'xptcinvoke_linux_s390.cpp', 'xptcstubs_linux_s390.cpp', ] CXXFLAGS += [ '-fno-strict-aliasing', '-fno-inline', '-fomit-frame-pointer', '-mbackchain', ] elif CONFIG['OS_TEST'] == 's390x': SOURCES += [ 'xptcinvoke_linux_s390x.cpp', 'xptcstubs_linux_s390x.cpp', ] CXXFLAGS += [ '-fno-strict-aliasing', '-fno-inline', '-fomit-frame-pointer', '-mbackchain', ] FINAL_LIBRARY = 'xul' LOCAL_INCLUDES += [ '../..', '/xpcom/reflect/xptinfo', ] NO_PGO = True