2
2
3
3
set -eu
4
4
5
- declare -r current_source_directory =" ${PWD} "
5
+ declare -r workdir =" ${PWD} "
6
6
7
7
declare -r revision=" $( git rev-parse --short HEAD) "
8
8
9
9
declare -r toolchain_directory=' /tmp/raiden'
10
10
11
11
declare -r gmp_tarball=' /tmp/gmp.tar.xz'
12
- declare -r gmp_directory=' /tmp/gmp-6.2.1 '
12
+ declare -r gmp_directory=' /tmp/gmp-6.3.0 '
13
13
14
14
declare -r mpfr_tarball=' /tmp/mpfr.tar.xz'
15
- declare -r mpfr_directory=' /tmp/mpfr-4.2.0 '
15
+ declare -r mpfr_directory=' /tmp/mpfr-4.2.1 '
16
16
17
17
declare -r mpc_tarball=' /tmp/mpc.tar.gz'
18
18
declare -r mpc_directory=' /tmp/mpc-1.3.1'
19
19
20
20
declare -r binutils_tarball=' /tmp/binutils.tar.xz'
21
- declare -r binutils_directory=' /tmp/binutils-2.40 '
21
+ declare -r binutils_directory=' /tmp/binutils-2.42 '
22
22
23
- declare -r gcc_tarball=' /tmp/gcc.tar.gz'
24
- declare -r gcc_directory=' /tmp/gcc-13.2.0'
23
+ declare gcc_directory=' '
24
+
25
+ declare -r sysroot_tarball=' /tmp/sysroot.tar.xz'
26
+
27
+ function setup_gcc_source() {
28
+
29
+ local gcc_version=' '
30
+ local gcc_url=' '
31
+ local gcc_tarball=' '
32
+ local tgt=" ${1} "
33
+
34
+ declare -r tgt
35
+
36
+ gcc_version=' 14'
37
+ gcc_directory=' /tmp/gcc-14.1.0'
38
+ gcc_url=' https://ftp.gnu.org/gnu/gcc/gcc-14.1.0/gcc-14.1.0.tar.xz'
39
+
40
+ gcc_tarball=" /tmp/gcc-${gcc_version} .tar.xz"
41
+
42
+ declare -r gcc_version
43
+ declare -r gcc_url
44
+ declare -r gcc_tarball
45
+
46
+ if ! [ -f " ${gcc_tarball} " ]; then
47
+ wget --no-verbose " ${gcc_url} " --output-document=" ${gcc_tarball} "
48
+ tar --directory=" $( dirname " ${gcc_directory} " ) " --extract --file=" ${gcc_tarball} "
49
+ fi
50
+
51
+ [ -d " ${gcc_directory} /build" ] || mkdir " ${gcc_directory} /build"
52
+
53
+ sed --in-place ' s/LDBL_MANT_DIG == 113/defined(__powerpc__) || defined(__powerpc64__) || defined(__s390x__)/g' " ${gcc_directory} /libgcc/dfp-bit.h"
54
+ sed --in-place ' s/soft-fp.h/this-does-not-exist.h/g' " ${gcc_directory} /libquadmath/math/sqrtq.c"
55
+
56
+ }
25
57
26
58
declare -r optflags=' -Os'
27
59
declare -r linkflags=' -Wl,-s'
28
60
29
- declare -r max_jobs=" $(( $(nproc) * 8 )) "
61
+ declare -r max_jobs=" $(( $(nproc) * 17 )) "
30
62
31
63
declare build_type=" ${1} "
32
64
@@ -51,32 +83,27 @@ if ! (( is_native )); then
51
83
fi
52
84
53
85
if ! [ -f " ${gmp_tarball} " ]; then
54
- curl --connect-timeout ' 10 ' --retry ' 15 ' --retry-all-errors --fail --silent --url ' https://mirrors.kernel .org/gnu/gmp/gmp-6.2.1 .tar.xz' --output " ${gmp_tarball} "
86
+ wget --no-verbose ' https://ftp.gnu .org/gnu/gmp/gmp-6.3.0 .tar.xz' --output-document= " ${gmp_tarball} "
55
87
tar --directory=" $( dirname " ${gmp_directory} " ) " --extract --file=" ${gmp_tarball} "
56
88
fi
57
89
58
90
if ! [ -f " ${mpfr_tarball} " ]; then
59
- curl --connect-timeout ' 10 ' --retry ' 15 ' --retry-all-errors --fail --silent --url ' https://mirrors.kernel .org/gnu/mpfr/mpfr-4.2.0 .tar.xz' --output " ${mpfr_tarball} "
91
+ wget --no-verbose ' https://ftp.gnu .org/gnu/mpfr/mpfr-4.2.1 .tar.xz' --output-document= " ${mpfr_tarball} "
60
92
tar --directory=" $( dirname " ${mpfr_directory} " ) " --extract --file=" ${mpfr_tarball} "
61
93
fi
62
94
63
95
if ! [ -f " ${mpc_tarball} " ]; then
64
- curl --connect-timeout ' 10 ' --retry ' 15 ' --retry-all-errors --fail --silent --url ' https://mirrors.kernel .org/gnu/mpc/mpc-1.3.1.tar.gz' --output " ${mpc_tarball} "
96
+ wget --no-verbose ' https://ftp.gnu .org/gnu/mpc/mpc-1.3.1.tar.gz' --output-document= " ${mpc_tarball} "
65
97
tar --directory=" $( dirname " ${mpc_directory} " ) " --extract --file=" ${mpc_tarball} "
66
98
fi
67
99
68
100
if ! [ -f " ${binutils_tarball} " ]; then
69
- curl --connect-timeout ' 10 ' --retry ' 15 ' --retry-all-errors --fail --silent --url ' https://mirrors.kernel .org/gnu/binutils/binutils-2.40 .tar.xz' --output " ${binutils_tarball} "
101
+ wget --no-verbose ' https://ftp.gnu .org/gnu/binutils/binutils-2.42 .tar.xz' --output-document= " ${binutils_tarball} "
70
102
tar --directory=" $( dirname " ${binutils_directory} " ) " --extract --file=" ${binutils_tarball} "
103
+
104
+ patch --directory=" ${binutils_directory} " --strip=' 1' --input=" ${workdir} /patches/0001-Revert-gold-Use-char16_t-char32_t-instead-of-uint16_.patch"
71
105
fi
72
106
73
- if ! [ -f " ${gcc_tarball} " ]; then
74
- curl --connect-timeout ' 10' --retry ' 15' --retry-all-errors --fail --silent --url ' https://mirrors.kernel.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz' --output " ${gcc_tarball} "
75
- tar --directory=" $( dirname " ${gcc_directory} " ) " --extract --file=" ${gcc_tarball} "
76
- fi
77
-
78
- sed --in-place ' s/LDBL_MANT_DIG == 106/defined(__powerpc64__)/g' " ${gcc_directory} /libgcc/dfp-bit.h"
79
-
80
107
[ -d " ${gmp_directory} /build" ] || mkdir " ${gmp_directory} /build"
81
108
82
109
cd " ${gmp_directory} /build"
@@ -120,84 +147,46 @@ cd "${mpc_directory}/build"
120
147
--enable-shared \
121
148
--enable-static \
122
149
${cross_compile_flags} \
123
- CFLAGS=" ${optflags} " \
150
+ CFLAGS=" ${optflags} -fpermissive " \
124
151
CXXFLAGS=" ${optflags} " \
125
152
LDFLAGS=" ${linkflags} "
126
153
127
154
make all --jobs
128
155
make install
129
156
130
157
declare -ra targets=(
158
+ # 'powerpc-unknown-linux-musl'
159
+ ' s390x-unknown-linux-musl'
160
+ ' powerpc64le-unknown-linux-musl'
161
+ # 'mips-unknown-linux-musl'
162
+ # 'mipsel-unknown-linux-musl'
131
163
' mips64-unknown-linux-musl'
132
164
' armv7l-unknown-linux-musleabihf'
133
- ' powerpc64le-unknown-linux-musl'
134
165
' x86_64-unknown-linux-musl'
135
166
' aarch64-unknown-linux-musl'
136
167
' arm-unknown-linux-musleabihf'
137
168
' riscv64-unknown-linux-musl'
138
- ' s390x-unknown-linux-musl'
139
169
' i386-unknown-linux-musl'
140
170
)
141
171
142
172
for target in " ${targets[@]} " ; do
143
- source " ${current_source_directory } /${target} .sh"
173
+ source " ${workdir } /${target} .sh"
144
174
145
175
cd " $( mktemp --directory) "
146
176
147
- if [ " ${os} " == ' void ' ] ; then
148
- declare sysroot_filename= " ./ sysroot.tar.xz"
149
- else
150
- declare sysroot_filename= " ./sysroot.tar.gz "
151
- fi
152
-
153
- curl --connect-timeout ' 10 ' --retry ' 15 ' --retry-all-errors --fail --silent -- location --output " ${sysroot_filename} " --url " ${sysroot} "
154
-
155
- tar --extract --file= " ${sysroot_filename} " || true
177
+ curl \
178
+ --url " https://github.com/AmanoTeam/musl- sysroot/releases/latest/download/ ${triplet} .tar.xz" \
179
+ --retry ' 30 ' \
180
+ --retry-all-errors \
181
+ --retry-delay ' 0 ' \
182
+ --retry-max-time ' 0 ' \
183
+ -- location \
184
+ --continue-at ' - ' \
185
+ --output " ${sysroot_tarball} "
156
186
157
- if [ " ${os} " == ' void' ]; then
158
- declare package_filename=" ./package.tar.xst"
159
- else
160
- declare package_filename=" ./package.tar.gz"
161
- fi
162
-
163
- for package in " ${packages[@]} " ; do
164
- curl --connect-timeout ' 10' --retry ' 15' --retry-all-errors --fail --silent --location --output " ${package_filename} " --url " ${package} "
165
- tar --extract --file=" ${package_filename} "
166
- done
187
+ tar --directory=" ${toolchain_directory} " --extract --file=" ${sysroot_tarball} "
167
188
168
- [ -d " ${toolchain_directory} /${triplet} " ] || mkdir --parent " ${toolchain_directory} /${triplet} "
169
-
170
- cp --recursive ' ./usr/include' " ${toolchain_directory} /${triplet} "
171
- cp --recursive ' ./usr/lib' " ${toolchain_directory} /${triplet} "
172
-
173
- if [ -d ' ./lib' ]; then
174
- cp --remove-destination --recursive ' ./lib/' * " ${toolchain_directory} /${triplet} /lib"
175
- fi
176
-
177
- pushd " ${toolchain_directory} /${triplet} /lib"
178
-
179
- if [ " ${os} " == ' alpine' ]; then
180
- find . -xtype l | xargs ls -l | grep ' /lib/' | awk ' {print "unlink "$9" && ln -s $(basename "$11") $(basename "$9")"}' | bash
181
-
182
- unlink ' ./libc.so'
183
- mv " ${ld} " ' ./libc.so'
184
-
185
- patchelf --set-soname ' libc.so' ' ./libc.so'
186
- fi
187
-
188
- if [ -L " ${ld} " ]; then
189
- unlink " ${ld} "
190
- fi
191
-
192
- ln --symbolic ' ./libc.so' " ${ld} "
193
-
194
- while read filename; do
195
- if [[ " ${filename} " =~ ^lib(pthread| resolv| rt| c| m| util| xnet)\. (so| a)$ || " ${filename} " =~ ^.* \. o$ || " ${filename} " =~ ^ld\- .* \. so.* $ ]]; then
196
- continue
197
- fi
198
-
199
- rm --recursive " ${filename} "
200
- done <<< " $(ls)"
189
+ unlink " ${sysroot_tarball} "
201
190
202
191
[ -d " ${binutils_directory} /build" ] || mkdir " ${binutils_directory} /build"
203
192
@@ -218,9 +207,11 @@ for target in "${targets[@]}"; do
218
207
CXXFLAGS=" ${optflags} " \
219
208
LDFLAGS=" ${linkflags} "
220
209
221
- make all --jobs= " ${max_jobs} "
210
+ make all --jobs
222
211
make install
223
212
213
+ setup_gcc_source " ${triplet} "
214
+
224
215
[ -d " ${gcc_directory} /build" ] || mkdir " ${gcc_directory} /build"
225
216
226
217
cd " ${gcc_directory} /build"
@@ -235,7 +226,7 @@ for target in "${targets[@]}"; do
235
226
--with-mpc=" ${toolchain_directory} " \
236
227
--with-mpfr=" ${toolchain_directory} " \
237
228
--with-bugurl=' https://github.com/AmanoTeam/Raiden/issues' \
238
- --with-pkgversion=" Raiden v0.4 -${revision} " \
229
+ --with-pkgversion=" Raiden v0.5 -${revision} " \
239
230
--with-sysroot=" ${toolchain_directory} /${triplet} " \
240
231
--with-gcc-major-version-only \
241
232
--with-native-system-header-dir=' /include' \
@@ -285,7 +276,7 @@ for target in "${targets[@]}"; do
285
276
286
277
for name in * ; do
287
278
rm " ${name} "
288
- ln -s " ../../bin/${triplet} -${name} " " ${name} "
279
+ ln --symbolic " ../../bin/${triplet} -${name} " " ${name} "
289
280
done
290
281
291
282
rm --recursive " ${toolchain_directory} /share"
0 commit comments