Statistics
| Branch: | Revision:

root / arduino-1.0 / hardware / arduino / bootloaders / diskloader / Makefile @ 58d82c77

History | View | Annotate | Download (2.59 KB)

1
###############################################################################
2
# Makefile for DiskLoader
3
###############################################################################
4

    
5
## General Flags
6
PROJECT = DiskLoader
7
TARGET = DiskLoader.elf
8
CC = avr-gcc
9

    
10
# BOARD2
11
MCU = atmega32u4
12
AVR_FREQ   = 16000000L
13

    
14
# Specify the Arduino model using the assigned PID.  This is used by Descriptors.c
15
#   to set PID and product descriptor string
16
# Arduino Leonardo PID
17
ARDUINO_MODEL_PID = 0x0034
18
# Arduino Micro PID
19
#ARDUINO_MODEL_PID = 0x0035
20

    
21
# Change if your programmer is different
22
AVRDUDE_PROGRAMMER = avrispmkII
23
AVRDUDE_PORT = usb	   
24

    
25
# program name should not be changed...
26
PROGRAM    = DiskLoader
27

    
28
AVRDUDE = avrdude
29
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -p $(MCU)
30

    
31
## Options common to compile, link and assembly rules
32
COMMON = -mmcu=$(MCU)
33

    
34
override CFLAGS = -g -Wall -Os -mmcu=$(MCU) -DF_CPU=$(AVR_FREQ) -DARDUINO_MODEL_PID=$(ARDUINO_MODEL_PID) $(DEFS) -ffunction-sections -gdwarf-2 -fdata-sections -fno-split-wide-types
35

    
36
## Assembly specific flags
37
ASMFLAGS = $(COMMON)
38
ASMFLAGS += $(CFLAGS)
39
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
40

    
41
## Linker flags
42
LDFLAGS = $(COMMON)
43
LDFLAGS += -Wl,-gc-sections,-Map=DiskLoader.map,--section-start=.text=0x7800,--relax
44
LDFLAGS += -nodefaultlibs -nostartfiles
45

    
46

    
47
## Intel Hex file production flags
48
HEX_EEPROM_FLAGS = -j .eeprom
49
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
50
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
51

    
52
## Objects explicitly added by the user
53
LINKONLYOBJECTS = 
54

    
55
MODULES   := .
56
SRC_DIR   := $(addprefix src/,$(MODULES))
57
BUILD_DIR := $(addprefix build/,$(MODULES))
58

    
59
SRC       := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cpp))
60
OBJ       := $(patsubst src/%.cpp,build/%.o,$(SRC))
61
DEP		  := $(OBJ:%.o=%.d)
62
INCLUDES  := $(addprefix -I,$(SRC_DIR))
63

    
64
vpath %.cpp $(SRC_DIR)
65

    
66
.PHONY: all checkdirs clean
67

    
68
all: checkdirs $(TARGET) DiskLoader.hex DiskLoader.lss size
69

    
70
-include $(DEP)
71

    
72
checkdirs: $(BUILD_DIR)
73

    
74
$(BUILD_DIR):
75
	@mkdir -p $@
76

    
77
clean:
78
	@rm -rf build/
79
	@rm -f *.hex
80
	@rm -f *.elf
81
	@rm -f *.lss
82
	@rm -f *.map
83

    
84
define make-goal
85
$1/%.o: %.cpp
86
	$(CC) $(INCLUDES) $(CFLAGS) -c $$< -MD -o $$@
87
endef
88

    
89
$(foreach bdir,$(BUILD_DIR),$(eval $(call make-goal,$(bdir))))
90

    
91
$(TARGET): $(OBJ)
92
	$(CC) $(LDFLAGS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) $^ -o $@
93

    
94
%.hex: $(TARGET)
95
	avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@
96
	
97
%.lss: $(TARGET)
98
	avr-objdump -h -S $< > $@
99

    
100
size: $(TARGET)
101
	@echo
102
#	@avr-size -C --mcu=${MCU} ${TARGET}.elf
103

    
104
program: $(TARGET).hex
105
	$(AVRDUDE) $(AVRDUDE_FLAGS) -B 5 -u -U flash:w:$(TARGET).hex