#!/bin/sh

set -e
set -x

echo "First source all variables and THEN run this script"
read something

SUFFIX=""
if [ $# -ge 1 ]; then
    SUFFIX="-$1"
fi

LOG=~/master-thesis/netpfga/log/compile-$(date +%F-%H%M%S)$SUFFIX

(

# Step 1..3: create code
# Step 4:
date
cd $P4_PROJECT_DIR && make

# Step 5: sdnet simulation
date
cd $P4_PROJECT_DIR/nf_sume_sdnet_ip/SimpleSumeSwitch && ./vivado_sim.bash

expected_line=$(grep ^expected "$LOG" | sed -e 's/.*= <//' -e 's/.*= (//')
actual_line=$(grep ^actual "$LOG"     | sed -e 's/.*= <//' -e 's/.*= (//')

# if [ -z "$expected_line" ]; then
#     echo "Empty packet grep -- probably broken - aborting"
#     exit 1
# fi

# Disabled -- seems not to be relevant in the end - 2019-07-28
# if [ "$expected_line" != "$actual_line" ]; then
#     echo packet mismatch
#     exit 1
# fi

# Step 6: calls ${SUME_SDNET}/bin/gen_config_writes.py and generates SOMETHING
date
cd $P4_PROJECT_DIR && make config_writes

# Step 7: copies directory SDNET_OUT_DIR to TARGET and copies other dirs
date
cd $P4_PROJECT_DIR && make uninstall_sdnet && make install_sdnet

# Step 8: copies "config_writes.py" to the current dir - related to step 6
date
cd $NF_DESIGN_DIR/test/sim_switch_default && make

# -------- FIX config_writes.py here: add "    pass" or overwrite whole script

# Step 9: Run the SUME simulation
date
cd $SUME_FOLDER && ./tools/scripts/nf_test.py sim --major switch --minor default

# Step 10: long compile step
date
if [ "$something" = no ]; then
    :
else
    cd $NF_DESIGN_DIR && make
fi

# Step 11: (nothing to be done)

# Step 12:
date
cd $NF_DESIGN_DIR/bitfiles
mv simple_sume_switch.bit ${P4_PROJECT_NAME}.bit
cp $P4_PROJECT_DIR/testdata/config_writes.sh ./

# Step 13:
date
cd $NF_DESIGN_DIR/bitfiles/
# some scripts are, some scripts aren't executable...
chmod u+x $(pwd -P)/program_switch.sh
sudo bash -c ". $HOME/master-thesis/netpfga/bashinit && $(pwd -P)/program_switch.sh"

) 2>&1 | tee "$LOG"
