Gentoo Archives: gentoo-commits

From: WANG Xuerui <xen0n@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/nspr/, dev-libs/nspr/files/
Date: Thu, 26 May 2022 00:58:52
Message-Id: 1653526512.03b18997ede10a7dcb57b75af04448310d0772c2.xen0n@gentoo
1 commit: 03b18997ede10a7dcb57b75af04448310d0772c2
2 Author: WANG Xuerui <xen0n <AT> gentoo <DOT> org>
3 AuthorDate: Wed May 25 14:07:54 2022 +0000
4 Commit: WANG Xuerui <xen0n <AT> gentoo <DOT> org>
5 CommitDate: Thu May 26 00:55:12 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=03b18997
7
8 dev-libs/nspr: fix build on loong
9
10 Patch applied here has been running on real loong hardware since late
11 2021, simple and no problems so far.
12
13 See: https://github.com/gentoo/gentoo/pull/25632
14 Acked-by: Joonas Niilola <juippis <AT> gentoo.org>
15 Signed-off-by: WANG Xuerui <xen0n <AT> gentoo.org>
16
17 dev-libs/nspr/files/nspr-4.33-loong.patch | 100 ++++++++++++++++++++++++++++++
18 dev-libs/nspr/nspr-4.33.ebuild | 1 +
19 2 files changed, 101 insertions(+)
20
21 diff --git a/dev-libs/nspr/files/nspr-4.33-loong.patch b/dev-libs/nspr/files/nspr-4.33-loong.patch
22 new file mode 100644
23 index 000000000000..96772a2767c0
24 --- /dev/null
25 +++ b/dev-libs/nspr/files/nspr-4.33-loong.patch
26 @@ -0,0 +1,100 @@
27 +https://phabricator.services.mozilla.com/D142407
28 +
29 +--- a/pr/include/md/_linux.h
30 ++++ b/pr/include/md/_linux.h
31 +@@ -71,10 +71,12 @@
32 + #define _PR_SI_ARCHITECTURE "microblaze"
33 + #elif defined(__nds32__)
34 + #define _PR_SI_ARCHITECTURE "nds32"
35 + #elif defined(__xtensa__)
36 + #define _PR_SI_ARCHITECTURE "xtensa"
37 ++#elif defined(__loongarch64)
38 ++#define _PR_SI_ARCHITECTURE "loongarch64"
39 + #else
40 + #error "Unknown CPU architecture"
41 + #endif
42 + #define PR_DLL_SUFFIX ".so"
43 +
44 +@@ -139,10 +141,22 @@
45 + #define _MD_ATOMIC_ADD _PR_x86_64_AtomicAdd
46 + extern PRInt32 _PR_x86_64_AtomicSet(PRInt32 *val, PRInt32 newval);
47 + #define _MD_ATOMIC_SET _PR_x86_64_AtomicSet
48 + #endif
49 +
50 ++#if defined(__loongarch__)
51 ++#if defined(__GNUC__)
52 ++/* Use GCC built-in functions */
53 ++#define _PR_HAVE_ATOMIC_OPS
54 ++#define _MD_INIT_ATOMIC()
55 ++#define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1)
56 ++#define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1)
57 ++#define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i)
58 ++#define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv)
59 ++#endif
60 ++#endif
61 ++
62 + #if defined(__or1k__)
63 + #if defined(__GNUC__)
64 + /* Use GCC built-in functions */
65 + #define _PR_HAVE_ATOMIC_OPS
66 + #define _MD_INIT_ATOMIC()
67 +--- a/pr/include/md/_linux.cfg
68 ++++ b/pr/include/md/_linux.cfg
69 +@@ -1253,10 +1253,56 @@
70 + #define PR_ALIGN_OF_WORD 8
71 +
72 + #define PR_BYTES_PER_WORD_LOG2 3
73 + #define PR_BYTES_PER_DWORD_LOG2 3
74 +
75 ++#elif defined(__loongarch64)
76 ++
77 ++#undef IS_BIG_ENDIAN
78 ++#define IS_LITTLE_ENDIAN 1
79 ++#define IS_64
80 ++
81 ++#define PR_BYTES_PER_BYTE 1
82 ++#define PR_BYTES_PER_SHORT 2
83 ++#define PR_BYTES_PER_INT 4
84 ++#define PR_BYTES_PER_INT64 8
85 ++#define PR_BYTES_PER_LONG 8
86 ++#define PR_BYTES_PER_FLOAT 4
87 ++#define PR_BYTES_PER_DOUBLE 8
88 ++#define PR_BYTES_PER_WORD 8
89 ++#define PR_BYTES_PER_DWORD 8
90 ++
91 ++#define PR_BITS_PER_BYTE 8
92 ++#define PR_BITS_PER_SHORT 16
93 ++#define PR_BITS_PER_INT 32
94 ++#define PR_BITS_PER_INT64 64
95 ++#define PR_BITS_PER_LONG 64
96 ++#define PR_BITS_PER_FLOAT 32
97 ++#define PR_BITS_PER_DOUBLE 64
98 ++#define PR_BITS_PER_WORD 64
99 ++
100 ++#define PR_BITS_PER_BYTE_LOG2 3
101 ++#define PR_BITS_PER_SHORT_LOG2 4
102 ++#define PR_BITS_PER_INT_LOG2 5
103 ++#define PR_BITS_PER_INT64_LOG2 6
104 ++#define PR_BITS_PER_LONG_LOG2 6
105 ++#define PR_BITS_PER_FLOAT_LOG2 5
106 ++#define PR_BITS_PER_DOUBLE_LOG2 6
107 ++#define PR_BITS_PER_WORD_LOG2 6
108 ++
109 ++#define PR_ALIGN_OF_SHORT 2
110 ++#define PR_ALIGN_OF_INT 4
111 ++#define PR_ALIGN_OF_LONG 8
112 ++#define PR_ALIGN_OF_INT64 8
113 ++#define PR_ALIGN_OF_FLOAT 4
114 ++#define PR_ALIGN_OF_DOUBLE 8
115 ++#define PR_ALIGN_OF_POINTER 8
116 ++#define PR_ALIGN_OF_WORD 8
117 ++
118 ++#define PR_BYTES_PER_WORD_LOG2 3
119 ++#define PR_BYTES_PER_DWORD_LOG2 3
120 ++
121 + #else
122 +
123 + #error "Unknown CPU architecture"
124 +
125 + #endif
126 +
127
128 diff --git a/dev-libs/nspr/nspr-4.33.ebuild b/dev-libs/nspr/nspr-4.33.ebuild
129 index 7be0ae41e449..679f81b80400 100644
130 --- a/dev-libs/nspr/nspr-4.33.ebuild
131 +++ b/dev-libs/nspr/nspr-4.33.ebuild
132 @@ -28,6 +28,7 @@ PATCHES=(
133 "${FILESDIR}"/${PN}-4.8.9-link-flags.patch
134 # We do not need to pass -L$libdir via nspr-config --libs
135 "${FILESDIR}"/${PN}-4.9.5_nspr_config.patch
136 + "${FILESDIR}"/${PN}-4.33-loong.patch
137 )
138
139 src_prepare() {