USBaspLoader v0.97 stable release
[pub/USBaspLoader.git] / firmware / Makefile
1 # Name: Makefile
2 # Project: USBaspLoader
3 # Author: Christian Starkjohann
4 # Creation Date: 2007-12-10
5 # Author: Stephan Bärwolf
6 # Improvement Date: 2012-07-31
7 # Improvement Date: 2012-09-12
8 # Tabsize: 4
9 # Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH
10 # License: GNU GPL v2 (see License.txt)
11
12 ###############################################################################
13 # Configure the following variables according to your AVR.
14 # Program the device with
15 # make fuse # to set the clock generator, boot section size etc.
16 # make flash # to load the boot loader into flash
17 # make lock # to protect the boot loader from overwriting
18
19 include ../Makefile.inc
20
21 # Remove the -fno-* options when you use gcc 3, it does not understand them
22 CFLAGS = -Wall -Os -g3 -ggdb -fno-move-loop-invariants -fno-tree-scev-cprop -fno-inline-small-functions -I. -mmcu=$(DEVICE) -DBOOTLOADER_ADDRESS=$(BOOTLOADER_ADDRESS) -DF_CPU=$(F_CPU) $(DEFINES)
23 LDFLAGS = -Wl,--relax,--gc-sections -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) -Wl,--defsym=nullVector=0
24
25 DEPENDS = bootloaderconfig.h ../Makefile.inc
26
27 # symbolic targets:
28 all: main.hex $(DEPENDS)
29
30 usbdrv/usbdrvasm.o: usbdrv/usbdrvasm.S $(DEPENDS)
31 $(CC) -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o $(CFLAGS)
32
33 usbdrv/oddebug.o: usbdrv/oddebug.c $(DEPENDS)
34 $(CC) usbdrv/oddebug.c -c -o usbdrv/oddebug.o $(CFLAGS)
35
36 main.o: main.c $(DEPENDS)
37 $(CC) main.c -c -o main.o $(CFLAGS)
38
39 flash: all
40 $(ECHO) "."
41 $(AVRDUDE) -U flash:w:main.hex:i
42 $(ECHO) "."
43 $(ECHO) "."
44
45 readflash:
46 $(ECHO) "."
47 $(AVRDUDE) -U flash:r:read.hex:i
48 $(ECHO) "."
49 $(ECHO) "."
50
51
52 fuse:
53 $(ECHO) "."
54 $(AVRDUDE) $(FUSEOPT)
55 $(ECHO) "."
56 $(ECHO) "."
57
58
59 lock:
60 $(ECHO) "."
61 $(AVRDUDE) $(LOCKOPT)
62 $(ECHO) "."
63 $(ECHO) "."
64
65
66 read_fuses:
67 $(UISP) --rd_fuses
68
69 deepclean: clean
70 $(RM) *~
71
72 clean:
73 $(RM) main.hex
74 $(RM) main.asm
75 $(RM) main.map
76 $(RM) main.elf
77 $(RM) main.o
78 $(RM) main.s
79 $(RM) usbdrv/usbdrvasm.o
80 $(RM) usbdrv/oddebug.o
81 $(RM) usbdrv/oddebug.s
82 $(RM) usbdrv/usbdrv.s
83
84 # file targets:
85 main.elf: usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o $(DEPENDS)
86 $(CC) $(CFLAGS) -o main.elf usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o -Wl,-Map,main.map $(LDFLAGS)
87
88 main.asm: main.elf $(DEPENDS)
89 $(OBD) -Stdr main.elf > main.asm
90
91 main.hex: main.elf main.asm $(DEPENDS)
92 $(RM) main.hex main.eep.hex
93 $(OBC) -j .text -j .data -O ihex main.elf main.hex
94 $(ECHO) "."
95 $(ECHO) "."
96 $(ECHO) "."
97 $(ECHO) "!!!ATTANTION!!!"
98 $(ECHO) "(data+text) MUST fit into your MCUs bootloader section"
99 $(ECHO) "."
100 $(SIZ) --mcu $(DEVICE) main.elf
101 $(ECHO) "."
102 $(ECHO) "."
103 $(ECHO) "."
104
105 disasm: main.elf $(DEPENDS)
106 $(OBD) -d main.elf
107
108 cpp: $(DEPENDS)
109 $(CC) $(CFLAGS) -E main.c