tested working
This commit is contained in:
parent
d03c90da8a
commit
8a3e9a03e8
4 changed files with 291 additions and 0 deletions
185
build-toolchain.sh
Executable file
185
build-toolchain.sh
Executable file
|
|
@ -0,0 +1,185 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Function to handle errors
|
||||
error_handler() {
|
||||
local exit_code=$?
|
||||
local line_number=$1
|
||||
local file_name=$2
|
||||
echo "Error in file: $file_name, line: $line_number, reason: Command exited with status $exit_code"
|
||||
}
|
||||
|
||||
# Set the trap to catch errors
|
||||
trap 'error_handler $LINENO $0' ERR
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
export BUILDER_ARCH="x86_64"
|
||||
export TOOLCHAIN_TRIPLET="$BUILDER_ARCH-linux-musl"
|
||||
|
||||
export LINUX_VERSION="6.12.1"
|
||||
|
||||
# automatic
|
||||
export BASE_DIR=$(pwd)
|
||||
export TOOLCHAIN_DIR="$BASE_DIR/out/$TOOLCHAIN_TRIPLET/toolchain/"
|
||||
export BUILD_DIR="$TOOLCHAIN_DIR/../build"
|
||||
export TOOLCHAIN_SYSROOT="$TOOLCHAIN_DIR/../sysroot/"
|
||||
|
||||
export PATH="$TOOLCHAIN_DIR/bin/:$PATH"
|
||||
|
||||
# Create the target directory
|
||||
mkdir -vp "${TOOLCHAIN_DIR}"
|
||||
mkdir -vp "${BUILD_DIR}"
|
||||
mkdir -vp "${TOOLCHAIN_SYSROOT}"
|
||||
|
||||
export BUILD_MACHINE_TRIPLET=$(gcc -dumpmachine)
|
||||
#export TARGET_MACHINE_TRIPLET=$LFS_TGT
|
||||
|
||||
## Build binutils
|
||||
#if [ ! -d "$BUILD_DIR/binutils" ]; then
|
||||
# tar -xf "$BASE_DIR/sources/binutils-2.43.tar.zst"
|
||||
# mv "binutils-2.43" "$BUILD_DIR/binutils"
|
||||
#fi
|
||||
#cd "$BUILD_DIR/binutils"
|
||||
#mkdir -vp "build-$TOOLCHAIN_TRIPLET"
|
||||
#cd "build-$TOOLCHAIN_TRIPLET"
|
||||
#"../configure" \
|
||||
# --prefix=$TOOLCHAIN_DIR \
|
||||
# --with-sysroot=$TOOLCHAIN_SYSROOT \
|
||||
# --target=$TOOLCHAIN_TRIPLET \
|
||||
# --with-gnu-as \
|
||||
# --with-gnu-ld \
|
||||
# --enable-ld=default \
|
||||
# --disable-shared \
|
||||
# --disable-nls \
|
||||
# --enable-gprofng=no \
|
||||
# --disable-werror \
|
||||
# --enable-new-dtags \
|
||||
# --disable-multilib \
|
||||
# --disable-libquadmath \
|
||||
# --disable-libquadmath-support \
|
||||
# --disable-plugins \
|
||||
# --enable-deterministic-archives \
|
||||
# --enable-default-hash-style=gnu
|
||||
##make configure-host
|
||||
#make -j 32
|
||||
#make -j 32 install
|
||||
#cd "$BASE_DIR"
|
||||
#
|
||||
## Install kernel headers
|
||||
#if [ ! -d "$BUILD_DIR/linux" ]; then
|
||||
# tar -xzf "$BASE_DIR/sources/linux-$LINUX_VERSION.tar.gz"
|
||||
# mv "linux-$LINUX_VERSION" "$BUILD_DIR/linux"
|
||||
#fi
|
||||
#cd "$BUILD_DIR/linux"
|
||||
#make mrproper
|
||||
#make headers_install ARCH="$BUILDER_ARCH" INSTALL_HDR_PATH="$TOOLCHAIN_DIR/"
|
||||
#cd "$BASE_DIR"
|
||||
#
|
||||
#
|
||||
## Build gcc
|
||||
#export CFLAGS="$CFLAGS -static "
|
||||
#export LDFLAGS="$LDFLAGS -Bstatic "
|
||||
#bash unpack-gcc.sh "$BUILD_DIR"
|
||||
#cd "$BUILD_DIR/gcc/"
|
||||
#mkdir -vp "build-$-step1"
|
||||
#cd "build-$-step1"
|
||||
#"../configure" \
|
||||
# --target=$TOOLCHAIN_TRIPLET \
|
||||
# --host=${BUILD_MACHINE_TRIPLET} \
|
||||
# --build=${BUILD_MACHINE_TRIPLET} \
|
||||
# --prefix=$TOOLCHAIN_DIR \
|
||||
# --with-glibc-version=2.40 \
|
||||
# --with-sysroot=$TOOLCHAIN_SYSROOT \
|
||||
# --with-newlib \
|
||||
# --disable-shared \
|
||||
# --disable-gdbtk \
|
||||
# --without-headers \
|
||||
# --enable-default-pie \
|
||||
# --enable-default-ssp \
|
||||
# --disable-nls \
|
||||
# --disable-multilib \
|
||||
# --disable-threads \
|
||||
# --disable-libatomic \
|
||||
# --disable-libmudflap \
|
||||
# --disable-libgomp \
|
||||
# --disable-libquadmath \
|
||||
# --disable-libquadmath-support \
|
||||
# --disable-libssp \
|
||||
# --disable-libvtv \
|
||||
# --disable-libstdcxx \
|
||||
# --disable-decimal-float \
|
||||
# --disable-libsanitizer \
|
||||
# --enable-languages=c
|
||||
#make -j 32
|
||||
#make -j 32 install
|
||||
#cd "$BASE_DIR"
|
||||
#
|
||||
## From now on use
|
||||
#export BUILD_CC=gcc
|
||||
#export CC="$TOOLCHAIN_TRIPLET-gcc"
|
||||
#export CXX="$TOOLCHAIN_TRIPLET-g++"
|
||||
#export AS="$TOOLCHAIN_TRIPLET-as"
|
||||
#export LD="$TOOLCHAIN_TRIPLET-ld"
|
||||
#export AR="$TOOLCHAIN_TRIPLET-ar"
|
||||
#export RANLIB="$TOOLCHAIN_TRIPLET-ranlib"
|
||||
#export STRIP="$TOOLCHAIN_TRIPLET-strip"
|
||||
#export OBJDUMP="$TOOLCHAIN_TRIPLET-objdump"
|
||||
## remove hardening options for building libraries
|
||||
#export CFLAGS="-U_FORTIFY_SOURCE -O2 -static "
|
||||
#export CPPFLAGS="-U_FORTIFY_SOURCE -O2 -static"
|
||||
#export LDFLAGS=" -Bstatic "
|
||||
#export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH"
|
||||
#unset LD_LIBRARY_PATH
|
||||
#
|
||||
## build musl
|
||||
#if [ ! -d "$BUILD_DIR/musl" ]; then
|
||||
# tar -xzf "$BASE_DIR/sources/musl-1.2.5.tar.gz"
|
||||
# mv "musl-1.2.5" "$BUILD_DIR/musl"
|
||||
#fi
|
||||
#cd "$BUILD_DIR/musl"
|
||||
#mkdir -vp "build-$TOOLCHAIN_TRIPLET"
|
||||
#cd "build-$TOOLCHAIN_TRIPLET"
|
||||
#"../configure" --prefix=/
|
||||
## CROSS_COMPILE="${TOOLCHAIN_TRIPLET}-" \
|
||||
## --target=${TOOLCHAIN_TRIPLET}
|
||||
#
|
||||
#make -j 32
|
||||
#DESTDIR="${TOOLCHAIN_DIR}" make install
|
||||
#cd "$BASE_DIR"
|
||||
|
||||
# build gcc (step2)
|
||||
export CFLAGS="$CFLAGS -static "
|
||||
export LDFLAGS="$LDFLAGS -Bstatic "
|
||||
bash unpack-gcc.sh "$BUILD_DIR"
|
||||
cd "$BUILD_DIR/gcc/"
|
||||
mkdir -vp "build-step2"
|
||||
cd "build-step2"
|
||||
"../configure" \
|
||||
--target=$TOOLCHAIN_TRIPLET \
|
||||
--build=${TOOLCHAIN_TRIPLET} \
|
||||
--prefix=$TOOLCHAIN_DIR \
|
||||
--with-glibc-version=2.40 \
|
||||
--with-sysroot=$TOOLCHAIN_SYSROOT \
|
||||
--with-newlib \
|
||||
--disable-shared \
|
||||
--disable-gdbtk \
|
||||
--without-headers \
|
||||
--enable-default-pie \
|
||||
--enable-default-ssp \
|
||||
--disable-nls \
|
||||
--disable-multilib \
|
||||
--disable-threads \
|
||||
--disable-libatomic \
|
||||
--disable-libmudflap \
|
||||
--disable-libgomp \
|
||||
--disable-libquadmath \
|
||||
--disable-libquadmath-support \
|
||||
--disable-libssp \
|
||||
--disable-libvtv \
|
||||
--disable-libstdcxx \
|
||||
--disable-decimal-float \
|
||||
--disable-libsanitizer \
|
||||
--enable-languages=c
|
||||
make
|
||||
make -j 32 install
|
||||
cd "$BASE_DIR"
|
||||
Loading…
Add table
Add a link
Reference in a new issue