Archived
1
0
This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
controller/Keyboards/cmake.bash
Mason Donahue c48eece590 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.
2015-10-18 14:45:20 -05:00

101 lines
2.6 KiB
Bash

#!/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 -