| #!/usr/bin/env bash
|
|
|
| set -euo pipefail
|
|
|
| export PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/bin:/usr/lib/llvm/17/bin"
|
| export LD_LIBRARY_PATH=/usr/lib/llvm/17/lib64
|
|
|
| hostname=$(hostname)
|
| installdir="/boot/${hostname}/"
|
|
|
| kernelstring="$(eselect kernel list|grep '*'|awk '{print $2}')"
|
| kernelver="$(sed 's/linux-//' <<< ${kernelstring})-${hostname}"
|
| workdir="/usr/src/linux"
|
| threads=$(nproc)
|
| export COMMON_FLAGS="-O2 -march=native -pipe"
|
| export LDFLAGS="-Wl,-O2 -Wl,--as-needed"
|
| export KCFLAGS="$COMMON_FLAGS"
|
| export KCPPFLAGS="$COMMON_FLAGS"
|
| export LLVM=1
|
| #export LLVM_IAS=1
|
| #export CC="clang"
|
| #export CPP="clang-cpp" # necessary for xorg-server and possibly other packages
|
| #export CXX="clang++"
|
| #export AR="llvm-ar"
|
| #export NM="llvm-nm"
|
| #export RANLIB="llvm-ranlib"
|
| which clang
|
|
|
|
|
| #### do not edit below this line
|
|
|
| scriptdir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
|
| [ $(id -u) -ne 0 ] && echo "Bitte als root ausführen" && exit 1
|
|
|
| [ ! -d /boot/grub ] && echo "Please mount boot first" && exit 1
|
| if [ ! -d /boot/grub ] ;then
|
| sh "${scriptdir}/../md-bootusb/mount_boot.sh"
|
| fi
|
|
|
|
|
| _init_sources() {
|
| echo "Kernel sources updated"
|
| echo "Pasting old last working config..."
|
| cp /usr/src/config-linux{,.bak}
|
| cp /usr/src/config-linux "${workdir}"/.config
|
| }
|
|
|
| _config() {
|
| cd /usr/src/linux
|
| make nconfig
|
| cp .config ../config-linux
|
| }
|
|
|
| _make() {
|
| #make clean
|
| LD="ld -j ${threads}" nice make -j${threads} 2>&1 |tee make.log
|
| }
|
|
|
| _makeprof() {
|
| cd /usr/src/linux
|
| #LD="ld -j ${threads}" nice make CFLAGS_GCOV="-fprofile-generate --coverage -fprofile-values -finline-functions -fipa-bit-cp" -j${threads}
|
| LD="ld -j ${threads}" nice make -j${threads}
|
| }
|
|
|
|
|
| _install() {
|
| cd /usr/src/linux
|
| nice make -j${threads} modules_install
|
| nice make install
|
| find /boot -maxdepth 1 -type f -name "*${hostname}*" -exec mv {} ${installdir} \;
|
| }
|
|
|
| _module_rebuild() {
|
| nice emerge @module-rebuild
|
| }
|
|
|
| _update_grub(){
|
| echo "updating grub..."
|
| sed -i "s/^kernelver.*/kernelver=\"${kernelver}\"/" /boot/grub/${hostname}.cfg
|
| }
|
|
|
| _build_initramfs(){
|
| sh "${scriptdir}/build_initramfs.sh"
|
| }
|
|
|
| _sync_usbboot(){
|
| sh "${scriptdir}/../md-bootusb/sync_usbboot.sh"
|
| }
|
|
|
| _build() {
|
| export INSTALL_MOD_STRIP=1
|
| cd "${workdir}"
|
| _make
|
| _install
|
| _update_grub
|
| _build_initramfs
|
| _module_rebuild
|
| _sync_usbboot
|
| }
|
|
|
| _buildprof() {
|
| cd "${workdir}"
|
| _makeprof
|
| _install
|
| _update_grub
|
| _build_initramfs
|
| _module_rebuild
|
| _sync_usbboot
|
| }
|
|
|
| [[ ! -f "${workdir}/.config" ]] && _init_sources
|
| cd /usr/src/linux
|
|
|
| case ${1:-build} in
|
| build)
|
| _build
|
| ;;
|
| buildprof)
|
| _buildprof
|
| ;;
|
| config)
|
| _config
|
| ;;
|
| install)
|
| _install
|
| _update_grub
|
| _build_initramfs
|
| _module_rebuild
|
| _sync_usbboot
|
| ;;
|
| # strip)
|
| # _strip
|
| # ;;
|
| esac
|