annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
312
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
1 #!/bin/bash
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
2 # This is bash lib file for the convenience build scripts
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
3 # Don't call this script directly
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
4 # Jacob Alexander 2015
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
5
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
6 # Make sure all of the relevant variables have been set
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
7 # NOTE: PartialMaps and DefaultMap do not have to be set
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
8 VariablesList=(BuildPath BaseMap ScanModule MacroModule OutputModule DebugModule Chip Compiler)
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
9 ExitEarly=false
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
10 for var in ${VariablesList[@]}; do
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
11 if [ -z ${!var+x} ]; then
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
12 echo "ERROR: Unset variable => '${var}'"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
13 ExitEarly=true
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
14 fi
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
15 done
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
16
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
17 # Error was detected, exit immediately
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
18 if $ExitEarly; then
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
19 exit 1
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
20 fi
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
21
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
22
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
23 # Prepare PartialMaps
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
24 PartialMapsExpanded="${PartialMaps[1]}"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
25 count=2 # Start the loop at index 2
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
26 while [ "$count" -le "${#PartialMaps[@]}" ]; do
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
27 PartialMapsExpanded="${PartialMapsExpanded};${PartialMaps[count]}"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
28 count=$(($count+1))
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
29 done
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
30
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
31
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
32 # Internal Variables
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
33 CMakeListsPath="../.."
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
34 PROG_NAME=$(basename $0)
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
35
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
36
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
37 # Process the command line arguments (if any)
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
38 while (( "$#" >= "1" )); do
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
39 # Scan each argument
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
40 key="$1"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
41 case $key in
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
42 -c|--cmakelists-path)
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
43 CMakeListsPath="$2"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
44 shift
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
45 ;;
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
46 -f|--force-rebuild)
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
47 # Remove the old directory first
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
48 rm -rf "${BuildPath}"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
49 ;;
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
50 -o|--output-path)
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
51 BuildPath="$2"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
52 shift
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
53 ;;
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
54 -h|--help)
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
55 echo "Usage: $PROG_NAME [options...]"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
56 echo ""
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
57 echo "Convenience script to build the source of a given keyboard."
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
58 echo "Edit '$PROG_NAME' to configure the keyboard options such as KLL layouts."
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
59 echo ""
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
60 echo "Arguments:"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
61 echo " -c, --cmakelists-path PATH Set the path of CMakeLists.txt"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
62 echo " Default: ${CMakeListsPath}"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
63 echo " -f, --force-rebuild Deletes the old build directory and rebuilds from scratch."
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
64 echo " -o, --output-path PATH Set the path of the build files."
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
65 echo " Default: ${BuildPath}"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
66 echo " -h, --help This message."
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
67 exit 1
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
68 ;;
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
69 *)
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
70 echo "INVALID ARG: '$1'"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
71 exit 2
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
72 ;;
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
73 esac
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
74
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
75 # Shift to the next argument
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
76 shift
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
77 done
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
78
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
79
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
80 # Run CMake commands
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
81 ## TODO Check for windows and do windows specific things ##
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
82 mkdir -p "${BuildPath}"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
83 cd "${BuildPath}"
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
84 cmake -DCHIP="${Chip}" -DCOMPILER="${Compiler}" -DScanModule="${ScanModule}" -DMacroModule="${MacroModule}" -DOutputModule="${OutputModule}" -DDebugModule="${DebugModule}" -DBaseMap="${BaseMap}" -DDefaultMap="${DefaultMap}" -DPartialMaps="${PartialMapsExpanded}" "${CMakeListsPath}"
393
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
85 return_code=$?
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
86 if [ $return_code != 0 ] ; then
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
87 echo "Error in cmake. Exiting..."
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
88 exit $return_code
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
89 fi
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
90
312
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
91 make
393
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
92 return_code=$?
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
93 if [ $return_code != 0 ] ; then
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
94 echo "Error in make. Exiting..."
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
95 exit $return_code
4ca343d30b73 Exit quickly when cmake or make fail
Mason Donahue <masond+github@gmail.com>
parents: 373
diff changeset
96 fi
312
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
97
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
98 echo "Firmware has been compiled into: '${BuildPath}'"
373
83cb0d4b57e3 Updating convenience build scripts to build Left and Right sides
Jacob Alexander <haata@kiibohd.com>
parents: 312
diff changeset
99 cd -
312
c5f083de1838 Adding convenience compiler scripts.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
100