#!/bin/bash
#
# This script creates the hello_alt_main application in this directory.

# First, check to see if $SOPC_KIT_NIOS2 environmental variable is set.
# This variable is required for the command line tools to execute correctly.
if [ -z $SOPC_KIT_NIOS2 ]
then
    echo Required \$SOPC_KIT_NIOS2 Environmental Variable is not set!
    exit 1
fi

# Also make sure that the APP has not been created already.  Check for
# existence of Makefile in the app directory
if [ -f ./Makefile ]
then
    echo Application has already been created!  Delete Makefile if you want to create a new application makefile
    exit 1
fi

# We are selecting hal_default bsp because it supports this application.
# Check to see if the hal_default has already been generated by checking for 
# existence of the public.mk file.  If not, we need to run
# create-this-bsp file to generate the bsp.
if [ -f ../../bsp/hal_default/public.mk ]
then
    # If BSP exists, set a path to the BSP directory
    BSP_DIR=../../bsp/hal_default
else
    # Since BSP doesn't exist, create the BSP then set the path
    # Pass any command line arguments passed to this script to the BSP.
    pushd ../../bsp/hal_default/ >> /dev/null
    ./create-this-bsp "$@" || {
    	echo "create-this-bsp failed"
    	exit 1
    }
    popd >> /dev/null
    BSP_DIR=../../bsp/hal_default
fi

# Now we also need to go copy the sources for this application to the
# local directory.
find $SOPC_KIT_NIOS2/examples/software/hello_alt_main/ -name '*.c' -or -name '*.h' -or -name 'hostfs*' | xargs -i cp {} ./ || {
	echo "failed during copying example source files"
	exit 1
}

if [ -d $SOPC_KIT_NIOS2/examples/software/hello_alt_main/system ]
then
	cp -R $SOPC_KIT_NIOS2/examples/software/hello_alt_main/system . || {
		echo "failed during copying project support files"
		exit 1
	}
fi

cmd="nios2-app-generate-makefile --bsp-dir $BSP_DIR --elf-name hello_alt_main.elf --set OBJDUMP_INCLUDE_SOURCE 1 --src-files hello_alt_main.c"

echo "create-this-app: Running \"$cmd\""
$cmd || {
    echo "nios2-app-generate-makefile failed"
    exit 1
}

cmd="make"

echo "create-this-app: Running \"$cmd\""
$cmd || {
    echo "make failed"
    exit 1
}

echo
echo "To download and run the application:"
echo "    1. Make sure the board is connected to the system."
echo "    2. Run 'nios2-configure-sof <SOF_FILE_PATH>' to configure the FPGA with the hardware design."
echo "    3. If you have a stdio device, run 'nios2-terminal' in a different shell."
echo "    4. Run 'make download-elf' from the application directory."
echo
echo "To debug the application:"
echo "    Import the project into Nios II IDE.  Refer to Nios II IDE Documentation for more information."
echo



exit 0
