2 # This makefile take each "at*" file, extracts it's part name
3 # And compile it into an ELF binary.
4 # It also disassemble it for debugging purposes.
6 # The code is compiled "optimized" to the max.
8 # The wierd "-Wl,--undefined=_mmcu,--section-start=.mmcu=0x910000"
9 # is used to tell the linker not to discard the .mmcu section,
10 # otherwise the --gc-sections will delete it.
12 # Copyright 2008, 2009 Michel Pollet <buserror@gmail.com>
14 # This file is part of simavr.
16 # simavr is free software: you can redistribute it and/or modify
17 # it under the terms of the GNU General Public License as published by
18 # the Free Software Foundation, either version 3 of the License, or
19 # (at your option) any later version.
21 # simavr is distributed in the hope that it will be useful,
22 # but WITHOUT ANY WARRANTY; without even the implied warranty of
23 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 # GNU General Public License for more details.
26 # You should have received a copy of the GNU General Public License
27 # along with simavr. If not, see <http://www.gnu.org/licenses/>.
29 ifeq (${shell uname}, Darwin)
30 AVR_ROOT := "/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/"
34 AVR := ${AVR_ROOT}avr-
38 sources := $(wildcard at*.c)
40 all : ${sources:.c=.axf} ${sources:.c=.hex} ${sources:.c=.s}
43 @${AVR}objcopy -j .text -j .data -O ihex ${<} ${@}
46 @${AVR}objdump -j .text -j .data -j .bss -d ${<} > ${@}
50 @part=${<} ; part=$${part/_*}; \
51 ${AVR}gcc -Wall -g -Os -std=gnu99 \
54 -mcall-prologues -fno-inline-small-functions \
55 -ffunction-sections -fdata-sections \
56 -Wl,--relax,--gc-sections \
57 -Wl,--undefined=_mmcu,--section-start=.mmcu=0x910000 \
60 @${AVR}size ${@}|sed '1d'
63 rm -f *.hex *.o *.axf *.s