Makefile
author Tero Marttila <terom@paivola.fi>
Wed, 24 Sep 2014 22:54:26 +0300
changeset 1 dc293f9aa873
parent 0 cae83b7bfcf4
child 3 87dd3b72b024
permissions -rw-r--r--
hello: use serial
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
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
PROG = hello
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
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
build/src/hello.elf: build/src/hello.o \
1
dc293f9aa873 hello: use serial
Tero Marttila <terom@paivola.fi>
parents: 0
diff changeset
     9
	build/qmsk/src/serial.o \
0
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
	build/qmsk/src/timer.o
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
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
all: $(HEX)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
build:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
	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
    17
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
clean:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
	rm -rf build/
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
## Compiler
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
MCU = atmega328p
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
# CPU clock frequency
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
CPU = 16000000
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
STD = c99
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
CC = avr-gcc
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
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
    30
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
    31
LDFLAGS = -mmcu=$(MCU)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
LDLIBS = -lc
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
build/%.o: %.c
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
	$(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
    37
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
build/%.elf:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
# 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
    42
-include $(wildcard build/*/*.d)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
dump: $(ELF)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
	avr-objdump -d $(ELF)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
## Assembler
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
AS = avra
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
ASFLAGS = 
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
%.hex: %.s
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
	$(AS) $(ASFLAGS) $<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
	mv $<.hex $@
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
## Flashing
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
# Arduino Duemilanove
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
AD_PART = m328p
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
AD_PROG = arduino
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
AD_BAUD = 57600
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
AD_PORT = /dev/arduino
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
AD = avrdude
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
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
    64
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
build/%.hex: build/%.elf
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
	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
    67
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
.PRECIOUS: build/%.elf
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
upload: $(HEX)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
	$(AD) $(ADFLAGS) -U flash:w:$<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
## Console
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
SERIAL_BAUD = 9600
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
SERIAL_FLOW = n
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
SERIAL_PARITY = n
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
SERIAL_BITS = 8
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
SERIAL_PORT = $(AD_PORT)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
SERIAL_TERM = picocom
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
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
    82
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
console:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
	$(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
    85