tested working

This commit is contained in:
Denis Benato 2024-12-12 13:41:56 +01:00
parent d03c90da8a
commit 8a3e9a03e8
4 changed files with 291 additions and 0 deletions

42
.gitattributes vendored Normal file
View file

@ -0,0 +1,42 @@
sources/audit-userspace-4.0.2.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/binutils-2.43.tar.zst filter=lfs diff=lfs merge=lfs -text
sources/gettext-0.23.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/grep-3.11.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/swig-4.3.0.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/openssl-ca-dir.patch filter=lfs diff=lfs merge=lfs -text
sources/coreutils-9.5.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/libcap-ng-0.8.5.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/libiconv-1.17.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/m4-1.4.19.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/mpfr-4.2.1.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/attr-2.5.2.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/libxcrypt-4.4.36.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/ncurses.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/zlib-1.3.1.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/check-0.15.2.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/gzip-1.13.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/patch-2.7.6.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/readline-8.2.13.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/xz-5.6.3.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/file-5.46.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/findutils-4.10.0.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/gmp-6.3.0.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/libseccomp-2.5.5.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/make-4.4.1.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/libcap-2.73.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/mpc-1.3.1.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/bzip2-1.0.8.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/cloog-0.18.4.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/gcc-14.2.0.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/glibc-2.40.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/isl-0.27.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/acl-2.3.2.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/diffutils-3.10.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/linux-6.12.1.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/pcre2-10.44.tar.bz2 filter=lfs diff=lfs merge=lfs -text
sources/texinfo-7.1.1.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/bash-5.2.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/gawk-5.3.1.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/openssl-3.4.0.tar.gz filter=lfs diff=lfs merge=lfs -text
sources/sed-4.9.tar.xz filter=lfs diff=lfs merge=lfs -text
sources/tar-1.35.tar.xz filter=lfs diff=lfs merge=lfs -text

View file

@ -5,6 +5,11 @@ export TARGET_TRIPLET_VENDOR="lfs"
export TARGET_TRIPLET_OS="linux"
export TARGET_TRIPLET_GNUEABI="gnueabi"
# See https://mesonbuild.com/Reference-tables.html#cpu-families
export CPU_FAMILY="arm"
export CPU="arm"
export TARGET_ENDIANNESS="little"
# Pick one:
#linux-aarch64 linux-alpha-gcc linux-aout linux-arm64ilp32
#linux-arm64ilp32-clang linux-armv4 linux-c64xplus linux-elf linux-generic32

59
build-host-tools.sh Normal file
View file

@ -0,0 +1,59 @@
#!/bin/bash
# build m4
if [ ! -f "$STEPS_DIR/m4-tool" ]; then
if [ ! -d "$LFS_BUILD/m4" ]; then
tar -xzf "$BASE_DIR/sources/m4-1.4.19.tar.gz"
mv "m4-1.4.19" "$LFS_BUILD/m4"
fi
cd "$LFS_BUILD/m4"
mkdir -vp build-$BUILD_MACHINE_TRIPLET
cd build-$BUILD_MACHINE_TRIPLET
echo "rootsbindir=/usr/sbin" > configparms
"../configure" \
--prefix=/usr \
--build=${BUILD_MACHINE_TRIPLET} \
--host=${BUILD_MACHINE_TRIPLET} \
--with-build-cc
make -j 32
make DESTDIR=$LFS_TOOLS install
"strip" --strip-unneeded $LFS_TOOLS/usr/bin/m4
cd "$BASE_DIR"
#rm -rf "$LFS_BUILD/m4" # leave the directory there for the following compilation
touch "$STEPS_DIR/m4-tool"
fi
# build bash
if [ ! -f "$STEPS_DIR/bash-tools" ]; then
if [ ! -d "$LFS_BUILD/bash" ]; then
tar -xzf "$BASE_DIR/sources/bash-5.2.tar.gz"
mv "bash-5.2" "$LFS_BUILD/bash"
fi
cd "$LFS_BUILD/bash"
mkdir -vp build-$BUILD_MACHINE_TRIPLET
cd build-$BUILD_MACHINE_TRIPLET
"../configure" \
--prefix=$LFS_TOOLS \
--host=${BUILD_MACHINE_TRIPLET} \
--build=${BUILD_MACHINE_TRIPLET} \
--without-bash-malloc \
--enable-threads \
--without-curses
make -j 32
make install
cd "$BASE_DIR"
#rm -rf "$LFS_BUILD/bash" # leave the directory there for the following compilation
touch "$STEPS_DIR/bash-tools"
fi

185
build-toolchain.sh Executable file
View 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"