changeset 312:c5f083de1838

Adding convenience compiler scripts. TODO: - Add Windows Cygwin support
author Jacob Alexander <haata@kiibohd.com>
date Sun, 15 Mar 2015 20:51:23 -0700
parents 48e69c499057
children a2df35fa4f0b
files Keyboards/README.markdown Keyboards/cmake.bash Keyboards/infinity.bash Keyboards/template.bash
diffstat 4 files changed, 266 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Keyboards/README.markdown	Sun Mar 15 20:51:23 2015 -0700
@@ -0,0 +1,33 @@
+Keyboard Compiler Scripts
+=========================
+
+Scripts for major keyboards designed using the Kiibohd firmware.
+Please refer to `<script> --help` for specific details.
+
+Refer to the [wiki](https://github.com/kiibohd/controller/wiki) on setting up your system for compiling.
+
+
+Build Steps
+-----------
+
+* Try to build once to make sure your system is setup correctly
+* Add any .kll files in the build directory you want
+* Edit `<script>` to include the new .kll files
+* Rebuild
+
+
+Example
+-------
+
+```bash
+./infinity.bash
+```
+
+
+Projects
+--------
+
+* infinity.bash (Infinity Keyboard 2014/10/15)
+* template.bash (Example template for new keyboards)
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Keyboards/cmake.bash	Sun Mar 15 20:51:23 2015 -0700
@@ -0,0 +1,88 @@
+#!/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}"
+make
+
+echo "Firmware has been compiled into: '${BuildPath}'"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Keyboards/infinity.bash	Sun Mar 15 20:51:23 2015 -0700
@@ -0,0 +1,72 @@
+#!/bin/bash
+# This is a build script template
+# These build scripts are just a convenience for configuring your keyboard (less daunting than CMake)
+# Jacob Alexander 2015
+
+
+
+#################
+# Configuration #
+#################
+
+# Feel free to change the variables in this section to configure your keyboard
+
+BuildPath="template"
+
+## KLL Configuration ##
+
+# Generally shouldn't be changed, this will affect every layer
+BaseMap="defaultMap"
+
+# This is the default layer of the keyboard
+# NOTE: To combine kll files into a single layout, separate them by spaces
+# e.g.  DefaultMap="mylayout mylayoutmod"
+DefaultMap="md1Overlay stdFuncMap"
+
+# This is where you set the additional layers
+# NOTE: Indexing starts at 1
+# NOTE: Each new layer is another array entry
+# e.g.  PartialMaps[1]="layer1 layer1mod"
+#       PartialMaps[2]="layer2"
+#       PartialMaps[3]="layer3"
+PartialMaps[1]="hhkbpro2"
+
+
+
+##########################
+# Advanced Configuration #
+##########################
+
+# Don't change the variables in this section unless you know what you're doing
+# These are useful for completely custom keyboards
+# NOTE: Changing any of these variables will require a force build to compile correctly
+
+# Keyboard Module Configuration
+ScanModule="MD1"
+MacroModule="PartialMap"
+OutputModule="pjrcUSB"
+DebugModule="full"
+
+# Microcontroller
+Chip="mk20dx128vlf5"
+
+# Compiler Selection
+Compiler="gcc"
+
+
+
+########################
+# Bash Library Include #
+########################
+
+# Shouldn't need to touch this section
+
+# Check if the library can be found
+if [ ! -f cmake.bash ]; then
+	echo "ERROR: Cannot find 'cmake.bash'"
+	exit 1
+fi
+
+# Load the library
+source cmake.bash
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Keyboards/template.bash	Sun Mar 15 20:51:23 2015 -0700
@@ -0,0 +1,73 @@
+#!/bin/bash
+# This is a build script template
+# These build scripts are just a convenience for configuring your keyboard (less daunting than CMake)
+# Jacob Alexander 2015
+
+
+
+#################
+# Configuration #
+#################
+
+# Feel free to change the variables in this section to configure your keyboard
+
+BuildPath="template"
+
+## KLL Configuration ##
+
+# Generally shouldn't be changed, this will affect every layer
+BaseMap="defaultMap"
+
+# This is the default layer of the keyboard
+# NOTE: To combine kll files into a single layout, separate them by spaces
+# e.g.  DefaultMap="mylayout mylayoutmod"
+DefaultMap="md1Overlay stdFuncMap"
+
+# This is where you set the additional layers
+# NOTE: Indexing starts at 1
+# NOTE: Each new layer is another array entry
+# e.g.  PartialMaps[1]="layer1 layer1mod"
+#       PartialMaps[2]="layer2"
+#       PartialMaps[3]="layer3"
+PartialMaps[1]="hhkbpro2"
+PartialMaps[2]="colemak"
+
+
+
+##########################
+# Advanced Configuration #
+##########################
+
+# Don't change the variables in this section unless you know what you're doing
+# These are useful for completely custom keyboards
+# NOTE: Changing any of these variables will require a force build to compile correctly
+
+# Keyboard Module Configuration
+ScanModule="MD1"
+MacroModule="PartialMap"
+OutputModule="pjrcUSB"
+DebugModule="full"
+
+# Microcontroller
+Chip="mk20dx128vlf5"
+
+# Compiler Selection
+Compiler="gcc"
+
+
+
+########################
+# Bash Library Include #
+########################
+
+# Shouldn't need to touch this section
+
+# Check if the library can be found
+if [ ! -f cmake.bash ]; then
+	echo "ERROR: Cannot find 'cmake.bash'"
+	exit 1
+fi
+
+# Load the library
+source cmake.bash
+