Improve build script

This commit is contained in:
Denis Benato 2024-12-08 17:00:20 +01:00
parent ce0af65a6d
commit a0d1308b0f
2 changed files with 62 additions and 40 deletions

View file

@ -69,18 +69,19 @@ export BUILD_MACHINE_TRIPLET=$(gcc -dumpmachine)
export TARGET_MACHINE_TRIPLET=$LFS_TGT export TARGET_MACHINE_TRIPLET=$LFS_TGT
# Create the target directory # Create the target directory
mkdir -p "$LFS"
export STEPS_DIR="$LFS/../steps/" export STEPS_DIR="$LFS/../steps/"
mkdir -vp "$STEPS_DIR" export LFS_BUILD="$LFS/../build/"
export LFS_TOOLS="$LFS/tools" export LFS_TOOLS="$LFS/tools"
mkdir -p "$LFS"
mkdir -vp "$STEPS_DIR"
mkdir -vp "$LFS_TOOLS" mkdir -vp "$LFS_TOOLS"
mkdir -vp "$LFS_BUILD"
export PATH="$LFS_TOOLS/bin/:$PATH" export PATH="$LFS_TOOLS/bin/:$PATH"
export LFS_BUILD="$LFS/../"
unset CFLAGS unset CFLAGS
unset LDFLAGS
# Create a directory layout # Create a directory layout
if [ ! -d "$LFS/etc" ]; then if [ ! -d "$LFS/etc" ]; then
@ -90,9 +91,9 @@ if [ ! -d "$LFS/etc" ]; then
ln -sv usr/$i $LFS/$i ln -sv usr/$i $LFS/$i
done done
case $ARCH in #case $ARCH in
x86_64) mkdir -pv $LFS/lib64 ;; # x86_64) mkdir -pv $LFS/lib64 ;;
esac #esac
fi fi
# Build binutils # Build binutils
@ -146,9 +147,12 @@ if [ ! -f "$STEPS_DIR/linux-headers" ]; then
touch "$STEPS_DIR/linux-headers" touch "$STEPS_DIR/linux-headers"
fi fi
export CFLAGS="$CFLAGS -static "
export LDFLAGS="$LDFLAGS -Bstatic "
# Build gcc # Build gcc
if [ ! -f "$STEPS_DIR/gcc-step1" ]; then if [ ! -f "$STEPS_DIR/gcc-step1" ]; then
bash unpack-gcc.sh bash unpack-gcc.sh "$LFS_BUILD/"
cd "$LFS_BUILD/gcc/" cd "$LFS_BUILD/gcc/"
# # On x86_64 hosts, set the default directory name for 64-bit libraries to “lib” # # On x86_64 hosts, set the default directory name for 64-bit libraries to “lib”
@ -159,8 +163,8 @@ if [ ! -f "$STEPS_DIR/gcc-step1" ]; then
# ;; # ;;
# esac # esac
mkdir -vp build mkdir -vp build-step1
cd build cd build-step1
"../configure" \ "../configure" \
--target=$LFS_TGT \ --target=$LFS_TGT \
@ -207,9 +211,10 @@ export AR="$LFS_TGT-ar"
export RANLIB="$LFS_TGT-ranlib" export RANLIB="$LFS_TGT-ranlib"
export STRIP="$LFS_TGT-strip" export STRIP="$LFS_TGT-strip"
export OBJDUMP="$LFS_TGT-objdump" export OBJDUMP="$LFS_TGT-objdump"
export LDFLAGS=" -Bstatic "
# remove hardening options for building libraries # remove hardening options for building libraries
export CFLAGS="-U_FORTIFY_SOURCE -O2" export CFLAGS="-U_FORTIFY_SOURCE -O2 -static"
export CPPFLAGS="-U_FORTIFY_SOURCE -O2" export CPPFLAGS="-U_FORTIFY_SOURCE -O2 -static"
export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH" export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH"
unset LD_LIBRARY_PATH unset LD_LIBRARY_PATH
@ -303,17 +308,15 @@ unset RANLIB
unset STRIP unset STRIP
unset OBJDUMP unset OBJDUMP
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_old" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_old"
export CFLAGS="-static "
export LDFLAGS="-Bstatic "
if [ ! -f "$STEPS_DIR/gcc-step2" ]; then if [ ! -f "$STEPS_DIR/gcc-step2" ]; then
#if [ ! -d "$LFS_BUILD/gcc/build" ]; then bash unpack-gcc.sh "$LFS_BUILD/"
# echo "'$LFS_BUILD/gcc/build' directory is supposed to exist. Error."
# exit 1
#fi
#cd "$LFS_BUILD/gcc/build"
cd "$LFS_BUILD/gcc" cd "$LFS_BUILD/gcc"
mkdir -vp build mkdir -vp build-step2
cd build cd build-step2
# ../configure is already done # ../configure is already done
"../configure" \ "../configure" \
@ -360,6 +363,8 @@ fi
#export CPPFLAGS="-U_FORTIFY_SOURCE -O2" #export CPPFLAGS="-U_FORTIFY_SOURCE -O2"
#export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH" #export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH"
#unset LD_LIBRARY_PATH #unset LD_LIBRARY_PATH
unset CFLAGS
unset LDFLAGS
if [ ! -f "$STEPS_DIR/glibc-step2" ]; then if [ ! -f "$STEPS_DIR/glibc-step2" ]; then
if [ ! -d "$LFS_BUILD/glibc/build" ]; then if [ ! -d "$LFS_BUILD/glibc/build" ]; then
@ -389,14 +394,16 @@ fi
#unset RANLIB #unset RANLIB
#unset OBJDUMP #unset OBJDUMP
#export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_old" #export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_old"
export CFLAGS="-static "
export LDFLAGS="-Bstatic "
# build the rest of gcc # build the rest of gcc
if [ ! -f "$STEPS_DIR/gcc-step3" ]; then if [ ! -f "$STEPS_DIR/gcc-step3" ]; then
if [ ! -d "$LFS_BUILD/gcc/build" ]; then bash unpack-gcc.sh "$LFS_BUILD/"
echo "'$LFS_BUILD/gcc/build' directory is supposed to exist. Error." cd "$LFS_BUILD/gcc/"
exit 1
fi mkdir -vp build-step3
cd "$LFS_BUILD/gcc/build" cd build-step3
"../configure" \ "../configure" \
--target=$LFS_TGT \ --target=$LFS_TGT \

