64 lines
1.2 KiB
Bash
Executable File
64 lines
1.2 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
apk --update add build-base
|
|
apk add gmp-dev mpfr-dev mpc1-dev
|
|
|
|
apk add make
|
|
apk add grub-bios xorriso
|
|
apk add python3 git rsync
|
|
|
|
rm -rf /var/cache/apk/*
|
|
|
|
target=x86_64-elf
|
|
SYSROOT=/opt/sysroot
|
|
binutils=binutils-2.37
|
|
gcc=gcc-11.2.0
|
|
|
|
# Download and install musl headers
|
|
mkdir -p /opt/external
|
|
cd /opt/external
|
|
[ -d musl ] || git clone --depth=1 git://git.musl-libc.org/musl
|
|
cd musl
|
|
git reset --hard
|
|
git pull
|
|
|
|
cat > config.mak << EOF
|
|
ARCH=x86_64
|
|
prefix=${SYSROOT}/usr
|
|
includedir=\$(prefix)/include
|
|
EOF
|
|
|
|
make install-headers
|
|
|
|
# Build binutils
|
|
cd /opt
|
|
wget http://ftp.gnu.org/gnu/binutils/${binutils}.tar.gz
|
|
tar -xf ${binutils}.tar.gz
|
|
mkdir binutils-build && cd binutils-build
|
|
../${binutils}/configure \
|
|
--target=${target} \
|
|
--disable-nls \
|
|
--disable-werror \
|
|
--with-sysroot=${SYSROOT}
|
|
|
|
make -j 4
|
|
make install
|
|
|
|
# Build gcc and libgcc
|
|
cd /opt
|
|
wget http://ftp.gnu.org/gnu/gcc/${gcc}/${gcc}.tar.gz
|
|
tar -xf ${gcc}.tar.gz
|
|
mkdir gcc-build && cd gcc-build
|
|
../${gcc}/configure \
|
|
--target=${target} \
|
|
--disable-nls \
|
|
--enable-languages=c \
|
|
--with-sysroot=${SYSROOT}
|
|
|
|
make all-gcc all-target-libgcc -j 4
|
|
make install-gcc install-target-libgcc
|
|
|
|
apk del build-base
|
|
|
|
cd /
|
|
rm -rf /opt |