annotate scripts/build_project.sh @ 269:ac8eb07afcf5

Oxygen text added to each render.cpp file for the default projects. Text includes project explanation from Wiki, edited in places. Empty project added as a default project. Doxyfile updated. Each of the project locations added to INPUT configuration option. Consider just watching the whole project file so all new projects are automatically pulled through.
author Robert Jack <robert.h.jack@gmail.com>
date Tue, 17 May 2016 15:40:16 +0100
parents f2d47df23c68
children f51132ee0080
rev   line source
andrewm@58 1 #!/bin/bash
andrewm@58 2 #
andrewm@58 3 # This script compiles a BeagleRT project on the BeagleBone Black and
andrewm@58 4 # optionally runs it. Pass a directory path in the first argument.
andrewm@58 5 # The source files in this directory are copied to the board and compiled.
andrewm@58 6
andrewm@58 7 BBB_ADDRESS="root@192.168.7.2"
andrewm@58 8 BBB_PATH="~/BeagleRT"
andrewm@58 9 RUN_PROJECT=1
andrewm@60 10 COMMAND_ARGS=
andrewm@90 11 RUN_IN_FOREGROUND=0
andrewm@90 12 RUN_WITHOUT_SCREEN=0
andrewm@58 13
andrewm@58 14 function usage
andrewm@58 15 {
andrewm@58 16 THIS_SCRIPT=`basename "$0"`
andrewm@90 17 echo "Usage: $THIS_SCRIPT [-b path-on-beaglebone] [-c command-line-args] [-nfF] <directory-with-source-files>"
andrewm@58 18 echo "
andrewm@58 19 This script copies a directory of source files to the BeagleBone, compiles
andrewm@58 20 and runs it. The BeagleRT core files should have first been copied over
andrewm@58 21 using the setup_board.sh script supplied with BeagleRT.
andrewm@58 22
andrewm@58 23 The source directory should contain at least one .c, .cpp or .S file.
andrewm@58 24 If the argument -n is passed, the output will not be run after compiling.
andrewm@58 25 The argument -b will change the local path on the BeagleBone where the
andrewm@60 26 BeagleRT files are found. The -c option passes command-line arguments to
andrewm@90 27 the BeagleRT program; enclose the argument string in quotes.
andrewm@90 28
andrewm@90 29 The -f argument runs the project in the foreground of the current terminal,
andrewm@90 30 within a screen session that can be detached later. The -F argument runs
andrewm@90 31 the project in the foreground of the current terminal, without screen, so
andrewm@90 32 the output can be piped to another destination."
andrewm@58 33 }
andrewm@58 34
andrewm@58 35 OPTIND=1
andrewm@58 36
andrewm@90 37 while getopts "b:c:nfFh" opt; do
andrewm@58 38 case $opt in
andrewm@58 39 b) BBB_PATH=$OPTARG
andrewm@58 40 ;;
andrewm@60 41 c) COMMAND_ARGS=$OPTARG
andrewm@60 42 ;;
andrewm@90 43 f) RUN_IN_FOREGROUND=1
andrewm@90 44 ;;
andrewm@90 45 F) RUN_WITHOUT_SCREEN=1
andrewm@90 46 ;;
andrewm@58 47 n) RUN_PROJECT=0
andrewm@58 48 ;;
andrewm@58 49 h|\?) usage
andrewm@58 50 exit 1
andrewm@58 51 esac
andrewm@58 52 done
andrewm@58 53
andrewm@58 54 shift $((OPTIND-1))
andrewm@58 55
andrewm@58 56 # Check that we have a directory containing at least one source file
andrewm@58 57 # as an argument
giuliomoro@64 58
andrewm@58 59 if [ -z "$1" ]
andrewm@58 60 then
andrewm@58 61 usage
andrewm@58 62 exit
andrewm@58 63 fi
andrewm@58 64
giuliomoro@64 65 FIND_STRING="find $* -maxdepth 10000 -type f "
giuliomoro@64 66
giuliomoro@64 67 C_FILES=$($FIND_STRING -name "*.c")
giuliomoro@64 68 CPP_FILES=$($FIND_STRING -name "*.cpp")
giuliomoro@64 69 ASM_FILES=$($FIND_STRING -name "*.S")
andrewm@58 70
andrewm@58 71 if [[ -z $C_FILES ]] && [[ -z $CPP_FILES ]] && [[ -z $ASM_FILES ]]
andrewm@58 72 then
andrewm@58 73 echo "Please provide a directory containing .c, .cpp or .S files."
andrewm@58 74 # echo "Usage: $THIS_SCRIPT [directory-with-source-files]"
andrewm@58 75 usage
andrewm@58 76 exit
andrewm@58 77 fi
andrewm@58 78
andrewm@58 79 # Stop BeagleRT and clean out old source files
andrewm@58 80 echo "Stopping BeagleRT and removing old source files..."
giuliomoro@85 81 ssh -t -t $BBB_ADDRESS "screen -X -S BeagleRT quit &>/dev/null; pkill BeagleRT ; make sourceclean -C $BBB_PATH"
giuliomoro@64 82
giuliomoro@64 83 #concatenate arguments to form path.
giuliomoro@64 84 BBB_SOURCE_PATH= #initially empty, will be filled with input arguments
giuliomoro@64 85 for i in "$@" #parse input arguments
giuliomoro@64 86 do
giuliomoro@64 87 if [ -d "$1" ] #check if the path is a folder
giuliomoro@64 88 then #if it is, include all of its files
giuliomoro@64 89 BBB_SOURCE_PATH+=" ${1}/* "
giuliomoro@64 90 else
giuliomoro@64 91 BBB_SOURCE_PATH+=" $1 "
giuliomoro@64 92 fi
giuliomoro@64 93 shift
giuliomoro@64 94 # Copy new souce files to the board
giuliomoro@64 95 done
andrewm@58 96
andrewm@58 97 # Copy new source files to the board
andrewm@58 98 echo "Copying new source files to BeagleBone..."
giuliomoro@64 99 scp $BBB_SOURCE_PATH "$BBB_ADDRESS:$BBB_PATH/source/"
giuliomoro@64 100
giuliomoro@64 101 if [ $? -ne 0 ]
giuliomoro@64 102 then
giuliomoro@64 103 echo "Error while copying files"
giuliomoro@64 104 exit
giuliomoro@64 105 fi
andrewm@58 106
andrewm@58 107 # Make new BeagleRT executable and run
andrewm@58 108 if [ $RUN_PROJECT -eq 0 ]
andrewm@58 109 then
andrewm@58 110 echo "Building project..."
andrewm@58 111 ssh $BBB_ADDRESS "make all -C $BBB_PATH"
andrewm@58 112 else
andrewm@58 113 echo "Building and running project..."
andrewm@90 114
andrewm@90 115 if [ $RUN_WITHOUT_SCREEN -ne 0 ]
andrewm@90 116 then
giuliomoro@249 117 ssh -t $BBB_ADDRESS "cd $BBB_PATH && make all && cd source && ../BeagleRT $COMMAND_ARGS"
andrewm@90 118 elif [ $RUN_IN_FOREGROUND -eq 0 ]
andrewm@90 119 then
giuliomoro@249 120 ssh $BBB_ADDRESS "cd $BBB_PATH && make all && cd source && screen -S BeagleRT -d -m ../BeagleRT $COMMAND_ARGS"
andrewm@90 121 else
giuliomoro@249 122 ssh -t $BBB_ADDRESS "cd $BBB_PATH && make all && cd source && screen -S BeagleRT ../BeagleRT $COMMAND_ARGS"
andrewm@90 123 fi
giuliomoro@249 124 fi