]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Adding convenience compiler scripts.
authorJacob Alexander <haata@kiibohd.com>
Mon, 16 Mar 2015 03:51:23 +0000 (20:51 -0700)
committerJacob Alexander <haata@kiibohd.com>
Mon, 16 Mar 2015 04:02:49 +0000 (21:02 -0700)
TODO:
 - Add Windows Cygwin support

Keyboards/README.markdown [new file with mode: 0644]
Keyboards/cmake.bash [new file with mode: 0644]
Keyboards/infinity.bash [new file with mode: 0755]
Keyboards/template.bash [new file with mode: 0755]

diff --git a/Keyboards/README.markdown b/Keyboards/README.markdown
new file mode 100644 (file)
index 0000000..14606dc
--- /dev/null
@@ -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)
+
+
diff --git a/Keyboards/cmake.bash b/Keyboards/cmake.bash
new file mode 100644 (file)
index 0000000..61995b0
--- /dev/null
@@ -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}'"
+
diff --git a/Keyboards/infinity.bash b/Keyboards/infinity.bash
new file mode 100755 (executable)
index 0000000..259183f
--- /dev/null
@@ -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
+
diff --git a/Keyboards/template.bash b/Keyboards/template.bash
new file mode 100755 (executable)
index 0000000..b1e876f
--- /dev/null
@@ -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
+