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() { |