Adding convenience compiler scripts.
TODO: - Add Windows Cygwin support
This commit is contained in:
		
							parent
							
								
									96e785b571
								
							
						
					
					
						commit
						337eaa16f2
					
				
					 4 changed files with 266 additions and 0 deletions
				
			
		
							
								
								
									
										33
									
								
								Keyboards/README.markdown
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								Keyboards/README.markdown
									
										
									
									
									
										Normal file
									
								
							|  | @ -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) | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										88
									
								
								Keyboards/cmake.bash
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								Keyboards/cmake.bash
									
										
									
									
									
										Normal file
									
								
							|  | @ -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}'" | ||||
| 
 | ||||
							
								
								
									
										72
									
								
								Keyboards/infinity.bash
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										72
									
								
								Keyboards/infinity.bash
									
										
									
									
									
										Executable file
									
								
							|  | @ -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 | ||||
| 
 | ||||
							
								
								
									
										73
									
								
								Keyboards/template.bash
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										73
									
								
								Keyboards/template.bash
									
										
									
									
									
										Executable file
									
								
							|  | @ -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 | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jacob Alexander
						Jacob Alexander