Makefile
author Tero Marttila <terom@paivola.fi>
Wed, 08 Oct 2014 23:21:01 +0300
changeset 5 5c86d54080c1
parent 4 d0f29c45fe52
permissions -rw-r--r--
carboard: use adxl for x/y/z readings and data; signed sensor values are still completely broken
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 \
5
5c86d54080c1 carboard: use adxl for x/y/z readings and data; signed sensor values are still completely broken
Tero Marttila <terom@paivola.fi>
parents: 4
diff changeset
     9
	build/qmsk/src/adxl345.o \
1
dc293f9aa873 hello: use serial
Tero Marttila <terom@paivola.fi>
parents: 0
diff changeset
    10
	build/qmsk/src/serial.o \
5
5c86d54080c1 carboard: use adxl for x/y/z readings and data; signed sensor values are still completely broken
Tero Marttila <terom@paivola.fi>
parents: 4
diff changeset
    11
	build/qmsk/src/spi.o \
3
87dd3b72b024 read switch input, output on serial
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    12
	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
    13
	build/qmsk/src/timer.o
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
##
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
all: $(HEX)
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
build:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
	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
    20
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
clean:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
	rm -rf build/
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
## Compiler
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
MCU = atmega328p
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
# CPU clock frequency
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
CPU = 16000000
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
STD = c99
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
CC = avr-gcc
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
CPPFLAGS = -DF_CPU=$(CPU)UL -I$(QMSK_ARDUINO)/include
5
5c86d54080c1 carboard: use adxl for x/y/z readings and data; signed sensor values are still completely broken
Tero Marttila <terom@paivola.fi>
parents: 4
diff changeset
    33
CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os
0
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
LDFLAGS = -mmcu=$(MCU)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
LDLIBS = -lc
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
build/%.o: %.c
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
	$(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
    40
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
build/%.elf:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS)
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
# 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
    45
-include $(wildcard build/*/*.d)
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
dump: $(ELF)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
	avr-objdump -d $(ELF)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
## Assembler
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
AS = avra
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
ASFLAGS = 
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
%.hex: %.s
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
	$(AS) $(ASFLAGS) $<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
	mv $<.hex $@
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
## Flashing
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
# Arduino Duemilanove
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
AD_PART = m328p
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
AD_PROG = arduino
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
AD_BAUD = 57600
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
AD_PORT = /dev/arduino
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
AD = avrdude
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
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
    67
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
build/%.hex: build/%.elf
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
	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
    70
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
.PRECIOUS: build/%.elf
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
upload: $(HEX)
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
	$(AD) $(ADFLAGS) -U flash:w:$<
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
## Console
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
SERIAL_BAUD = 9600
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
SERIAL_FLOW = n
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
SERIAL_PARITY = n
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
SERIAL_BITS = 8
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
SERIAL_PORT = $(AD_PORT)
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
SERIAL_TERM = picocom
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
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
    85
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
console:
cae83b7bfcf4 trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
	$(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
    88