mirror of
https://github.com/luisgbm/lfs-scripts.git
synced 2026-03-10 04:41:10 +00:00
362 lines
9.3 KiB
Bash
362 lines
9.3 KiB
Bash
#!/bin/bash
|
|
# LFS 11.2 Build Script
|
|
# Builds the cross-toolchain and cross compiling temporary tools from chapters 5 and 6
|
|
# by Luís Mendes :)
|
|
# 06/Sep/2022
|
|
|
|
package_name=""
|
|
package_ext=""
|
|
|
|
begin() {
|
|
package_name=$1
|
|
package_ext=$2
|
|
|
|
echo "[lfs-cross] Starting build of $package_name at $(date)"
|
|
|
|
tar xf $package_name.$package_ext
|
|
cd $package_name
|
|
}
|
|
|
|
finish() {
|
|
echo "[lfs-cross] Finishing build of $package_name at $(date)"
|
|
|
|
cd $LFS/sources
|
|
rm -rf $package_name
|
|
}
|
|
|
|
cd $LFS/sources
|
|
|
|
# 5.2. Binutils-2.39 - Pass 1
|
|
begin binutils-2.39 tar.xz
|
|
mkdir -v build
|
|
cd build
|
|
../configure --prefix=$LFS/tools \
|
|
--with-sysroot=$LFS \
|
|
--target=$LFS_TGT \
|
|
--disable-nls \
|
|
--enable-gprofng=no \
|
|
--disable-werror
|
|
make
|
|
make install
|
|
finish
|
|
|
|
# 5.3. GCC-12.2.0 - Pass 1
|
|
begin gcc-12.2.0 tar.xz
|
|
tar -xf ../mpfr-4.1.0.tar.xz
|
|
mv -v mpfr-4.1.0 mpfr
|
|
tar -xf ../gmp-6.2.1.tar.xz
|
|
mv -v gmp-6.2.1 gmp
|
|
tar -xf ../mpc-1.2.1.tar.gz
|
|
mv -v mpc-1.2.1 mpc
|
|
case $(uname -m) in
|
|
x86_64)
|
|
sed -e '/m64=/s/lib64/lib/' \
|
|
-i.orig gcc/config/i386/t-linux64
|
|
;;
|
|
esac
|
|
mkdir -v build
|
|
cd build
|
|
../configure \
|
|
--target=$LFS_TGT \
|
|
--prefix=$LFS/tools \
|
|
--with-glibc-version=2.36 \
|
|
--with-sysroot=$LFS \
|
|
--with-newlib \
|
|
--without-headers \
|
|
--disable-nls \
|
|
--disable-shared \
|
|
--disable-multilib \
|
|
--disable-decimal-float \
|
|
--disable-threads \
|
|
--disable-libatomic \
|
|
--disable-libgomp \
|
|
--disable-libquadmath \
|
|
--disable-libssp \
|
|
--disable-libvtv \
|
|
--disable-libstdcxx \
|
|
--enable-languages=c,c++
|
|
make
|
|
make install
|
|
cd ..
|
|
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
|
|
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/install-tools/include/limits.h
|
|
finish
|
|
|
|
# 5.4. Linux-5.19.2 API Headers
|
|
begin linux-5.19.2 tar.xz
|
|
make mrproper
|
|
make headers
|
|
find usr/include -type f ! -name '*.h' -delete
|
|
cp -rv usr/include $LFS/usr
|
|
finish
|
|
|
|
# 5.5. Glibc-2.36
|
|
begin glibc-2.36 tar.xz
|
|
case $(uname -m) in
|
|
i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
|
|
;;
|
|
x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
|
|
ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
|
|
;;
|
|
esac
|
|
patch -Np1 -i ../glibc-2.36-fhs-1.patch
|
|
mkdir -v build
|
|
cd build
|
|
echo "rootsbindir=/usr/sbin" > configparms
|
|
../configure \
|
|
--prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(../scripts/config.guess) \
|
|
--enable-kernel=3.2 \
|
|
--with-headers=$LFS/usr/include \
|
|
libc_cv_slibdir=/usr/lib
|
|
make
|
|
make DESTDIR=$LFS install
|
|
sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
|
|
echo 'int main(){}' | gcc -xc -
|
|
readelf -l a.out | grep ld-linux
|
|
rm -v a.out
|
|
$LFS/tools/libexec/gcc/$LFS_TGT/12.2.0/install-tools/mkheaders
|
|
finish
|
|
|
|
# 5.6. Libstdc++ from GCC-12.2.0
|
|
begin gcc-12.2.0 tar.xz
|
|
mkdir -v build
|
|
cd build
|
|
../libstdc++-v3/configure \
|
|
--host=$LFS_TGT \
|
|
--build=$(../config.guess) \
|
|
--prefix=/usr \
|
|
--disable-multilib \
|
|
--disable-nls \
|
|
--disable-libstdcxx-pch \
|
|
--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0
|
|
make
|
|
make DESTDIR=$LFS install
|
|
rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la
|
|
finish
|
|
|
|
# 6.2. M4-1.4.19
|
|
begin m4-1.4.19 tar.xz
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(build-aux/config.guess)
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.3. Ncurses-6.3
|
|
begin ncurses-6.3 tar.gz
|
|
sed -i s/mawk// configure
|
|
mkdir build
|
|
pushd build
|
|
../configure
|
|
make -C include
|
|
make -C progs tic
|
|
popd
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(./config.guess) \
|
|
--mandir=/usr/share/man \
|
|
--with-manpage-format=normal \
|
|
--with-shared \
|
|
--without-normal \
|
|
--with-cxx-shared \
|
|
--without-debug \
|
|
--without-ada \
|
|
--disable-stripping \
|
|
--enable-widec
|
|
make
|
|
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
|
|
echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so
|
|
finish
|
|
|
|
# 6.4. Bash-5.1.16
|
|
begin bash-5.1.16 tar.gz
|
|
./configure --prefix=/usr \
|
|
--build=$(support/config.guess) \
|
|
--host=$LFS_TGT \
|
|
--without-bash-malloc
|
|
make
|
|
make DESTDIR=$LFS install
|
|
ln -sv bash $LFS/bin/sh
|
|
finish
|
|
|
|
# 6.5. Coreutils-9.1
|
|
begin coreutils-9.1 tar.xz
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(build-aux/config.guess) \
|
|
--enable-install-program=hostname \
|
|
--enable-no-install-program=kill,uptime
|
|
make
|
|
make DESTDIR=$LFS install
|
|
mv -v $LFS/usr/bin/chroot $LFS/usr/sbin
|
|
mkdir -pv $LFS/usr/share/man/man8
|
|
mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
|
|
sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8
|
|
finish
|
|
|
|
# 6.6. Diffutils-3.8
|
|
begin diffutils-3.8 tar.xz
|
|
./configure --prefix=/usr --host=$LFS_TGT
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.7. File-5.42
|
|
begin file-5.42 tar.gz
|
|
mkdir build
|
|
pushd build
|
|
../configure --disable-bzlib \
|
|
--disable-libseccomp \
|
|
--disable-xzlib \
|
|
--disable-zlib
|
|
make
|
|
popd
|
|
./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
|
|
make FILE_COMPILE=$(pwd)/build/src/file
|
|
make DESTDIR=$LFS install
|
|
rm -v $LFS/usr/lib/libmagic.la
|
|
finish
|
|
|
|
# 6.8. Findutils-4.9.0
|
|
begin findutils-4.9.0 tar.xz
|
|
./configure --prefix=/usr \
|
|
--localstatedir=/var/lib/locate \
|
|
--host=$LFS_TGT \
|
|
--build=$(build-aux/config.guess)
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.9. Gawk-5.1.1
|
|
begin gawk-5.1.1 tar.xz
|
|
sed -i 's/extras//' Makefile.in
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(build-aux/config.guess)
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.10. Grep-3.7
|
|
begin grep-3.7 tar.xz
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.11. Gzip-1.12
|
|
begin gzip-1.12 tar.xz
|
|
./configure --prefix=/usr --host=$LFS_TGT
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.12. Make-4.3
|
|
begin make-4.3 tar.gz
|
|
./configure --prefix=/usr \
|
|
--without-guile \
|
|
--host=$LFS_TGT \
|
|
--build=$(build-aux/config.guess)
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.13. Patch-2.7.6
|
|
begin patch-2.7.6 tar.xz
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(build-aux/config.guess)
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.14. Sed-4.8
|
|
begin sed-4.8 tar.xz
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.15. Tar-1.34
|
|
begin tar-1.34 tar.xz
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(build-aux/config.guess)
|
|
make
|
|
make DESTDIR=$LFS install
|
|
finish
|
|
|
|
# 6.16. Xz-5.2.6
|
|
begin xz-5.2.6 tar.xz
|
|
./configure --prefix=/usr \
|
|
--host=$LFS_TGT \
|
|
--build=$(build-aux/config.guess) \
|
|
--disable-static \
|
|
--docdir=/usr/share/doc/xz-5.2.6
|
|
make
|
|
make DESTDIR=$LFS install
|
|
rm -v $LFS/usr/lib/liblzma.la
|
|
finish
|
|
|
|
# 6.17. Binutils-2.39 - Pass 2
|
|
begin binutils-2.39 tar.xz
|
|
sed '6009s/$add_dir//' -i ltmain.sh
|
|
mkdir -v build
|
|
cd build
|
|
../configure \
|
|
--prefix=/usr \
|
|
--build=$(../config.guess) \
|
|
--host=$LFS_TGT \
|
|
--disable-nls \
|
|
--enable-shared \
|
|
--enable-gprofng=no \
|
|
--disable-werror \
|
|
--enable-64-bit-bfd
|
|
make
|
|
make DESTDIR=$LFS install
|
|
rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.{a,la}
|
|
finish
|
|
|
|
# 6.18. GCC-12.2.0 - Pass 2
|
|
begin gcc-12.2.0 tar.xz
|
|
tar -xf ../mpfr-4.1.0.tar.xz
|
|
mv -v mpfr-4.1.0 mpfr
|
|
tar -xf ../gmp-6.2.1.tar.xz
|
|
mv -v gmp-6.2.1 gmp
|
|
tar -xf ../mpc-1.2.1.tar.gz
|
|
mv -v mpc-1.2.1 mpc
|
|
case $(uname -m) in
|
|
x86_64)
|
|
sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
|
|
;;
|
|
esac
|
|
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
|
|
-i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
|
|
mkdir -v build
|
|
cd build
|
|
../configure \
|
|
--build=$(../config.guess) \
|
|
--host=$LFS_TGT \
|
|
--target=$LFS_TGT \
|
|
LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \
|
|
--prefix=/usr \
|
|
--with-build-sysroot=$LFS \
|
|
--enable-initfini-array \
|
|
--disable-nls \
|
|
--disable-multilib \
|
|
--disable-decimal-float \
|
|
--disable-libatomic \
|
|
--disable-libgomp \
|
|
--disable-libquadmath \
|
|
--disable-libssp \
|
|
--disable-libvtv \
|
|
--enable-languages=c,c++
|
|
make
|
|
make DESTDIR=$LFS install
|
|
ln -sv gcc $LFS/usr/bin/cc
|
|
finish
|