mirror of
				https://github.com/digistump/DigistumpArduino.git
				synced 2025-11-03 13:04:48 -08:00 
			
		
		
		
	
		
			
	
	
		
			238 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			238 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								MCU		= cortex-m3 ;
							 | 
						||
| 
								 | 
							
								CHIP		= STM32F103ZE ;
							 | 
						||
| 
								 | 
							
								BOARD		= maple_native ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#CHIP		= at91sam3u4 ;
							 | 
						||
| 
								 | 
							
								#BOARD		= sam3u-ek ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if ! $(TOOLSET)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									TOOLSET = mix ;
							 | 
						||
| 
								 | 
							
									Echo "Assuming TOOLSET=mix" ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								else if $(TOOLSET) = cs
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									TOOLS_PATH	= /opt/cs/arm/bin ;
							 | 
						||
| 
								 | 
							
									TOOLS_ARCH	= arm-none-eabi- ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								else if $(TOOLSET) = yagarto
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									TOOLS_PATH	= ~/Source/yagarto-4.6.2/bin ;
							 | 
						||
| 
								 | 
							
									TOOLS_ARCH	= arm-none-eabi- ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								if $(TOOLSET) = yagarto-install
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									TOOLS_PATH	= ~/Source/yagarto/install/bin ;
							 | 
						||
| 
								 | 
							
									TOOLS_ARCH	= arm-none-eabi- ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								else if $(TOOLSET) = devkit
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									TOOLS_PATH	= /opt/devkitARM/bin ;
							 | 
						||
| 
								 | 
							
									TOOLS_ARCH	= arm-eabi- ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								else if $(TOOLSET) = maple
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									TOOLS_PATH	= /opt/Maple/Resources/Java/hardware/tools/arm/bin ; 
							 | 
						||
| 
								 | 
							
									TOOLS_ARCH	= arm-none-eabi- ;
							 | 
						||
| 
								 | 
							
									LINK_DIR	= /opt/Maple/Resources/Java/hardware/leaflabs/cores/maple ;
							 | 
						||
| 
								 | 
							
									MAPLE_DIR	= /opt/Maple/Resources/Java/hardware/leaflabs/cores/maple ;
							 | 
						||
| 
								 | 
							
									MAPLE_SUBDIRS	= . ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								else if $(TOOLSET) = mix
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									TOOLS_PATH	= /opt/Maple/Resources/Java/hardware/tools/arm/bin ; 
							 | 
						||
| 
								 | 
							
									TOOLS_ARCH	= arm-none-eabi- ;
							 | 
						||
| 
								 | 
							
									LINKFLAGS	+= --print-gc-sections ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								else if $(TOOLSET) = ports
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									TOOLS_PATH	= /opt/local/bin ;
							 | 
						||
| 
								 | 
							
									TOOLS_ARCH	= arm-none-eabi- ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Tool locations
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CC	  	= $(TOOLS_PATH)/$(TOOLS_ARCH)gcc ;
							 | 
						||
| 
								 | 
							
								C++	 	= $(TOOLS_PATH)/$(TOOLS_ARCH)g++ ;
							 | 
						||
| 
								 | 
							
								AS	  	= $(TOOLS_PATH)/$(TOOLS_ARCH)gcc -c ;
							 | 
						||
| 
								 | 
							
								LINK	  	= $(TOOLS_PATH)/$(TOOLS_ARCH)g++ ;
							 | 
						||
| 
								 | 
							
								OBJCOPY 	= $(TOOLS_PATH)/$(TOOLS_ARCH)objcopy ;
							 | 
						||
| 
								 | 
							
								DFU		= dfu-util ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Flags
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DEFINES  	+= VECT_TAB_FLASH BOARD_$(BOARD) MCU_$(CHIP) ERROR_LED_PORT=GPIOC ERROR_LED_PIN=15 STM32_HIGH_DENSITY MAPLE_IDE ;
							 | 
						||
| 
								 | 
							
								OPTIM		= -Os ;
							 | 
						||
| 
								 | 
							
								MFLAGS		= cpu=$(MCU) thumb arch=armv7-m ;
							 | 
						||
| 
								 | 
							
								CCFLAGS  	= -Wall -m$(MFLAGS) -g -nostdlib -ffunction-sections -fdata-sections -Wl,--gc-sections ;
							 | 
						||
| 
								 | 
							
								C++FLAGS  	= $(CCFLAGS) -fno-rtti -fno-exceptions ; 
							 | 
						||
| 
								 | 
							
								LINKFLAGS  	+= -m$(MFLAGS) -Xlinker --gc-sections ;
							 | 
						||
| 
								 | 
							
								DFUFLAGS	= -a1 -d 0x1eaf:0x0003 -R ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Directories
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MAPLE_DIR	?= /opt/libmaple ;
							 | 
						||
