
function handle_debug_install () {
    if [ "$DEBUG" == true ]; then
        echo -e "$CYAN• profile = ${YELLOW}dev$RESET"
        CARGO_ARGS="$CARGO_ARGS --debug"
    else
        echo -e "$CYAN• profile = ${GREEN}release$RESET"
    fi
}

function handle_debug_build () {
    if [ "$DEBUG" == true ]; then
        echo -e "$CYAN• profile = ${YELLOW}dev$RESET"
    else
        echo -e "$CYAN• profile = ${GREEN}release$RESET"
        CARGO_ARGS="$CARGO_ARGS --release"
    fi
}

function handle_pgo () {
    if [ "$PGO" == true ]; then
        echo -e "$CYAN• PGO = ${GREEN}true$RESET"
    else
        echo -e "$CYAN• PGO = ${YELLOW}false$RESET"
    fi
}

function handle_fast_compiler () {
    if [ "$FAST_COMPILER" == true ]; then
        if [ "$DEBUG" != true ]; then
            m 'FAST_COMPILER=true requires DEBUG=true' "$RED"
            exit 1
        fi

        if [ "$NIGHTLY" != true ]; then
            m 'FAST_COMPILER=true requires NIGHTLY=true' "$RED"
            exit 1
        fi

        echo -e "$CYAN• compiler = ${RED}cranelift$RESET"
        export RUSTFLAGS="$RUSTFLAGS -Z codegen-backend=cranelift"
    else
        echo -e "$CYAN• compiler = ${GREEN}default$RESET"
    fi
}

function handle_fast_linker () {
    if [ "$FAST_LINKER" == true ]; then
        if command -v wild > /dev/null 2>&1; then
            LINKER=wild
        elif command -v mold > /dev/null 2>&1; then
            LINKER=mold
        fi

        if [ -n "$LINKER" ]; then
            echo -e "$CYAN• linker = ${RED}$LINKER$RESET"
            export RUSTFLAGS="$RUSTFLAGS --codegen linker=clang --codegen link-arg=--ld-path=$LINKER"
        else
            echo -e "$CYAN• linker = ${GREEN}default$RESET"
        fi
    else
        echo -e "$CYAN• linker = ${GREEN}default$RESET"
    fi
}

function handle_nightly () {
    if [ "$NIGHTLY" == true ]; then
        echo -e "$CYAN• channel = ${RED}nightly$RESET"
        CARGO_CHANNEL=+nightly
        export RUSTFLAGS="$RUSTFLAGS -Z threads=8"
    else
        echo -e "$CYAN• channel = ${GREEN}stable$RESET"
    fi
}
