Mercurial > louis > kiibohd-controller
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 +