| 
								 | 
							
								MAPLE_LIBS	= Servo LiquidCrystal Wire FreeRTOS ;
							 | 
						||
| 
								 | 
							
								MAPLE_SUBDIRS	?= libmaple libmaple/usb libmaple/usb/usb_lib wirish wirish/comm wirish/boards ; 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SKETCH_DIR	= $(HOME)/Source/Maple ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CORE_DIRS	= $(MAPLE_DIR)/$(MAPLE_SUBDIRS) $(MAPLE_DIR)/libraries/$(MAPLE_LIBS) ;
							 | 
						||
| 
								 | 
							
								HDRS		= $(CORE_DIRS) ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Modules
							 | 
						||
| 
								 | 
							
								MODULE_EXT	= *.c *.cpp *.S *.pde *.ino *.test ;
							 | 
						||
| 
								 | 
							
								CORE_MODULES	= [ GLOB $(CORE_DIRS) : $(MODULE_EXT) ] ; 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Unit test framework
							 | 
						||
| 
								 | 
							
								CXXTEST_DIR	= $(HOME)/Source/cxxtest ;
							 | 
						||
| 
								 | 
							
								#CXXTEST_GEN	= $(CXXTEST_DIR)/cxxtestgen.py ;
							 | 
						||
| 
								 | 
							
								CXXTEST_GEN	= $(CXXTEST_DIR)/python/scripts/cxxtestgen ;
							 | 
						||
| 
								 | 
							
								HDRS		+= $(CXXTEST_DIR) ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Linker script
							 | 
						||
| 
								 | 
							
								LINK_DIR	?= $(MAPLE_DIR)/support/ld ;
							 | 
						||
| 
								 | 
							
								LINKSCRIPT	= $(LINK_DIR)/$(BOARD)/flash.ld ; 
							 | 
						||
| 
								 | 
							
								LINKFLAGS 	+= -T$(LINKSCRIPT) -L$(LINK_DIR) ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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 TestSuite
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Depends $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
									MakeLocate $(<) : $(LOCATE_SOURCE) ;
							 | 
						||
| 
								 | 
							
									Clean clean : $(<) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions TestSuite
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									$(CXXTEST_GEN) --part $(>) > $(<)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule TestRoot
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									MakeLocate $(<) : $(LOCATE_SOURCE) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions TestRoot
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									$(CXXTEST_GEN) --root --error-printer > $(<)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule C++TestSuite
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local _CPP = $(>:B).cpp ;
							 | 
						||
| 
								 | 
							
									TestSuite $(_CPP) : $(>) ;
							 | 
						||
| 
								 | 
							
									C++ $(<) : $(_CPP) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Hex
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Depends $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
									MakeLocate $(<) : $(LOCATE_TARGET) ;
							 | 
						||
| 
								 | 
							
									Depends hex : $(<) ;
							 | 
						||
| 
								 | 
							
									Clean clean : $(<) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions Hex
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									$(OBJCOPY) -O ihex $(>) $(<)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Binary
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Depends $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
									MakeLocate $(<) : $(LOCATE_TARGET) ;
							 | 
						||
| 
								 | 
							
									Depends binary : $(<) ;
							 | 
						||
| 
								 | 
							
									Clean clean : $(<) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions Binary
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									$(OBJCOPY) -O binary $(>) $(<)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule UserObject
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									switch $(>:S)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										case .S : As $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
										case .ino : C++Pde $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
										case .pde : C++Pde $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
										case .test : C++TestSuite $(<) : $(>) ;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Upload
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Depends up : $(<) ;
							 | 
						||
| 
								 | 
							
									NotFile up ;
							 | 
						||
| 
								 | 
							
									Always $(<) ;
							 | 
						||
| 
								 | 
							
									Always up ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								actions Upload
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									$(DFU) $(DFUFLAGS)  -D $(<)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Override base objects rule, so all output can go in the output dir
							 | 
						||
| 
								 | 
							
								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) ;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Override base main rule, so all output can go in the output dir
							 | 
						||
| 
								 | 
							
								rule Main
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									# Bring in the map
							 | 
						||
| 
								 | 
							
									LINKFLAGS on $(<) = $(LINKFLAGS) -Wl,-Map=$(LOCATE_TARGET)/$(<:B).map ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									MakeLocate $(<) ;
							 | 
						||
| 
								 | 
							
								        MainFromObjects $(<) : $(>:B)$(SUFOBJ) ;
							 | 
						||
| 
								 | 
							
								        Objects $(>) ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule Maple
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									Main $(<) : $(>) $(CORE_MODULES) ; 
							 | 
						||
| 
								 | 
							
									Binary $(<:B).bin : $(<) ;
							 | 
						||
| 
								 | 
							
									Upload $(<:B).bin ;
							 | 
						||
| 
								 | 
							
								}
							 |