docs: Add overview of development environment
Give an overview of the different tools required for development and what they're used for. Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
		
				
					committed by
					
						
						Jeremy Soller
					
				
			
			
				
	
			
			
			
						parent
						
							5a7fd2d7b3
						
					
				
				
					commit
					b7368e8202
				
			@@ -9,6 +9,7 @@ laptops.
 | 
			
		||||
- [Flashing firmware](./doc/flashing.md)
 | 
			
		||||
- [Debugging](./doc/debugging.md)
 | 
			
		||||
- [Creating a custom keyboard layout](./doc/keyboard-layout-customization.md)
 | 
			
		||||
- [Development environment](./doc/dev-env.md)
 | 
			
		||||
- [Adding a new board](./doc/adding-a-new-board.md)
 | 
			
		||||
 | 
			
		||||
## Quickstart
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								doc/dev-env.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								doc/dev-env.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
# Development environment
 | 
			
		||||
 | 
			
		||||
## OS
 | 
			
		||||
 | 
			
		||||
Linux is the only supported environment. Development is possible on a variety
 | 
			
		||||
of distros. It is recommended to use the latest Pop!\_OS or Ubuntu release.
 | 
			
		||||
 | 
			
		||||
The build server uses Ubuntu 20.04.
 | 
			
		||||
 | 
			
		||||
## IDE/Editor
 | 
			
		||||
 | 
			
		||||
Any editor that has support for [EditorConfig] may be used.
 | 
			
		||||
 | 
			
		||||
No specific IDE or editor is required or recommended.
 | 
			
		||||
 | 
			
		||||
## Toolset
 | 
			
		||||
 | 
			
		||||
EC development depends on using distro-provided packages for the most of the
 | 
			
		||||
toolset.
 | 
			
		||||
 | 
			
		||||
A complete list of dependencies can be seen in `scripts/deps.sh`.
 | 
			
		||||
 | 
			
		||||
### Cargo
 | 
			
		||||
 | 
			
		||||
rustup manages the [Rust] toolchain, which includes cargo. Cargo is required
 | 
			
		||||
for building the tools. It is the only part of the development toolset that is
 | 
			
		||||
not installed through distro packages.
 | 
			
		||||
 | 
			
		||||
### GNU Make
 | 
			
		||||
 | 
			
		||||
[GNU Make] is used to automate the build process. It also provides targets for
 | 
			
		||||
using ecflash (for flashing) and ectool (for console).
 | 
			
		||||
 | 
			
		||||
### SDCC
 | 
			
		||||
 | 
			
		||||
[SDCC] is the only practical open source toolset on Linux for targeting the
 | 
			
		||||
8051 architecture (among others). It contains a collection of tools comparable
 | 
			
		||||
to what you would expect from GCC for other development targets.
 | 
			
		||||
 | 
			
		||||
SDCC contains language extensions to support the 8051 architecture. Refer to
 | 
			
		||||
the [SDCC manual] for more information.
 | 
			
		||||
 | 
			
		||||
Version 4.0.0 or newer should be used.
 | 
			
		||||
 | 
			
		||||
**Note**: Fedora installs SDCC binaries to a non-standard location. Ensure that
 | 
			
		||||
`PATH` includes `/usr/libexec/sdcc`.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[EditorConfig]: https://editorconfig.org/
 | 
			
		||||
[GNU Make]: https://www.gnu.org/software/make/
 | 
			
		||||
[Rust]: https://www.rust-lang.org/
 | 
			
		||||
[SDCC manual]: http://sdcc.sourceforge.net/doc/sdccman.pdf
 | 
			
		||||
[SDCC]: http://sdcc.sourceforge.net/
 | 
			
		||||
		Reference in New Issue
	
	Block a user