Mercurial > louis > kiibohd-controller
view Keyboards/cmake.bash @ 393:4ca343d30b73
Exit quickly when cmake or make fail
The compilation process itself doesn't take very long, but it's weird to
let it continue trying to build when we've encountered an error worthy
of changing cmake/make's return codes. This gives clear indication of a
failed build as the last line of the script's output.
author | Mason Donahue <masond+github@gmail.com> |
---|---|
date | Sun, 18 Oct 2015 14:40:18 -0500 |
parents | 83cb0d4b57e3 |
children | 99f93dec8fea |
line wrap: on
line source
#!/bin/bash # This is bash lib file for the convenience build scripts # Don't call this script directly # Jacob Alexander 2015 # Make sure all of the relevant variables have been set # NOTE: PartialMaps and DefaultMap do not have to be set VariablesList=(BuildPath BaseMap ScanModule MacroModule OutputModule DebugModule Chip Compiler) ExitEarly=false for var in ${VariablesList[@]}; do if [ -z ${!var+x} ]; then echo "ERROR: Unset variable => '${var}'" ExitEarly=true fi done # Error was detected, exit immediately if $ExitEarly; then exit 1 fi # Prepare PartialMaps PartialMapsExpanded="${PartialMaps[1]}" count=2 # Start the loop at index 2 while [ "$count" -le "${#PartialMaps[@]}" ]; do PartialMapsExpanded="${PartialMapsExpanded};${PartialMaps[count]}" count=$(($count+1)) done # Internal Variables CMakeListsPath="../.." PROG_NAME=$(basename $0) # Process the command line arguments (if any) while (( "$#" >= "1" )); do # Scan each argument key="$1" case $key in -c|--cmakelists-path) CMakeListsPath="$2" shift ;; -f|--force-rebuild) # Remove the old directory first rm -rf "${BuildPath}" ;; -o|--output-path) BuildPath="$2" shift ;; -h|--help) echo "Usage: $PROG_NAME [options...]" echo "" echo "Convenience script to build the source of a given keyboard." echo "Edit '$PROG_NAME' to configure the keyboard options such as KLL layouts." echo "" echo "Arguments:" echo " -c, --cmakelists-path PATH Set the path of CMakeLists.txt" echo " Default: ${CMakeListsPath}" echo " -f, --force-rebuild Deletes the old build directory and rebuilds from scratch." echo " -o, --output-path PATH Set the path of the build files." echo " Default: ${BuildPath}" echo " -h, --help This message." exit 1 ;; *) echo "INVALID ARG: '$1'" exit 2 ;; esac # Shift to the next argument shift done # Run CMake commands ## TODO Check for windows and do windows specific things ## mkdir -p "${BuildPath}" cd "${BuildPath}" cmake -DCHIP="${Chip}" -DCOMPILER="${Compiler}" -DScanModule="${ScanModule}" -DMacroModule="${MacroModule}" -DOutputModule="${OutputModule}" -DDebugModule="${DebugModule}" -DBaseMap="${BaseMap}" -DDefaultMap="${DefaultMap}" -DPartialMaps="${PartialMapsExpanded}" "${CMakeListsPath}" return_code=$? if [ $return_code != 0 ] ; then echo "Error in cmake. Exiting..." exit $return_code fi make return_code=$? if [ $return_code != 0 ] ; then echo "Error in make. Exiting..." exit $return_code fi echo "Firmware has been compiled into: '${BuildPath}'" cd -