Files
ficus/toolchain_scripts/libstdc++-x86_64-elf.sh
2024-03-30 13:41:29 +01:00

54 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
set -euxo pipefail
if [ -z "$FICUS_ROOT" ]; then
echo "$FICUS_ROOT" is blank
fi
mkdir -p $FICUS_ROOT/toolchain || exit 1
cd $FICUS_ROOT/toolchain
cd gcc-x86_64-elf || exit 1
if [ ! -d gcc-13.2.0 ]; then
echo "GCC Sources not found!"
exit 1
fi
if [ ! -f "$FICUS_ROOT/toolchain/gcc-x86_64-elf-prefix/bin/x86_64-elf-as" ]; then
echo "binutils not found"
exit 1
fi
if [ ! -f "$FICUS_ROOT/toolchain/gcc-x86_64-elf-prefix/bin/x86_64-elf-gcc" ]; then
echo "gcc not found"
exit 1
fi
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
patch -p0 -u -i "$SCRIPT_DIR/gcc-libstdcpp.patch"
export PREFIX="$FICUS_ROOT/toolchain/gcc-x86_64-elf-prefix/"
export TARGET=x86_64-elf
export PATH="$PREFIX/bin:$PATH"
# Note that you might have to go into the configure script and remove tests for fcntl and maybe other errors
mkdir -p libstdcppbuild
cd libstdcppbuild
../gcc-13.2.0/libstdc++-v3/configure \
--host=$TARGET \
--prefix="$PREFIX" \
--disable-nls \
--with-newlib \
--without-headers \
--disable-libstdcxx-threads \
--disable-hosted-libstdcxx \
--enable-version-specific-runtime-libs
make -j$(nproc) CFLAGS_FOR_TARGET='-g -O2 -mcmodel=large -mno-red-zone'
make install
touch -m ../donelibstdcpp