mirror of
				https://github.com/digistump/DigistumpArduino.git
				synced 2025-11-03 13:04:48 -08:00 
			
		
		
		
	
		
			
	
	
		
			220 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			220 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								# (1) Project Information
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PROJECT_LIBS 	= SPI RF24 ; 
							 | 
						||
| 
								 | 
							
								PROJECT_DIRS	= $(PWD) ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# (2) Board Information
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								UPLOAD_PROTOCOL ?= arduino ;
							 | 
						||
| 
								 | 
							
								UPLOAD_SPEED 	?= 115200 ;
							 | 
						||
| 
								 | 
							
								MCU		?= atmega328p ;
							 | 
						||
| 
								 | 
							
								F_CPU 		?= 16000000 ;
							 | 
						||
| 
								 | 
							
								CORE		?= arduino ;
							 | 
						||
| 
								 | 
							
								VARIANT 	?= standard ;
							 | 
						||
| 
								 | 
							
								ARDUINO_VERSION	?= 100 ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# (3) USB Ports
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PORTS		= p4 p6 p9 u0 u1 u2 ;
							 | 
						||
| 
								 | 
							
								PORT_p6 	= /dev/tty.usbserial-A600eHIs ;
							 | 
						||
| 
								 | 
							
								PORT_p4 	= /dev/tty.usbserial-A40081RP ;
							 | 
						||
| 
								 | 
							
								PORT_p9		= /dev/tty.usbserial-A9007LmI ;
							 | 
						||
| 
								 | 
							
								PORT_u0 	= /dev/ttyUSB0 ;
							 | 
						||
| 
								 | 
							
								PORT_u1 	= /dev/ttyUSB1 ;
							 | 
						||
| 
								 | 
							
								PORT_u2 	= /dev/ttyUSB2 ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# (4) Location of AVR tools
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This configuration assumes using avr-tools that were obtained separate from the Arduino
							 | 
						||
| 
								 | 
							
								# distribution. 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if $(OS) = MACOSX 
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									AVR_BIN 	?= /usr/local/avrtools/bin ;
							 | 
						||
| 
								 | 
							
									AVR_ETC 	= /usr/local/avrtools/etc ;
							 | 
						||
| 
								 | 
							
									AVR_INCLUDE	= /usr/local/avrtools/include ; 
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									AVR_BIN 	?= /usr/bin ;
							 | 
						||
| 
								 | 
							
									AVR_INCLUDE 	?= /usr/lib/avr/include ;
							 | 
						||
| 
								 | 
							
									AVR_ETC 	= /etc ; 
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# (5) Directories where Arduino core and libraries are located
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ARDUINO_DIR 	?= /opt/Arduino ;
							 | 
						||
| 
								 | 
							
								ARDUINO_CORE 	= $(ARDUINO_DIR)/hardware/arduino/cores/$(CORE) $(ARDUINO_DIR)/hardware/arduino/variants/$(VARIANT) ;
							 | 
						||
| 
								 | 
							
								ARDUINO_LIB 	= $(ARDUINO_DIR)/libraries ;
							 | 
						||
| 
								 | 
							
								SKETCH_LIB      = $(HOME)/Source/Arduino/libraries ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# --------------------------------------------------
							 | 
						||
| 
								 | 
							
								# Below this line usually never needs to be modified 
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Tool locations
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CC	  	= $(AVR_BIN)/avr-gcc ;
							 | 
						||
| 
								 | 
							
								C++	 	= $(AVR_BIN)/avr-g++ ;
							 | 
						||
| 
								 | 
							
								LINK	  	= $(AVR_BIN)/avr-gcc ;
							 | 
						||
| 
								 | 
							
								AR		= $(AVR_BIN)/avr-ar rcs ;
							 | 
						||
| 
								 | 
							
								RANLIB		= ;
							 | 
						||
| 
								 | 
							
								OBJCOPY 	= $(AVR_BIN)/avr-objcopy ;
							 | 
						||
| 
								 | 
							
								AVRDUDE 	?= $(AVR_BIN)/avrdude ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Flags
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DEFINES  	+= F_CPU=$(F_CPU)L ARDUINO=$(ARDUINO_VERSION) VERSION_H ;
							 | 
						||
| 
								 | 
							
								OPTIM		= -Os ;
							 | 
						||
| 
								 | 
							
								CCFLAGS  	= -Wall -Wextra -Wno-strict-aliasing -mmcu=$(MCU) -ffunction-sections -fdata-sections ;
							 | 
						||
| 
								 | 
							
								C++FLAGS  	= $(CCFLAGS) -fno-exceptions -fno-strict-aliasing ;
							 | 
						||
| 
								 | 
							
								LINKFLAGS  	= $(OPTIM) -lm -Wl,--gc-sections -mmcu=$(MCU) ;
							 | 
						||
