diff options
author | WANG Xuerui <xen0n@gentoo.org> | 2022-05-25 22:32:30 +0800 |
---|---|---|
committer | WANG Xuerui <xen0n@gentoo.org> | 2022-05-26 08:55:36 +0800 |
commit | ba4514f5b434a0a974c6d5ad759f4f6bde11eaaf (patch) | |
tree | f35cf3a83c06f4db92090625a37820fd27cd4a1e /dev-lang/spidermonkey | |
parent | dev-libs/nspr: fix build on loong (diff) | |
download | gentoo-ba4514f5b434a0a974c6d5ad759f4f6bde11eaaf.tar.gz gentoo-ba4514f5b434a0a974c6d5ad759f4f6bde11eaaf.tar.bz2 gentoo-ba4514f5b434a0a974c6d5ad759f4f6bde11eaaf.zip |
dev-lang/spidermonkey: fix build on loong for 68.12.0-r1
Patch applied here has been running on real loong hardware since late
2021, simple and no problems so far.
See: https://github.com/gentoo/gentoo/pull/25632
Acked-by: Joonas Niilola <juippis@gentoo.org>
Signed-off-by: WANG Xuerui <xen0n@gentoo.org>
Diffstat (limited to 'dev-lang/spidermonkey')
-rw-r--r-- | dev-lang/spidermonkey/files/spidermonkey-68.0-loong-support.patch | 103 | ||||
-rw-r--r-- | dev-lang/spidermonkey/spidermonkey-68.12.0-r1.ebuild | 1 |
2 files changed, 104 insertions, 0 deletions
diff --git a/dev-lang/spidermonkey/files/spidermonkey-68.0-loong-support.patch b/dev-lang/spidermonkey/files/spidermonkey-68.0-loong-support.patch new file mode 100644 index 000000000000..f7010d5ebf32 --- /dev/null +++ b/dev-lang/spidermonkey/files/spidermonkey-68.0-loong-support.patch @@ -0,0 +1,103 @@ +https://raw.githubusercontent.com/xen0n/loongson-overlay/00901fd4c599ec320c7852cbd30b40d3f6aa8971/dev-lang/spidermonkey/files/spidermonkey-68.0-add-loongarch64-support.patch + +--- a/build/moz.configure/init.configure ++++ b/build/moz.configure/init.configure +@@ -734,6 +734,9 @@ def split_triplet(triplet, allow_unknown + elif cpu == 'sh4': + canonical_cpu = 'sh4' + endianness = 'little' ++ elif cpu == 'loongarch64': ++ canonical_cpu = 'loongarch64' ++ endianness = 'little' + elif allow_unknown: + canonical_cpu = cpu + endianness = 'unknown' +--- a/js/src/jit/AtomicOperations.h ++++ b/js/src/jit/AtomicOperations.h +@@ -382,6 +382,9 @@ inline bool AtomicOperations::isLockfree + # else + # include "jit/shared/AtomicOperations-feeling-lucky.h" + # endif ++#elif defined(__loongarch64) ++// This is only here to avoid merge conflict with spidermonkey-68.0-add-riscv-support.patch. ++# include "jit/shared/AtomicOperations-feeling-lucky.h" + #elif defined(__mips__) + # if defined(__clang__) || defined(__GNUC__) + # include "jit/mips-shared/AtomicOperations-mips-shared.h" +--- a/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h ++++ b/js/src/jit/shared/AtomicOperations-feeling-lucky-gcc.h +@@ -57,6 +57,11 @@ + # define HAS_64BIT_LOCKFREE + #endif + ++#ifdef __loongarch64 ++# define HAS_64BIT_ATOMICS ++# define HAS_64BIT_LOCKFREE ++#endif ++ + #if defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \ + defined(__PPC64LE__) + # define HAS_64BIT_ATOMICS +--- a/mfbt/tests/TestPoisonArea.cpp ++++ b/mfbt/tests/TestPoisonArea.cpp +@@ -127,6 +127,9 @@ + #elif defined __arm__ || defined _M_ARM + # define RETURN_INSTR 0xE12FFF1E /* bx lr */ + ++#elif defined __loongarch__ ++# define RETURN_INSTR 0x4c000020 /* jirl zero, ra, 0 */ ++ + // PPC has its own style of CPU-id #defines. There is no Windows for + // PPC as far as I know, so no _M_ variant. + #elif defined _ARCH_PPC || defined _ARCH_PWR || defined _ARCH_PWR2 +--- a/python/mozbuild/mozbuild/configure/constants.py ++++ b/python/mozbuild/mozbuild/configure/constants.py +@@ -46,6 +46,7 @@ CPU_bitness = { + 'arm': 32, + 'hppa': 32, + 'ia64': 64, ++ 'loongarch64': 64, + 'mips32': 32, + 'mips64': 64, + 'ppc': 32, +@@ -78,6 +79,7 @@ CPU_preprocessor_checks = OrderedDict(( + ('arm', '__arm__ || _M_ARM'), + ('aarch64', '__aarch64__ || _M_ARM64'), + ('ia64', '__ia64__'), ++ ('loongarch64', '__loongarch64'), + ('s390x', '__s390x__'), + ('s390', '__s390__'), + ('ppc64', '__powerpc64__'), +--- a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py ++++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py +@@ -1068,6 +1068,10 @@ class LinuxCrossCompileToolchainTest(Bas + 'ia64-unknown-linux-gnu': little_endian + { + '__ia64__': 1, + }, ++ 'loongarch64-unknown-linux-gnu': little_endian + { ++ '__loongarch__': 1, ++ '__loongarch64': 1, ++ }, + 's390x-unknown-linux-gnu': big_endian + { + '__s390x__': 1, + '__s390__': 1, +--- a/intl/icu/source/i18n/double-conversion-utils.h ++++ b/intl/icu/source/i18n/double-conversion-utils.h +@@ -117,6 +117,7 @@ int main(int argc, char** argv) { + #if defined(_M_X64) || defined(__x86_64__) || \ + defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \ + defined(__hppa__) || defined(__ia64__) || \ ++ defined(__loongarch__) || \ + defined(__mips__) || \ + defined(__nios2__) || defined(__ghs) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ +--- a/mfbt/double-conversion/double-conversion/utils.h ++++ b/mfbt/double-conversion/double-conversion/utils.h +@@ -117,6 +117,7 @@ int main(int argc, char** argv) { + #if defined(_M_X64) || defined(__x86_64__) || \ + defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \ + defined(__hppa__) || defined(__ia64__) || \ ++ defined(__loongarch__) || \ + defined(__mips__) || \ + defined(__nios2__) || defined(__ghs) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ diff --git a/dev-lang/spidermonkey/spidermonkey-68.12.0-r1.ebuild b/dev-lang/spidermonkey/spidermonkey-68.12.0-r1.ebuild index a836814ad075..46cc4b1b3634 100644 --- a/dev-lang/spidermonkey/spidermonkey-68.12.0-r1.ebuild +++ b/dev-lang/spidermonkey/spidermonkey-68.12.0-r1.ebuild @@ -101,6 +101,7 @@ src_prepare() { eapply "${WORKDIR}"/firefox eapply "${WORKDIR}"/spidermonkey-patches eapply "${FILESDIR}"/spidermonkey-68.0-add-riscv-support.patch + eapply "${FILESDIR}"/spidermonkey-68.0-loong-support.patch default |