1680 lines
No EOL
50 KiB
Bash
Executable file
1680 lines
No EOL
50 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
export LINUX_VERSION="6.12.1"
|
|
|
|
# Backup the native environment
|
|
export BUILD_CC="$BUILD_CC"
|
|
export CC_native="$CC"
|
|
export CPP_native="$CPP"
|
|
export CXX_native="$CXX"
|
|
export AS_native="$AS"
|
|
export LD_native="$LD"
|
|
export AR_native="$AR"
|
|
export NM_native="$NM"
|
|
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 CXXFLAGS_native="$CXXFLAGS"
|
|
export LDFLAGS_native="$LDFLAGS"
|
|
export LD_LIBRARY_PATH_native="$LD_LIBRARY_PATH"
|
|
export PKG_CONFIG_LIBDIR_native="$PKG_CONFIG_LIBDIR"
|
|
|
|
# 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
|
|
|
|
if [ ! -d "./sources" ]; then
|
|
echo "Run this script from the right directory"
|
|
exit 1
|
|
fi
|
|
|
|
export BASE_DIR=$(pwd)
|
|
|
|
if [ -z "$KERNEL_ARCH" ]; then
|
|
echo "You must set a kernel target architecture among supported ones:"
|
|
echo "i386"
|
|
echo "x86_64"
|
|
echo "arm"
|
|
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$TARGET_TRIPLET_ARCH" ] || [ -z "$TARGET_TRIPLET_VENDOR" ] || [ -z "$TARGET_TRIPLET_OS" ] || [ -z "$TARGET_TRIPLET_GNUEABI" ]; then
|
|
echo "You MUST define TARGET_TRIPLET_ARCH, TARGET_TRIPLET_VENDOR, TARGET_TRIPLET_OS and TARGET_TRIPLET_GNUEABI"
|
|
exit 1
|
|
fi
|
|
|
|
export TARGET_MACHINE_TRIPLET="$TARGET_TRIPLET_ARCH-$TARGET_TRIPLET_VENDOR-$TARGET_TRIPLET_OS-$TARGET_TRIPLET_GNUEABI"
|
|
export LFS="$(pwd)/out/$TARGET_MACHINE_TRIPLET/rootfs"
|
|
|
|
bash version-check.sh
|
|
|
|
export BUILD_MACHINE_TRIPLET=$(gcc -dumpmachine)
|
|
|
|
# Create the target directory
|
|
export STEPS_DIR="$LFS/../steps/"
|
|
export TMP_BUILD_DIR="$LFS/../build/"
|
|
export CROSS_TOOLS_DIR="$LFS/tools"
|
|
|
|
mkdir -p "$LFS"
|
|
mkdir -vp "$STEPS_DIR"
|
|
mkdir -vp "$CROSS_TOOLS_DIR"
|
|
mkdir -vp "$TMP_BUILD_DIR"
|
|
|
|
export PATH="$CROSS_TOOLS_DIR/bin/:$PATH"
|
|
|
|
unset CFLAGS
|
|
unset LDFLAGS
|
|
|
|
setup_toolchain() {
|
|
export BUILD_CC=gcc
|
|
export CC="$TARGET_MACHINE_TRIPLET-gcc"
|
|
export CPP="$TARGET_MACHINE_TRIPLET-cpp"
|
|
export CXX="$TARGET_MACHINE_TRIPLET-g++"
|
|
export AS="$TARGET_MACHINE_TRIPLET-as"
|
|
export LD="$TARGET_MACHINE_TRIPLET-ld"
|
|
export AR="$TARGET_MACHINE_TRIPLET-ar"
|
|
export NM="$TARGET_MACHINE_TRIPLET-nm"
|
|
export RANLIB="$TARGET_MACHINE_TRIPLET-ranlib"
|
|
export STRIP="$TARGET_MACHINE_TRIPLET-strip"
|
|
export OBJDUMP="$TARGET_MACHINE_TRIPLET-objdump"
|
|
export READELF="$TARGET_MACHINE_TRIPLET-readelf"
|
|
export CPPFLAGS=""
|
|
export CFLAGS=" $TARGET_ADDITIONAL_CFLAGS -U_FORTIFY_SOURCE -O2 -L$CROSS_TOOLS_DIR/lib -L$LFS/usr/lib -I$CROSS_TOOLS_DIR/include -I$CROSS_TOOLS_DIR/$TARGET_MACHINE_TRIPLET/include"
|
|
export CXXFLAGS=" $TARGET_ADDITIONAL_CFLAGS -U_FORTIFY_SOURCE -O2 -L$CROSS_TOOLS_DIR/lib -L$LFS/usr/lib -I$CROSS_TOOLS_DIR/include -I$CROSS_TOOLS_DIR/$TARGET_MACHINE_TRIPLET/include -I$CROSS_TOOLS_DIR/$TARGET_MACHINE_TRIPLET/include/c++/14.2.0/ -I$CROSS_TOOLS_DIR/$TARGET_MACHINE_TRIPLET/include/c++/14.2.0/$TARGET_MACHINE_TRIPLET"
|
|
export LDFLAGS=" -L$LFS/usr/lib -L$CROSS_TOOLS_DIR/lib"
|
|
export LD_LIBRARY_PATH_old="$LD_LIBRARY_PATH"
|
|
export LD_LIBRARY_PATH="$CROSS_TOOLS_DIR/lib $LFS/usr/lib"
|
|
export PKG_CONFIG_LIBDIR="$CROSS_TOOLS_DIR/lib $LFS/usr/lib"
|
|
export SYSROOT="$LFS"
|
|
#unset LD_LIBRARY_PATH
|
|
|
|
echo "[binaries]" > "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "c = '$CC'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "cpp = '$CPP'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "ar = '$AR'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
#echo "windres = 'x86_64-w64-mingw32-windres'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "strip = '$STRIP'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "exe_wrapper = 'wine64'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "[host_machine]" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "system = 'linux'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "cpu_family = '$CPU_FAMILY'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "cpu = '$CPU'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
echo "endian = '$TARGET_ENDIANNESS'" >> "$CROSS_TOOLS_DIR/meson_cross.txt"
|
|
}
|
|
|
|
host_toolchain() {
|
|
export BUILD_CC="$BUILD_CC_native"
|
|
export CC="$CC_native"
|
|
export CXX="$CXX_native"
|
|
export CPP="$CPP_native"
|
|
export AS="$AS_native"
|
|
export LD="$LD_native"
|
|
export AR="$AR_native"
|
|
export NM="$NM_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 CXXFLAGS="$CXXFLAGS_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
|
|
if [ ! -d "$LFS/etc" ]; then
|
|
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,share}
|
|
mkdir -pv $LFS/{dev,proc,sys,run,tmp}
|
|
|
|
# like archlinux sbin->/usr/bin
|
|
ln -sv usr/bin $LFS/sbin
|
|
ln -sv bin $LFS/usr/sbin
|
|
|
|
for i in bin lib; do
|
|
ln -sv usr/$i $LFS/$i
|
|
done
|
|
fi
|
|
|
|
# Build binutils
|
|
if [ ! -f "$STEPS_DIR/binutils" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/binutils" ]; then
|
|
tar -xf "$BASE_DIR/sources/binutils-2.43.tar.zst"
|
|
mv "binutils-2.43" "$TMP_BUILD_DIR/binutils"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/binutils"
|
|
|
|
mkdir -vp build
|
|
cd build
|
|
"../configure" \
|
|
--prefix=$CROSS_TOOLS_DIR \
|
|
--with-sysroot=$LFS \
|
|
--target=$TARGET_MACHINE_TRIPLET \
|
|
--with-gnu-as \
|
|
--with-gnu-ld \
|
|
--enable-ld=default \
|
|
--enable-shared \
|
|
--disable-nls \
|
|
--enable-gprofng=no \
|
|
--disable-werror \
|
|
--enable-new-dtags \
|
|
--disable-multilib \
|
|
--disable-libquadmath \
|
|
--disable-libquadmath-support \
|
|
--enable-plugins \
|
|
--enable-deterministic-archives \
|
|
--enable-default-hash-style=gnu
|
|
|
|
make -j 32
|
|
make -j 32 install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/binutils"
|
|
touch "$STEPS_DIR/binutils"
|
|
fi
|
|
|
|
# Install kernel headers
|
|
if [ ! -f "$STEPS_DIR/linux-headers" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/linux" ]; then
|
|
tar -xzf "$BASE_DIR/sources/linux-$LINUX_VERSION.tar.gz"
|
|
mv "linux-$LINUX_VERSION" "$TMP_BUILD_DIR/linux"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/linux"
|
|
make mrproper
|
|
make headers_install ARCH="$KERNEL_ARCH" INSTALL_HDR_PATH="$LFS/usr"
|
|
cd "$BASE_DIR"
|
|
#rm -rf "$TMP_BUILD_DIR/linux"
|
|
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 "$TMP_BUILD_DIR/"
|
|
cd "$TMP_BUILD_DIR/gcc/"
|
|
|
|
mkdir -vp build-step1
|
|
cd build-step1
|
|
|
|
"../configure" \
|
|
--target=$TARGET_MACHINE_TRIPLET \
|
|
--host=${BUILD_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--prefix=$CROSS_TOOLS_DIR \
|
|
--with-glibc-version=2.40 \
|
|
--with-sysroot=$LFS \
|
|
--with-newlib \
|
|
--disable-gdbtk \
|
|
--disable-shared \
|
|
--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 all-gcc # if build fails add --disable-libsanitizer
|
|
make -j 32 install-gcc
|
|
make check-gcc RUNTESTFLAGS=--target_board=${TARGET_TRIPLET_ARCH}-sim
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/gcc/build" # Do not remove the whole gcc directory: we need it for libstdc++
|
|
touch "$STEPS_DIR/gcc-step1"
|
|
fi
|
|
|
|
# From now on use
|
|
export BUILD_CC=gcc
|
|
export CC="$TARGET_MACHINE_TRIPLET-gcc"
|
|
export CXX="$TARGET_MACHINE_TRIPLET-g++"
|
|
export AS="$TARGET_MACHINE_TRIPLET-as"
|
|
export LD="$TARGET_MACHINE_TRIPLET-ld"
|
|
export AR="$TARGET_MACHINE_TRIPLET-ar"
|
|
export RANLIB="$TARGET_MACHINE_TRIPLET-ranlib"
|
|
export STRIP="$TARGET_MACHINE_TRIPLET-strip"
|
|
export OBJDUMP="$TARGET_MACHINE_TRIPLET-objdump"
|
|
export LDFLAGS=" -Bstatic "
|
|
# remove hardening options for building libraries
|
|
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
|
|
|
|
# build glibc
|
|
if [ ! -f "$STEPS_DIR/glibc" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/glibc" ]; then
|
|
tar -xzf "$BASE_DIR/sources/glibc-2.40.tar.gz"
|
|
mv "glibc-2.40" "$TMP_BUILD_DIR/glibc"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/glibc"
|
|
|
|
mkdir -vp build
|
|
cd build
|
|
|
|
echo "rootsbindir=/usr/sbin" > configparms
|
|
echo 'slibdir=/lib' >> configparms
|
|
echo 'rtlddir=/lib' >> configparms
|
|
echo 'sbindir=/bin' >> configparms
|
|
echo 'build-programs=no' >> configparms
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--target=$TARGET_MACHINE_TRIPLET \
|
|
--host=$TARGET_MACHINE_TRIPLET \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--with-headers=$LFS/usr/include \
|
|
--with-binutils=$CROSS_TOOLS_DIR/bin \
|
|
--without-cvs \
|
|
--disable-nls \
|
|
--disable-sanity-checks \
|
|
--enable-kernel=4.19 \
|
|
--disable-debug \
|
|
--disable-profile \
|
|
--without-selinux \
|
|
--without-gd \
|
|
--disable-nscd \
|
|
--enable-hacker-mode \
|
|
libc_cv_slibdir=/usr/lib \
|
|
libc_cv_forced_unwind=yes \
|
|
libc_cv_c_cleanup=yes
|
|
|
|
make install-bootstrap-headers=yes install_root=$LFS install-headers
|
|
|
|
make -j4 csu/subdir_lib
|
|
|
|
if [ -f "csu/crt1.o" ]; then
|
|
install csu/crt1.o $LFS/usr/lib
|
|
fi
|
|
|
|
if [ -f "csu/crti.o" ]; then
|
|
install csu/crti.o $LFS/usr/lib
|
|
fi
|
|
|
|
if [ -f "csu/crtn.o" ]; then
|
|
install csu/crtn.o $LFS/usr/lib
|
|
fi
|
|
|
|
if [ -f "csu/Scrt1.o" ]; then
|
|
install csu/Scrt1.o $LFS/usr/lib
|
|
fi
|
|
|
|
if [ -f "csu/crtbeginS.o" ]; then
|
|
install csu/crtbeginS.o $LFS/usr/lib
|
|
fi
|
|
|
|
$TARGET_MACHINE_TRIPLET-gcc \
|
|
-nostdlib \
|
|
-nostartfiles \
|
|
-shared \
|
|
-x c /dev/null \
|
|
-o $LFS/usr/lib/libc.so
|
|
touch $LFS/usr/include/gnu/stubs.h
|
|
|
|
cd "$BASE_DIR"
|
|
#rm -rf "$TMP_BUILD_DIR/glibc"
|
|
touch "$STEPS_DIR/glibc"
|
|
fi
|
|
|
|
unset CC
|
|
unset CXX
|
|
unset LD
|
|
unset AS
|
|
unset AR
|
|
unset RANLIB
|
|
unset STRIP
|
|
unset OBJDUMP
|
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH_old"
|
|
export CFLAGS="-U_FORTIFY_SOURCE -O2 -static "
|
|
export LDFLAGS="-U_FORTIFY_SOURCE -O2 -Bstatic "
|
|
|
|
if [ ! -f "$STEPS_DIR/gcc-step2" ]; then
|
|
bash unpack-gcc.sh "$TMP_BUILD_DIR/"
|
|
cd "$TMP_BUILD_DIR/gcc"
|
|
|
|
mkdir -vp build-step2
|
|
cd build-step2
|
|
|
|
# ../configure is already done
|
|
"../configure" \
|
|
--target=$TARGET_MACHINE_TRIPLET \
|
|
--host=${BUILD_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--prefix=$CROSS_TOOLS_DIR \
|
|
--with-glibc-version=2.40 \
|
|
--with-sysroot=$LFS \
|
|
--enable-c99 \
|
|
--enable-long-long \
|
|
--enable-default-pie \
|
|
--enable-default-ssp \
|
|
--disable-nls \
|
|
--disable-multilib \
|
|
--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 # if build fails add --disable-libsanitizer
|
|
make -j 32 install
|
|
|
|
cd "$BASE_DIR"
|
|
#rm -rf "$TMP_BUILD_DIR/gcc/build" # Do not remove the whole gcc directory: we need it for libstdc++
|
|
touch "$STEPS_DIR/gcc-step2"
|
|
fi
|
|
|
|
unset CFLAGS
|
|
unset LDFLAGS
|
|
|
|
if [ ! -f "$STEPS_DIR/glibc-step2" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/glibc/build" ]; then
|
|
echo "'$TMP_BUILD_DIR/glibc/build' is supposed to exist. Error."
|
|
exit 1
|
|
fi
|
|
cd "$TMP_BUILD_DIR/glibc/build"
|
|
|
|
# Configuration is done already
|
|
|
|
# Remove the stub glibc from before
|
|
rm $LFS/usr/lib/libc.so
|
|
|
|
make -j 32
|
|
make -j 32 install_root=$LFS install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/glibc"
|
|
touch "$STEPS_DIR/glibc-step2"
|
|
fi
|
|
|
|
export CFLAGS="-U_FORTIFY_SOURCE -O2 -static "
|
|
export LDFLAGS="-U_FORTIFY_SOURCE -O2 -Bstatic "
|
|
|
|
# build the rest of gcc
|
|
if [ ! -f "$STEPS_DIR/gcc-step3" ]; then
|
|
bash unpack-gcc.sh "$TMP_BUILD_DIR/"
|
|
cd "$TMP_BUILD_DIR/gcc/"
|
|
|
|
mkdir -vp build-step3
|
|
cd build-step3
|
|
|
|
"../configure" \
|
|
--target=$TARGET_MACHINE_TRIPLET \
|
|
--host=${BUILD_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--prefix=$CROSS_TOOLS_DIR \
|
|
--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
|
|
|
|
#make -j 32 DESTDIR="$LFS" install-target-libgcc
|
|
|
|
cd "$BASE_DIR"
|
|
#rm -rf "$TMP_BUILD_DIR/gcc"
|
|
touch "$STEPS_DIR/gcc-step3"
|
|
fi
|
|
|
|
if [ ! -f "$STEPS_DIR/gcc-final" ]; then
|
|
bash unpack-gcc.sh "$TMP_BUILD_DIR/"
|
|
cd "$TMP_BUILD_DIR/gcc"
|
|
|
|
mkdir -vp build-final
|
|
cd build-final
|
|
|
|
# ../configure is already done
|
|
"../configure" \
|
|
--target=$TARGET_MACHINE_TRIPLET \
|
|
--host=${BUILD_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--prefix=$CROSS_TOOLS_DIR \
|
|
--with-glibc-version=2.40 \
|
|
--with-sysroot=$LFS \
|
|
--enable-c99 \
|
|
--enable-long-long \
|
|
--enable-default-pie \
|
|
--enable-default-ssp \
|
|
--enable-nls \
|
|
--disable-multilib \
|
|
--enable-libatomic \
|
|
--enable-libmudflap \
|
|
--enable-libgomp \
|
|
--enable-libquadmath \
|
|
--enable-libquadmath-support \
|
|
--enable-libssp \
|
|
--enable-libvtv \
|
|
--enable-libstdcxx \
|
|
--enable-decimal-float \
|
|
--enable-languages=c,c++,objc,go
|
|
|
|
make -j 32 # if build fails add --disable-libsanitizer
|
|
make -j 32 install
|
|
|
|
cd "$BASE_DIR"
|
|
#rm -rf "$TMP_BUILD_DIR/gcc/build"
|
|
touch "$STEPS_DIR/gcc-final"
|
|
fi
|
|
|
|
## finish the host toolchain
|
|
#host_toolchain
|
|
#bash "build-host-tools.sh"
|
|
|
|
# From now on use the new toolchain
|
|
setup_toolchain
|
|
|
|
# test the cross toolchain
|
|
which -- $TARGET_MACHINE_TRIPLET-as || echo $TARGET_MACHINE_TRIPLET-as is not in the PATH
|
|
|
|
"$CC" $CFLAGS -std=c11 -xc -latomic testvec.c
|
|
"$READELF" -l a.out | grep ld-linux
|
|
rm -v a.out
|
|
|
|
"$CXX" $CPPFLAGS -xc++ test_compiler.cpp
|
|
"$TARGET_MACHINE_TRIPLET-readelf" -l a.out
|
|
rm -v a.out
|
|
|
|
# build m4
|
|
if [ ! -f "$STEPS_DIR/m4" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/m4" ]; then
|
|
tar -xzf "$BASE_DIR/sources/m4-1.4.19.tar.gz"
|
|
mv "m4-1.4.19" "$TMP_BUILD_DIR/m4"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/m4"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
echo "rootsbindir=/usr/sbin" > configparms
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--host=$TARGET_MACHINE_TRIPLET
|
|
|
|
make -j 32
|
|
make DESTDIR=$LFS install
|
|
|
|
"$TARGET_MACHINE_TRIPLET-strip" --strip-unneeded $LFS/usr/bin/m4
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/m4"
|
|
touch "$STEPS_DIR/m4"
|
|
fi
|
|
|
|
# build attr
|
|
if [ ! -f "$STEPS_DIR/attr" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/attr" ]; then
|
|
tar -xzf "$BASE_DIR/sources/attr-2.5.2.tar.gz"
|
|
mv "attr-2.5.2" "$TMP_BUILD_DIR/attr"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/attr"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
echo "rootsbindir=/usr/bin" > configparms
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--with-sysroot=${LFS} \
|
|
--disable-static \
|
|
--host=$TARGET_MACHINE_TRIPLET
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/attr"
|
|
touch "$STEPS_DIR/attr"
|
|
fi
|
|
|
|
# build zlib
|
|
if [ ! -f "$STEPS_DIR/zlib" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/zlib" ]; then
|
|
tar -xzf "$BASE_DIR/sources/zlib-1.3.1.tar.gz"
|
|
mv "zlib-1.3.1" "$TMP_BUILD_DIR/zlib"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/zlib"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
export CFLAGS_old="$CFLAGS"
|
|
export CFLAGS+=" -ffat-lto-objects"
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--enable-shared
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
export CFLAGS="$CFLAGS_old"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/zlib"
|
|
touch "$STEPS_DIR/zlib"
|
|
fi
|
|
|
|
# build openssl
|
|
if [ ! -f "$STEPS_DIR/openssl" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/openssl" ]; then
|
|
tar -xf "$BASE_DIR/sources/openssl-3.4.0.tar.gz"
|
|
mv "openssl-3.4.0" "$TMP_BUILD_DIR/openssl"
|
|
cd "$TMP_BUILD_DIR/openssl"
|
|
cp $BASE_DIR/sources/openssl-ca-dir.patch .
|
|
patch -Np1 -i "./openssl-ca-dir.patch"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/openssl"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
# TODO: # enable-ec_nistp_64_gcc_128
|
|
"../Configure" \
|
|
--prefix=/usr \
|
|
--openssldir=/etc/ssl \
|
|
--libdir=/usr/lib \
|
|
shared zlib enable-ktls "${OPENSSL_ARCH}"
|
|
|
|
make -j 32 depend apps/CA.pl
|
|
make -j 32 all
|
|
make -j 32 DESTDIR="$LFS" MANDIR=/usr/share/man MANSUFFIX=ssl install_sw install_ssldirs install_man_docs
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/openssl"
|
|
touch "$STEPS_DIR/openssl"
|
|
fi
|
|
|
|
# build libxcrypt
|
|
if [ ! -f "$STEPS_DIR/libxcrypt" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/libxcrypt" ]; then
|
|
tar -xf "$BASE_DIR/sources/libxcrypt-4.4.36.tar.xz"
|
|
mv "libxcrypt-4.4.36" "$TMP_BUILD_DIR/libxcrypt"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/libxcrypt"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--disable-static \
|
|
--enable-hashes=strong,glibc \
|
|
--with-sysroot=${LFS} \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-obsolete-api=no \
|
|
--disable-failure-tokens \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR=$LFS install
|
|
|
|
#cd ..
|
|
#mkdir -vp build-compat-$TARGET_MACHINE_TRIPLET
|
|
#cd build-compat-$TARGET_MACHINE_TRIPLET
|
|
|
|
#"../configure" \
|
|
# --prefix=/usr \
|
|
# --disable-static \
|
|
# --enable-hashes=strong,glibc \
|
|
# --with-sysroot=${LFS} \
|
|
# --host=${TARGET_MACHINE_TRIPLET} \
|
|
# --build=${BUILD_MACHINE_TRIPLET} \
|
|
# --enable-obsolete-api=glibc \
|
|
# --disable-failure-tokens \
|
|
# --cache-file=config.cache
|
|
|
|
# DO NOT MAKE: check archlinux package!
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/libxcrypt"
|
|
touch "$STEPS_DIR/libxcrypt"
|
|
fi
|
|
|
|
# build ncurses
|
|
# TODO: fix symlink!!!
|
|
if [ ! -f "$STEPS_DIR/ncurses" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/ncurses" ]; then
|
|
tar -xzf "$BASE_DIR/sources/ncurses.tar.gz"
|
|
mv "ncurses-6.3" "$TMP_BUILD_DIR/ncurses"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/ncurses"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
# --with-cxx-binding no c++?
|
|
# --with-cxx-shared no c++?
|
|
# --disable-stripping does not work for all architectures because the system strip is used
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
--libdir=/usr/lib \
|
|
--sbindir=/usr/bin \
|
|
--without-manpages \
|
|
--with-shared \
|
|
--without-normal \
|
|
--disable-stripping \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--without-debug \
|
|
--enable-pc-files \
|
|
--disable-setuid-environ \
|
|
--disable-root-environ \
|
|
--disable-root-access \
|
|
--with-versioned-syms \
|
|
--without-ada \
|
|
--enable-overwrite \
|
|
--with-build-cc=gcc \
|
|
--with-pkg-config-libdir=/usr/lib/pkgconfig
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd ..
|
|
|
|
mkdir -vp build-widec-$TARGET_MACHINE_TRIPLET
|
|
cd build-widec-$TARGET_MACHINE_TRIPLET
|
|
|
|
# --with-cxx-binding no c++?
|
|
# --with-cxx-shared no c++?
|
|
# --without-normal will make readline error
|
|
# --disable-stripping # this must go away
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
--libdir=/usr/lib \
|
|
--sbindir=/usr/bin \
|
|
--mandir=/usr/share/man \
|
|
--with-manpage-format=normal \
|
|
--with-shared \
|
|
--without-normal \
|
|
--disable-stripping \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--without-debug \
|
|
--enable-pc-files \
|
|
--enable-widec \
|
|
--disable-setuid-environ \
|
|
--disable-root-environ \
|
|
--disable-root-access \
|
|
--with-versioned-syms \
|
|
--without-ada \
|
|
--enable-overwrite \
|
|
--with-build-cc=gcc \
|
|
--with-pkg-config-libdir=/usr/lib/pkgconfig
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/ncurses"
|
|
touch "$STEPS_DIR/ncurses"
|
|
fi
|
|
|
|
# build readline (depends on libncurses)
|
|
if [ ! -f "$STEPS_DIR/readline" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/readline" ]; then
|
|
tar -xf "$BASE_DIR/sources/readline-8.2.13.tar.gz"
|
|
mv "readline-8.2.13" "$TMP_BUILD_DIR/readline"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/readline"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--prefix=/usr \
|
|
--with-curses \
|
|
--enable-static=no \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32 SHLIB_LIBS=-lncurses
|
|
make -j 32 DESTDIR=$LFS install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/readline"
|
|
touch "$STEPS_DIR/readline"
|
|
fi
|
|
|
|
# build bash
|
|
if [ ! -f "$STEPS_DIR/bash" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/bash" ]; then
|
|
tar -xzf "$BASE_DIR/sources/bash-5.2.tar.gz"
|
|
mv "bash-5.2" "$TMP_BUILD_DIR/bash"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/bash"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
_bashconfig=(-DDEFAULT_PATH_VALUE=\'\"/usr/local/sbin:/usr/local/bin:/usr/bin\"\'
|
|
-DSTANDARD_UTILS_PATH=\'\"/usr/bin\"\'
|
|
-DSYS_BASHRC=\'\"/etc/bash.bashrc\"\'
|
|
-DSYS_BASH_LOGOUT=\'\"/etc/bash.bash_logout\"\'
|
|
-DNON_INTERACTIVE_LOGIN_SHELLS)
|
|
export CFLAGS_old="$CFLAGS"
|
|
export CFLAGS="${CFLAGS} ${_bashconfig[@]}"
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--without-bash-malloc \
|
|
--enable-threads \
|
|
--enable-readline \
|
|
--with-curses
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
export CFLAGS="$CFLAGS_old"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/bash"
|
|
touch "$STEPS_DIR/bash"
|
|
fi
|
|
|
|
# build bzip2
|
|
if [ ! -f "$STEPS_DIR/bzip2" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/bzip2" ]; then
|
|
tar -xzf "$BASE_DIR/sources/bzip2-1.0.8.tar.gz"
|
|
mv "bzip2-1.0.8" "$TMP_BUILD_DIR/bzip2"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/bzip2"
|
|
|
|
make CC="${CC} ${CFLAGS}" AR="${AR}" RANLIB="${RANLIB}" LD="${LD} ${LDFLAGS}" -j 32 PREFIX="$LFS/usr" install
|
|
|
|
if [ -f "$LFS/bin/bzip2" ]; then
|
|
"$TARGET_MACHINE_TRIPLET-strip" --strip-unneeded "$LFS/bin/bzip2"
|
|
else
|
|
echo "Where is the bzip2 executable? It was there for bash 1.0.8!"
|
|
exit 1
|
|
fi
|
|
|
|
# Remove useless doc out of dir
|
|
rm -rf "$LFS/man"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/bzip2"
|
|
touch "$STEPS_DIR/bzip2"
|
|
fi
|
|
|
|
# build check
|
|
if [ ! -f "$STEPS_DIR/check" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/check" ]; then
|
|
tar -xzf "$BASE_DIR/sources/check-0.15.2.tar.gz"
|
|
mv "check-0.15.2" "$TMP_BUILD_DIR/check"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/check"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--libdir=/lib
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/check"
|
|
touch "$STEPS_DIR/check"
|
|
fi
|
|
|
|
# build coreutils
|
|
if [ ! -f "$STEPS_DIR/coreutils" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/coreutils" ]; then
|
|
tar -xzf "$BASE_DIR/sources/coreutils-9.5.tar.gz"
|
|
mv "coreutils-9.5" "$TMP_BUILD_DIR/coreutils"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/coreutils"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--libexecdir=/usr/lib \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-install-program=hostname \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/coreutils"
|
|
touch "$STEPS_DIR/coreutils"
|
|
fi
|
|
|
|
# build diffutils
|
|
if [ ! -f "$STEPS_DIR/diffutils" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/diffutils" ]; then
|
|
tar -xf "$BASE_DIR/sources/diffutils-3.10.tar.xz"
|
|
mv "diffutils-3.10" "$TMP_BUILD_DIR/diffutils"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/diffutils"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=$LFS \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-install-program=hostname \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/diffutils"
|
|
touch "$STEPS_DIR/diffutils"
|
|
fi
|
|
|
|
# build libseccomp
|
|
if [ ! -f "$STEPS_DIR/libseccomp" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/libseccomp" ]; then
|
|
tar -xf "$BASE_DIR/sources/libseccomp-2.5.5.tar.gz"
|
|
mv "libseccomp-2.5.5" "$TMP_BUILD_DIR/libseccomp"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/libseccomp"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-static=no \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/libseccomp"
|
|
touch "$STEPS_DIR/libseccomp"
|
|
fi
|
|
|
|
# build file
|
|
if [ ! -f "$STEPS_DIR/file" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/file" ]; then
|
|
tar -xf "$BASE_DIR/sources/file-5.46.tar.gz"
|
|
mv "file-5.46" "$TMP_BUILD_DIR/file"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/file"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--libdir=/usr/lib \
|
|
--datadir=/usr/share/file \
|
|
--with-sysroot=$LFS \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-libseccomp \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/file"
|
|
touch "$STEPS_DIR/file"
|
|
fi
|
|
|
|
# build findutils
|
|
if [ ! -f "$STEPS_DIR/findutils" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/findutils" ]; then
|
|
tar -xf "$BASE_DIR/sources/findutils-4.10.0.tar.xz"
|
|
mv "findutils-4.10.0" "$TMP_BUILD_DIR/findutils"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/findutils"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
echo "gl_cv_func_wcwidth_works=yes" > config.cache
|
|
echo "ac_cv_func_fnmatch_gnu=yes" >> config.cache
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/findutils"
|
|
touch "$STEPS_DIR/findutils"
|
|
fi
|
|
|
|
# build gawk
|
|
if [ ! -f "$STEPS_DIR/gawk" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/gawk" ]; then
|
|
tar -xf "$BASE_DIR/sources/gawk-5.3.1.tar.xz"
|
|
mv "gawk-5.3.1" "$TMP_BUILD_DIR/gawk"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/gawk"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--libexecdir=/usr/lib \
|
|
--sysconfdir=/etc \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--without-libsigsegv \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
"$STRIP" --strip-unneeded "$LFS/bin/gawk"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/gawk"
|
|
touch "$STEPS_DIR/gawk"
|
|
fi
|
|
|
|
# build grep
|
|
if [ ! -f "$STEPS_DIR/grep" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/grep" ]; then
|
|
tar -xf "$BASE_DIR/sources/grep-3.11.tar.xz"
|
|
mv "grep-3.11" "$TMP_BUILD_DIR/grep"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/grep"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--without-included-regex \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
"$STRIP" --strip-unneeded "$LFS/bin/grep"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/grep"
|
|
touch "$STEPS_DIR/grep"
|
|
fi
|
|
|
|
# build gzip
|
|
if [ ! -f "$STEPS_DIR/gzip" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/gzip" ]; then
|
|
tar -xf "$BASE_DIR/sources/gzip-1.13.tar.xz"
|
|
mv "gzip-1.13" "$TMP_BUILD_DIR/gzip"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/gzip"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=$LFS \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 install
|
|
|
|
"$STRIP" --strip-unneeded "$LFS/bin/gzip"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/gzip"
|
|
touch "$STEPS_DIR/gzip"
|
|
fi
|
|
|
|
# build make
|
|
if [ ! -f "$STEPS_DIR/make" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/make" ]; then
|
|
tar -xf "$BASE_DIR/sources/make-4.4.1.tar.gz"
|
|
mv "make-4.4.1" "$TMP_BUILD_DIR/make"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/make"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/make"
|
|
touch "$STEPS_DIR/make"
|
|
fi
|
|
|
|
# build libiconv
|
|
if [ ! -f "$STEPS_DIR/libiconv" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/libiconv" ]; then
|
|
tar -xf "$BASE_DIR/sources/libiconv-1.17.tar.gz"
|
|
mv "libiconv-1.17" "$TMP_BUILD_DIR/libiconv"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/libiconv"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-extra-encodings \
|
|
--cache-file=config.cache
|
|
|
|
# workaround for insecure rpath
|
|
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
|
|
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/libiconv"
|
|
touch "$STEPS_DIR/libiconv"
|
|
fi
|
|
|
|
# build patch
|
|
if [ ! -f "$STEPS_DIR/patch" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/patch" ]; then
|
|
tar -xf "$BASE_DIR/sources/patch-2.7.6.tar.gz"
|
|
mv "patch-2.7.6" "$TMP_BUILD_DIR/patch"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/patch"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/patch"
|
|
touch "$STEPS_DIR/patch"
|
|
fi
|
|
|
|
# build sed
|
|
if [ ! -f "$STEPS_DIR/sed" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/sed" ]; then
|
|
tar -xf "$BASE_DIR/sources/sed-4.9.tar.xz"
|
|
mv "sed-4.9" "$TMP_BUILD_DIR/sed"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/sed"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
"$TARGET_MACHINE_TRIPLET-strip" --strip-unneeded "$LFS/bin/sed"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/sed"
|
|
touch "$STEPS_DIR/sed"
|
|
fi
|
|
|
|
# build tar
|
|
if [ ! -f "$STEPS_DIR/tar" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/tar" ]; then
|
|
tar -xf "$BASE_DIR/sources/tar-1.35.tar.xz"
|
|
mv "tar-1.35" "$TMP_BUILD_DIR/tar"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/tar"
|
|
|
|
export LDFLAGS_old="$LDFLAGS"
|
|
export LDFLAGS="$LDFLAGS -liconv"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
# cat > config.cache << EOF
|
|
#gl_cv_func_wcwidth_works=yes
|
|
#gl_cv_func_btowc_eof=yes
|
|
#ac_cv_func_malloc_0_nonnull=yes
|
|
#gl_cv_func_mbrtowc_incomplete_state=yes
|
|
#gl_cv_func_mbrtowc_nul_retval=yes
|
|
#gl_cv_func_mbrtowc_null_arg1=yes
|
|
#gl_cv_func_mbrtowc_null_arg2=yes
|
|
#gl_cv_func_mbrtowc_retval=yes
|
|
#gl_cv_func_wcrtomb_retval=yes
|
|
#EOF
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--sbindir=/usr/bin \
|
|
--libexecdir=/usr/lib/tar \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-backup-scripts \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
"$TARGET_MACHINE_TRIPLET-strip" --strip-unneeded "$LFS/bin/tar"
|
|
|
|
export LDFLAGS="$LDFLAGS_old"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/tar"
|
|
touch "$STEPS_DIR/tar"
|
|
fi
|
|
|
|
## build the rest of gcc
|
|
#if [ ! -f "$STEPS_DIR/gcc-final" ]; then
|
|
# bash unpack-gcc.sh "$TMP_BUILD_DIR/"
|
|
# cd "$TMP_BUILD_DIR/gcc/"
|
|
#
|
|
# mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
# cd build-$TARGET_MACHINE_TRIPLET
|
|
#
|
|
# "../configure" \
|
|
# --target=$TARGET_MACHINE_TRIPLET \
|
|
# --host=${BUILD_MACHINE_TRIPLET} \
|
|
# --build=${TARGET_MACHINE_TRIPLET} \
|
|
# --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 "$TMP_BUILD_DIR/gcc"
|
|
# touch "$STEPS_DIR/gcc-step3"
|
|
#fi
|
|
#exit 0
|
|
|
|
# build xz-utils
|
|
if [ ! -f "$STEPS_DIR/xz" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/xz" ]; then
|
|
tar -xf "$BASE_DIR/sources/xz-5.6.3.tar.xz"
|
|
mv "xz-5.6.3" "$TMP_BUILD_DIR/xz"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/xz"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--disable-static \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR=$LFS install
|
|
|
|
# Remove the libtool archive file because it is harmful for cross compilation
|
|
#rm -v $LFS/usr/lib/liblzma.la
|
|
|
|
"$TARGET_MACHINE_TRIPLET-strip" --strip-unneeded "$LFS/bin/xz"
|
|
"$TARGET_MACHINE_TRIPLET-strip" --strip-unneeded "$LFS/bin/xzdec"
|
|
"$TARGET_MACHINE_TRIPLET-strip" --strip-unneeded "$LFS/bin/xzcat"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/xz"
|
|
touch "$STEPS_DIR/xz"
|
|
fi
|
|
|
|
# build gettext
|
|
if [ ! -f "$STEPS_DIR/gettext" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/gettext" ]; then
|
|
tar -xf "$BASE_DIR/sources/gettext-0.23.tar.gz"
|
|
mv "gettext-0.23" "$TMP_BUILD_DIR/gettext"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/gettext"
|
|
|
|
#EMACS="no" autoreconf -fi
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
EMACS="no" "../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--disable-shared \
|
|
--libdir=/usr/lib \
|
|
--with-sysroot=$SYSROOT \
|
|
--enable-nls \
|
|
--enable-curses \
|
|
--with-xz \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/gettext"
|
|
touch "$STEPS_DIR/gettext"
|
|
fi
|
|
|
|
# build acl
|
|
if [ ! -f "$STEPS_DIR/acl" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/acl" ]; then
|
|
tar -xf "$BASE_DIR/sources/acl-2.3.2.tar.xz"
|
|
mv "acl-2.3.2" "$TMP_BUILD_DIR/acl"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/acl"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--libexecdir=/usr/lib \
|
|
--libdir=/usr/lib \
|
|
--with-sysroot=${LFS} \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--disable-static \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR=$LFS install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/acl"
|
|
touch "$STEPS_DIR/acl"
|
|
fi
|
|
|
|
# build pcre2
|
|
if [ ! -f "$STEPS_DIR/pcre2" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/pcre2" ]; then
|
|
tar -xf "$BASE_DIR/sources/pcre2-10.44.tar.bz2"
|
|
mv "pcre2-10.44" "$TMP_BUILD_DIR/pcre2"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/pcre2"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
export CFLAGS_old="$CFLAGS"
|
|
export CXXFLAGS_old="$CXXFLAGS"
|
|
# use fat LTO objects for static libraries
|
|
CFLAGS+=" -ffat-lto-objects"
|
|
CXXFLAGS+=" -ffat-lto-objects"
|
|
|
|
# WARNING: using prefix with LFS is a VERY BIG WORKAROUND!!!
|
|
"../configure" \
|
|
--with-sysroot=${LFS} \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--prefix=${LFS}/usr \
|
|
--enable-shared \
|
|
--enable-static=no \
|
|
--enable-jit \
|
|
--enable-pcre2-16 \
|
|
--enable-pcre2-32 \
|
|
--enable-pcre2grep-libbz2 \
|
|
--enable-pcre2grep-libz \
|
|
--enable-pcre2test-libreadline \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 install
|
|
|
|
export CFLAGS="$CFLAGS_old"
|
|
export CXXFLAGS="$CXXFLAGS_old"
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/pcre2"
|
|
touch "$STEPS_DIR/pcre2"
|
|
fi
|
|
|
|
# build swig
|
|
if [ ! -f "$STEPS_DIR/swig" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/swig" ]; then
|
|
tar -xf "$BASE_DIR/sources/swig-4.3.0.tar.gz"
|
|
mv "swig-4.3.0" "$TMP_BUILD_DIR/swig"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/swig"
|
|
|
|
"./autogen.sh"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
"../configure" \
|
|
--with-sysroot=${LFS} \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--prefix=/usr \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/swig"
|
|
touch "$STEPS_DIR/swig"
|
|
fi
|
|
|
|
# build libcap-ng (needs swig)
|
|
if [ ! -f "$STEPS_DIR/libcap-ng" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/libcap-ng" ]; then
|
|
tar -xf "$BASE_DIR/sources/libcap-ng-0.8.5.tar.gz"
|
|
mv "libcap-ng-0.8.5" "$TMP_BUILD_DIR/libcap-ng"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/libcap-ng"
|
|
|
|
# this workaround comes straight from archlinux
|
|
# make stupid autotools happy -_-
|
|
touch NEWS
|
|
|
|
autoreconf -fiv
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
# --enable-zos-remote requires libldap
|
|
"../configure" \
|
|
--with-sysroot=${LFS} \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--prefix=/usr \
|
|
--without-python \
|
|
--without-python3 \
|
|
--enable-static=no \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR=$LFS install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/libcap-ng"
|
|
touch "$STEPS_DIR/libcap-ng"
|
|
fi
|
|
|
|
# build audit
|
|
if [ ! -f "$STEPS_DIR/audit-userspace" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/audit-userspace" ]; then
|
|
tar -xf "$BASE_DIR/sources/audit-userspace-4.0.2.tar.gz"
|
|
mv "audit-userspace-4.0.2" "$TMP_BUILD_DIR/audit-userspace"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/audit-userspace"
|
|
|
|
autoreconf -fiv
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
# --with-arm
|
|
# --enable-zos-remote requires libldap
|
|
"../configure" \
|
|
--with-sysroot=${LFS} \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-gssapi-krb5=no \
|
|
--enable-systemd=no \
|
|
--disable-zos-remote \
|
|
--libexecdir=/usr/lib/audit \
|
|
--prefix=/usr \
|
|
--runstatedir=/run \
|
|
--sbindir=/usr/bin \
|
|
--sysconfdir=/etc \
|
|
--with-apparmor=no \
|
|
--with-io_uring=yes \
|
|
--with-libcap-ng=yes \
|
|
--with-python3=no \
|
|
--disable-static \
|
|
--cache-file=config.cache
|
|
|
|
make -j 32
|
|
make -j 32 DESTDIR=$LFS install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/audit-userspace"
|
|
touch "$STEPS_DIR/audit-userspace"
|
|
fi
|
|
|
|
# build libcap2
|
|
if [ ! -f "$STEPS_DIR/libcap2" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/libcap2" ]; then
|
|
tar -xzf "$BASE_DIR/sources/libcap-2.73.tar.gz"
|
|
mv "libcap-2.73" "$TMP_BUILD_DIR/libcap2"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/libcap2"
|
|
|
|
mkdir -vp build
|
|
cd build
|
|
|
|
# NOTE: with CGO_ENABLED we need all relevant make options in build(), check() and package() otherwise the package is not reproducible
|
|
_common_make_options=(
|
|
CGO_CPPFLAGS="$CPPFLAGS"
|
|
CGO_CFLAGS="$CFLAGS"
|
|
CGO_CXXFLAGS="$CXXFLAGS"
|
|
CGO_LDFLAGS="$LDFLAGS"
|
|
CGO_REQUIRED="1"
|
|
GOFLAGS="-buildmode=pie -mod=readonly -modcacherw"
|
|
GO_BUILD_FLAGS="-ldflags '-compressdwarf=false -linkmode=external'"
|
|
)
|
|
|
|
|
|
make_options=(
|
|
"${_common_make_options[@]}"
|
|
DYNAMIC=yes
|
|
KERNEL_HEADERS=/usr/include
|
|
lib=lib
|
|
prefix=/usr
|
|
sbindir=bin
|
|
-C ..
|
|
)
|
|
|
|
make "${make_options[@]}"
|
|
|
|
export GOPATH="$srcdir"
|
|
|
|
make_options=(
|
|
"${_common_make_options[@]}"
|
|
DESTDIR="$LFS"
|
|
RAISE_SETFCAP=no
|
|
lib=lib
|
|
prefix=/usr
|
|
sbindir=bin
|
|
install
|
|
-C ..
|
|
)
|
|
|
|
make "${make_options[@]}"
|
|
|
|
cd "$BASE_DIR"
|
|
|
|
touch "$STEPS_DIR/libcap2"
|
|
fi
|
|
|
|
# build systemd
|
|
if [ ! -f "$STEPS_DIR/systemd" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/systemd" ]; then
|
|
tar -xf "$BASE_DIR/sources/systemd-257.2.tar.gz"
|
|
mv "systemd-257.2" "$TMP_BUILD_DIR/systemd"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/systemd"
|
|
|
|
LANG=en_US.UTF-8 \
|
|
meson --prefix=/usr \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
-Dblkid=enabled \
|
|
-Dbuildtype=release \
|
|
-Ddefault-dnssec=no \
|
|
-Dfirstboot=false \
|
|
-Dinstall-tests=false \
|
|
-Dkmod-path=/bin/kmod \
|
|
-Dldconfig=false \
|
|
-Dmount-path=/bin/mount \
|
|
-Drootprefix= \
|
|
-Drootlibdir=/lib \
|
|
-Dsplit-usr=true \
|
|
-Dsulogin-path=/sbin/sulogin \
|
|
-Dsysusers=false \
|
|
-Dumount-path=/bin/umount \
|
|
-Db_lto=false \
|
|
-Drpmmacrosdir=no \
|
|
. --cross-file "$CROSS_TOOLS_DIR/meson_cross.txt" build-$TARGET_MACHINE_TRIPLET
|
|
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/systemd"
|
|
#touch "$STEPS_DIR/systemd"
|
|
fi
|
|
|
|
for f in "$LFS"/usr/bin/*; do
|
|
if "$READELF" -h $f | grep -Fq "Executable"; then
|
|
echo "Stripping $f..."
|
|
"$STRIP" -s "$f"
|
|
fi
|
|
done
|
|
|
|
# Postpone texinfo
|
|
exit 0
|
|
|
|
# build texinfo
|
|
if [ ! -f "$STEPS_DIR/texinfo" ]; then
|
|
if [ ! -d "$TMP_BUILD_DIR/texinfo" ]; then
|
|
tar -xf "$BASE_DIR/sources/texinfo-7.1.1.tar.xz"
|
|
mv "texinfo-7.1.1" "$TMP_BUILD_DIR/texinfo"
|
|
fi
|
|
cd "$TMP_BUILD_DIR/texinfo"
|
|
|
|
mkdir -vp build-$TARGET_MACHINE_TRIPLET
|
|
cd build-$TARGET_MACHINE_TRIPLET
|
|
|
|
# cat > config.cache << EOF
|
|
#gl_replace_getopt=no
|
|
#am_func_iconv=no
|
|
#ac_cv_func_calloc_0_nonnull=no
|
|
#gl_cv_func_getopt_posix=no
|
|
#ac_fn_c_try_run=no
|
|
#EOF
|
|
|
|
PERL=/usr/bin/perl \
|
|
"../configure" \
|
|
--prefix=/usr \
|
|
--host=${TARGET_MACHINE_TRIPLET} \
|
|
--build=${BUILD_MACHINE_TRIPLET} \
|
|
--enable-cross-guesses=conservative \
|
|
--enable-year2038 \
|
|
--cache-file=config.cache
|
|
|
|
#make -j 32
|
|
#make -j 32 DESTDIR="$LFS" install
|
|
|
|
cd "$BASE_DIR"
|
|
rm -rf "$TMP_BUILD_DIR/texinfo"
|
|
touch "$STEPS_DIR/texinfo"
|
|
fi
|
|
|
|
|
|
|
|
#"$TARGET_MACHINE_TRIPLET-strip" --strip-unneeded $LFS/bin/*
|
|
|
|
|
|
|
|
# Remove man pages: totally useless
|
|
rm -rf "$LFS"/usr/share/man
|
|
rm -rf "$LFS"/man
|
|
|
|
# Right now I have no idea if g++ will build crap. |