You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
MCU = cortex-m3 ; CHIP = STM32F103ZE ; BOARD = maple_native ;
#CHIP = at91sam3u4 ; #BOARD = sam3u-ek ;
if ! $(TOOLSET) { TOOLSET = devkit ; Echo "Assuming TOOLSET=devkit" ; }
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- ; } else if $(TOOLSET) = ports { TOOLS_PATH = /opt/local/bin ; TOOLS_ARCH = arm-none-eabi- ; }
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 ;
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 ;
MAPLE_DIR = $(HOME)/Source/SAM3U/libmaple ; MAPLE_LIBS = Servo LiquidCrystal Wire FreeRTOS ; MAPLE_SUBDIRS = wirish wirish/comm wirish/boards libmaple libmaple/usb libmaple/usb/usb_lib ;
SKETCH_DIR = $(HOME)/Source/Arduino ; SKETCH_LIBS = RF24 ;
MODULE_DIRS = . $(MAPLE_DIR)/$(MAPLE_SUBDIRS) $(MAPLE_DIR)/libraries/$(MAPLE_LIBS) $(SKETCH_DIR)/libraries/$(SKETCH_LIBS) ; HDRS = $(MODULE_DIRS) ; LOCATE_TARGET = out/$(TOOLSET) ; LOCATE_SOURCE = $(LOCATE_TARGET) ;
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 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 $(<) : $(>) ; } }
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 { MainFromObjects $(<) : $(>:B)$(SUFOBJ) ; Objects $(>) ; }
# Modules MODULES = [ GLOB $(MODULE_DIRS) : *.pde *.c *.cpp *.S ] ;
# Main output executable MAIN = $(PWD:B).elf ;
# Linker script LINK_DIR = $(MAPLE_DIR)/support/ld ; LINKSCRIPT = $(LINK_DIR)/$(BOARD)/flash.ld ;
# Bring in the map and link script LINKFLAGS += -Wl,-Map=$(LOCATE_TARGET)/$(MAIN:B).map -T$(LINKSCRIPT) -L$(LINK_DIR) ;
Main $(MAIN) : $(MODULES) ; Binary $(MAIN:B).bin : $(MAIN) ; Upload $(MAIN:B).bin ;
|