mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-27 10:57:34 +09:00
These functions are only ELF ABI specific, not really OS specific. Add powerpc, powerpc64 and sparc64 support for NetBSD by using the same code as other ELF systems do.
251 lines
7.8 KiB
INI
251 lines
7.8 KiB
INI
# -*- 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 CONFIG['OS_TEST'] == 'x86_64':
|
|
SOURCES += [
|
|
'xptcinvoke_asm_x86_64_unix.S',
|
|
]
|
|
if CONFIG["CPU_ARCH"] == "aarch64":
|
|
SOURCES += [
|
|
"xptcinvoke_asm_aarch64.S",
|
|
"xptcstubs_asm_aarch64.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', 'SunOS') or \
|
|
CONFIG['OS_ARCH'].startswith('GNU_'):
|
|
if CONFIG['OS_TEST'] == 'x86_64':
|
|
SOURCES += [
|
|
'xptcinvoke_asm_x86_64_unix.S',
|
|
'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'
|
|
]
|
|
|
|
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', 'NetBSD'):
|
|
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', 'NetBSD'):
|
|
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 ('NetBSD', '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
|