#!/bin/bash
LIBXDP=0
INSTALL=1
CLEAN=0
OBJDUMP=0
HELP=0
STATIC=1

while [[ $# -gt 0 ]]; do
    key="$1"

    case $key in
        --libxdp)
            LIBXDP=1

            shift
            ;;

        --no-install)
            INSTALL=0

            shift
            ;;

        --clean)
            CLEAN=1

            shift
            ;;

        --no-static)
            STATIC=0
            
            shift
            ;;

        --objdump)
            OBJDUMP=1

            shift
            ;;

        --help)
            HELP=1

            shift
            ;;
        *)

            shift
            ;;
        esac
done

if [ "$HELP" -gt 0 ]; then
    echo "Usage: install.sh [OPTIONS]"
    echo
    echo "Options:"
    echo "  --libxdp       Build and install LibXDP before building the tool."
    echo "  --no-install   Build the tool and/or LibXDP without installing them."
    echo "  --clean        Remove build files for the tool and LibXDP."
    echo "  --no-static    Do not statically link LibXDP and LibBPF object files when building the tool and rely on shared libraries (-lbpf and -lxdp flags)."
    echo "  --objdump      Dumps the XDP/BPF object file using 'llvm-objdump' to Assemby into 'objdump.asm'."
    echo "  --help         Display this help message."

    exit 0
fi

if [ "$CLEAN" -gt 0 ]; then
    if [ "$LIBXDP" -gt 0 ]; then
        echo "Cleaning LibXDP..."

        ./scripts/libxdp_clean.sh
    fi

    echo "Cleaning up tool..."

    ./scripts/clean.sh

    exit 0
fi

if [ "$OBJDUMP" -gt 0 ]; then
    echo "Dumping object file..."

    ./scripts/objdump.sh

    exit 0
fi

if [ "$LIBXDP" -gt 0 ]; then
    echo "Building LibXDP..."

    ./scripts/libxdp_build.sh

    if [ "$INSTALL" -gt 0 ]; then
        echo "Installing LibXDP..."

        sudo ./scripts/libxdp_install.sh
    fi
fi

echo "Building tool..."

./scripts/build.sh $STATIC

if [ "$INSTALL" -gt 0 ]; then
    echo "Installing tool..."

    sudo ./scripts/install.sh
fi