aboutsummaryrefslogtreecommitdiff
path: root/core/gcc/build
diff options
context:
space:
mode:
authorCem Keylan <cem@ckyln.com>2020-05-30 12:33:17 +0300
committerCem Keylan <cem@ckyln.com>2020-05-30 12:33:17 +0300
commitf9777af5fcb6d290285e5d3588bf71c937d71dda (patch)
tree9540113e58abb924251d805225e405fe14a762a9 /core/gcc/build
parentd55926e7745da96edcdaa9d296cc27f9d5c378fc (diff)
downloadrepository-f9777af5fcb6d290285e5d3588bf71c937d71dda.tar.gz
gcc: architecture dependent build
Diffstat (limited to 'core/gcc/build')
-rwxr-xr-xcore/gcc/build23
1 files changed, 18 insertions, 5 deletions
diff --git a/core/gcc/build b/core/gcc/build
index 34c650a7..47bfc7c7 100755
--- a/core/gcc/build
+++ b/core/gcc/build
@@ -1,5 +1,7 @@
#!/bin/sh -e
+sys_arch=${3:-$(uname -m)}
+
sed_i() {
for file; do :; done
sed "$@" > _
@@ -10,9 +12,20 @@ sed_i() {
cp gcc/gmp/configfsf.guess gcc/gmp/config.guess
cp gcc/gmp/configfsf.sub gcc/gmp/config.sub
-# Use lib not lib64 by default.
-sed_i '/m64=/s/lib64/lib/' gcc/gcc/config/i386/t-linux64
-sed_i 's/lib64/lib/' gcc/gcc/config/i386/linux64.h
+if [ "${sys_arch#1*86}" ]; then
+ # Do not create lib64 directories
+ sed_i '/m64=/s/lib64/lib/' gcc/gcc/config/i386/t-linux64
+ sed_i 's/lib64/lib/' gcc/gcc/config/i386/linux64.h
+else
+ # Apply libssp patch for i686.
+ (cd gcc; patch -Np1 < ../musl-libssp.patch)
+fi
+
+case "$sys_arch" in
+ i*86) archopts="--build=i686-pc-linux-musl \
+ --disable-libssp" ;;
+ x86_64) archopts="--build=x86_64-pc-linux-musl"
+esac
# Build must happen outside of gcc source.
mkdir -p gcc-build
@@ -43,7 +56,7 @@ export libat_cv_have_ifunc=no
--enable-threads \
--enable-tls \
--enable-languages=c,c++ \
- --build=x86_64-pc-linux-musl \
+ $archopts \
--disable-bootstrap
make
@@ -64,7 +77,7 @@ install -Dm755 ../c99 "$1/usr/bin/c99"
{
mkdir -p "$1/usr/lib/bfd-plugins"
- ln -s /usr/libexec/gcc/x86_64-pc-linux-musl/9.2.0/liblto_plugin.so \
+ ln -s "/usr/libexec/gcc/$sys_arch-pc-linux-musl/9.2.0/liblto_plugin.so" \
"$1/usr/lib/bfd-plugins/liblto_plugin.so"
}