| 
								 | 
							
								AVRDUDEFLAGS	= -V -F -D -C $(AVR_ETC)/avrdude.conf -p $(MCU) -c $(UPLOAD_PROTOCOL) -b $(UPLOAD_SPEED) ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Search everywhere for headers
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								HDRS  	 	= $(PROJECT_DIRS) $(AVR_INCLUDE) $(ARDUINO_CORE) $(ARDUINO_LIB)/$(PROJECT_LIBS) $(ARDUINO_LIB)/$(PROJECT_LIBS)/utility $(SKETCH_LIB)/$(PROJECT_LIBS) ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Output locations
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LOCATE_TARGET	= $(F_CPU) ;
							 | 
						||
| 
								 | 
							
								LOCATE_SOURCE	= $(F_CPU) ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Custom rules
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule GitVersion
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Always $(<) ;
							 | 
						||
| 
								 | 
							
									Depends all : $(<) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions GitVersion
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									echo "const char program_version[] = \"\\" > $(<)
							 | 
						||
| 
								 | 
							
									git log -1 --pretty=format:%h >> $(<)
							 | 
						||
| 
								 | 
							
									echo "\";" >> $(<)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								GitVersion version.h ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Pde
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Depends $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
									MakeLocate $(<) : $(LOCATE_SOURCE) ;
							 | 
						||
| 
								 | 
							
									Clean clean : $(<) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if ( $(ARDUINO_VERSION) < 100 )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									ARDUINO_H = WProgram.h ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									ARDUINO_H = Arduino.h ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions Pde
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									echo "#include <$(ARDUINO_H)>" > $(<) 
							 | 
						||
| 
								 | 
							
									echo "#line 1 \"$(>)\"" >> $(<)
							 | 
						||
| 
								 | 
							
									cat $(>) >> $(<) 
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule C++Pde
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local _CPP = $(>:B).cpp ;
							 | 
						||
| 
								 | 
							
									Pde $(_CPP) : $(>) ;
							 | 
						||
| 
								 | 
							
									C++ $(<) : $(_CPP) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule UserObject
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									switch $(>:S)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										case .ino : C++Pde $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
										case .pde : C++Pde $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Objects
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								        local _i ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        for _i in [ FGristFiles $(<) ]
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
										local _b = $(_i:B)$(SUFOBJ) ;
							 | 
						||
| 
								 | 
							
										local _o = $(_b:G=$(SOURCE_GRIST:E)) ;
							 | 
						||
| 
								 | 
							
								                Object $(_o) : $(_i) ;
							 | 
						||
| 
								 | 
							
								                Depends obj : $(_o) ;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Library
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									LibraryFromObjects $(<) : $(>:B)$(SUFOBJ) ;
							 | 
						||
| 
								 | 
							
									Objects $(>) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Main
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								        MainFromObjects $(<) : $(>:B)$(SUFOBJ) ;
							 | 
						||
| 
								 | 
							
								        Objects $(>) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Hex
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Depends $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
									MakeLocate $(<) : $(LOCATE_TARGET) ;
							 | 
						||
| 
								 | 
							
									Depends hex : $(<) ;
							 | 
						||
| 
								 | 
							
									Clean clean : $(<) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions Hex
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									$(OBJCOPY) -O ihex -R .eeprom $(>) $(<)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Upload
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Depends $(1) : $(2) ;
							 | 
						||
| 
								 | 
							
									Depends $(2) : $(3) ;
							 | 
						||
| 
								 | 
							
									NotFile $(1) ;
							 | 
						||
| 
								 | 
							
									Always $(1) ;
							 | 
						||
| 
								 | 
							
									Always $(2) ;
							 | 
						||
| 
								 | 
							
									UploadAction $(2) : $(3) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions UploadAction
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									$(AVRDUDE) $(AVRDUDEFLAGS) -P $(<) $(AVRDUDE_WRITE_FLASH) -U flash:w:$(>):i
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Arduino
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									LINKFLAGS on $(<) = $(LINKFLAGS) -Wl,-Map=$(LOCATE_TARGET)/$(<:B).map ;
							 | 
						||
| 
								 | 
							
									Main $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
									LinkLibraries $(<) : core libs ;
							 | 
						||
| 
								 | 
							
									Hex $(<:B).hex : $(<) ;
							 | 
						||
| 
								 | 
							
									for _p in $(PORTS)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										Upload $(_p) : $(PORT_$(_p)) : $(<:B).hex ;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Targets
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Grab everything from the core directory
							 | 
						||
| 
								 | 
							
								Library core : [ GLOB $(ARDUINO_CORE) : *.c *.cpp ] ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Grab everything from libraries.  To avoid this "grab everything" behaviour, you
							 | 
						||
| 
								 | 
							
								# can specify specific modules to pick up in PROJECT_MODULES
							 | 
						||
| 
								 | 
							
								Library libs : [ GLOB $(ARDUINO_LIB)/$(PROJECT_LIBS) $(ARDUINO_LIB)/$(PROJECT_LIBS)/utility $(SKETCH_LIB)/$(PROJECT_LIBS) : *.cpp *.c ] ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Main output executable
							 | 
						||
| 
								 | 
							
								Arduino $(PWD:B).elf : $(PROJECT_MODULES) [ GLOB $(PROJECT_DIRS) : *.c *.cpp *.pde *.ino ] ;
							 |