This repository was archived by the owner on Aug 22, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
107 lines (77 loc) · 2.36 KB
/
makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# The worst makefile ever produced but should work with any similarly structured AVR projects
PROJECT_NAME=PacbotLowLevelCode
MCU=atmega32u4
# add any additional include directories (AIDs).
AID=
OUT_PATH=Output
OBJ_PATH=Output/Obj/
DFU-P=dfu-programmer
# Edit above
# Don't edit below
C_SOURCES:=$(wildcard *.c)
O_SOURCES:=$(patsubst %.c, $(OBJ_PATH)%.o, $(C_SOURCES))
AID_FORMAT:=$(patsubst %, -I%, $(AID))
# Don't edit above
# Edit below
DEBUG=-DDEBUG
CC=avr-gcc
DASH_F_ARGS=-funsigned-char -funsigned-bitfields -ffunction-sections -fdata-sections -fpack-struct -fshort-enums
COMPILER_ARGS=$(DEBUG) -Os -MD $(DASH_F_ARGS) -g2 -Wall $(AID_FORMAT) -mmcu=atmega32u4 -std=gnu99
LINKER_ARGS=-Wl,-Map="Output/$(PROJECT_NAME).map" -Wl,-u,vfprintf -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega32u4 -lprintf_flt
# Edit above
# Don't edit below
.Phony: all
all: dissassembly size flash
size: $(OUT_PATH)/$(PROJECT_NAME).elf
avr-size $(OUT_PATH)/$(PROJECT_NAME).elf
@echo
dissassembly: $(OUT_PATH)/$(PROJECT_NAME).lss
flash: $(OUT_PATH)/$(PROJECT_NAME).hex
@echo flashing chip
$(DFU-P) $(MCU) erase
$(DFU-P) $(MCU) flash $<
@echo
erase:
@echo erasing flash on chip
$(DFU-P) $(MCU) erase
@echo
launch:
@echo launching program
$(DFU-P) $(MCU) launch --no-reset
@echo
noflash: hexfile
binfile: $(OUT_PATH)/$(PROJECT_NAME).bin
hexfile: $(OUT_PATH)/$(PROJECT_NAME).hex
elffile: $(OUT_PATH)/$(PROJECT_NAME).elf
$(OUT_PATH)/$(PROJECT_NAME).lss: $(OUT_PATH)/$(PROJECT_NAME).elf
@echo Creating Dissassembly file
avr-objdump -h -S $< > $@
@echo
$(OUT_PATH)/$(PROJECT_NAME).bin: $(OUT_PATH)/$(PROJECT_NAME).elf
@echo Copying Elf to Bin
avr-objcopy -O binary $< $@
@echo
$(OUT_PATH)/$(PROJECT_NAME).hex: $(OUT_PATH)/$(PROJECT_NAME).elf
@echo Copying Elf to Hex
avr-objcopy -O ihex $< $@
@echo
$(OUT_PATH)/$(PROJECT_NAME).elf: $(O_SOURCES)
@echo Linking object files into ELF file
$(CC) -o $@ $(O_SOURCES) $(LINKER_ARGS)
@echo
# Include directories are provided by avr-gcc assuming they are in the default WinAVR location
$(OBJ_PATH)%.o: %.c | output_folder
@echo Compiling $< into $@
$(CC) $(COMPILER_ARGS) -o $@ -c $<
@echo
# Generates the output folders if need be
output_folder:
@echo Making output directories
mkdir -p $(OUT_PATH)
mkdir -p $(OBJ_PATH)
@echo
print:
@echo $(AID_FORMAT)
clean:
rm -r $(OUT_PATH)
-include $(O_SOURCES:.o=.d)