summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWANG Xuerui <xen0n@gentoo.org>2022-05-25 22:32:30 +0800
committerWANG Xuerui <xen0n@gentoo.org>2022-05-26 08:55:36 +0800
commitba4514f5b434a0a974c6d5ad759f4f6bde11eaaf (patch)
treef35cf3a83c06f4db92090625a37820fd27cd4a1e /dev-lang/spidermonkey
parentdev-libs/nspr: fix build on loong (diff)
downloadgentoo-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.patch103
-rw-r--r--dev-lang/spidermonkey/spidermonkey-68.12.0-r1.ebuild1
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