diff options
Diffstat (limited to 'bootloaders/optiboot/Makefile')
| -rw-r--r-- | bootloaders/optiboot/Makefile | 77 | 
1 files changed, 69 insertions, 8 deletions
diff --git a/bootloaders/optiboot/Makefile b/bootloaders/optiboot/Makefile index 0fd6005..92f9c61 100644 --- a/bootloaders/optiboot/Makefile +++ b/bootloaders/optiboot/Makefile @@ -19,6 +19,17 @@  # program name should not be changed...  PROGRAM    = optiboot +# The default behavior is to build using tools that are in the users +# current path variables, but we can also build using an installed +# Arduino user IDE setup, or the Arduino source tree. +# Uncomment this next lines to build within the arduino environment, +# using the arduino-included avrgcc toolset (mac and pc) +# ENV ?= arduino +# ENV ?= arduinodev +# OS ?= macosx +# OS ?= windows + +  # enter the parameters for the avrdude isp tool  ISPTOOL	   = stk500v2  ISPPORT	   = usb @@ -27,6 +38,50 @@ ISPSPEED   = -b 115200  MCU_TARGET = atmega168  LDSECTION  = --section-start=.text=0x3e00 +# Build environments +# Start of some ugly makefile-isms to allow optiboot to be built +# in several different environments.  See the README.TXT file for +# details. + +# default +fixpath = $(1) + +ifeq ($(ENV), arduino) +# For Arduino, we assume that we're connected to the optiboot directory +# included with the arduino distribution, which means that the full set +# of avr-tools are "right up there" in standard places. +TOOLROOT = ../../../tools +GCCROOT = $(TOOLROOT)/avr/bin/ +AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf + +ifeq ($(OS), windows) +# On windows, SOME of the tool paths will need to have backslashes instead +# of forward slashes (because they use windows cmd.exe for execution instead +# of a unix/mingw shell?) +fixpath = $(subst /,\,$1) +endif + +else ifeq ($(ENV), arduinodev) +# Arduino IDE source code environment.  Use the unpacked compilers created +# by the build (you'll need to do "ant build" first.) +ifeq ($(OS), macosx) +TOOLROOT = ../../../../build/macosx/work/Arduino.app/Contents/Resources/Java/hardware/tools +endif +ifeq ($(OS), windows) +TOOLROOT = ../../../../build/windows/work/hardware/tools +endif + +GCCROOT = $(TOOLROOT)/avr/bin/ +AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf + +else +GCCROOT = +AVRDUDE_CONF = +endif +# +# End of build environment code. + +  # the efuse should really be 0xf8; since, however, only the lower  # three bits of that byte are used on the atmega168, avrdude gets  # confused if you specify 1's for the higher bits, see: @@ -37,10 +92,13 @@ LDSECTION  = --section-start=.text=0x3e00  # lock it), but since the high two bits of the lock byte are  # unused, avrdude would get confused. -ISPFUSES    = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ --e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m -ISPFLASH    = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ --U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m +ISPFUSES    = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \ +              -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +              -e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m \ +              -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m +ISPFLASH    = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \ +              -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +              -U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m  STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe"  STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ @@ -53,15 +111,17 @@ OPTIMIZE = -Os -fno-inline-small-functions -fno-split-wide-types -mshort-calls  DEFS       =   LIBS       = -CC         = avr-gcc +CC         = $(GCCROOT)avr-gcc  # Override is only needed by avr-lib build system.  override CFLAGS        = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) -override LDFLAGS       = -Wl,$(LDSECTION) -Wl,--relax -nostartfiles +override LDFLAGS       = -Wl,$(LDSECTION) -Wl,--relax -Wl,--gc-sections -nostartfiles -nostdlib + +OBJCOPY        = $(GCCROOT)avr-objcopy +OBJDUMP        = $(call fixpath,$(GCCROOT)avr-objdump) -OBJCOPY        = avr-objcopy -OBJDUMP        = avr-objdump +SIZE           = $(GCCROOT)avr-size  # 20MHz clocked platforms  # @@ -222,6 +282,7 @@ isp-stk500: $(PROGRAM)_$(TARGET).hex  %.elf: $(OBJ)  	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) +	$(SIZE) $@  clean:  	rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex  | 
