#!/bin/bash
#
# thomas@linuxmuster.net
# 20231227
#

# read build environment
for item in build/conf.d/*; do source "$item" || exit 1; done

# iterate over kernels
for kvers in ${KVERSARRAY[@]}; do

    # get kernel name & version
    cd "$BUILDROOT"
    source "$KNAMES"
    echo "Processing $R81NAME module for kernel $kvers ..."

    r81dir="$kextmod/$R81NAME"
    r81src="$r81dir/src"
    r81mod="$r81src/$R81NAME.ko"

    # compile r8168 only if it is not already there
    if [ -s "$r81mod" -o -s "$kmodarc" ]; then

        echo " * Skipping r8168 build."

    else

        # get r8168
        echo "Cloning $R81NAME source ..."
        rm -rf "$r81dir"
        cd "$kextmod"
        git clone "$R81GITURL" || exit 1
        cd "$r81dir"
        # apply patches
        if [ -d "$R81PATCHDIR/$kname" ]; then
            for item in $R81PATCHDIR/$kname/*.patch; do
                echo " * Applying $(basename $item) ..."
                patch -p1 < "$item" || exit 1
            done
        fi

        # compile r8168
        echo " * Compiling $R81NAME ..."
        cd "$r81src" || exit 1
        make $J_OPT -C "$ksrc" M="$(pwd)" modules
        [ -s "$r81mod" ] || exit 1

    fi

    [ -n "$KERNELSONLY" ] && continue

    # install r8168
    echo " * Installing $R81NAME ..."
    r81target="$kmoddir/kernel/drivers/net/ethernet/realtek/$(basename "$r81mod")"
    mkdir -p "$(dirname "$r81target")"
    cp "$r81mod" "$r81target" || exit 1

done