Makefile
author Tero Marttila <terom@paivola.fi>
Thu, 25 Sep 2014 01:00:08 +0300
changeset 4 d0f29c45fe52
parent 3 87dd3b72b024
child 5 5c86d54080c1
permissions -rw-r--r--
carboard: rename from hello
0
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
QMSK_ARDUINO = qmsk
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
4
d0f29c45fe52 carboard: rename from hello
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
     3
PROG = carboard
0
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
ELF = build/src/$(PROG).elf
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
HEX = build/src/$(PROG).hex
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
4
d0f29c45fe52 carboard: rename from hello
Tero Marttila <terom@paivola.fi>
parents: 3
diff changeset
     8
build/src/carboard.elf: build/src/carboard.o \
1
dc293f9aa873 hello: use serial
Tero Marttila <terom@paivola.fi>
parents: 0
diff changeset
     9
	build/qmsk/src/serial.o \
3
87dd3b72b024 read switch input, output on serial
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    10
	build/qmsk/src/switch.o \
0
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
	build/qmsk/src/timer.o
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
##
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
all: $(HEX)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
build:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
	mkdir -p build/src build/qmsk/src
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
clean:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
	rm -rf build/
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
## Compiler
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
MCU = atmega328p
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
# CPU clock frequency
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
CPU = 16000000
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
STD = c99
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
CC = avr-gcc
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
CPPFLAGS = -DF_CPU=$(CPU)UL -I$(QMSK_ARDUINO)/include
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os -g
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
LDFLAGS = -mmcu=$(MCU)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
LDLIBS = -lc
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
build/%.o: %.c
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
	$(CC) -MM $(CPPFLAGS) -MT $@ -MF build/$*.d $<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
build/%.elf:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
# existing .d files for rebuilding existing .o's
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
-include $(wildcard build/*/*.d)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
dump: $(ELF)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
	avr-objdump -d $(ELF)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
## Assembler
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
AS = avra
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
ASFLAGS = 
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
%.hex: %.s
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
	$(AS) $(ASFLAGS) $<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
	mv $<.hex $@
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
## Flashing
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
# Arduino Duemilanove
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
AD_PART = m328p
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
AD_PROG = arduino
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
AD_BAUD = 57600
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
AD_PORT = /dev/arduino
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
AD = avrdude
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
ADFLAGS = -p $(AD_PART) -c $(AD_PROG) -b $(AD_BAUD) -P $(AD_PORT)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
build/%.hex: build/%.elf
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
	avr-objcopy -O ihex -R .eeprom $< $@
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
.PRECIOUS: build/%.elf
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
upload: $(HEX)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
	$(AD) $(ADFLAGS) -U flash:w:$<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
## Console
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
SERIAL_BAUD = 9600
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
SERIAL_FLOW = n
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
SERIAL_PARITY = n
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
SERIAL_BITS = 8
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
SERIAL_PORT = $(AD_PORT)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
SERIAL_TERM = picocom
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
SERIAL_FLAGS = -b $(SERIAL_BAUD) -f $(SERIAL_FLOW) -p $(SERIAL_PARITY) -d $(SERIAL_BITS)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
console:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
	$(SERIAL_TERM) $(SERIAL_FLAGS) $(SERIAL_PORT)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86