]> www.fi.muni.cz Git - openparking.git/blob - Makefile
OpenSCAD source files.
[openparking.git] / Makefile
1
2 PROGRAM=firmware
3 SRC=firmware.c rs485.c
4 OBJ=$(SRC:.c=.o)
5
6
7 MCU=atmega328p
8 # AVRDUDE_MCU=$(MCU)
9 AVRDUDE_MCU=atmega328p
10 AVRDUDE_PROGRAMMER=arduino
11
12 CFLAGS=-Wall -Os -mmcu=$(MCU) -DUSE_LOGGING=1 -DF_CPU=16000000UL -std=gnu99
13 LDFLAGS=
14 AVRDUDE_FLAGS= -p$(AVRDUDE_MCU) -c $(AVRDUDE_PROGRAMMER) -P /dev/ttyUSB0 -b 57600
15
16 FORMAT=ihex
17
18 CC=avr-gcc
19 OBJCOPY=avr-objcopy
20 OBJDUMP=avr-objdump
21 AVRDUDE=avrdude
22
23 WEB_DIR=/home/kas/html/board/
24 WEB_FILES=pcb-back.png pcb-front.png schematics.png handlebar.png
25 GERBER_FILES=\
26         board.top.gbr \
27         board.bottom.gbr \
28         board.topmask.gbr \
29         board.bottommask.gbr \
30         board.topsilk.gbr \
31         board.bottomsilk.gbr \
32         board.outline.gbr \
33         board.plated-drill.cnc
34
35 all: $(PROGRAM).hex $(PROGRAM).eep
36
37 clean:
38         rm -f board.cmd board.jpg board.net board.new.pcb board.pcb- \
39                 board.png board.ps board.sch~ pcb-back.png pcb-front.png \
40                 schematics.png *.gbr *.cnc \
41                 $(PROGRAM).hex $(PROGRAM).eep $(PROGRAM).elf *.o *.s \
42                 eeprom.raw version.c
43
44 web: $(WEB_FILES)
45         test -d $(WEB_DIR) && install -m 644 $(WEB_FILES) $(WEB_DIR)
46
47 board.pcb: board.sch board.prj
48         gsch2pcb board.prj
49
50 pcb-front.png: board.pcb
51         pcb -x png --dpi 150 --photo-mode board.pcb \
52                 && mv board.png $@
53
54 pcb-back.png: board.pcb
55         pcb -x png --dpi 150 --photo-mode --photo-flip-x board.pcb \
56                 && mv board.png $@
57
58 schematics.png: board.sch
59         gschem -s image.scm board.sch -o schematics.png
60
61 handlebar-big.png: handlebar.sch
62         gschem -s image.scm handlebar.sch -o handlebar-big.png
63
64 handlebar.png: handlebar-big.png
65         convert -crop 450x300+320+170 handlebar-big.png handlebar.png
66
67 gerber: $(GERBER_FILES)
68
69 $(GERBER_FILES): board.pcb
70         pcb -x gerber board.pcb
71
72 fab: $(GERBER_FILES)
73         @sh -c 'D=board-`date +\%Y\%m\%d-\%H\%M` && mkdir $$D && \
74                 cp board.top.gbr $$D/board.gtl && \
75                 cp board.bottom.gbr $$D/board.gbl && \
76                 cp board.topmask.gbr $$D/board.gts && \
77                 cp board.bottommask.gbr $$D/board.gbs && \
78                 cp board.topsilk.gbr $$D/board.gto && \
79                 cp board.bottomsilk.gbr $$D/board.gbo && \
80                 cp board.outline.gbr $$D/board.gko && \
81                 cp board.plated-drill.cnc $$D/board.txt && \
82                 zip -r $$D.zip $$D && \
83                 echo "Done. Output in $$D.zip."; \
84                 echo "You may also want to do git tag gerber-fab-$$D" '
85
86 .PHONY: gerber
87
88 program: $(PROGRAM).hex $(PROGRAM).eep
89         $(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(PROGRAM).hex:i -U eeprom:w:$(PROGRAM).eep:i
90
91 program_flash: $(PROGRAM).hex
92         $(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(PROGRAM).hex:i
93
94 program_eeprom: $(PROGRAM).eep
95         $(AVRDUDE) $(AVRDUDE_FLAGS) eeprom:w:$(PROGRAM).eep:i
96
97 dump_eeprom:
98         $(AVRDUDE) $(AVRDUDE_FLAGS) -U eeprom:r:eeprom.raw:r
99         od -tx1 eeprom.raw
100
101 objdump: $(PROGRAM).elf
102         $(OBJDUMP) --disassemble $<
103
104 .PRECIOUS : $(OBJ) $(PROGRAM).elf
105
106 %.hex: %.elf
107         $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
108
109 %.eep: %.elf
110         $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
111                 --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
112
113 %.elf: $(OBJ)
114         $(CC) $(CFLAGS) $(OBJ) -o $@ $(LDFLAGS)
115
116 %.o: %.c lights.h Makefile
117         $(CC) -c $(CFLAGS) $< -o $@
118
119 %.s: %.c lights.h Makefile
120         $(CC) -S -c $(CFLAGS) $< -o $@
121
122 %.o: %.S
123         $(CC) -c $(CFLAGS) $< -o $@
124
125 clean:
126
127 version.c:
128         ./version.pl > version.c
129
130 .PHONY: all clean dump_eeprom program program_flash program_eeprom objdump \
131         version.c
132