view buildall.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 ab4515606277
children 99f93dec8fea
line wrap: on
line source

#!/bin/bash
###| Builder Script |###
#
# Builds all permutations of modules
# This script is an attempt to maintain module sanity as new ones are added
#
# Fortunately, sweeping API changes don't happen much anymore...but just in case...
#
# Written by Jacob Alexander 2013 for the Kiibohd Controller
# Released into the Public Domain
#
###

## TODO List ##
# - Complete non-Scan module permutations (will take extra work)
# - Add command line arguments
# - Add help flag for usage
# - Make sure the script is being run from the correct directory


main() {
	ERROR="\e[5;1;31mERROR\e[0m:"
	failCount=0

	# Scan for list of Scan Modules
	scanModules=$(ls Scan)

	# Prune out "invalid" modules (parent modules)
	scanModules=${scanModules[@]//matrix/}

	# Create permutation directories
	# Then run cmake, and run each build permutation
	# Keeping track of how many builds failed/passed
	for module in $scanModules; do
		# Create directory, but do not error if it exists already
		mkdir -p build/$module
		cd build/$module

		# Make sure CMake has been run, and attempt to build
		cmake -DScanModuleOverride=$module ../.. && make || let failCount++

		# Cleanup, for the next build
		cd - > /dev/null
	done

	totalModules=$(echo $scanModules | wc -w)
	if (( failCount > 0 )); then
		echo -e "$ERROR $failCount/$totalModules failed"
	else
		echo -e "Build Success!"
	fi
}


#| Main Script Entry
main "$@"


exit 0