diff --git a/build.sh b/build.sh index 890a148..c092a1f 100755 --- a/build.sh +++ b/build.sh @@ -69,18 +69,19 @@ export BUILD_MACHINE_TRIPLET=$(gcc -dumpmachine) export TARGET_MACHINE_TRIPLET=$LFS_TGT # Create the target directory -mkdir -p "$LFS" export STEPS_DIR="$LFS/../steps/" -mkdir -vp "$STEPS_DIR" - +export LFS_BUILD="$LFS/../build/" export LFS_TOOLS="$LFS/tools" + +mkdir -p "$LFS" +mkdir -vp "$STEPS_DIR" mkdir -vp "$LFS_TOOLS" +mkdir -vp "$LFS_BUILD" export PATH="$LFS_TOOLS/bin/:$PATH" -export LFS_BUILD="$LFS/../" - unset CFLAGS +unset LDFLAGS # Create a directory layout if [ ! -d "$LFS/etc" ]; then @@ -90,9 +91,9 @@ if [ ! -d "$LFS/etc" ]; then ln -sv usr/$i $LFS/$i done - case $ARCH in - x86_64) mkdir -pv $LFS/lib64 ;; - esac + #case $ARCH in + # x86_64) mkdir -pv $LFS/lib64 ;; + #esac fi # Build binutils @@ -146,9 +147,12 @@ if [ ! -f "$STEPS_DIR/linux-headers" ]; then touch "$STEPS_DIR/linux-headers" fi +export CFLAGS="$CFLAGS -static " +export LDFLAGS="$LDFLAGS -Bstatic " + # Build gcc if [ ! -f "$STEPS_DIR/gcc-step1" ]; then - bash unpack-gcc.sh + bash unpack-gcc.sh "$LFS_BUILD/" cd "$LFS_BUILD/gcc/" # # 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 - mkdir -vp build - cd build + mkdir -vp build-step1 + cd build-step1 "../configure" \ --target=$LFS_TGT \ @@ -207,9 +211,10 @@ export AR="$LFS_TGT-ar" export RANLIB="$LFS_TGT-ranlib" export STRIP="$LFS_TGT-strip" export OBJDUMP="$LFS_TGT-objdump" +export LDFLAGS=" -Bstatic " # remove hardening options for building libraries -export CFLAGS="-U_FORTIFY_SOURCE -O2" -export CPPFLAGS="-U_FORTIFY_SOURCE -O2" +export CFLAGS="-U_FORTIFY_SOURCE -O2 -static" +export CPPFLAGS="-U_FORTIFY_SOURCE -O2 -static" export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH" unset LD_LIBRARY_PATH @@ -303,17 +308,15 @@ unset RANLIB unset STRIP unset OBJDUMP export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_old" +export CFLAGS="-static " +export LDFLAGS="-Bstatic " if [ ! -f "$STEPS_DIR/gcc-step2" ]; then - #if [ ! -d "$LFS_BUILD/gcc/build" ]; then - # echo "'$LFS_BUILD/gcc/build' directory is supposed to exist. Error." - # exit 1 - #fi - #cd "$LFS_BUILD/gcc/build" + bash unpack-gcc.sh "$LFS_BUILD/" cd "$LFS_BUILD/gcc" - mkdir -vp build - cd build + mkdir -vp build-step2 + cd build-step2 # ../configure is already done "../configure" \ @@ -360,6 +363,8 @@ fi #export CPPFLAGS="-U_FORTIFY_SOURCE -O2" #export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH" #unset LD_LIBRARY_PATH +unset CFLAGS +unset LDFLAGS if [ ! -f "$STEPS_DIR/glibc-step2" ]; then if [ ! -d "$LFS_BUILD/glibc/build" ]; then @@ -389,15 +394,17 @@ fi #unset RANLIB #unset OBJDUMP #export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_old" +export CFLAGS="-static " +export LDFLAGS="-Bstatic " # build the rest of gcc if [ ! -f "$STEPS_DIR/gcc-step3" ]; then - if [ ! -d "$LFS_BUILD/gcc/build" ]; then - echo "'$LFS_BUILD/gcc/build' directory is supposed to exist. Error." - exit 1 - fi - cd "$LFS_BUILD/gcc/build" + bash unpack-gcc.sh "$LFS_BUILD/" + cd "$LFS_BUILD/gcc/" + mkdir -vp build-step3 + cd build-step3 + "../configure" \ --target=$LFS_TGT \ --host=${BUILD_MACHINE_TRIPLET} \ diff --git a/unpack-gcc.sh b/unpack-gcc.sh index bac0067..6f677ac 100644 --- a/unpack-gcc.sh +++ b/unpack-gcc.sh @@ -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" - mv "gcc-14.2.0" "$LFS_BUILD/gcc" + mv "gcc-14.2.0" "$GCC_SOURCE_DIR/gcc" +fi +cd "$GCC_SOURCE_DIR/gcc/" + +if [ ! -d "mpfr" ]; then + tar -xf "$BASE_DIR/sources/mpfr-4.2.1.tar.xz" + mv -v mpfr-4.2.1 mpfr +fi + +if [ ! -d "gmp" ]; then + tar -xf "$BASE_DIR/sources/gmp-6.3.0.tar.xz" + mv -v gmp-6.3.0 gmp +fi + +if [ ! -d "mpc" ]; then + tar -xf "$BASE_DIR/sources/mpc-1.3.1.tar.gz" + mv -v mpc-1.3.1 mpc +fi + +if [ ! -d "isl" ]; then + tar -xf "$BASE_DIR/sources/isl-0.27.tar.gz" + mv -v isl-0.27 isl +fi + +if [ ! -d "cloog" ]; then + tar -xf "$BASE_DIR/sources/cloog-0.18.4.tar.gz" + mv -v cloog-0.18.4 cloog fi -cd "$LFS_BUILD/gcc/" -tar -xf "$BASE_DIR/sources/mpfr-4.2.1.tar.xz" -mv -v mpfr-4.2.1 mpfr -tar -xf "$BASE_DIR/sources/gmp-6.3.0.tar.xz" -mv -v gmp-6.3.0 gmp -tar -xf "$BASE_DIR/sources/mpc-1.3.1.tar.gz" -mv -v mpc-1.3.1 mpc -tar -xf "$BASE_DIR/sources/isl-0.27.tar.gz" -mv -v isl-0.27 isl -tar -xf "$BASE_DIR/sources/cloog-0.18.4.tar.gz" -mv -v cloog-0.18.4 cloog # On x86_64 hosts, set the default directory name for 64-bit libraries to “lib” #case $(uname -m) in @@ -21,5 +38,3 @@ mv -v cloog-0.18.4 cloog # -i.orig gcc/config/i386/t-linux64 #;; #esac - -cd "$BASE_DIR" \ No newline at end of file