1*2eb4461aSRichard Henderson#!/bin/bash 2*2eb4461aSRichard Henderson 3*2eb4461aSRichard Hendersonset -e 4*2eb4461aSRichard Henderson 5*2eb4461aSRichard HendersonTARGET=nios2-linux-gnu 6*2eb4461aSRichard HendersonLINUX_ARCH=nios2 7*2eb4461aSRichard Henderson 8*2eb4461aSRichard HendersonJ=$(expr $(nproc) / 2) 9*2eb4461aSRichard HendersonTOOLCHAIN_INSTALL=/usr/local 10*2eb4461aSRichard HendersonTOOLCHAIN_BIN=${TOOLCHAIN_INSTALL}/bin 11*2eb4461aSRichard HendersonCROSS_SYSROOT=${TOOLCHAIN_INSTALL}/$TARGET/sys-root 12*2eb4461aSRichard Henderson 13*2eb4461aSRichard Hendersonexport PATH=${TOOLCHAIN_BIN}:$PATH 14*2eb4461aSRichard Henderson 15*2eb4461aSRichard Henderson# 16*2eb4461aSRichard Henderson# Grab all of the source for the toolchain bootstrap. 17*2eb4461aSRichard Henderson# 18*2eb4461aSRichard Henderson 19*2eb4461aSRichard Hendersonwget https://ftp.gnu.org/gnu/binutils/binutils-2.37.tar.xz 20*2eb4461aSRichard Hendersonwget https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz 21*2eb4461aSRichard Hendersonwget https://ftp.gnu.org/gnu/glibc/glibc-2.34.tar.xz 22*2eb4461aSRichard Hendersonwget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.70.tar.xz 23*2eb4461aSRichard Henderson 24*2eb4461aSRichard Hendersontar axf binutils-2.37.tar.xz 25*2eb4461aSRichard Hendersontar axf gcc-11.2.0.tar.xz 26*2eb4461aSRichard Hendersontar axf glibc-2.34.tar.xz 27*2eb4461aSRichard Hendersontar axf linux-5.10.70.tar.xz 28*2eb4461aSRichard Henderson 29*2eb4461aSRichard Hendersonmv binutils-2.37 src-binu 30*2eb4461aSRichard Hendersonmv gcc-11.2.0 src-gcc 31*2eb4461aSRichard Hendersonmv glibc-2.34 src-glibc 32*2eb4461aSRichard Hendersonmv linux-5.10.70 src-linux 33*2eb4461aSRichard Henderson 34*2eb4461aSRichard Hendersonmkdir -p bld-hdr bld-binu bld-gcc bld-glibc 35*2eb4461aSRichard Hendersonmkdir -p ${CROSS_SYSROOT}/usr/include 36*2eb4461aSRichard Henderson 37*2eb4461aSRichard Henderson# 38*2eb4461aSRichard Henderson# Install kernel and glibc headers 39*2eb4461aSRichard Henderson# 40*2eb4461aSRichard Henderson 41*2eb4461aSRichard Hendersoncd src-linux 42*2eb4461aSRichard Hendersonmake headers_install ARCH=${LINUX_ARCH} INSTALL_HDR_PATH=${CROSS_SYSROOT}/usr 43*2eb4461aSRichard Hendersoncd .. 44*2eb4461aSRichard Henderson 45*2eb4461aSRichard Hendersoncd bld-hdr 46*2eb4461aSRichard Henderson../src-glibc/configure --prefix=/usr --host=${TARGET} 47*2eb4461aSRichard Hendersonmake install-headers DESTDIR=${CROSS_SYSROOT} 48*2eb4461aSRichard Hendersontouch ${CROSS_SYSROOT}/usr/include/gnu/stubs.h 49*2eb4461aSRichard Hendersoncd .. 50*2eb4461aSRichard Henderson 51*2eb4461aSRichard Henderson# 52*2eb4461aSRichard Henderson# Build binutils 53*2eb4461aSRichard Henderson# 54*2eb4461aSRichard Henderson 55*2eb4461aSRichard Hendersoncd bld-binu 56*2eb4461aSRichard Henderson../src-binu/configure --disable-werror \ 57*2eb4461aSRichard Henderson --prefix=${TOOLCHAIN_INSTALL} --with-sysroot --target=${TARGET} 58*2eb4461aSRichard Hendersonmake -j${J} 59*2eb4461aSRichard Hendersonmake install 60*2eb4461aSRichard Hendersoncd .. 61*2eb4461aSRichard Henderson 62*2eb4461aSRichard Henderson# 63*2eb4461aSRichard Henderson# Build gcc, without shared libraries, because we do not yet 64*2eb4461aSRichard Henderson# have a shared libc against which to link. 65*2eb4461aSRichard Henderson# 66*2eb4461aSRichard Henderson 67*2eb4461aSRichard Hendersoncd bld-gcc 68*2eb4461aSRichard Henderson../src-gcc/configure --disable-werror --disable-shared \ 69*2eb4461aSRichard Henderson --prefix=${TOOLCHAIN_INSTALL} --with-sysroot --target=${TARGET} \ 70*2eb4461aSRichard Henderson --enable-languages=c --disable-libssp --disable-libsanitizer \ 71*2eb4461aSRichard Henderson --disable-libatomic --disable-libgomp --disable-libquadmath 72*2eb4461aSRichard Hendersonmake -j${J} 73*2eb4461aSRichard Hendersonmake install 74*2eb4461aSRichard Hendersoncd .. 75*2eb4461aSRichard Henderson 76*2eb4461aSRichard Henderson# 77*2eb4461aSRichard Henderson# Build glibc 78*2eb4461aSRichard Henderson# There are a few random things that use c++ but we didn't build that 79*2eb4461aSRichard Henderson# cross-compiler. We can get away without them. Disable CXX so that 80*2eb4461aSRichard Henderson# glibc doesn't try to use the host c++ compiler. 81*2eb4461aSRichard Henderson# 82*2eb4461aSRichard Henderson 83*2eb4461aSRichard Hendersoncd bld-glibc 84*2eb4461aSRichard HendersonCXX=false ../src-glibc/configure --prefix=/usr --host=${TARGET} 85*2eb4461aSRichard Hendersonmake -j${j} 86*2eb4461aSRichard Hendersonmake install DESTDIR=${CROSS_SYSROOT} 87*2eb4461aSRichard Hendersoncd .. 88