72 lines
1.7 KiB
Bash
Executable File
72 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
source $(dirname $0)/setup-env.sh
|
|
|
|
cd $LUNA_ROOT
|
|
|
|
if [ ! -x $(command -v $LUNA_ARCH-luna-as) ]
|
|
then
|
|
echo Binutils should be cross-built before GCC.
|
|
exit 1
|
|
fi
|
|
|
|
tools/install-headers.sh # install the LibC headers before building GCC
|
|
|
|
mkdir -p toolchain/tarballs
|
|
mkdir -p toolchain/build
|
|
|
|
if [ ! -f toolchain/tarballs/gcc-$LUNA_GCC_VERSION_REQUIRED.tar.xz ]; then
|
|
echo Downloading GCC...
|
|
|
|
wget -Otoolchain/tarballs/gcc-$LUNA_GCC_VERSION_REQUIRED.tar.xz https://ftp.gnu.org/gnu/gcc/gcc-$LUNA_GCC_VERSION_REQUIRED/gcc-$LUNA_GCC_VERSION_REQUIRED.tar.xz
|
|
fi
|
|
|
|
rm -rf toolchain/build/gcc-$LUNA_ARCH
|
|
rm -rf toolchain/build/gcc-$LUNA_GCC_VERSION_REQUIRED
|
|
|
|
echo Extracting GCC...
|
|
|
|
tar xf toolchain/tarballs/gcc-$LUNA_GCC_VERSION_REQUIRED.tar.xz -C toolchain/build/
|
|
|
|
echo Patching GCC...
|
|
|
|
cd toolchain
|
|
|
|
patch -u -i $LUNA_ROOT/tools/gcc.patch -p 1 -d build
|
|
|
|
cd -
|
|
|
|
cd toolchain/build/gcc-$LUNA_GCC_VERSION_REQUIRED/libstdc++-v3
|
|
autoconf
|
|
cd -
|
|
|
|
echo Configuring GCC...
|
|
|
|
mkdir -p toolchain/build/gcc-$LUNA_ARCH
|
|
|
|
cd toolchain/build/gcc-$LUNA_ARCH
|
|
|
|
unset CC
|
|
unset CXX
|
|
unset LD
|
|
unset AR
|
|
|
|
../gcc-$LUNA_GCC_VERSION_REQUIRED/configure --prefix="$BUILD_PREFIX" --target=$BUILD_TARGET --disable-nls --with-sysroot=$BUILD_SYSROOT --enable-languages=c,c++ --enable-initfini-array
|
|
|
|
echo Building GCC...
|
|
|
|
make all-gcc -j$(nproc)
|
|
make all-target-libgcc -j$(nproc) CFLAGS_FOR_TARGET='-g -O2 -mcmodel=large -mno-red-zone'
|
|
|
|
echo Installing GCC...
|
|
|
|
make install-gcc
|
|
make install-target-libgcc
|
|
|
|
mkdir -p $LUNA_BUILD_DIR
|
|
cmake -S $LUNA_ROOT -B $LUNA_BUILD_DIR -G "$LUNA_CMAKE_GENERATOR_NAME"
|
|
cmake --build $LUNA_BUILD_DIR --target libc
|
|
|
|
make all-target-libstdc++-v3 CXXFLAGS_FOR_TARGET="-fno-exceptions" -j$(nproc)
|
|
make install-target-libstdc++-v3
|