2012-03-12 02:52:31 +01:00
|
|
|
# -----------------------------------------------------------------------------
|
2012-06-12 23:12:50 +02:00
|
|
|
# makefile for the ergoDOX firmware
|
2012-03-12 02:52:31 +01:00
|
|
|
# -----------------------------------------------------------------------------
|
2012-03-14 22:46:52 +01:00
|
|
|
|
2016-06-12 02:55:08 +02:00
|
|
|
CFLAGS := -mmcu=atmega32u4 # processor type (teensy 2.0); must match real life
|
|
|
|
CFLAGS += -DF_CPU=16000000 # processor frequency; must match initialization in source
|
|
|
|
CFLAGS += -std=gnu99 # use C99 plus GCC extensions
|
2016-06-12 04:41:15 +02:00
|
|
|
CFLAGS += -Os -flto # optimize for size
|
2016-06-12 04:10:33 +02:00
|
|
|
CFLAGS += -Wall -Werror # enable lots of common warnings
|
2016-06-12 02:55:08 +02:00
|
|
|
CFLAGS += -fpack-struct # pack all structure members together without holes
|
|
|
|
CFLAGS += -fshort-enums # allocate compact enums
|
|
|
|
CFLAGS += -ffunction-sections # \ place each function or data into its own
|
|
|
|
CFLAGS += -fdata-sections # / section in the output file
|
|
|
|
CFLAGS += -pipe # faster build
|
|
|
|
LDFLAGS += -Wl,--relax # for some linker optimizations
|
|
|
|
LDFLAGS += -Wl,--gc-sections # discard unused functions and data
|
|
|
|
|
|
|
|
SRC := main.c
|
2012-03-14 22:46:52 +01:00
|
|
|
|
2016-06-12 02:31:58 +02:00
|
|
|
CC := avr-gcc
|
|
|
|
OBJCOPY := avr-objcopy
|
|
|
|
SIZE := avr-size
|
|
|
|
CHKSUM := md5sum
|
|
|
|
MAKEHEADERS := makeheaders
|
2012-04-25 09:14:12 +02:00
|
|
|
|
2012-04-18 10:29:38 +02:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
.PHONY: all clean
|
|
|
|
|
2016-06-12 02:55:08 +02:00
|
|
|
all: firmware.hex firmware.eep
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo
|
2012-04-24 21:17:06 +02:00
|
|
|
@echo '---------------------------------------------------------------'
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo
|
2016-06-12 02:55:08 +02:00
|
|
|
$(SIZE) --target=ihex firmware.hex
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo
|
2016-06-12 02:55:08 +02:00
|
|
|
$(SIZE) --target=ihex firmware.eep
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo
|
2016-06-12 02:55:08 +02:00
|
|
|
$(CHKSUM) firmware.hex firmware.eep
|
2016-06-11 21:26:01 +02:00
|
|
|
@echo
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo '---------------------------------------------------------------'
|
|
|
|
@echo
|
2012-03-12 02:52:31 +01:00
|
|
|
|
|
|
|
clean:
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo
|
|
|
|
@echo --- cleaning ---
|
2014-03-14 21:48:34 +01:00
|
|
|
git clean -dX -f # remove ignored files and directories
|
2012-06-04 09:09:15 +02:00
|
|
|
|
2012-04-18 10:29:38 +02:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
.SECONDARY:
|
|
|
|
|
2016-06-12 02:55:08 +02:00
|
|
|
firmware.hex: firmware.elf
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo
|
|
|
|
@echo --- making $@ ---
|
2016-06-12 02:55:08 +02:00
|
|
|
$(OBJCOPY) -O ihex \
|
2012-04-18 10:29:38 +02:00
|
|
|
-R .eeprom -R .fuse -R .lock -R .signature \
|
|
|
|
$< $@
|
|
|
|
|
2016-06-12 02:55:08 +02:00
|
|
|
firmware.eep: firmware.elf
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo
|
|
|
|
@echo --- making $@ ---
|
2016-06-12 02:55:08 +02:00
|
|
|
-$(OBJCOPY) -O ihex \
|
2012-04-18 10:29:38 +02:00
|
|
|
-j .eeprom \
|
|
|
|
--set-section-flags=.eeprom="alloc,load" \
|
|
|
|
--change-section-lma .eeprom=0 \
|
|
|
|
--no-change-warnings \
|
|
|
|
$< $@ || exit 0
|
|
|
|
|
2016-06-12 02:55:08 +02:00
|
|
|
firmware.elf:
|
2012-04-18 10:29:38 +02:00
|
|
|
@echo
|
|
|
|
@echo --- making $@ ---
|
2016-06-12 02:55:08 +02:00
|
|
|
$(MAKEHEADERS) $(SRC)
|
|
|
|
$(CC) $(strip $(CFLAGS)) $(strip $(LDFLAGS)) $(SRC) --output $@
|