View file

@ -1,18 +1,35 @@
if [ ! -d "$LFS_BUILD/gcc" ]; then export GCC_SOURCE_DIR=$1
if [ ! -d "$GCC_SOURCE_DIR/gcc" ]; then
tar -xzf "$BASE_DIR/sources/gcc-14.2.0.tar.gz" tar -xzf "$BASE_DIR/sources/gcc-14.2.0.tar.gz"
mv "gcc-14.2.0" "$LFS_BUILD/gcc" mv "gcc-14.2.0" "$GCC_SOURCE_DIR/gcc"
fi fi
cd "$LFS_BUILD/gcc/" cd "$GCC_SOURCE_DIR/gcc/"
if [ ! -d "mpfr" ]; then
tar -xf "$BASE_DIR/sources/mpfr-4.2.1.tar.xz" tar -xf "$BASE_DIR/sources/mpfr-4.2.1.tar.xz"
mv -v mpfr-4.2.1 mpfr mv -v mpfr-4.2.1 mpfr
fi
if [ ! -d "gmp" ]; then
tar -xf "$BASE_DIR/sources/gmp-6.3.0.tar.xz" tar -xf "$BASE_DIR/sources/gmp-6.3.0.tar.xz"
mv -v gmp-6.3.0 gmp mv -v gmp-6.3.0 gmp
fi
if [ ! -d "mpc" ]; then
tar -xf "$BASE_DIR/sources/mpc-1.3.1.tar.gz" tar -xf "$BASE_DIR/sources/mpc-1.3.1.tar.gz"
mv -v mpc-1.3.1 mpc mv -v mpc-1.3.1 mpc
fi
if [ ! -d "isl" ]; then
tar -xf "$BASE_DIR/sources/isl-0.27.tar.gz" tar -xf "$BASE_DIR/sources/isl-0.27.tar.gz"
mv -v isl-0.27 isl mv -v isl-0.27 isl
fi
if [ ! -d "cloog" ]; then
tar -xf "$BASE_DIR/sources/cloog-0.18.4.tar.gz" tar -xf "$BASE_DIR/sources/cloog-0.18.4.tar.gz"
mv -v cloog-0.18.4 cloog mv -v cloog-0.18.4 cloog
fi
# On x86_64 hosts, set the default directory name for 64-bit libraries to “lib” # On x86_64 hosts, set the default directory name for 64-bit libraries to “lib”
#case $(uname -m) in #case $(uname -m) in
@ -21,5 +38,3 @@ mv -v cloog-0.18.4 cloog
# -i.orig gcc/config/i386/t-linux64 # -i.orig gcc/config/i386/t-linux64
#;; #;;
#esac #esac
cd "$BASE_DIR"