Makefile
author Tero Marttila <terom@paivola.fi>
Thu, 29 Jan 2015 23:11:44 +0200
changeset 107 05707929ff6f
parent 89 1b3cea759eff
permissions -rw-r--r--
qmsk.web.async: handle HTTPExceptions
62
2d68a76322cb hello-dmx: working basic dmx output using DmxSimple's frame-timing inline assembler code
Tero Marttila <terom@paivola.fi>
parents: 58
diff changeset
     1
PROG = hello-dmx
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
     2
51
ec6271f0637b make: fix build-deps, and avr-objdump -d build/src/hello.elf
Tero Marttila <terom@paivola.fi>
parents: 50
diff changeset
     3
ELF = build/src/$(PROG).elf
50
e4ac5a591dcd src/ layout
Tero Marttila <terom@paivola.fi>
parents: 48
diff changeset
     4
HEX = build/src/$(PROG).hex
e4ac5a591dcd src/ layout
Tero Marttila <terom@paivola.fi>
parents: 48
diff changeset
     5
e4ac5a591dcd src/ layout
Tero Marttila <terom@paivola.fi>
parents: 48
diff changeset
     6
all: $(HEX)
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
     7
48
50dc2f4d90fd Makefile: .d build deps
Tero Marttila <terom@paivola.fi>
parents: 47
diff changeset
     8
build:
50
e4ac5a591dcd src/ layout
Tero Marttila <terom@paivola.fi>
parents: 48
diff changeset
     9
	mkdir -p build/src
48
50dc2f4d90fd Makefile: .d build deps
Tero Marttila <terom@paivola.fi>
parents: 47
diff changeset
    10
62
2d68a76322cb hello-dmx: working basic dmx output using DmxSimple's frame-timing inline assembler code
Tero Marttila <terom@paivola.fi>
parents: 58
diff changeset
    11
dmx: dmx.hex
2d68a76322cb hello-dmx: working basic dmx output using DmxSimple's frame-timing inline assembler code
Tero Marttila <terom@paivola.fi>
parents: 58
diff changeset
    12
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    13
## Compiler
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    14
MCU = atmega328p
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    15
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    16
# CPU clock frequency
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    17
CPU = 16000000
64
f9221fa50c75 make: use -std=c99
Tero Marttila <terom@paivola.fi>
parents: 62
diff changeset
    18
STD = c99
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    19
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    20
CC = avr-gcc
48
50dc2f4d90fd Makefile: .d build deps
Tero Marttila <terom@paivola.fi>
parents: 47
diff changeset
    21
CPPFLAGS = -DF_CPU=$(CPU)UL
64
f9221fa50c75 make: use -std=c99
Tero Marttila <terom@paivola.fi>
parents: 62
diff changeset
    22
CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os -g
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    23
50
e4ac5a591dcd src/ layout
Tero Marttila <terom@paivola.fi>
parents: 48
diff changeset
    24
build/%.elf: %.c
48
50dc2f4d90fd Makefile: .d build deps
Tero Marttila <terom@paivola.fi>
parents: 47
diff changeset
    25
	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $*.c
50dc2f4d90fd Makefile: .d build deps
Tero Marttila <terom@paivola.fi>
parents: 47
diff changeset
    26
	$(CC) -MM $(CPPFLAGS) -MT $@ -MF build/$*.d $*.c
50dc2f4d90fd Makefile: .d build deps
Tero Marttila <terom@paivola.fi>
parents: 47
diff changeset
    27
50dc2f4d90fd Makefile: .d build deps
Tero Marttila <terom@paivola.fi>
parents: 47
diff changeset
    28
# existing .d files for rebuilding existing .o's
51
ec6271f0637b make: fix build-deps, and avr-objdump -d build/src/hello.elf
Tero Marttila <terom@paivola.fi>
parents: 50
diff changeset
    29
-include $(wildcard build/*/*.d)
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    30
50
e4ac5a591dcd src/ layout
Tero Marttila <terom@paivola.fi>
parents: 48
diff changeset
    31
build/%.hex: build/%.elf
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    32
	avr-objcopy -O ihex -R .eeprom $< $@
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    33
50
e4ac5a591dcd src/ layout
Tero Marttila <terom@paivola.fi>
parents: 48
diff changeset
    34
.PRECIOUS: build/%.elf
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    35
51
ec6271f0637b make: fix build-deps, and avr-objdump -d build/src/hello.elf
Tero Marttila <terom@paivola.fi>
parents: 50
diff changeset
    36
dump: $(ELF)
ec6271f0637b make: fix build-deps, and avr-objdump -d build/src/hello.elf
Tero Marttila <terom@paivola.fi>
parents: 50
diff changeset
    37
	avr-objdump -d $(ELF)
ec6271f0637b make: fix build-deps, and avr-objdump -d build/src/hello.elf
Tero Marttila <terom@paivola.fi>
parents: 50
diff changeset
    38
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    39
## Assembler
5
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
AS = avra
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
ASFLAGS = 
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    43
%.hex: %.s
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    44
	$(AS) $(ASFLAGS) $<
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    45
	mv $<.hex $@
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    46
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    47
## Flashing
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    48
# Arduino Duemilanove
5
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
AD_PART = m328p
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
AD_PROG = arduino
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
AD_BAUD = 57600
43
a0a003083d4c use /dev/arduino for avrdude
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
    52
AD_PORT = /dev/arduino
5
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
AD = avrdude
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
ADFLAGS = -p $(AD_PART) -c $(AD_PROG) -b $(AD_BAUD) -P $(AD_PORT)
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
50
e4ac5a591dcd src/ layout
Tero Marttila <terom@paivola.fi>
parents: 48
diff changeset
    57
upload: $(HEX)
17
a7c668003a19 split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    58
	$(AD) $(ADFLAGS) -U flash:w:$<
5
7feeaeb473b5 Makefile
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    60
## Console
10
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    61
SERIAL_BAUD = 9600
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    62
SERIAL_FLOW = n
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    63
SERIAL_PARITY = n
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    64
SERIAL_BITS = 8
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    65
SERIAL_PORT = $(AD_PORT)
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    66
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    67
SERIAL_TERM = picocom
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    68
SERIAL_FLAGS = -b $(SERIAL_BAUD) -f $(SERIAL_FLOW) -p $(SERIAL_PARITY) -d $(SERIAL_BITS)
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    69
47
7f930a94ee1e bravely step into the modern world of C-programming, using avr-gcc for a hello world...
Tero Marttila <terom@paivola.fi>
parents: 45
diff changeset
    70
console:
10
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    71
	$(SERIAL_TERM) $(SERIAL_FLAGS) $(SERIAL_PORT)
faca61cf204c add a 'make chat' util
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    72