gettext is built

This commit is contained in:
Denis Benato 2024-12-08 19:32:36 +01:00
parent a0d1308b0f
commit 974a1bfcea

256
build.sh
View file

@ -2,6 +2,23 @@
export LINUX_VERSION="6.12.1" export LINUX_VERSION="6.12.1"
# Backup the native environment
export BUILD_CC="$BUILD_CC"
export CC_native="$CC"
export CXX_native="$CXX"
export AS_native="$AS"
export LD_native="$LD"
export AR_native="$AR"
export RANLIB_native="$RANLIB"
export STRIP_native="$STRIP"
export OBJDUMP_native="$OBJDUMP"
export READELF_native="$READELF"
export CFLAGS_native="$CFLAGS_native"
export CPPFLAGS_native="$CPPFLAGS"
export LDFLAGS_native="$LDFLAGS"
export LD_LIBRARY_PATH_native="$LD_LIBRARY_PATH"
export PKG_CONFIG_LIBDIR_native="$PKG_CONFIG_LIBDIR"
# Function to handle errors # Function to handle errors
error_handler() { error_handler() {
local exit_code=$? local exit_code=$?
@ -46,24 +63,7 @@ if [ ! -d "$LFS_TGT" ]; then
echo "Target rootfs set to '$LFS_TGT'. You can override this by setting the LFS_TGT env var." echo "Target rootfs set to '$LFS_TGT'. You can override this by setting the LFS_TGT env var."
fi fi
# test bash bash version-check.sh
bash --version
echo ""
# test rsync
rsync --version
echo ""
# test clang
clang --version
echo ""
# test lld
ld --version
echo ""
make --version
echo ""
export BUILD_MACHINE_TRIPLET=$(gcc -dumpmachine) export BUILD_MACHINE_TRIPLET=$(gcc -dumpmachine)
export TARGET_MACHINE_TRIPLET=$LFS_TGT export TARGET_MACHINE_TRIPLET=$LFS_TGT
@ -83,17 +83,54 @@ export PATH="$LFS_TOOLS/bin/:$PATH"
unset CFLAGS unset CFLAGS
unset LDFLAGS unset LDFLAGS
setup_toolchain() {
export BUILD_CC=gcc
export CC="$LFS_TGT-gcc"
export CXX="$LFS_TGT-g++"
export AS="$LFS_TGT-as"
export LD="$LFS_TGT-ld"
export AR="$LFS_TGT-ar"
export RANLIB="$LFS_TGT-ranlib"
export STRIP="$LFS_TGT-strip"
export OBJDUMP="$LFS_TGT-objdump"
export READELF="$LFS_TGT-readelf"
export CFLAGS=" -U_FORTIFY_SOURCE -O2 -L$LFS_TOOLS/lib -L$LFS/usr/lib -I$LFS_TOOLS/include -I$LFS_TOOLS/$LFS_TGT/include"
export CPPFLAGS=" -U_FORTIFY_SOURCE -O2 -L$LFS_TOOLS/lib -L$LFS/usr/lib -I$LFS_TOOLS/include -I$LFS_TOOLS/$LFS_TGT/include -I$LFS_TOOLS/$LFS_TGT/include/c++/14.2.0/ -I$LFS_TOOLS/$LFS_TGT/include/c++/14.2.0/$LFS_TGT"
export LDFLAGS=" -L$LFS/usr/lib -L$LFS_TOOLS/lib"
export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="$LFS_TOOLS/lib $LFS/usr/lib"
export PKG_CONFIG_LIBDIR="$LFS_TOOLS/lib $LFS/usr/lib"
export SYSROOT="$LFS"
#unset LD_LIBRARY_PATH
}
host_toolchain() {
export BUILD_CC="$BUILD_CC_native"
export CC="$CC_native"
export CXX="$CXX_native"
export AS="$AS_native"
export LD="$LD_native"
export AR="$AR_native"
export RANLIB="$RANLIB_native"
export STRIP="$STRIP_native"
export OBJDUMP="$OBJDUMP_native"
export READELF="$READELF_native"
export CFLAGS="$CFLAGS_native"
export CPPFLAGS="$CPPFLAGS_native"
export LDFLAGS="$LDFLAGS_native"
export PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR_native"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_native"
}
# Create a directory layout # Create a directory layout
if [ ! -d "$LFS/etc" ]; then if [ ! -d "$LFS/etc" ]; then
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin} mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
mkdir -pv $LFS/{dev,proc,sys,run,tmp}
for i in bin lib sbin; do for i in bin lib sbin; do
ln -sv usr/$i $LFS/$i ln -sv usr/$i $LFS/$i
done done
#case $ARCH in
# x86_64) mkdir -pv $LFS/lib64 ;;
#esac
fi fi
# Build binutils # Build binutils
@ -124,12 +161,12 @@ if [ ! -f "$STEPS_DIR/binutils" ]; then
--enable-plugins \ --enable-plugins \
--enable-deterministic-archives \ --enable-deterministic-archives \
--enable-default-hash-style=gnu --enable-default-hash-style=gnu
#make configure-host
make -j 32 make -j 32
make -j 32 install make -j 32 install
cd "$BASE_DIR" cd "$BASE_DIR"
#rm -rf "$LFS_BUILD/binutils" rm -rf "$LFS_BUILD/binutils"
touch "$STEPS_DIR/binutils" touch "$STEPS_DIR/binutils"
fi fi
@ -155,14 +192,6 @@ if [ ! -f "$STEPS_DIR/gcc-step1" ]; then
bash unpack-gcc.sh "$LFS_BUILD/" 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”
# case $(uname -m) in
# x86_64)
# sed -e '/m64=/s/lib64/lib/' \
# -i.orig gcc/config/i386/t-linux64
# ;;
# esac
mkdir -vp build-step1 mkdir -vp build-step1
cd build-step1 cd build-step1
@ -288,12 +317,6 @@ if [ ! -f "$STEPS_DIR/glibc" ]; then
-o $LFS/usr/lib/libc.so -o $LFS/usr/lib/libc.so
touch $LFS/usr/include/gnu/stubs.h touch $LFS/usr/include/gnu/stubs.h
#export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_old"
#make DESTDIR=$LFS install
#make install_root="$pkgdir"/usr/$_target install
#sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
cd "$BASE_DIR" cd "$BASE_DIR"
#rm -rf "$LFS_BUILD/glibc" #rm -rf "$LFS_BUILD/glibc"
touch "$STEPS_DIR/glibc" touch "$STEPS_DIR/glibc"
@ -308,8 +331,8 @@ 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 CFLAGS="-U_FORTIFY_SOURCE -O2 -static "
export LDFLAGS="-Bstatic " export LDFLAGS="-U_FORTIFY_SOURCE -O2 -Bstatic "
if [ ! -f "$STEPS_DIR/gcc-step2" ]; then if [ ! -f "$STEPS_DIR/gcc-step2" ]; then
bash unpack-gcc.sh "$LFS_BUILD/" bash unpack-gcc.sh "$LFS_BUILD/"
@ -394,8 +417,8 @@ 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 CFLAGS="-U_FORTIFY_SOURCE -O2 -static "
export LDFLAGS="-Bstatic " export LDFLAGS="-U_FORTIFY_SOURCE -O2 -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
@ -433,23 +456,12 @@ if [ ! -f "$STEPS_DIR/gcc-step3" ]; then
touch "$STEPS_DIR/gcc-step3" touch "$STEPS_DIR/gcc-step3"
fi fi
# Use the new toolchain ## finish the host toolchain
export BUILD_CC=gcc #host_toolchain
export CC="$LFS_TGT-gcc" #bash "build-host-tools.sh"
export CXX="$LFS_TGT-g++"
export AS="$LFS_TGT-as" # From now on use the new toolchain
export LD="$LFS_TGT-ld" setup_toolchain
export AR="$LFS_TGT-ar"
export RANLIB="$LFS_TGT-ranlib"
export STRIP="$LFS_TGT-strip"
export OBJDUMP="$LFS_TGT-objdump"
export READELF="$LFS_TGT-readelf"
# remove hardening options for building libraries
export CFLAGS="-U_FORTIFY_SOURCE -O2 -L$LFS_TOOLS/lib -L$LFS/usr/lib -I$LFS_TOOLS/include -I$LFS_TOOLS/$LFS_TGT/include"
export CPPFLAGS="-U_FORTIFY_SOURCE -O2 -L$LFS_TOOLS/lib -L$LFS/usr/lib -I$LFS_TOOLS/include -I$LFS_TOOLS/$LFS_TGT/include -I$LFS_TOOLS/$LFS_TGT/include/c++/14.2.0/ -I$LFS_TOOLS/$LFS_TGT/include/c++/14.2.0/$LFS_TGT"
export LDFLAGS="-L$LFS/usr/lib -L$LFS_TOOLS/lib"
export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH"
unset LD_LIBRARY_PATH
# test the cross toolchain # test the cross toolchain
which -- $LFS_TGT-as || echo $LFS_TGT-as is not in the PATH which -- $LFS_TGT-as || echo $LFS_TGT-as is not in the PATH
@ -470,8 +482,8 @@ if [ ! -f "$STEPS_DIR/m4" ]; then
fi fi
cd "$LFS_BUILD/m4" cd "$LFS_BUILD/m4"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
echo "rootsbindir=/usr/sbin" > configparms echo "rootsbindir=/usr/sbin" > configparms
@ -483,7 +495,7 @@ if [ ! -f "$STEPS_DIR/m4" ]; then
make -j 32 make -j 32
make DESTDIR=$LFS install make DESTDIR=$LFS install
"$LFS_TGT-strip" --strip-unneeded $LFS/bin/m4 "$LFS_TGT-strip" --strip-unneeded $LFS/usr/bin/m4
cd "$BASE_DIR" cd "$BASE_DIR"
rm -rf "$LFS_BUILD/m4" rm -rf "$LFS_BUILD/m4"
@ -498,8 +510,8 @@ if [ ! -f "$STEPS_DIR/attr" ]; then
fi fi
cd "$LFS_BUILD/attr" cd "$LFS_BUILD/attr"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
echo "rootsbindir=/usr/sbin" > configparms echo "rootsbindir=/usr/sbin" > configparms
@ -524,8 +536,8 @@ if [ ! -f "$STEPS_DIR/zlib" ]; then
fi fi
cd "$LFS_BUILD/zlib" cd "$LFS_BUILD/zlib"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS --prefix=$LFS
@ -547,8 +559,8 @@ if [ ! -f "$STEPS_DIR/ncurses" ]; then
fi fi
cd "$LFS_BUILD/ncurses" cd "$LFS_BUILD/ncurses"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
# --build=${CLFS_HOST} \ # --build=${CLFS_HOST} \
"../configure" \ "../configure" \
@ -579,8 +591,8 @@ if [ ! -f "$STEPS_DIR/bash" ]; then
fi fi
cd "$LFS_BUILD/bash" cd "$LFS_BUILD/bash"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
# --build=${CLFS_HOST} \ # --build=${CLFS_HOST} \
"../configure" \ "../configure" \
@ -630,8 +642,8 @@ if [ ! -f "$STEPS_DIR/check" ]; then
fi fi
cd "$LFS_BUILD/check" cd "$LFS_BUILD/check"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -655,8 +667,8 @@ if [ ! -f "$STEPS_DIR/coreutils" ]; then
fi fi
cd "$LFS_BUILD/coreutils" cd "$LFS_BUILD/coreutils"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -681,8 +693,8 @@ if [ ! -f "$STEPS_DIR/diffutils" ]; then
fi fi
cd "$LFS_BUILD/diffutils" cd "$LFS_BUILD/diffutils"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -707,8 +719,8 @@ if [ ! -f "$STEPS_DIR/file" ]; then
fi fi
cd "$LFS_BUILD/file" cd "$LFS_BUILD/file"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -732,8 +744,8 @@ if [ ! -f "$STEPS_DIR/findutils" ]; then
fi fi
cd "$LFS_BUILD/findutils" cd "$LFS_BUILD/findutils"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
echo "gl_cv_func_wcwidth_works=yes" > config.cache echo "gl_cv_func_wcwidth_works=yes" > config.cache
echo "ac_cv_func_fnmatch_gnu=yes" >> config.cache echo "ac_cv_func_fnmatch_gnu=yes" >> config.cache
@ -760,8 +772,8 @@ if [ ! -f "$STEPS_DIR/gawk" ]; then
fi fi
cd "$LFS_BUILD/gawk" cd "$LFS_BUILD/gawk"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -787,8 +799,8 @@ if [ ! -f "$STEPS_DIR/grep" ]; then
fi fi
cd "$LFS_BUILD/grep" cd "$LFS_BUILD/grep"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -815,8 +827,8 @@ if [ ! -f "$STEPS_DIR/gzip" ]; then
fi fi
cd "$LFS_BUILD/gzip" cd "$LFS_BUILD/gzip"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -842,8 +854,8 @@ if [ ! -f "$STEPS_DIR/make" ]; then
fi fi
cd "$LFS_BUILD/make" cd "$LFS_BUILD/make"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -867,8 +879,8 @@ if [ ! -f "$STEPS_DIR/libiconv" ]; then
fi fi
cd "$LFS_BUILD/libiconv" cd "$LFS_BUILD/libiconv"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=/usr \ --prefix=/usr \
@ -897,8 +909,8 @@ if [ ! -f "$STEPS_DIR/patch" ]; then
fi fi
cd "$LFS_BUILD/patch" cd "$LFS_BUILD/patch"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS/usr \ --prefix=$LFS/usr \
@ -922,8 +934,8 @@ if [ ! -f "$STEPS_DIR/sed" ]; then
fi fi
cd "$LFS_BUILD/sed" cd "$LFS_BUILD/sed"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
"../configure" \ "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -950,8 +962,8 @@ if [ ! -f "$STEPS_DIR/tar" ]; then
export LDFLAGS_old="$LDFLAGS" export LDFLAGS_old="$LDFLAGS"
export LDFLAGS="$LDFLAGS -liconv" export LDFLAGS="$LDFLAGS -liconv"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
# cat > config.cache << EOF # cat > config.cache << EOF
#gl_cv_func_wcwidth_works=yes #gl_cv_func_wcwidth_works=yes
@ -981,6 +993,44 @@ if [ ! -f "$STEPS_DIR/tar" ]; then
touch "$STEPS_DIR/tar" touch "$STEPS_DIR/tar"
fi fi
## build the rest of gcc
#if [ ! -f "$STEPS_DIR/gcc-final" ]; then
# bash unpack-gcc.sh "$LFS_BUILD/"
# cd "$LFS_BUILD/gcc/"
#
# mkdir -vp build-$LFS_TGT
# cd build-$LFS_TGT
#
# "../configure" \
# --target=$LFS_TGT \
# --host=${BUILD_MACHINE_TRIPLET} \
# --build=${LFS_TGT} \
# --prefix=$LFS \
# --with-glibc-version=2.40 \
# --with-sysroot=$LFS \
# --enable-c99 \
# --enable-long-long \
# --enable-default-pie \
# --enable-default-ssp \
# --disable-nls \
# --disable-multilib \
# --disable-libgomp \
# --disable-libquadmath \
# --disable-libquadmath-support \
# --disable-decimal-float \
# --enable-languages=c,c++
#
# # Reebuild everything now that we have bootstrapped an initial gcc and glibc
# make -j 32 # if build fails add --disable-libsanitizer
# make -j 32 install
#
# cd "$BASE_DIR"
# rm -rf "$LFS_BUILD/gcc"
# touch "$STEPS_DIR/gcc-step3"
#fi
#exit 0
# build gettext # build gettext
if [ ! -f "$STEPS_DIR/gettext" ]; then if [ ! -f "$STEPS_DIR/gettext" ]; then
if [ ! -d "$LFS_BUILD/gettext" ]; then if [ ! -d "$LFS_BUILD/gettext" ]; then
@ -989,10 +1039,10 @@ if [ ! -f "$STEPS_DIR/gettext" ]; then
fi fi
cd "$LFS_BUILD/gettext" cd "$LFS_BUILD/gettext"
EMACS="no" autoreconf -fi #EMACS="no" autoreconf -fi
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
EMACS="no" "../configure" \ EMACS="no" "../configure" \
--prefix=$LFS \ --prefix=$LFS \
@ -1000,8 +1050,10 @@ if [ ! -f "$STEPS_DIR/gettext" ]; then
--build=${BUILD_MACHINE_TRIPLET} \ --build=${BUILD_MACHINE_TRIPLET} \
--disable-shared \ --disable-shared \
--libdir=$LFS/usr/lib \ --libdir=$LFS/usr/lib \
--with-sysroot=$SYSROOT \
--enable-curses \
--cache-file=config.cache --cache-file=config.cache
make -j 32 make -j 32
make -j 32 install make -j 32 install
@ -1019,8 +1071,8 @@ if [ ! -f "$STEPS_DIR/texinfo" ]; then
fi fi
cd "$LFS_BUILD/texinfo" cd "$LFS_BUILD/texinfo"
mkdir -vp build mkdir -vp build-$LFS_TGT
cd build cd build-$LFS_TGT
PERL=/usr/bin/perl \ PERL=/usr/bin/perl \
"../configure" \ "../configure" \